[package]
name = "taskvisor"
version = "0.8.0"
edition = "2024"
rust-version = "1.90.0"
description = "In-process Tokio task supervisor with retries, graceful shutdown, reliable final outcomes, and per-key admission control"
repository = "https://github.com/soltiHQ/taskvisor"
documentation = "https://docs.rs/taskvisor"
license = "Apache-2.0"
readme = "README.md"
keywords = ["tokio", "task-supervisor", "retry", "graceful-shutdown", "admission-control"]
categories = ["asynchronous", "concurrency"]
exclude = [
".env",
".github/",
".gitignore",
"Taskfile.yml",
"rust-toolchain.toml",
]
[features]
controller = []
default = ["controller"]
logging = []
test-util = []
tracing = ["dep:tracing"]
tokio-util-interop = []
[package.metadata.docs.rs]
features = ["logging", "tracing", "controller", "tokio-util-interop", "test-util"]
rustdoc-args = ["--cfg", "docsrs"]
[dependencies]
tokio = { version = "1.53.1", features = ["rt-multi-thread", "macros", "time", "sync", "signal"] }
tokio-util = "0.7.19"
thiserror = "2.0.20"
fastrand = "2.5.0"
futures-util = { version = "0.3.33", default-features = false, features = ["std", "async-await"] }
tracing = { version = "0.1.44", optional = true, default-features = false, features = ["std"] }
[dev-dependencies]
anstream = "1.0.0"
anstyle = "1.0.14"
criterion = { version = "0.8.2", features = ["async_tokio"] }
tracing-subscriber = { version = "0.3.23", default-features = false, features = ["fmt", "env-filter", "ansi"] }
prometheus = { version = "0.14.0", default-features = false }
rayon = "1.12.0"
serde = { version = "1.0.228", features = ["derive"] }
serde_json = "1.0.149"
tokio = { version = "1.53.1", features = ["test-util"] }
libc = "0.2.186"
[[example]]
name = "controller_slots"
required-features = ["controller"]
[[example]]
name = "controller_admission"
required-features = ["controller"]
[[example]]
name = "tenant_sync"
required-features = ["controller"]
[[example]]
name = "tracing"
required-features = ["tracing"]
[[example]]
name = "logging"
required-features = ["logging"]
[[bench]]
name = "lifecycle"
harness = false
[[bench]]
name = "throughput"
harness = false
[[bench]]
name = "fanout"
harness = false
[[bench]]
name = "dynamic"
harness = false
[[bench]]
name = "controller"
harness = false
required-features = ["controller"]
[[test]]
name = "controller"
required-features = ["controller"]