tokio-uring
libuv
tokio-uring | libuv | |
---|---|---|
32 | 80 | |
1,178 | 24,680 | |
2.5% | 0.9% | |
4.4 | 9.2 | |
6 months ago | about 19 hours ago | |
Rust | C | |
MIT License | MIT License |
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
tokio-uring
-
The design of Tokio-uring: Linux io_uring support for Rust
Link should be: https://github.com/tokio-rs/tokio-uring/blob/master/DESIGN.m...
- QUIC Is Not Quick Enough over Fast Internet
-
Gazette: Cloud-native millisecond-latency streaming
I feel a bit paralyzed by Fear Of Missing Io_Uring. There's so much awesome streaming stuff about (RisingWave, Materialize, NATS, DataFusion, Velox, many more), but it all feels built on slower legacy system libraries.
It's not heavily used yet, but Rust has a bunch of fairly high visibility efforts. Situation sort of feels similar with http3, where the problem is figuring out what to pick. https://github.com/tokio-rs/tokio-uring https://github.com/bytedance/monoio https://github.com/DataDog/glommio
- tokio_fs crate
-
Use io_uring for network I/O
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.
-
Create a data structure for low latency memory management
That's what the pool is for: https://github.com/tokio-rs/tokio-uring/blob/master/src/buf/fixed/pool.rs
-
Cloudflare Ditches Nginx for In-House, Rust-Written Pingora
Tokio supports io_uring (https://github.com/tokio-rs/tokio-uring), so perhaps when it's mature and battle-tested, it'd be easier to transition to it if Cloudflare aren't using it already.
-
Anyone using io_uring?
- Tokio suffers from a similar problem
-
redb 0.4.0: 2x faster commits with 1PC+C instead of 2PC
Eg via tokio-uring.
-
Efficient way to read multiple files in parallel
I strongly recommend you to look into io-uring and use async executors that take advantages of it: - tokio-uring (not recommended as it is still undergoing development) - monoio - glommio
libuv
-
Ask HN: Why hasn't the JavaScript event loop model scaled horizontally?
Almost everyone running Node in a machine with multiple cores is using multithreading.
Node is multithreaded by default. I believe the default setting is using 4 threads. Most of Node is written in C++.
The JS code written by end users is single threaded (most of it at least) but IO etc is all executed with libuv.
https://libuv.org/
- Criando uma Runtime
- Libuv: High-performance, Cross-platform Async I/O Library for Developers
-
OrbStack: The fast, light, and easy way to run Docker containers and Linux
OrbStack is by far some of the best software I've encountered on Mac, but unfortunately I have difficulty convincing my employer to pay for a commercial license, and with my sparse Docker usage, I'm confined to using it only for personal/hobby usage.
What's amazing is it fixes an (almost) show stopper bug when using libuv (or software that uses it like CMake) with Rosetta 2 [1], with the bug present on all Docker/VMs I've tried except OrbStack. It just seems to get everything right.
[1]: https://github.com/libuv/libuv/issues/4279
- Epoll: The API that powers the modern internet (2022)
-
APIs in Go with Huma 2.0
I wound up on a different team with pre-existing Python code so temporarily shelved my use of Go for a bit, and we used Sanic (an async Python framework built on top of the excellent uvloop & libuv that also powers Node.js) to build some APIs for live channel management & operations. We hand-wrote our OpenAPI and used it to generate documentation and a CLI, which was an improvement over what was there (or not) before. Other teams used the OpenAPI document to generate SDKs to interact with our service.
- Python Is Easy. Go Is Simple. Simple = Easy
-
Notes: Advanced Node.js Concepts by Stephen Grider
In the source code of the Node.js opensource project, lib folder contains JavaScript code, mostly wrappers over C++ and function definitions. On the contrary, src folder contains C++ implementations of the functions, which pulls dependencies from the V8 project, the libuv project, the zlib project, the llhttp project, and many more - which are all placed at the deps folder.
- A Magia do Event Loop
-
A complete guide to the Node.js event loop
Libuv, the C library that gives Node.js its asynchronous, non-blocking I/O capability is responsible for managing the thread pool. Node.js gives you the capability of using additional threads for computationally expensive and long-lasting operations to avoid blocking the event loop.
What are some alternatives?
glommio - Glommio is a thread-per-core crate that makes writing highly parallel asynchronous applications in a thread-per-core architecture easier for rustaceans.
libevent - Event notification library
liburing - Library providing helpers for the Linux kernel io_uring support
Boost.Asio - Asio C++ Library
monoio - Rust async runtime based on io-uring.
libev - Full-featured high-performance event loop loosely modelled after libevent
diesel_async - Diesel async connection implementation
C++ Actor Framework - An Open Source Implementation of the Actor Model in C++
tokio - A runtime for writing reliable asynchronous applications with Rust. Provides I/O, networking, scheduling, timers, ...
uvw - Header-only, event based, tiny and easy to use libuv wrapper in modern C++ - now available as also shared/static library!
rust-analyzer - A Rust compiler front-end for IDEs [Moved to: https://github.com/rust-lang/rust-analyzer]
benchmarks - Some benchmarks of different languages