[package]
name = "plumbrs"
version = "0.15.0"
edition = "2024"
authors = ["Nicola Bonelli <nicola@larthia.com>"]
description = "A high-performance HTTP/1.1 and HTTP/2 benchmarking tool"
license = "MIT OR Apache-2.0"
repository = "https://github.com/awgn/plumbrs"
readme = "README.md"
keywords = ["cli", "utility", "benchmark", "http", "http2"]
categories = ["command-line-utilities", "network-programming"]

[dependencies]
bytes = "1.11.0"
clap = { version = "4.5.54", features = ["derive"] }
futures = "0.3.31"
h2 = "0.4.13"
http = "1.4.0"
httparse = "1.10.1"
hyper = { version = "1.8.1", features = ["full"] }
pretty_env_logger = "0.5.0"
tokio = { version = "1.49.0", features = ["full"] }
tokio-util = { version = "0.7.18", features = ["full"] }
tower = { version = "0.5.3", features = ["full"] }
hyper-util = { version = "0.1.19", features = ["client", "client-legacy", "http1", "http2", "service", "tokio"] }
http-body-util = "0.1.3"
anyhow = "1.0.100"
reqwest = { version = "0.12.28", features = ["stream"] }
rmcp = { version = "0.12.0", optional = true }
atomic-time = "0.1.5"
scopeguard = "1.2.0"
crossterm = "0.28"
hdrhistogram = "7.5.4"
futures-util = "0.3.31"
tabled = "0.18"
http_wire = "0.4.0"
ctor = "0.6.3"
const_format = "0.2.35"

[target.'cfg(target_os = "linux")'.dependencies]
tokio-uring = { version = "0.5.0", optional = true }
monoio = { version = "0.2.4", optional = true, features = ["sync"] }
io-uring = { version = "0.6.4", optional = true }

[target.'cfg(not(target_env = "msvc"))'.dependencies]
tikv-jemallocator = { version = "0.6" }

[lints.rust]
unexpected_cfgs = { level = "warn", check-cfg = ['cfg(tokio_unstable)'] }

[features]
tokio_uring = ["dep:tokio-uring"]
monoio = ["dep:monoio", "dep:io-uring"]
mcp = ["rmcp"]

[profile.release]
debug = false
opt-level = 3
strip = true
codegen-units = 1
lto = true
