[package]
edition = "2024"
rust-version = "1.85"
name = "malkuth"
version = "0.1.0"
authors = ["langyo <langyo.china@gmail.com>"]
build = false
exclude = [
"docs/",
"scripts/",
".github/",
"justfile",
"rust-toolchain.toml",
]
publish = true
autolib = false
autobins = false
autoexamples = false
autotests = false
autobenches = false
description = "A composable service-supervision toolkit for Rust"
readme = "README.md"
keywords = [
"supervisor",
"graceful-shutdown",
"rolling-update",
"jsonrpc",
"socket-activation",
]
categories = [
"asynchronous",
"network-programming",
"development-tools",
]
license-file = "LICENSE"
repository = "https://github.com/celestia-island/malkuth"
[package.metadata.docs.rs]
all-features = true
[features]
cli = [
"dep:clap",
"dep:notify",
"dep:tracing-subscriber",
]
default = [
"tcp",
"signals",
]
file-lock = []
ipc = ["dep:interprocess"]
leader-follower = ["lease"]
lease = []
pg-lock = ["dep:tokio-postgres"]
probes = ["dep:axum"]
replica = []
schema = ["dep:schemars"]
signals = []
tcp = []
worker = []
ws = ["dep:tokio-tungstenite"]
[lib]
name = "malkuth"
path = "src/lib.rs"
[[bin]]
name = "malkuth"
path = "src/bin/malkuth.rs"
required-features = ["cli"]
[[example]]
name = "coordination_lock"
path = "examples/coordination_lock.rs"
required-features = [
"file-lock",
"lease",
]
[[example]]
name = "minimal_server"
path = "examples/minimal_server.rs"
required-features = [
"tcp",
"signals",
]
[[example]]
name = "supervised_workers"
path = "examples/supervised_workers.rs"
required-features = ["worker"]
[[example]]
name = "test_app"
path = "examples/test_app.rs"
required-features = [
"tcp",
"worker",
"signals",
]
[[test]]
name = "supervised"
path = "tests/supervised.rs"
[[test]]
name = "tcp_rpc"
path = "tests/tcp_rpc.rs"
[[test]]
name = "transports"
path = "tests/transports.rs"
[[bench]]
name = "proxy"
path = "benches/proxy.rs"
harness = false
required-features = ["tcp"]
[[bench]]
name = "rpc"
path = "benches/rpc.rs"
harness = false
required-features = ["tcp"]
[dependencies.async-trait]
version = "^0.1"
[dependencies.axum]
version = "^0.8"
optional = true
[dependencies.clap]
version = "^4"
features = ["derive"]
optional = true
[dependencies.futures-util]
version = "^0.3"
features = ["io"]
[dependencies.interprocess]
version = "^2"
features = ["tokio"]
optional = true
[dependencies.notify]
version = "^8"
optional = true
[dependencies.schemars]
version = "^1"
features = ["derive"]
optional = true
[dependencies.serde]
version = "^1"
features = ["derive"]
[dependencies.serde_json]
version = "^1"
[dependencies.thiserror]
version = "^2"
[dependencies.tokio]
version = "^1"
features = [
"rt",
"rt-multi-thread",
"macros",
"net",
"signal",
"sync",
"time",
"process",
"io-util",
"fs",
]
[dependencies.tokio-postgres]
version = "^0.7"
optional = true
[dependencies.tokio-tungstenite]
version = "^0.29"
optional = true
[dependencies.tracing]
version = "^0.1"
[dependencies.tracing-subscriber]
version = "^0.3"
features = ["env-filter"]
optional = true
[dev-dependencies.criterion]
version = "^0.5"
features = ["async_tokio"]
[dev-dependencies.tokio]
version = "^1"
features = [
"rt",
"rt-multi-thread",
"macros",
"net",
"signal",
"sync",
"time",
"process",
"io-util",
"fs",
]
[target."cfg(unix)".dependencies.libc]
version = "^0.2"
[profile.release]
opt-level = 3
lto = "thin"