SaaSHub helps you find the best software and product alternatives Learn more →
Top 21 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.
-
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.
-
ucall
Remote Procedure Calls - 50x lower latency and 70x higher bandwidth than FastAPI, implementing JSON-RPC & 🔜 REST over io_uring and SIMDJSON ☎️
-
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)
-
WorkOS
The modern identity platform for B2B SaaS. The APIs are flexible and easy-to-use, supporting authentication, user identity, and complex enterprise features like SSO and SCIM provisioning.
-
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.
-
SaaSHub
SaaSHub - Software Alternatives and Reviews. SaaSHub helps you find the best software and product alternatives
Project mention: libxev: A cross-platform, high-performance event loop | news.ycombinator.com | 2024-04-17io_uring support is obviously great & excellent, fulfills the "high performance" part well.
i was not expecting "Wasm + WASI" support at all. that's very cool. implementation is wasi_poll.zig (https://github.com/mitchellh/libxev/blob/main/src/backend/wa...). not to be unkind, but this makes me wonder very much if WASI is already missing the mark, if polling is the solution offered.
gotta say, this is some very understandable clean code. further enhancing my sense that i really ought be playing with zig.
Project mention: Show HN: U)Search Images demo in 200 lines of Python | news.ycombinator.com | 2023-09-07
When using green threads/fibers/coroutines, an interesting technique to make signal handling safer is to run the signal handler asynchronously on a separate fiber/green thread. That way most of the problems of dealing with signals go away, and there's basically no limitation on what you can do inside the signal handler.
I've successfully used this technique in Polyphony [1], a fiber-based Ruby gem for writing concurrent programs. When a signal occurs, Polyphony creates a special-purpose fiber that runs the signal handling code. The fiber is put at the head of the run queue, and is resumed once the currently executed fiber yields control.
[1] https://github.com/digital-fabric/polyphony
Project mention: Bitmagnet Allows People to Run Their Own Decentralized Torrent Indexer Locally | news.ycombinator.com | 2024-02-18How does Bitmagnet compare to Aquatic? https://github.com/greatest-ape/aquatic
laminarmq: https://github.com/arindas/laminarmq
I am building a message queue from scratch in Rust. It is intended to be a resource efficient alternative to Apache Kafka. (It does not rely on any Kafka libraries.)
It has similar concepts like topics and partitions. It is intended to be distributed in nature, with no reliance on any third party component.
Currently it only provides a segmented log implementation which can be used on it's own if necessary. We support both persistent and in-memory storage.
It is still very much in a nascent stage as there are no message queue level APIs or Web endpoints yet.
I tried to keep it as decoupled from different Rust async runtimes as possible to make it easier to integrate to different ecosystems. It currently supports tokio and glommio.
There is also an example to show how the segmented log might be used in a server:
https://github.com/arindas/laminarmq/tree/examples/laminarmq...
Next steps would be to design the message queue level APIs and gradually implement the distributed components.
This is the first time I am implementing something at this scale so any feedback or advice would be great.
Project mention: Ask HN: Why are there no open source NVMe-native key value stores in 2023? | news.ycombinator.com | 2023-10-16I don't remember exactly why I have any of them saved, but these are some experimental data stores that seems to be fitting what you're looking for somewhat:
- https://github.com/DataManagementLab/ScaleStore - "A Fast and Cost-Efficient Storage Engine using DRAM, NVMe, and RDMA"
- https://github.com/unum-cloud/udisk - "The fastest ACID-transactional persisted Key-Value store designed for NVMe block-devices with GPU-acceleration and SPDK to bypass the Linux kernel."
- https://github.com/capsuleman/ssd-nvme-database - "Columnar database on SSD NVMe"
io-uring related posts
- 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
- Show HN: Up to 100x Faster FastAPI with simdjson and io_uring on Linux 5.19
- Show HN: Up to 100x Faster FastAPI with simdjson and io_uring on Linux 5.19
- Lightweight RPC with `simdjson` and `io_uring` on Linux 5.19 and newer
-
A note from our sponsor - SaaSHub
www.saashub.com | 29 Apr 2024
Index
What are some of the best open-source io-uring projects? This list will help you:
Project | Stars | |
---|---|---|
1 | libxev | 1,553 |
2 | io-uring | 1,064 |
3 | ucall | 985 |
4 | cachegrand | 963 |
5 | rio | 894 |
6 | Polyphony | 651 |
7 | aquatic | 452 |
8 | helio | 392 |
9 | io_uring-echo-server | 358 |
10 | awesome-iouring | 297 |
11 | kloop | 203 |
12 | fluke | 195 |
13 | go-uring | 116 |
14 | async_io_uring | 103 |
15 | jasyncfio | 67 |
16 | kbio | 60 |
17 | laminarmq | 55 |
18 | udisk | 48 |
19 | python-c-io_uring-example | 25 |
20 | io | 8 |
21 | ioucontext | 2 |
Sponsored