-
Hat's off for posting this 2 hours after it dropped!
I've been tracking the nest of issues with anticipation! This wasn't linked to https://github.com/libuv/libuv/pull/1947 when it posted, so I didn't see it. Very glad you linked it, thanks!
-
SaaSHub
SaaSHub - Software Alternatives and Reviews. SaaSHub helps you find the best software and product alternatives
-
- For network I/O, Netty as an incubating transport that is promising [1].
- For disk I/O, JDK's Loom project [2] has mentioned its plan to rely on io_uring on Linux [3], but there's no ETA AFAIK.
[1] https://github.com/netty/netty-incubator-transport-io_uring
-
-
- based on these bindings - https://github.com/bbeaupain/nio_uring
-
Still waiting on io_uring in the Go stdlib: https://github.com/golang/go/issues/31908
-
We've been able to do a lot with this:
https://github.com/dshulyak/uring
-
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.
-
glommio
Glommio is a thread-per-core crate that makes writing highly parallel asynchronous applications in a thread-per-core architecture easier for rustaceans.
> Few of us have really figured out io_uring. But that doesn't mean it is slower.
seastar.io is a high level framework that I believe has "figured out" io_uring, with additional caveats the framework imposes (which is honestly freeing).
Additionally the rust equivalent: https://github.com/DataDog/glommio
-
I hope there is (or will be) a way to use io_uring for the sorts of purposes that the syscall boundary is currently used for. The example I have in mind is https://rr-project.org/ which uses the syscall boundary to isolate nondeterminism in order to implement record/replay debugging. I'm not sure how it can accomplish the same thing with io_uring; it would need to be informed of all updates to the shared pages or something?
-
To address my own silly questions, yes, one should use the new fixed buffers described in this document: https://github.com/axboe/liburing/wiki/io_uring-and-networki...