Nuclei is a proactor-based IO system which is runtime agnostic and can work with any runtime. The proactor system's design principles are matching Boost Asio. Nuclei is not using a conventional reactor approach. It is completely asynchronous, and it's wrapping poll based IO in a proactive fashion.
Nuclei uses io_uring on Linux as the primary IO backend, secondarily you can use epoll. On MacOS, Nuclei is using kqueue. On Windows, the IOCP backend will be used.
The current io_uring implementation needs a modern Linux kernel (5.19+).
- Most of the recent IO_URING features are available, ZC and other 6.1+ features are in TODO.
- Async TCP, UDP, Unix domain sockets and files...
- The proactor system doesn't block
- Scatter/Gather operations
- Minimal allocation
- More expressive than any other runtime
- Completely asynchronous I/O system with lock free programming
Please head to examples
directory to run the examples:
$ cd examples
$ cargo run --example fread-vect
$ cargo test --no-default-features --features=iouring # For iouring
$ cargo test # For others
When the iouring
feature gate is not enabled, the platforms evented backend is used. For example, on Linux, epoll
would be used.
Executor is using async-global-executor
. Available features are:
async-exec
: Usesasync-io
feature ofasync-global-executor
.tokio
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in this crate by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.
Gif is from the documentary called "Particle Fever".