Skip to content

Write down what would sit on top of these queues, and name it - #3

Closed
pathscale wants to merge 1 commit into
mainfrom
docs/nagoya
Closed

pathscale wants to merge 1 commit into
mainfrom
docs/nagoya

Conversation

@pathscale

Copy link
Copy Markdown
Owner

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 — fifo targets Tokio's internal queue, lifo targets the Chase-Lev deque. Only one of those is substitutable: Tokio's queue is private, so nobody migrates to this crate from Tokio, while crossbeam-deque is public and is what rayon-core runs on. That makes the realistic customer a library author building a scheduler, not an application picking a runtime. fanout is in neither camp — no futures or I/O driver, so not Tokio; no join/scope/par_iter, so not rayon.

The layer ladder, and the boundary that matters: Host (park, unpark, clock) is already the entire OS seam, so JoinHandle, block_on, futures and timers all keep the no_std core. 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 beside submit rather than instead of it.

The name: Nagoya, when it graduates into its own crate, and not before. With the rejected candidates and their reasons — osaka is taken by an abandoned async runtime (25,650 downloads, last touched 2019), which is the one collision worth avoiding; kyoto is taken by a dormant cache crate; tokyo is 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.

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.
@pathscale

Copy link
Copy Markdown
Owner Author

Folded into #4 as 169865d, cherry-picked so the branch stays linear. Closing this so ps-st3 carries one PR.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant