Keyboard shortcuts

Press ← or → to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

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 Pin exists — 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_uring backend including multishot accept/recv.

Consoles

Console overview TUI detail

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