SaaSHub helps you find the best software and product alternatives Learn more →
Top 23 io-uring Open-Source Projects
-
libxev
libxev is a cross-platform, high-performance event loop that provides abstractions for non-blocking IO, timers, events, and more and works on Linux (io_uring or epoll), macOS (kqueue), and Wasm + WASI. Available as both a Zig and C API.
It scales to complex examples as well. Retained memory would be handled with its own allocator: for a large data structure like an LRU cache, one would initialize it with a pointer to the allocator, and use that internally to manage the memory.
Blocking (or rather, non-blocking, which is clearly what you meant) IO is a different story. Zig had an async system, but it had problems and got removed a couple point releases ago. There's libxev[0] for evented programs, from Mitchell Hashimoto. It's not mature yet but it offers a good solution to single-threaded concurrency and non-blocking IO.
I don't think Zig is the best choice for multithreaded programs, however, unless they're carefully engineered to share little to no memory (using message passing, for instance). You'd have to take care of locking and atomic ops manually, and unlike memory bugs, Zig doesn't have a lot of built-in support for catching problems with that.
A language with manual memory allocation isn't going to be the language of choice for writing web servers, for pretty obvious reasons. But for an application like squeezing the best performance out of a resource-constrained environment, the tradeoffs start to make sense.
[0]: https://github.com/mitchellh/libxev
-
SaaSHub
SaaSHub - Software Alternatives and Reviews. SaaSHub helps you find the best software and product alternatives
-
-
ucall
Web Serving and Remote Procedure Calls at 50x lower latency and 70x higher bandwidth than FastAPI, implementing JSON-RPC & REST over io_uring ☎️
-
cachegrand
cachegrand - a modern data ingestion, processing and serving platform built for today's hardware
-
rio
pure rust io_uring library, built on libc, thread & async friendly, misuse resistant (by spacejam)
-
-
Project mention: Bitmagnet Allows People to Run Their Own Decentralized Torrent Indexer Locally | news.ycombinator.com | 2024-02-18
How does Bitmagnet compare to Aquatic? https://github.com/greatest-ape/aquatic
-
-
-
-
-
-
fusio
Fusio provides file operations on multiple storages across various async runtimes. (by tonbo-io)
Project mention: Show HN: Fusio – using io_uring on both local disk and S3 | news.ycombinator.com | 2024-10-24 -
Project mention: Show HN: Io_uring like asynchronous API and coroutine powered IO tasks for Zig | news.ycombinator.com | 2024-07-07
-
-
-
-
-
laminarmq
A scalable, distributed message queue powered by a segmented, partitioned, replicated and immutable log.
-
udisk
The fastest ACID-transactional persisted Key-Value store designed as modified LSM-Tree for NVMe block-devices with GPU-acceleration and SPDK to bypass the Linux kernel
-
python-c-io_uring-example
Using io_uring Linux Kernel interface from Python by JITing C code with MetaCall.
-
-
io-uring discussion
io-uring related posts
-
Waiting for many things at once with io_uring
-
Show HN: Fusio – using io_uring on both local disk and S3
-
Async Rust Isn't Bad: You Are
-
libxev: A cross-platform, high-performance event loop
-
Show HN: Async tasks in 350 lines of C
-
Linear Types One-Pager
-
Faster JSON-RPC on Linux kernel 5.19+ with io_uring and simdjson
-
A note from our sponsor - SaaSHub
www.saashub.com | 5 Dec 2024
Index
What are some of the best open-source io-uring projects? This list will help you:
Project | Stars | |
---|---|---|
1 | libxev | 2,160 |
2 | io-uring | 1,214 |
3 | ucall | 1,151 |
4 | cachegrand | 977 |
5 | rio | 931 |
6 | Polyphony | 661 |
7 | aquatic | 490 |
8 | helio | 453 |
9 | io_uring-echo-server | 368 |
10 | loona | 361 |
11 | awesome-iouring | 349 |
12 | kloop | 209 |
13 | fusio | 205 |
14 | zig-aio | 176 |
15 | go-uring | 123 |
16 | async_io_uring | 116 |
17 | jasyncfio | 71 |
18 | kbio | 61 |
19 | laminarmq | 61 |
20 | udisk | 57 |
21 | python-c-io_uring-example | 27 |
22 | io | 11 |
23 | ioucontext | 6 |