Repository navigation
Conversation
The design has been argued twice in conversation and written down neither time. This is the argument: where this crate sits against tokio and rayon, which of them it could actually displace, the five layers that would make `fanout` feel like a runtime, and the one boundary that matters - `Host` is already the whole OS seam, so the first four keep the no_std core and only an I/O driver ends it. It also records the name, and why the two obvious ones were rejected: `osaka` is taken by an abandoned async runtime, which is the one collision worth avoiding, and `tokyo` is a typosquat of the project whose queue design this builds on. Nothing is built. The note says so.
Owner
Author
|
Folded into #4 as |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
A design note. Nothing is built, and the note says so.
This argument has been had twice in conversation and written down neither time, which is how it gets re-litigated a third time.
What it records
Where this crate sits. The README is already precise —
fifotargets Tokio's internal queue,lifotargets the Chase-Lev deque. Only one of those is substitutable: Tokio's queue is private, so nobody migrates to this crate from Tokio, whilecrossbeam-dequeis public and is whatrayon-coreruns on. That makes the realistic customer a library author building a scheduler, not an application picking a runtime.fanoutis in neither camp — no futures or I/O driver, so not Tokio; nojoin/scope/par_iter, so not rayon.The layer ladder, and the boundary that matters:
Host(park, unpark, clock) is already the entire OS seam, soJoinHandle,block_on, futures and timers all keep theno_stdcore. Only an I/O driver ends it. Stopping before that is a coherent product — an async runtime that needs no operating system — rather than a half-built Tokio.The tension, named.
fanout's own docs say tasks are independent by construction, no join, no completion. That is why it is cheap, so every layer above belongs besidesubmitrather than instead of it.The name: Nagoya, when it graduates into its own crate, and not before. With the rejected candidates and their reasons —
osakais taken by an abandoned async runtime (25,650 downloads, last touched 2019), which is the one collision worth avoiding;kyotois taken by a dormant cache crate;tokyois a typosquat of the project whose queue design this builds on, and mislabels the thing exactly when the interesting claim is "no operating system required".Docs only — no code changes.