// the find
spacejam/rio
pure rust io_uring library, built on libc, thread & async friendly, misuse resistant
Pure Rust io_uring bindings built directly on libc, targeting storage engines and high-throughput I/O workloads. Designed as the write-path for the `sled` embedded database. The API models completions as futures, so it works with both thread-based and async code.
Backpressure against CQ overflow is built in — most other io_uring libraries let you silently drop completions. Auto-submission when awaiting a Completion removes a whole class of 'why is my op hanging?' bugs. Direct libc syscalls with no bindgen dependency keeps the build simple. The marker-trait approach to buffer writability catches read-only memory mistakes at compile time.
Last commit was June 2022 — effectively abandoned. io_uring has moved fast since then (fixed buffers, multishot ops, registered rings) and none of that is here. The README admits use-after-free is possible without `unsafe` via `std::mem::forget` on a Completion, which undercuts the 'misuse resistant' claim in the description. The `tokio-uring` and `monoio` crates have since lapped this in both maintenance and feature coverage; there is no good reason to start a new project on rio today.