Skip to content

v4.0.0

Compare
Choose a tag to compare
@hannesm hannesm released this 15 Aug 14:09
· 437 commits to main since this release
39e87e0

CHANGES:

  • Switch to uDNS implementation, developed from scratch since 2017, primarily
    focusing on a recursive caching resolver. The server part supports dynamic
    updates (RFC 2135), transaction authentication with HMAC (RFC 2845), zone
    transfer (RFC 5936), incremental zone transfer (RFC 1995), change
    notifications (RFC 1996) amongst others.
  • The core library uses a GADT for resource record sets, where the key (resource
    record type) specifies the value type.
  • The API does not leak exceptions, but uses the result type where appropriate.
  • TCP transport is well supported and used widely (client uses it by default)
  • Naming: client is a DNS client, resolver is the recursive resolver library
  • The DNS library is split into the following opam packages and sublibraries:
    • dns - the core library
    • dns-tsig - transaction signatures
    • dns-zone - zone file parser (mostly taken from the 1.x series)
    • dns-cli - command line utilities (odig, onotify, ..)
    • dns-client - pure client implementation
      • .unix - DNS client using the Unix module for communication
      • .lwt - DNS client using Lwt_unix for communication
      • .mirage - DNS client using MirageOS for communication
    • dns-certify - helpers for let's encrypt provisioning
      • .mirage - certificate provisioning with MirageOS
    • dns-mirage - generic MirageOS communication layer
    • dns-server - pure server implementation
      • .mirage - MirageOS primary and secondary server
    • dns-resolver - pure recursive resolver implementation
      • .mirage - MirageOS recursive resolver
  • Only OCaml 4.07.0 and above are supported
  • Multicast DNS has been dropped for now
  • A client using async from JS has not been implemented yet