finds.dev← search

// the find

spacejam/rio

★ 1,003 · Rust · updated Jun 2022

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.

View on GitHub →

// want more like this?

We dig through GitHub every week and send a few repos picked for what you actually care about — each with an honest take like this one.

Get finds in your inbox → Search again →