mirror of
https://github.com/NLnetLabs/domain.git
synced 2026-09-27 12:14:55 +02:00
Breaking changes * Added new `LimitExceeded` variant to `MessageBuilder`'s `PushError`. ([#349]) * Changed the `Resolver` and `SearchNames` traits of the stub resolver to use lifetimes for associated types. This makes it easier to keep the stub resolver behind an arc or other smart pointer. ([#596]) New * Added `rdata::dnssec::Timestamp::to_system_time` to help sorting timestamps. ([#548]) * Added support for the `TLSA`, `OPENPGPKEY`, `SSHFP`, and `IPSECKEY` record types and added presentation format support for the `SVCB`/`HTTPS` record types. ([#569]) * Added support for the `CAA` record type. ([#434] by [@weilence]) * Added `FreezeBuilder` to the message compressors. ([#601] by [@rossmacarthur]) * Added support for the `RP` record type. ([#620]) * Added a position counter to the zonefile parser, available via `Zonefile::current_offset`. ([#642]) Improvements * Excluded `moka` dependency from the `resolv` feature, reducing the number of dependencies and compile time significantly. ([#575] by [@WhyNotHugo]) * Made various methods in `RelativeName` into const fns. ([#576] by [@WhyNotHugo]) Bug fixes * When parsing a Bind-style public key file, allow an optional TTL field. ([#593]) * `XfrMiddlewareService` should always support at least one concurrent XFR. ([#599]) * Fixed generating an ED448 keypair. ([#608]) Unstable features * `unstable-crypto-sign` * Added support for RSA/SHA-512 to openssl signer. ([#550]) * `generate` now takes `&GenerateParams`. This breaks existing uses of `generate` ([#608]) * `unstable-server-transport` * Return an error response when a `Service` returns a `ServiceError`. ([#390]) * Implemented `std::error::Error` for `ServiceError`. ([#570] by [@rossmacarthur]) * Be more lenient when timing out connections while they are in a transaction. ([#399]) * Removed defaults for type arguments to prevent intermediate types that impl the trait from not allowing the defaults to be overridden. ([#484]) * Added commonly required bounds to the `Service` trait rather than leaving them to the impl. ([#484]) * Removed unnecessary `?Sized` bound on `impl Service for U where U: Deref`. ([#484]) * `unstable-sign` * keyset improvements ([#551]) * Store the algorithm and key tag of a key to be able to reject duplicate key tags and accidental algorithm rolls. * Store whether a key is considered available for a key roll. Rolls with new keys that are not available are rejected. * Added two alternative key rolls for KSK and ZSK key rolls. * Added an algorithm roll. * Added more operations on UnixTime. * Added more actions * Allow loading public keys only. ([#594]) * Added support for decoupled keys. ([#594]) * `RecordsIter::new` has been replaced with `RecordsIter::new_from_owned`. There is a new `RecordsIter::new_from_refs` that takes a `&[&Record]]`. This breaks existing uses of `RecordsIter? and related types. ([#614]) * `unstable-xfr` * Various fixes and improvements. ([#507]) Other changes * Dependency upgrades: * [hashbrown] to 0.17, ([#633]) * [heapless] to 0.9, ([#634]) * [octseq] to 0.6, ([#634]) * [rand] to 0.10. ([#631])
204 lines
8.0 KiB
TOML
204 lines
8.0 KiB
TOML
[workspace]
|
|
resolver = "3"
|
|
members = [".", "./macros"]
|
|
|
|
[workspace.package]
|
|
version = "0.12.0"
|
|
edition = "2021"
|
|
authors = ["NLnet Labs <dns-team@nlnetlabs.nl>"]
|
|
homepage = "https://nlnetlabs.nl/projects/domain/"
|
|
repository = "https://github.com/nlnetlabs/domain/"
|
|
keywords = ["DNS", "domain"]
|
|
license = "BSD-3-Clause"
|
|
|
|
# The MSRV is at least 4 versions behind stable (about half a year).
|
|
rust-version = "1.87.0"
|
|
|
|
[package]
|
|
name = "domain"
|
|
version.workspace = true
|
|
edition.workspace = true
|
|
authors.workspace = true
|
|
homepage.workspace = true
|
|
repository.workspace = true
|
|
rust-version.workspace = true
|
|
keywords.workspace = true
|
|
license.workspace = true
|
|
|
|
description = "A DNS library for Rust."
|
|
documentation = "https://docs.rs/domain"
|
|
readme = "README.md"
|
|
|
|
[dependencies]
|
|
domain-macros = { path = "./macros", version = "=0.12.0" }
|
|
|
|
# TODO: This _should_ be optional, but it is used by some record-type-specific
|
|
# zonefile scanning code that is not gated behind a feature flag.
|
|
jiff = { version = "0.2.1", default-features = false }
|
|
|
|
# Optional dependencies:
|
|
arbitrary = { version = "1.4.1", optional = true, features = ["derive"] }
|
|
bumpalo = { version = "3.12", optional = true }
|
|
constant_time_eq = { version = "0.4.2", optional = true }
|
|
octseq = { version = "0.6.0", default-features = false }
|
|
rand = { version = "0.10.1", optional = true }
|
|
arc-swap = { version = "1.7.0", optional = true }
|
|
bytes = { version = "1.2", optional = true, default-features = false }
|
|
chrono = { version = "0.4.35", optional = true, default-features = false } # 0.4.35 deprecates Duration::seconds()
|
|
futures-util = { version = "0.3", optional = true }
|
|
hashbrown = { version = "0.17.0", optional = true, default-features = false, features = ["allocator-api2", "inline-more"] } # 0.14.2 introduces explicit hashing
|
|
heapless = { version = "0.9.2", optional = true }
|
|
libc = { version = "0.2.153", default-features = false, optional = true } # 0.2.79 is the first version that has IP_PMTUDISC_OMIT
|
|
log = { version = "0.4.22", optional = true }
|
|
parking_lot = { version = "0.12", optional = true }
|
|
moka = { version = "0.12.3", optional = true, features = ["future"] }
|
|
openssl = { version = "0.10.72", optional = true } # 0.10.70 upgrades to 'bitflags' 2.x
|
|
proc-macro2 = { version = "1.0.69", optional = true } # Force proc-macro2 to at least 1.0.69 for minimal-version build
|
|
ring = { version = "0.17.2", optional = true }
|
|
rustversion = { version = "1", optional = true }
|
|
secrecy = { version = "0.10", optional = true }
|
|
serde = { version = "1.0.130", optional = true, features = ["derive"] }
|
|
siphasher = { version = "1", optional = true }
|
|
smallvec = { version = "1.3", optional = true }
|
|
tokio = { version = "1.33", optional = true, features = ["io-util", "macros", "net", "time", "sync", "rt-multi-thread" ] }
|
|
tokio-rustls = { version = "0.26", optional = true, default-features = false }
|
|
tokio-stream = { version = "0.1.17", optional = true }
|
|
tracing = { version = "0.1.40", optional = true, features = ["log"] }
|
|
tracing-subscriber = { version = "0.3.18", optional = true, features = ["env-filter"] }
|
|
|
|
[features]
|
|
default = ["std", "rand"]
|
|
|
|
# Support for libraries
|
|
alloc = ["jiff/alloc"]
|
|
bumpalo = ["dep:bumpalo", "std"]
|
|
bytes = ["dep:bytes", "octseq/bytes"]
|
|
chrono = ["dep:chrono"]
|
|
heapless = ["dep:heapless", "octseq/heapless"]
|
|
rand = ["dep:rand"]
|
|
serde = ["std", "dep:serde", "octseq/serde"]
|
|
smallvec = ["dep:smallvec", "octseq/smallvec"]
|
|
std = ["alloc", "dep:hashbrown", "bumpalo?/std", "bytes?/std", "octseq/std", "jiff/std"]
|
|
tracing = ["dep:log", "dep:tracing"]
|
|
|
|
# Cryptographic backends
|
|
ring = ["dep:ring", "unstable-crypto-backend"]
|
|
openssl = ["dep:openssl", "unstable-crypto-backend"]
|
|
|
|
# Crate features
|
|
net = ["bytes", "futures-util", "rand", "std", "tokio"]
|
|
resolv = ["net", "smallvec", "unstable-client-transport"]
|
|
resolv-sync = ["resolv", "tokio/rt"]
|
|
tsig = ["bytes", "constant_time_eq", "ring", "smallvec"]
|
|
zonefile = ["bytes", "serde", "std"]
|
|
|
|
# Unstable features
|
|
unstable-new = []
|
|
unstable-client-cache = ["unstable-client-transport", "moka"]
|
|
unstable-client-transport = ["net", "tracing"]
|
|
unstable-crypto = ["bytes", "std"]
|
|
unstable-crypto-sign = ["dep:secrecy", "unstable-crypto"]
|
|
# Internal; also requires 'ring' or 'openssl' to be enabled.
|
|
unstable-crypto-backend = ["unstable-crypto"]
|
|
unstable-server-transport = ["arc-swap", "libc", "net", "siphasher", "tracing"]
|
|
unstable-sign = ["dep:smallvec", "dep:serde", "tracing", "unstable-crypto-sign"]
|
|
unstable-stelline = ["tokio/test-util", "tracing", "tracing-subscriber", "tsig", "unstable-client-transport", "unstable-server-transport", "zonefile"]
|
|
# Also requires 'ring' or 'openssl' to be enabled.
|
|
unstable-validator = ["zonefile", "unstable-client-transport", "unstable-crypto", "moka"]
|
|
unstable-xfr = ["net"]
|
|
unstable-zonetree = ["futures-util", "parking_lot", "rustversion", "serde", "std", "tokio", "tracing", "unstable-xfr", "zonefile"]
|
|
|
|
# Support for testing
|
|
arbitrary = ["dep:arbitrary"]
|
|
|
|
[dev-dependencies]
|
|
itertools = "0.14.0"
|
|
lazy_static = { version = "1.4.0" }
|
|
pretty_assertions = "1.4.1"
|
|
rstest = "0.26.1"
|
|
rustls-pemfile = { version = "2.1.2" }
|
|
serde_test = "1.0.130"
|
|
serde_json = "1.0.113"
|
|
yaml_serde = "0.10.3"
|
|
socket2 = { version = "0.6.3" }
|
|
tokio = { version = "1.37", features = ["rt-multi-thread", "io-util", "net", "test-util"] }
|
|
tokio-rustls = { version = "0.26", default-features = false, features = [ "ring", "logging", "tls12" ] }
|
|
tokio-test = "0.4"
|
|
tokio-tfo = { version = "0.4.3" }
|
|
webpki-roots = { version = "1.0.7" }
|
|
|
|
# For the "mysql-zone" example
|
|
#sqlx = { version = "0.6", features = [ "runtime-tokio-native-tls", "mysql" ] }
|
|
|
|
# For testing in integration tests:
|
|
mock_instant = { version = "0.6.0" }
|
|
|
|
[package.metadata.docs.rs]
|
|
all-features = true
|
|
rustdoc-args = ["--cfg", "docsrs"]
|
|
|
|
[[example]]
|
|
name = "download-rust-lang"
|
|
required-features = ["resolv"]
|
|
|
|
[[example]]
|
|
name = "lookup"
|
|
required-features = ["resolv"]
|
|
|
|
[[example]]
|
|
name = "resolv-sync"
|
|
required-features = ["resolv-sync"]
|
|
|
|
[[example]]
|
|
name = "client"
|
|
required-features = ["std", "rand"]
|
|
|
|
[[example]]
|
|
name = "client-transports"
|
|
required-features = ["net", "tokio-rustls", "unstable-client-transport"]
|
|
|
|
[[example]]
|
|
name = "client-cache-transport"
|
|
required-features = ["net", "unstable-client-cache"]
|
|
|
|
[[example]]
|
|
name = "server-transports"
|
|
required-features = ["net", "tokio-stream", "tracing-subscriber", "unstable-client-transport", "unstable-server-transport"]
|
|
|
|
[[example]]
|
|
name = "read-zone"
|
|
required-features = ["zonefile"]
|
|
|
|
[[example]]
|
|
name = "query-zone"
|
|
required-features = ["tracing-subscriber", "unstable-zonetree", "zonefile"]
|
|
|
|
[[example]]
|
|
name = "serve-zone"
|
|
required-features = ["zonefile", "net", "tokio-stream", "tracing-subscriber", "tsig", "unstable-client-transport", "unstable-server-transport", "unstable-zonetree"]
|
|
|
|
[[example]]
|
|
name = "ixfr-client"
|
|
required-features = ["zonefile", "net", "unstable-client-transport", "unstable-zonetree"]
|
|
|
|
[[example]]
|
|
name = "query-routing"
|
|
required-features = ["net", "unstable-client-transport", "unstable-server-transport", "tracing-subscriber"]
|
|
|
|
[[example]]
|
|
name = "keyset"
|
|
# Note that we have to pick a crypto backend eventhough the example doesn't
|
|
# need one.
|
|
required-features = ["serde", "unstable-sign", "ring"]
|
|
|
|
# This example is commented out because it is difficult, if not impossible,
|
|
# when including the sqlx dependency, to make the dependency tree compatible
|
|
# with both `cargo +nightly update -Z minimal versions` and the crate minimum
|
|
# supported Rust version (1.67 at the time of writing), both of which are
|
|
# tested by our CI setup. To try this example, uncomment the lines below and
|
|
# the sqlx dependency above, then run `cargo run --example mysql-zone`.
|
|
#[[example]]
|
|
#name = "mysql-zone"
|
|
#path = "examples/other/mysql-zone.rs"
|
|
#required-features = ["zonefile", "net", "unstable-server-transport", "unstable-zonetree"]
|