[package] name = "numa" version = "0.25.0" authors = ["razvandimescu "] edition = "2021" description = "Portable DNS resolver in Rust — .numa local domains, ad blocking, developer overrides, DNS-over-HTTPS" license = "MIT" repository = "https://github.com/razvandimescu/numa" keywords = ["dns", "dns-server", "ad-blocking", "reverse-proxy", "developer-tools"] categories = ["network-programming", "development-tools"] [dependencies] tokio = { version = "1", features = ["rt-multi-thread", "macros", "net", "time", "sync", "signal", "fs"] } axum = "0.8" serde = { version = "1", features = ["derive"] } serde_json = "1" toml = "1.1" serde_ignored = "0.1" log = "0.4" env_logger = "0.11" reqwest = { version = "0.13", features = ["rustls-no-provider", "gzip", "http2", "query"], default-features = false } hyper = { version = "1", features = ["client", "http1", "server"] } hyper-util = { version = "0.1", features = ["client-legacy", "http1", "tokio"] } http-body-util = "0.1" futures = "0.3" socket2 = { version = "0.6", features = ["all"] } rcgen = { version = "0.14", features = ["pem", "x509-parser"] } time = "0.3" rustls = { version = "0.23", default-features = false, features = ["ring", "std", "tls12", "logging"] } tokio-rustls = { version = "0.26", default-features = false, features = ["ring", "tls12", "logging"] } arc-swap = "1" ring = "0.17" odoh-rs = "1.0.5" psl = "2" base64 = "0.23" # sys_rng re-exports the rand_core odoh-rs (via hpke) bounds on; keep the majors in step. getrandom = { version = "0.4", features = ["sys_rng"] } rustls-pemfile = "2.2.0" qrcode = { version = "0.14", default-features = false, features = ["svg"] } # Bundled Mozilla roots (DER) for both the reqwest and DoT TLS paths — see forward.rs. webpki-root-certs = "1" proxy-header = { version = "0.1", features = ["tokio"] } ipnet = { version = "2", features = ["serde"] } quinn-udp = "0.6" [target.'cfg(unix)'.dependencies] libc = "0.2" [target.'cfg(target_env = "musl")'.dependencies] mimalloc = { version = "0.1", default-features = false } libmimalloc-sys = { version = "=0.1.49", features = ["extended"] } [target.'cfg(windows)'.dependencies] windows-service = "0.8" windows-sys = { version = "0.61", features = ["Win32_Foundation", "Win32_System_ProcessStatus", "Win32_System_Threading"] } [dev-dependencies] criterion = { version = "0.8", features = ["html_reports"] } tower = { version = "0.5", features = ["util"] } http = "1" hickory-resolver = { version = "0.26", features = ["https-ring", "webpki-roots"] } hickory-proto = "0.26" x509-parser = "0.18" [[bench]] name = "hot_path" harness = false [[bench]] name = "throughput" harness = false [[bench]] name = "dnssec" harness = false [[bench]] name = "recursive_compare" harness = false [profile.release] lto = "fat" codegen-units = 1 strip = true [lints.clippy] cognitive_complexity = "warn"