Use io_uring for network I/O

This page summarizes the projects mentioned and recommended in the original post on news.ycombinator.com

SaaSHub - Software Alternatives and Reviews
SaaSHub helps you find the best software and product alternatives
www.saashub.com
featured
  • libuv

    Cross-platform asynchronous I/O

    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

    SaaSHub logo
  • - 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

  • hella-http

    Hella fast HTTP server library for Java

  • nio_uring

    High performance I/O library for Java using io_uring under the hood

    - based on these bindings - https://github.com/bbeaupain/nio_uring

  • go

    The Go programming language

    Still waiting on io_uring in the Go stdlib: https://github.com/golang/go/issues/31908

  • uring

    Discontinued Golang library for io_uring (without CGO)

    We've been able to do a lot with this:

    https://github.com/dshulyak/uring

  • tokio-uring

    An io_uring backed runtime for Rust

    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

  • rr

    Record and Replay Framework

    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?

  • liburing

    Library providing helpers for the Linux kernel io_uring support

    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...

NOTE: The number of mentions on this list indicates mentions on common posts plus user suggested alternatives. Hence, a higher number means a more popular project.

Suggest a related project

Related posts

  • Are there any embeddable languages in rust?

    6 projects | /r/rust | 22 Oct 2021
  • Which is the best Rust scripting language for Exploratory Data Analysis (EDA)

    7 projects | /r/rust | 9 Oct 2021
  • Kanata: Cross-platform software keyboard remapper

    1 project | news.ycombinator.com | 4 Dec 2024
  • An interpreter inside an interpreter

    2 projects | dev.to | 25 Nov 2024
  • Warp terminal: Lifting the login requirement

    1 project | news.ycombinator.com | 24 Nov 2024

Did you konow that Java is
the 8th most popular programming language
based on number of metions?