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+).
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
: Uses async-io
feature of async-global-executor
.tokio
Gif is from the documentary called "Particle Fever".