[package]
name = "zruntime"
version = "0.2.0"
edition = "2024"
rust-version = "1.88"
license = "MIT"
authors = ["Zeeshan Ali Khan <zeeshanak@gnome.org>"]
description = "A simple single-threaded Rust async runtime"
repository = "https://github.com/z-galaxy/zruntime"
keywords = ["async", "runtime", "reactor", "single-threaded"]
categories = ["asynchronous"]
readme = "README.md"
[package.metadata.docs.rs]
all-features = true
targets = [
"x86_64-unknown-linux-gnu",
"x86_64-pc-windows-gnu",
"x86_64-apple-darwin",
"wasm32-wasip2",
]
[features]
default = ["runtime", "event", "tracing"]
runtime = ["dep:rustix", "dep:windows-sys", "dep:futures-core", "dep:futures-io"]
event = []
tracing = ["dep:tracing"]
helper = ["runtime"]
broadcast = ["event", "dep:futures-core"]
mpmc = ["event", "dep:futures-core"]
lock = ["event"]
unblock = ["dep:futures-io", "dep:futures-core"]
fs = ["dep:futures-io", "dep:futures-core"]
tcp = ["runtime", "dep:socket2", "rustix?/net"]
udp = ["runtime"]
unix = ["runtime", "dep:socket2", "rustix?/net"]
process = [
"runtime",
"unblock",
"rustix?/process",
"windows-sys?/Win32_Foundation",
"windows-sys?/Win32_System_Threading",
]
[lints.rust]
unexpected_cfgs = { level = "warn", check-cfg = ["cfg(zruntime_poll)", "cfg(zruntime_kqueue)"] }
[dependencies]
futures-core = { version = "0.3.34", default-features = false, optional = true }
futures-io = { version = "0.3.34", optional = true }
tracing = { version = "0.1.44", default-features = false, features = ["std"], optional = true }
[target.'cfg(not(all(target_os = "wasi", target_env = "p1")))'.dependencies]
socket2 = { version = "0.6.5", optional = true }
[target.'cfg(any(unix, target_os = "wasi"))'.dependencies.rustix]
version = "1.1.5"
default-features = false
features = ["event", "pipe", "std", "time"]
optional = true
[target."cfg(windows)".dependencies.windows-sys]
version = "0.61.2"
features = ["Win32_Networking_WinSock"]
optional = true
[target."cfg(windows)".dev-dependencies]
uds_windows = "1.2.1"
[target.'cfg(target_os = "linux")'.dev-dependencies]
rustix = { version = "1.1.5", features = ["thread"] }
[dev-dependencies]
criterion = { version = "5.0.2", package = "codspeed-criterion-compat", features = ["async"] }
futures = { version = "0.3.34", default-features = false, features = ["std", "executor"] }
ntest = "0.9.5"
socket2 = { version = "0.6.5", features = ["all"] }
[profile.bench]
codegen-units = 1
debug = true
strip = "none"
[lib]
bench = false
[[bench]]
name = "runtime"
harness = false
required-features = ["helper"]
[[bench]]
name = "spawn"
harness = false
required-features = ["helper"]
[[bench]]
name = "connection"
harness = false
required-features = ["helper", "lock"]
[[bench]]
name = "event"
harness = false
required-features = ["lock"]
[[bench]]
name = "broadcast"
harness = false
required-features = ["broadcast"]
[[bench]]
name = "mpmc"
harness = false
required-features = ["mpmc"]
[[bench]]
name = "contention"
harness = false
required-features = ["mpmc", "lock", "runtime"]
[[bench]]
name = "unblock"
harness = false
required-features = ["unblock"]