PackageTrack
Sign in Get early access

hickory-proto

hickory-proto is a safe and secure low-level DNS library. This is the foundational DNS protocol library used by the other higher-level Hickory DNS crates.

0.26.1 72M downloads/mo #983 most downloaded on crates.io hickory-dns/hickory-dns

What this package is like to depend on

Last release 3 months ago

01 May 2026

Ships unpredictably

gaps range from 2 weeks to 9 months

Some releases are documented

notes for 5 of 11 stable releases

Nothing withdrawn

no release was ever pulled

3 years old

21 releases · first in 2023

6 releases in the last 12 months

see the full history below

Release timeline

21 releases · Sep 2023 to May 2026
2024 2025 2026
Release Pre-release

Releases

latest 21
  1. 0.26.1 01 May 2026
    Release notes

    This point release for the 0.26 release series brings in several bug fixes, and no user-facing changes. Two security reports are addressed:
    RUSTSEC-2026-0120 and RUSTSEC-2026-0119.

    What's Changed

    • net: avoid infinite loop in NSEC3 processing by @djc in #3597
    • Limit work expended on name compression (backport) by @divergentdave in #3615

    Full Changelog: v0.26.0...v0.26.1

    Open source →
  2. 0.26.0 16 Apr 2026
    Release notes

    13 months after the release of 0.25.0, we finally have a bigger feature release of Hickory DNS, the suite of DNS libraries and authoritative/recursive name servers written in pure Rust. A lot of work has gone into this release, so we wanted to take a moment to release this before we continue work on deploying the Hickory DNS recursive resolver at Let's Encrypt (and did you see that Hickory is being used in some of Google's Pixel devices?). Because of the ongoing work, we expect that 0.27.0 might happen quite a bit sooner than in 13 months from now.

    These release notes describe a number of high-level improvements as well as API changes that are likely to break a larger fraction of our downstream users. Feedback (both on these notes and the release itself) is always welcome in our issue tracker or via our Discord server.

    Most of the following notes are broken up by specific components: the server binary and our library crates. However, for this release we've made several changes to the structure of our crates itself:

    • Network protocol support has moved out of the hickory-proto crate, into a new hickory-net crate (#3394); this allows the hickory-proto crate to cleanly focus on message encoding and decoding.
    • The hickory-client crate has been subsumed into hickory-net, in the client module (#3366). No future releases of the hickory-client crate are expected.
    • The hickory-recursor crate has been merged into hickory-resolver (#3370), guarded by a recursor feature which must be enabled explicitly. The recursor implementation was already tightly coupled to the resolver internals, so keeping it separate didn't really make sense.

    Additionally, substantial cross-crate changes have been made to improve our error handling:

    hickory-dns (the server binary)

    hickory-server (the library API)

    hickory-resolver

    We made many improvements to improve correctness and efficiency of both the recursive resolver and the "stub" resolver. In addition, we want to highlight the following changes:

    hickory-net

    We made substantial improvements to DNSSEC validation and our handling of potentially spoofing messages.

    hickory-proto

    Details

    For more details, review the detailed release notes for our pre-releases:

    and these final PRs merged after beta 4:

    Thanks

    Finally, we want to thank everyone who contributed to this release: @bryanlarsen, @billf, @hargut, @ibigbug, @xi0, @steffengy, @james7132, @Thomasdezeeuw, @Kriskras99, @mispp, @conradludgate, @nabijaczleweli, @musicinmybrain, @msrd0, @jmwample, @LAGonauta, @tisonkun, @provokateurin, @lemon-sh, @thomas-zahner, @jpds, @lpraneis, @zachsmith1, @jackboykin, @ZnqbuZ, @Jeidnx, @kn0sys, @matheus23, @benesch, @roblabla and of course our maintainers @cpu, @divergentdave, @marcus0x62 and @djc.

    Open source →
  3. 0.26.0-beta.4 14 Apr 2026 pre-release
    Release notes

    What's Changed

    • bin: add SO_REUSEPORT support with configurable UDP socket count by @cpu in #3549
    • resolver: move helper function below caller by @djc in #3564
    • proto: make Record fields public by @djc in #3557
    • proto: simplify text parsing by @djc in #3546
    • resolver: reduce log verbosity by @djc in #3572
    • Add systemd readiness+watchdog support by @jpds in #3576
    • More TCP tuning options, splitting up the confusing CHANNEL_BUFFER_SIZE constant by @cpu in #3578
    • prometheus: enable gzip compression on metrics endpoint by @jpds in #3579
    • net: refactor in preparation for storing proofs per record set by @djc in #3574
    • Upgrade rustls-platform-verifier to 0.7 by @djc in #3581
    • chore: Bump verison to beta.4 and ensure pinned verison deps by @matheus23 in #3583
    • bin: add support for jemalloc + profiling by @djc in #3585
    Open source →
  4. 0.26.0-beta.3 02 Apr 2026 pre-release
    Release notes

    What's Changed

    • resolver: Fix positive_min_ttl not clamping stored record TTLs by @jpds in #3550
    • resolver: Clamp TTLs on first response, not just cached responses by @jpds in #3551
    • resolver: increase default cache size to 8k by @djc in #3554
    Open source →
  5. 0.26.0-beta.2 27 Mar 2026 pre-release
    Release notes

    What's Changed

    • proto: default to enabling EDNS, increase max payload length by @djc in #3498
    • add a method that returns number of entries in blocklist zonehandler by @mispp in #3497
    • Fix docs.rs doc build by @roblabla in #3500
    • net: stop ignoring response decoding failures for UDP requests by @djc in #3499
    • bin: use SO_REUSEADDR for tcp sockets by @cpu in #3509
    • Be more strict about decode errors by @djc in #3505
    • Make EDNS payload length configurable by @divergentdave in #3504
    • bin: allow configuring UDP socket buffer sizes by @cpu in #3507
    • build(deps): bump rusqlite from 0.38.0 to 0.39.0 by @dependabot[bot] in #3513
    • Improve error for recursor zones with invalid roots configuration by @cpu in #3506
    • improve access control configuration by @cpu in #3508
    • reject QR=0 responses as invalid by @cpu in #3510
    • resolver: fix err propagation from NS hostname resolution by @cpu in #3517
    • proto: fix access_control IPv6 deny-only bypass by @cpu in #3521
    • Fix units of cache hit duration histogram by @divergentdave in #3523
    • fix(resolver): try remaining servers on timeout and penalize failed server SRTT by @jpds in #3520
    • resolver: fix sort comparator panic with QueryStatistics ordering by @jpds in #3525
    • resolver: fix cascading panic when SharedLookup inner future panics by @jpds in #3524
    • resolver: shuffle name server list at pool startup by @jpds in #3530
    • resolver: record SRTT for servers cancelled during parallel races by @jpds in #3531
    • resolver: enforce end-to-end timeout budget in NameServerPool by @jpds in #3527
    • resolver: add cache metrics by @benesch in #3522
    • net: don't error on UDP responses with the wrong ID by @djc in #3526
    • Simplify low-level message API by @djc in #3511
    • net: use async for h3 Cloudflare test by @djc in #3539
    • recursor: add criterion benchmarks for cold and warm resolution by @jpds in #3512
    • net/xfer: fixup DnsExchange rustdoc by @cpu in #3540
    • recursor micro-optimizations by @cpu in #3541
    • proto: optimize Name hashing and label comparison by @cpu in #3544
    • Simplify RData API by @msrd0 in #3542
    Open source →
  6. 0.26.0-beta.1 12 Mar 2026 pre-release
    Release notes

    What's Changed

    Note truncated.

    Open source →
  7. 0.26.0-alpha.1 03 Jun 2025 pre-release
    Release notes

    What's Changed

    Open source →
  8. 0.25.2 03 May 2025
    Release notes

    What's Changed

    Open source →
  9. 0.25.1 18 Mar 2025
    Release notes

    This is a small patch release to address errors that prevented publication of version 0.25.0 of some crates.

    What's Changed

    • Make sure test-support is a dev-dependency by @djc in #2871

    Full Changelog: v0.25.0...v0.25.1

    Open source →
  10. 0.25.0 18 Mar 2025
    Release notes

    0.25.0 represents a large release for the Hickory DNS project. Over 14 months since 0.24.0, we've added two new maintainers, divergentdave and marcus0x62, and have addressed many limitations. A team from Ferrous Systems shored up our support for DNSSEC, and we addressed a number of findings from our first security audit.

    Breaking changes

    This is not an exhaustive list of changes, but here are some of the most impactful breaking changes in this release:

    • Configuration for the Hickory DNS server crate has been reworked substantially to be more robust and secure. Most of the code related to the server binary has been moved out of the hickory-server library and into the hickory-dns binary crate.
    • Support for TLS using native-tls or OpenSSL has been removed. We now only provide first-party support for rustls (0.23, for DNS over TLS, HTTP/2, QUIC and HTTP/3). We support ring or aws-lc-rs for cryptographic operations both for DNSSEC and TLS. The dns-over-rustls,dns-over-native-tls, dns-over-openssl, dns-over-https-rustls, dns-over-https, dns-over-quic and dns-over-h3 features have been removed in favor of a set of {tls,https,quic,h3}-{aws-lc-rs,ring} features across our library crates.
    • The synchronous API in the resolver and client crates, which previously provided a thin partial wrapper over the asynchronous API, has been removed. Downstream users will have to migrate to the asynchronous API.
    • Support for the async-std runtime has been removed following the deprecation of the async-std crate by upstream (see their README). The async-std-resolver crate will no longer be updated.
    • The DNSSEC API was reworked to extend coverage to the recursor, add support for NSEC3, and make the API more ergonomic and harder to misuse.
    • Moved the RuntimeProvider API into the proto crate and use it consistently across the project.
    • Name values are now rooted by default in many places, and more consistently maintain their fqdn status.
    • Error types are now exposed directly in the crate roots.
    • Top-level TLS configuration in the resolver crate has moved to the ResolverOpts type. Specific NameServerConfigs should implicitly set up the ALPN protocol appropriate for the DNS protocol.
    • The ResolverOptions fields authentic_data and shuffle_dns_servers were removed. The former field didn't do anything; and should be covered by new DNSSEC API. shuffle_dns_servers functionality has been subsumed into the server_ordering_strategy field.
    • The use of rustls-native-certs via the native-certs feature was replaced with rustls-platform-verifier.
    • The tokio-runtime feature was renamed to tokio.
    • The serde-config feature was renamed to serde.
    • Serializations (and what the new release can deserialize) has changed; data serialized by 0.24 may not deserialize correctly on 0.25, and vice versa.

    Please don't hesitate to file an issue or ask on our Discord server if you have issues upgrading.

    Detailed changes since alpha.5

    Note truncated.

    Open source →
  11. 0.25.0-alpha.5 07 Feb 2025 pre-release

    Nothing published for this version

  12. 0.25.0-alpha.4 28 Nov 2024 pre-release

    Nothing published for this version

  13. 0.25.0-alpha.3 08 Nov 2024 pre-release

    Nothing published for this version

  14. 0.25.0-alpha.2 06 Aug 2024 pre-release

    Nothing published for this version

  15. 0.25.0-alpha.1 16 Jun 2024 pre-release

    Nothing published for this version

  16. 0.24.4 19 Feb 2025

    Nothing published for this version

  17. 0.24.3 07 Feb 2025

    Nothing published for this version

  18. 0.24.2 10 Dec 2024

    Nothing published for this version

  19. 0.24.1 18 Apr 2024

    Nothing published for this version

  20. 0.24.0 14 Oct 2023

    Nothing published for this version

  21. 0.1.0 26 Sep 2023

    Nothing published for this version

Every package, every release, already written down.

The archive is open and free. Watching your own project is what we are building next.

Browse the archive