eddy — an async runtime from scratch
eddy is a from-scratch async runtime in Rust: explicit task state, custom
wakers, current-thread and multi-thread (work-stealing) schedulers, readiness
I/O (epoll / kqueue / IOCP), a hierarchical timer wheel, synchronization
primitives, a Linux io_uring completion backend, runtime instrumentation,
and TUI + web consoles.
Quickstart
fn main() { eddy::Runtime::new().block_on(async { let handle = eddy::spawn(async { 40 + 2 }); assert_eq!(handle.await.unwrap(), 42); }); }
cargo test -p eddy --all-targets
cargo clippy -p eddy --all-targets -- -D warnings
cargo fmt --all -- --check
RUSTFLAGS='--cfg loom' cargo test -p eddy --lib
Where to look
- Architecture — the event → waker → queue → poll cycle.
- Task representation — allocation layout, state machine, refcounting.
- Why
Pinexists — the intrusive waiter as the worked example. - Cancel safety — per-future cancellation analysis.
- Cross-platform verification — which gates run where (Linux containers, QEMU ARM, Windows, Miri, ASan, loom).
- Roadmap —
all 19 phases complete; Phase 12 covers the
io_uringbackend including multishot accept/recv.
Consoles

eddy-console(TUI): task list, worker heatmap, wake causality, poll histograms — seecrates/eddy-console.eddy-console-web+console-ui/: browser dashboard over a WebSocket bridge.- Recorded demos live under
docs/assets/;docs/assets/demo.shdrives a synthetic event stream through the TUI for recording. Rebuild GIFs with:python3 docs/assets/generate_demo.py && python3 docs/assets/render_gifs.py.