HackerReposA FIELD GUIDE TO OPEN SOURCE
ProSponsor the shelf♧ 0
← Back to top all-time
frostyplanet
crossfire-rs
Rust2025–2025
frostyplanet / crossfire-rs

crossfire-rs

Enhanced mpmc/mpsc to support async/sync (derive from crossbeam)

3Distinct people
3Mentions
0Explicit recommenders
482GitHub stars
REPOSITORY AT A GLANCE

What to know before exploring

What it is

Enhanced mpmc/mpsc to support async/sync (derive from crossbeam)

GitHub

Where it is used

No documented product use has been verified yet.

What people are saying

No recommendation phrase was found in the indexed comments.

No classified warning is attached to this page. Read the discussions before treating silence as approval.

Also in these discussions

No other repository is repeatedly linked in the same discussions.

This week on Hacker News

Nov 7–Nov 14 UTC · Direct repository links and separately labeled related project stories. Indexed through 11/14/2026, 5:04:57 PM UTC.

No direct repository links were found in the indexed HN discussions over the past seven days. Older discussions are available below.

Mentions over time

HN mentions by hour3 dated mentions

Observed mentions: 2025-11-02 03:07:15 UTC to 2025-11-02 14:56:26 UTC.

012025-11-02 03:00:00 UTC to 2025-11-02 04:00:00 UTC (exclusive): 1 mentions; 1 submissions, 0 commentsNov 2, 03:002025-11-02 04:00:00 UTC to 2025-11-02 05:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2025-11-02 05:00:00 UTC to 2025-11-02 06:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2025-11-02 06:00:00 UTC to 2025-11-02 07:00:00 UTC (exclusive): 1 mentions; 0 submissions, 1 comments2025-11-02 07:00:00 UTC to 2025-11-02 08:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2025-11-02 08:00:00 UTC to 2025-11-02 09:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 commentsNov 2, 08:002025-11-02 09:00:00 UTC to 2025-11-02 10:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2025-11-02 10:00:00 UTC to 2025-11-02 11:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2025-11-02 11:00:00 UTC to 2025-11-02 12:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2025-11-02 12:00:00 UTC to 2025-11-02 13:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2025-11-02 13:00:00 UTC to 2025-11-02 14:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2025-11-02 14:00:00 UTC to 2025-11-02 15:00:00 UTC (exclusive): 1 mentions; 0 submissions, 1 commentsNov 2, 14:00

Counts come from the repository’s dated source evidence. Index cutoff: 2026-11-02 08:16:59 UTC.

View mention counts and date ranges
UTC ranges include their start and exclude their end. Select a period to filter the source evidence.
PeriodStart (UTC)End (exclusive, UTC)MentionsSubmissionsComments
Nov 2, 03:002025-11-02 03:00:00 UTC2025-11-02 04:00:00 UTC110
Nov 2, 04:002025-11-02 04:00:00 UTC2025-11-02 05:00:00 UTC000
Nov 2, 05:002025-11-02 05:00:00 UTC2025-11-02 06:00:00 UTC000
Nov 2, 06:002025-11-02 06:00:00 UTC2025-11-02 07:00:00 UTC101
Nov 2, 07:002025-11-02 07:00:00 UTC2025-11-02 08:00:00 UTC000
Nov 2, 08:002025-11-02 08:00:00 UTC2025-11-02 09:00:00 UTC000
Nov 2, 09:002025-11-02 09:00:00 UTC2025-11-02 10:00:00 UTC000
Nov 2, 10:002025-11-02 10:00:00 UTC2025-11-02 11:00:00 UTC000
Nov 2, 11:002025-11-02 11:00:00 UTC2025-11-02 12:00:00 UTC000
Nov 2, 12:002025-11-02 12:00:00 UTC2025-11-02 13:00:00 UTC000
Nov 2, 13:002025-11-02 13:00:00 UTC2025-11-02 14:00:00 UTC000
Nov 2, 14:002025-11-02 14:00:00 UTC2025-11-02 15:00:00 UTC101

What Hacker News says

3 sources
I'm a little nervous about the correctness of the memory orderings in this project, e.g. Two acquires back to back are unnecessary here. In general, fetch_sub and fetch_add should give enough guarantees for this file in Relaxed. https://github.com/frostyplanet/crossfire-rs/blob/master/src... Congest is never written to with release, so the Acquire is never used to form a release chain: https://github.com/frostyplanet/crossfire-rs/blob/dd4a646ca9... The queue appears to close the channel twice (once per rx/tx), which is discordant with the apparent care taken with the fencing. https://github.com/frostyplanet/crossfire-rs/blob/dd4a646ca9... The author also suggests an incorrect optimization to Tokio here which suggests a lack of understanding of what the specific guarantees given are: https://github.com/tokio-rs/tokio/pull/7622 The tests do
Read the rest
not appear to simulate the queue in Loom, which would be a very, very good idea. This stuff is hard. I almost certainly made a mistake in what I've written above (edit: I did!). In practice, the queue is probably fine to use, but I wouldn't be shocked if there's a heisenbug lurking in this codebase that manifests something like: it all works fine now, but in the next LLVM version an optimization pass is added which breaks it on ARM in release mode, and after that the queue yields duplicate values in a busy loop every few million reads which is only triggered on Graviton processors. Or something. Like I said, this stuff is hard. I wrote a very detailed simulator for the Rust/C++ memory model, have implemented dozens of lockless algorithms, and I still make a mistake every time I go to write code. You need to simulate it with something like Loom to have any hope of a robust implementation. For anyone interested in learning about Rust's memory model, I can't recommend enough Rust Atomics and Locks: https://marabos.nl/atomics/
In Crossfire: High-performance lockless spsc/mpsc/mpmc channels for Rust
When reading this project's wiki [0], it mentions that Kanal (another channel implementation) uses an optimization that "makes [the] async API not cancellation-safe". I wonder if this is the same / related issue to the recent HN thread on "future lock" [1]. I hadn't heard of this cancellation safety issue prior to that other HN thread. [0]: https://github.com/frostyplanet/crossfire-rs/wiki#kanal [1]: https://news.ycombinator.com/item?id=45774086
In Crossfire: High-performance lockless spsc/mpsc/mpmc channels for Rust

MAKE YOURSELF AT HOME

A few shortcuts

/
Search the collection
?
Open this guide
Esc
Close dialogs and navigation

Your saved repositories and interests stay in this browser.