// the find
compio-rs/compio
A thread-per-core async Rust runtime with IOCP/io_uring/polling.
Compio is a completion-based async Rust runtime that wraps IOCP on Windows, io_uring on Linux, and falls back to poll-based I/O elsewhere — all behind a unified async API. It follows the thread-per-core model, meaning each thread runs its own executor and driver rather than sharing a thread pool. Aimed at systems programmers who want true async I/O without tokio's poll-based abstraction layer.
1. Genuinely cross-platform completion I/O: IOCP on Windows is first-class, not an afterthought bolted onto a Linux-centric design. Most alternatives (glommio, monoio) effectively abandon Windows. 2. Buffer ownership model is correct — the IoBuf/IoBufMut traits enforce that buffers stay alive for the duration of the kernel operation, which is the actual sound way to do io_uring without undefined behavior. 3. The crate split is sensible: compio-driver (proactor), compio-executor (task scheduler), compio-runtime (glue), compio-net/fs (high-level) — you can use the driver without the executor if you need to. 4. QUIC support via compio-quic and a tokio compat layer in compio-compat mean you're not locked out of the existing ecosystem.
1. 1,744 stars and no sign of production deployments or public case studies — you're betting on a small team's continued interest before this stabilizes into something you'd run in production. 2. Thread-per-core means cross-thread work requires explicit dispatch via compio-dispatcher; anything that assumes a shared thread pool (most Rust HTTP frameworks, database drivers) won't just work without compat shims or rewrites. 3. The tokio compat layer (compio-compat) is described but the README gives no signal of how complete it is — if you need tokio-tungstenite or sqlx to run on compio, you're in research territory. 4. Ecosystem is thin: no HTTP server crate, no TLS that isn't going through compat, and the async trait signatures diverge from std/tokio conventions, so any library that takes `AsyncRead + AsyncWrite` won't accept compio types directly.