Cargo Features
[dependencies]
monoio = { version = "0.2.4", default-features = false, features = ["unstable", "async-cancel", "zero-copy", "splice", "mkdirat", "unlinkat", "renameat", "macros", "sync", "utils", "debug", "legacy", "iouring", "tokio-compat", "poll-io", "signal", "signal-termination", "bytes", "lazy_static"] }
- unstable
-
use nightly only feature flags
- async-cancel default
-
async-cancel will push a async-cancel entry into sq when op is canceled
- zero-copy
-
enanle zero copy(enable SOCK_ZEROCOPY + MSG_ZEROCOPY flag)
WARNING: this feature may cause performance degradation - splice
-
splice op(requires kernel 5.7+)
Affects
io::splice
,copy::zero_copy
… - mkdirat
-
mkdirat2 op(requires kernel 5.15+)
- unlinkat
-
unlinkat op(requires kernel 5.11+)
Affects
fs::remove_file
,fs::remove_dir
… - renameat
-
renameat op(requires kernel 5.11+)
Affects
fs::rename
… - macros default = monoio-macros
-
enable
async main
macros support - sync signal? = flume, once_cell, threadpool
-
allow waker to be sent across threads
Affects
driver::Driver.unpark
,monoio::blocking
… - utils default = nix
-
enable bind cpu set
- debug = tracing
-
enable debug if you want to know what runtime does
- legacy default = mio
-
enable legacy driver support(will make monoio available for older kernel and macOS)
Affects
runtime::FusionRuntime
,builder::FusionDriver
… - iouring default = io-uring
-
iouring support
Affects
runtime::FusionRuntime
,uring_detect::detect_uring
,builder::FusionDriver
… - tokio-compat = tokio
-
tokio-compatible(only have effect when legacy is enabled and iouring is not)
- poll-io = mio, tokio
-
(experimental)enable poll-io to convert structs to structs that impl tokio's poll io
Affects
io::IntoPollIo
,io::IntoCompIo
,tcp::stream_poll
,unix::stream_poll
… - signal signal-termination? = ctrlc, sync
-
signal enables setting ctrl_c handler
- signal-termination = signal
-
Enables termination of ctrlc
- default = async-cancel, bytes, iouring, legacy, macros, utils
-
by default both iouring and legacy are enabled
Features from optional dependencies
In crates that don't use the dep:
syntax, optional dependencies automatically become Cargo features. These features may have been created by mistake, and this functionality may be removed in the future.
common dependencies
- monoio-macros macros
- bytes default
- flume sync?
- mio legacy poll-io?
-
Enables mio ^0.8
- threadpool sync?
- tokio poll-io? tokio-compat?
- tracing debug?
- ctrlc signal? signal-termination?
- lazy_static implicit feature
-
Enables lazy_static
lazy_static:
A macro for declaring lazily evaluated statics in Rust
- once_cell sync?
- io-uring linux iouring
-
Enables io-uring ^0.6
- nix unix utils
-
Enables nix ^0.26