[package] name = "aquatic_udp" description = "High-performance open UDP BitTorrent tracker" keywords = ["udp", "server", "peer-to-peer", "torrent", "bittorrent"] version.workspace = true authors.workspace = true edition.workspace = true license.workspace = true repository.workspace = true rust-version.workspace = true readme = "./README.md" [lib] name = "aquatic_udp" [[bin]] name = "aquatic_udp" [features] default = ["prometheus"] # Export prometheus metrics prometheus = ["metrics", "metrics-util", "metrics-exporter-prometheus", "tokio"] # Experimental io_uring support (Linux 6.0 or later required) io-uring = ["dep:io-uring"] # Experimental CPU pinning support cpu-pinning = ["aquatic_common/hwloc"] [dependencies] aquatic_common.workspace = true aquatic_toml_config.workspace = true aquatic_udp_protocol.workspace = true anyhow = "1" arrayvec = "0.7" blake3 = "1" cfg-if = "1" compact_str = "0.7" constant_time_eq = "0.3" crossbeam-channel = "0.5" getrandom = "0.2" hashbrown = { version = "0.14", default-features = false } hdrhistogram = "7" hex = "0.4" libc = "0.2" log = "0.4" mimalloc = { version = "0.1", default-features = false } mio = { version = "0.8", features = ["net", "os-poll"] } num-format = "0.4" rand = { version = "0.8", features = ["small_rng"] } serde = { version = "1", features = ["derive"] } signal-hook = { version = "0.3" } slab = "0.4" socket2 = { version = "0.5", features = ["all"] } time = { version = "0.3", features = ["formatting"] } tinytemplate = "1" # prometheus feature metrics = { version = "0.22", optional = true } metrics-util = { version = "0.16", optional = true } metrics-exporter-prometheus = { version = "0.13", optional = true, default-features = false, features = ["http-listener"] } tokio = { version = "1", optional = true, features = ["rt", "net", "time"] } # io-uring feature io-uring = { version = "0.6", optional = true } [dev-dependencies] tempfile = "3" quickcheck = "1" quickcheck_macros = "1"