taskvisor 0.4.1

Task supervisor for Tokio: restarts background tasks on failure with exponential backoff and jitter, graceful shutdown, and lifecycle events
Documentation
[package]
name         = "taskvisor"
version      = "0.4.1"
edition      = "2024"
rust-version = "1.90.0"

description   = "Task supervisor for Tokio: restarts background tasks on failure with exponential backoff and jitter, graceful shutdown, and lifecycle events"
repository    = "https://github.com/soltiHQ/taskvisor"
documentation = "https://docs.rs/taskvisor"
license       = "Apache-2.0"
readme        = "README.md"

keywords   = ["supervisor", "tokio", "retry", "restart", "backoff"]
categories = ["asynchronous", "concurrency"]

exclude = [
    ".env",
    ".github/",
    ".gitignore",
    "Taskfile.yml",
    "rust-toolchain.toml",
]

[features]
controller         = ["dep:dashmap"]
default            = []
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.52.3", features = ["rt-multi-thread", "macros", "time", "sync", "signal"] }
tokio-util = "0.7.18"
thiserror  = "2.0.18"
fastrand   = "2.4.1"
dashmap    = { version = "6.1.0", optional = true }
tracing    = { version = "0.1.44", optional = true, default-features = false, features = ["std"] }

[dev-dependencies]
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"

[[example]]
name              = "slots"
required-features = ["controller"]

[[example]]
name              = "admission"
required-features = ["controller"]

[[example]]
name              = "tracing"
required-features = ["tracing"]

[[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"]