monoio-rs/monoio

Rust async runtime based on io-uring.

View on GitHub ↗Jump to charts ↓

Summary Information

Updated 33 seconds ago
Added to GitGenius on September 13th, 2026
Created on November 30th, 2021
Open Issues & Pull Requests: 88 (+0)
GitHub issues: Enabled
Number of forks: 296
Total Stargazers: 5,109 (+0)
Total Subscribers: 51 (+0)

Charts & Analytics

Fetching additional details & charts...

Issue Activity (beta)

Issue API getrepoissuespagesummary failed: 429 Rate limit exceeded. Please try again later.

Detailed Description

Monoio is a thread-per-core Rust async runtime based on io-uring, epoll, and kqueue.

The runtime addresses the need for high-performance I/O handling in server applications by implementing a thread-per-core execution model rather than work-stealing. Unlike Tokio-uring, which runs on top of another runtime, Monoio operates as a standalone runtime that directly uses native asynchronous I/O APIs. This design eliminates the requirement for tasks to be Send or Sync, allowing safe use of thread-local storage since data does not escape threads at await points. The approach targets I/O-bound server workloads such as load balancers, where operations concentrate on network sockets and thread-local data does not need to be shared between cores.

Monoio suits projects built as load balancers or other network-intensive servers where the workload distributes evenly across cores and I/O dominates computation. The runtime requires Rust 1.75 or later and, for io-uring support, a Linux kernel version 5.6 or newer with properly configured memlock settings. On older Linux versions, the runtime falls back to epoll mode. macOS systems can use kqueue. The tool is not suitable for workloads with highly unbalanced task distribution, as underutilized CPU cores may degrade performance compared to work-stealing runtimes. Windows support is experimental.

Development activity shows consistent engagement with the codebase through regular updates and refinements to the runtime's core functionality. The project maintains associated libraries for thread-local channels, TLS support, and codec utilities, indicating active expansion of the ecosystem around the core runtime. Documentation covers platform-specific requirements and configuration details, reflecting attention to deployment concerns. The maintainers acknowledge design trade-offs explicitly, such as the incompatibilities introduced by the custom I/O abstraction and the performance characteristics under unbalanced workloads.