OLD-CHANGELOG.md
This is the historical changelog for Hickory DNS.
Current release notes are maintained on GitHub Releases.
Full Changelog: https://github.com/hickory-dns/hickory-dns/compare/v0.25.0-alpha.4...v0.25.0-alpha.5
hickory-server by @pvdrz in https://github.com/hickory-dns/hickory-dns/pull/2391push_label API and update variable names by @japaric in https://github.com/hickory-dns/hickory-dns/pull/2408just clean by @divergentdave in https://github.com/hickory-dns/hickory-dns/pull/2446hickory-server supports NSEC3 by @pvdrz in https://github.com/hickory-dns/hickory-dns/pull/2512KeyPair type by @djc in https://github.com/hickory-dns/hickory-dns/pull/2541NOTICE This project has been rebranded to Hickory DNS and has been moved to the https://github.com/hickory-dns/hickory-dns organization and repo, from 0.24.0 onward. This blog post explains the reasoning behind this move.
dns client cli (like dig) #1680 by @bluejekyllu16::*_be_bytes represent length field (fixes DoQ) #1715 by @msoxzw.max(0), unnecessary with u32's #1691 by @bluejekyllSvcParamKey::Unknown parsing #1678 by @jeff-hinertracing from log #1706 by @erikh and @bluejekylledns methods on request and replaced with extensions and better scemantics #1675 by @leshowresolve #1649resolver.clear_cache() sync and async (dns2utf8) #1611CSYNC record from RFC7477 (@frelon) #1583zone_transfer method for AXFR and IXFR use cases, client only (@trinity-1686a) #1478use_edns configuration on AsyncClient (@astro) #1492TSIG authentication (@trinity-1686a) #1459DnsRequestOptions parameter from AsyncResolver::lookup, this is derived from ResolverOptswith-backtrace feature renamed to backtrace (@pinkisemils) #1577try_tcp_on_error) ( @peterthejohnston) #1562ServerFuture and other Catalog related API changes #1554ResponseHandler now must return a ResponseInfo to allow for more consistent logging #1554ResponseHandler trait is now async_trait, requires all impls to be annotated with #[async_trait] #1550Authority impls required to be internally modifiable and Send + Sync #1550Authority methods changes to async fn rather than returning custom Future impls #1550Authority trait is now async_trait, requires all impls to be annotated with #[async_trait] #1550REFUSED (and other negative) response(s), fall back to other nameservers (@peterthejohnston) #1513 #1526dnssec is no longer enabled by default, use dnssec-ring or dnssec-openssl #1506Authority moved into DnsSecAuthority #1506#[non_exaustive] #1426#[non_exaustive] #1426BufDnsStreamHandle rather than generic DnsStreamHandle #1433DnsResponse response now contains only a single Response #1433Name::append_name and Name::append_domain now properly fallible when name is too long #1448onion. TLD added to static resolution with negative responses (@trinity-1686a) #1479AXFR (@trinity-1686a) #1478Signer to SigSigner to differentiate from TSigner #1498structopt dependency #1644chrono dependency #1569RecordType::DNSSEC and moved all variants of DNSSECRecordType into RecordType #1506BufStreamHandle and StreamHandle #1433mdns to work on a new solution #1433Arc<str> rather than Arc<String>, use Arc::fromUdpSocket trait has grown an associated Time type.Connect trait has lost its
Transport associated type, instead relying on the Self type.DnsTcpStream trait, which is now a
bound for implementing the Connect trait.CachingClient from lookup_state to caching_client moduleResolverOpts::distrust_nx_responses to NameServerConfig::trust_nx_responses (@djc) #1212data-encoding is now a required dependency #12081.45ResolveErrorKind::NoRecordsFound will be returned #1197master (branch, moved to main) slave, in honor of Juneteenth #1141futures dependencies (@JohnTitor) #1109AsyncResolver::new (@balboah) #1077 #1056Runtime from ServerFuture::register_socket (@LucioFranco) #1088 #1087ResponseCode::high from u16 to u8 #1202REFUSED instead of NXDOMAIN when server is not an authority (@AnIrishDuck) #1137e.is_nx_domain() (@balboah) #1123xfer::dns_response::NegativeType and DnsResponse::negative_type to classify negative response type #1197DnsResponse::contains_answer to determine if a response message has data related to the query #1197RecordType::is_soa and RecordType::is_ns to easily check for these types #1197Message::all_sections to allow iteration over all Records in all sections in a Message #1197Message::take_queries to remove from a Message without requiring clone #1197DnsHandle::Error associated type to support generic errors across trust-dns libraries #1197io::Error (@brunowonka) #1163backtrace an optional dependency, backported from 0.20 (@jmagnuson) #1387futures dependency to std features (@antonylsg) #1003ResolverOpts for ease of use (@ackintosh) #1009trust-dns-proto no is no-default-features (@chunyingw) #993RuntimeProvider (@chunyingw) #975TokioAsyncResolver::tokio., root, targets #980## {version} (Resolver) and the existing notes from the top-level are formatted as ## {version} (Client/Server. This should make notes on releases easier. Going forward the scope of changes across crates will be captured as - ({crate}) {note} where all is used for across the board updates.0.12.trust-dns to trust-dns-clienttrust-dns-server to trust-dns, in bin/**Rust 1.39 minimum)tokio-compat feature to tokio-runtimeSecureDnsHandle to DnssecDnsHandleSecureSyncClient to SyncDnssecClienttesting feature to allow dependencies that might want access to some of the testing harnesses. #936 (@chunyingw)UdpSocket for compatibility with Tokio, when not using non-Tokio executors #824 (@chunyingw)Connect for Tcp connection compatibility with Tokio, when not using non-Tokio executors #794 (@chunyingw)byteorder dep dropped in favor of std implementations #844 (@lukaslueg)socket2/reuseport feature except when mdns is enabled*.example.com in zone filesdns-over-rustls to trust-dns-server (server) and trust-dns (client)dns-over-https-rustls experimental #557server/tests/named_test_configs/dns_over_tls_rustls_and_openssl.tomlutil/get-root-ksks20326 RSA root kskClientFuture implementations to align with new DnsExchange and DnsMultiplexer components in proto.ClientFuture after construction, now returns a "background" ClientFuture and a "foreground" BasicClientHandleClient has more type parameters, these match with the same types returned by the *ClientConnection constructorsnamed configuration now has AXFR disabled by default.tls renamed to dns-over-opensslnative-tls and tokio-tls to 0.2rusqlite to 0.15trust-dns-proto to 0.3, which brings in better Name and Label implsName and Label now support idna, punycode, see Name::from_strtrust_dns::rr::ZoneUsage for detecting restrictions on Names and their associated zonesName parsing #330NULL record type incorrectly valued at 0 to proper 10 #329 (@jannic)dnssec-ring, dnssec-openssl, and dnssec across all crates (replaces openssl and ring features)tls feature with tls-openssl, and tls in server (in preparation for tls-rustls)client calling into proto for actual implementationsClientHandle::send moved to trust_dns_proto::DnsHandle::send (internal API)client::ClientStreamHandle to trust_dns_proto::DnsStreamHandleMessage::sign has been renamed and change to the more general method Message::finalizeio::Errors have been converted to trust_dns_proto::ProtoErrorSyncClient and SecureSyncClient are now Send + Sync #245NativeTls and OpenSSL ClientConnection variants, use the Rustls impls or the tokio based TlsClientStream instead. This was required for SyncClient being Send + Synclookup to ClientHandle, simpler form with Queryquery to Query for ease of Query creationTrustAnchor::insert_trust_anchor to more safely consume PublicKey rather than Vec<u8>(README.md documentation changes for crates.io)
socket2/reuseport feature except when mdns is enabledName::is_fqdn for more accuracy (@rushmorem)Name::FromStr for simpler parsing, specify trailing . for FQDNName::append_label for clearer usage while appending labels to a NameName::append_name for clearer usage while appending one name to anotherName::append_domain alias for append_name and marking as FQDN&mut self methods on Name deprecated as unsafe, Name labels are now immutable.ClientHandle traits now take &Handle instead of Handle (@rushmorem)Name now tracks if it is a fully qualified domain name, slightly changes name parsing rules, allowing www.example.com without the trailing ., which means that FQDN names are not enforced.Name::with_labels see Name::from_labelsName::append wasn't clean, see Name::append_nameName::add_label exposed internal data structure, see Name::append_labelName::label unclear usage/name, see Name::append_labelName::prepend_label exposed internal data structure, unclear usage no replacementRecord::add_name unclear usage no replacementFrom<IpAddr> for Name (reverse DNS) #105Server types have been migrated to RFC#344 style. get_field() -> field(); field() -> set_field()ResolverFuture renamed to AsyncResolver #487 (@hawkw)AsyncResolver::new returns a tuple of an AsyncResolver and a future that drives DNS lookups in the background #487 (@hawkw)AsyncResolver lookup methods return BackgroundLookup<T> rather than T #487 (@hawkw)20326 RSA root kskIn an attempt to reduce the overhead of managing the project. The original
Client has now been revamped to essentially be a synchronous Client over the
ClientFuture implementation. The ClientFuture has proven to be a more stable
and reliable implementation. It was attempted to make the move seamless,
but two new types were introduced, SyncClient and SecureSyncClient, which
are both synchronous implementations of the old Client function interfaces.
Please read those docs on those new types and the Client trait.
Record and associated types have been migrated to RFC#344 style. get_field() -> field(); field() -> set_field()Please use the ServerFuture implementation from now on. Sorry for the inconvenience, but this is necessary to make sure that the software remains at a high quality and there is no easy way to migrate the original Server to use ServerFuture.
tests/named_test_configs/example.tomldns-over-native-tls or dns-over-rustls features) #396mdns feature required) #363mdns feature required) #337Lookup objects @hawkw #444task_local not thread_local #460, #469tests from src, #52localhost lookup and no longer panic on no names #343trust-dns-proto to 0.3, which brings in better Name and Label implsresolv.conf parser in favor of the resolv-conf #335 (@cssivision & @little-dude)Name and Label now support idna, punycode, see Name::from_strfrom_system_conf on now supported on Windows 32bit targets (previously just 64bit) #313 (@liranringel)Name parsing #330NULL record type incorrectly valued at 0 to proper 10 #329 (@jannic)From<ResolveError> for io::ErrorSenddnssec-ring or dnssec-openssl features #268LookupIpStrategy from Ipv4AndIpv6 to Ipv4thenIpv6 #301 (@cssivision)#[cfg(ftest)] tests now #[ignore]/etc/hosts before querying (@cssivision)LookupIp now returns an iterator over owned data (IpAddr is Copy + Clone ref not necessary)Resolver::lookup will now return an Err on NxDomain and NoData responsesIterator removed from LookupIp result type, see LookupIp::iter for replacementoptions attempts:N aka ResolverOpts::attempts support, aka retriesResolverConfig::defaultResolverConfig and LookupIpFutureResolverConfig and LookupIpFutureLookupIpFuture type alias to LookupIpFuture<NameServerPool> compatibilityLookupIpFuture renamed to LookupIpFutureLookupIpFuture now takes a generic parameter, generally <NameServerPool>