rio VS tokio-uring

Compare rio vs tokio-uring and see what are their differences.

rio

pure rust io_uring library, built on libc, thread & async friendly, misuse resistant (by spacejam)

tokio-uring

An io_uring backed runtime for Rust (by tokio-rs)
InfluxDB - Power Real-Time Data Analytics at Scale
Get real-time insights from all types of time series data with InfluxDB. Ingest, query, and analyze billions of data points in real-time with unbounded cardinality.
www.influxdata.com
featured
SaaSHub - Software Alternatives and Reviews
SaaSHub helps you find the best software and product alternatives
www.saashub.com
featured
rio tokio-uring
7 28
894 1,002
- 2.0%
0.0 4.1
almost 2 years ago 2 months ago
Rust Rust
- MIT License
The number of mentions indicates the total number of mentions that we've tracked plus the number of user suggested alternatives.
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.

rio

Posts with mentions or reviews of rio. We have used some of these posts to build our list of alternatives and similar projects. The last one was on 2023-04-21.
  • Production grade databases in Rust
    14 projects | /r/rust | 21 Apr 2023
    Also, not to be too bad about a reputation fallacy, but I found the author to be flippant and disrespectful when good-faith unsoundness was pointed out in his crates: https://github.com/spacejam/rio/issues/30
  • Linear Types One-Pager
    2 projects | /r/rust | 29 Mar 2023
    In my previous post on linear types I spent quite a bit of time motivating linear types. For example the ergonomic rio io_uring library could be made sound if it could guarantee destructors are run. Or performing FFI with async C++ could be made more efficient if it could rely directly on destructors rather than having to involve an intermediate runtime for each call.
  • The Stigma Around Unsafe
    5 projects | /r/rust | 12 Oct 2022
    It's like cargo should have a way to mark a dependency as unsafe. That way, you could have a safe mmap crate as an unsafe dependency. Or something like rio which is deliberately unsound (but is fine if you abide by its rules through the entirety of the program)
  • Anyone using io_uring?
    8 projects | /r/rust | 18 Aug 2022
    for completeness there is also rio, but:
  • Comparing the Rust uring libraries (tokio-uring, glommio, rio, ringbahn)
    1 project | /r/rust | 9 Nov 2021
    rio still has known soundness issues– its Completion futures block the thread when dropped (!!!), and can allow for use-after-free bugs if leaked. See https://github.com/spacejam/rio/issues/30 for details.
  • kbio - Another Async IO Framework based on io_uring
    5 projects | /r/rust | 21 Sep 2021
    Here are some posts about the design. https://without.boats/blog/io-uring/ https://github.com/spacejam/rio/issues/30 https://github.com/axboe/liburing/issues/109
  • Tokio, the async runtime for Rust, hits 1.0
    12 projects | news.ycombinator.com | 23 Dec 2020
    The author of sled[1], an embedded database in Rust which has a number of promising features, has also written parts of rio[2], an underlying pure Rust io_uring library, which is intended to become the core write path for sled. rio has support for files but also has a demo for TCP (on Linux 5.5 and later) and O_DIRECT.

    I tested rio recently as I had a Brilliant but Bad Idea™ involving file access and was pleasantly surprised by the API, as I have been with sled's.

    I'm excited for the experimentation in the Rust ecosystem and for such low level crates to handle the complex io_uring tasks (relatively) safely!

    [1]: https://github.com/spacejam/sled

    [2]: https://github.com/spacejam/rio

tokio-uring

Posts with mentions or reviews of tokio-uring. We have used some of these posts to build our list of alternatives and similar projects. The last one was on 2023-07-13.
  • tokio_fs crate
    2 projects | /r/rust | 13 Jul 2023
  • Use io_uring for network I/O
    11 projects | news.ycombinator.com | 12 Apr 2023
    While Mio will probably not implement uring in its current design, there's https://github.com/tokio-rs/tokio-uring if you want to use io_uring in Rust.

    It's still in development, but the Tokio team seems intent on getting good io_uring support at least!

    As the README states, the Rust implementation requires a kernel newer than the one that shipped with Ubuntu 20.04 so I think it'll be a while before we'll see significant development among major libraries.

  • Create a data structure for low latency memory management
    4 projects | /r/rust | 4 Dec 2022
    That's what the pool is for: https://github.com/tokio-rs/tokio-uring/blob/master/src/buf/fixed/pool.rs
  • Cloudflare Ditches Nginx for In-House, Rust-Written Pingora
    3 projects | news.ycombinator.com | 16 Sep 2022
    Tokio supports io_uring (https://github.com/tokio-rs/tokio-uring), so perhaps when it's mature and battle-tested, it'd be easier to transition to it if Cloudflare aren't using it already.
  • Anyone using io_uring?
    8 projects | /r/rust | 18 Aug 2022
    - Tokio suffers from a similar problem
  • redb 0.4.0: 2x faster commits with 1PC+C instead of 2PC
    5 projects | /r/rust | 26 Jul 2022
    Eg via tokio-uring.
  • Efficient way to read multiple files in parallel
    3 projects | /r/rust | 8 Jun 2022
    I strongly recommend you to look into io-uring and use async executors that take advantages of it: - tokio-uring (not recommended as it is still undergoing development) - monoio - glommio
  • Stacked Futures and why they are impossible
    1 project | /r/rust | 8 Jun 2022
    This is my thinking as well. Specifically, I realized that if you don’t use tasks, but rather futures and join, than structured concurrency just works out (at the cost of less efficient poll). In a single-threaded/thread-per-core runtime, tasks could have the same semantics as futures. Somewhat elaborated here: https://github.com/tokio-rs/tokio-uring/issues/81
  • How to use async Rust for non-IO tasks?
    2 projects | /r/rust | 20 Apr 2022
    There's a new API on Linux called io_uring that has performance benefits, but most executors don't use it yet, except executors meant specifically to harness the power of io_uring like tokio-uring and Glommio
  • Side effects of Tokio
    1 project | /r/rust | 19 Apr 2022
    Breaking it down a bit further- Rust's async is zero-cost, and there's no way to write faster equivalent code to the language construct in Rust (and presumably other LLVM languages). Tokio introduces abstractions over OS APIs (indirectly) and provides a runtime. The runtime isn't zero cost, but it is likely to be better optimized for "standard" situations than a homebrewed solution, and its primary competition is in the form of other large async runtimes. On the other hand, Tokio's IO routines are (AFAIK) about as well written as one can get with blocking OS APIs, and the only competitors in that space are projects like tokio-uring that use APIs more well suited for asynchronous usage.

What are some alternatives?

When comparing rio and tokio-uring you can also consider the following projects:

io_uring-echo-server - io_uring echo server

libuv - Cross-platform asynchronous I/O

smol - A small and fast async runtime for Rust

glommio - Glommio is a thread-per-core crate that makes writing highly parallel asynchronous applications in a thread-per-core architecture easier for rustaceans.

KuiBaDB - Another OLAP database

liburing

cachegrand - cachegrand - a modern data ingestion, processing and serving platform built for today's hardware

monoio - Rust async runtime based on io-uring.

fio - Flexible I/O Tester

tokio - A runtime for writing reliable asynchronous applications with Rust. Provides I/O, networking, scheduling, timers, ...

kbio - Another Async IO Framework based on io_uring

diesel_async - Diesel async connection implementation