Version 3.1.0 Released2019-03-30

Source tarball and GPG signature available at: https://github.com/gdnsd/gdnsd/releases/

3.1.0 - 2019-03-30
    * RFC 8490 "DNS Stateful Operations" (DSO) implemented and enabled by
      default for all TCP listeners.  Can be disabled in case of interop or
      other issues via the new global config option "disable_tcp_dso".
    * Zonefile parsing can now use multiple threads for speed.  There's a new
      config option "zones_rfc1035_threads" (default: 2) to specify how many
      threads to use when parsing zones on start or reload.  You'll have to do
      some testing to find an optimal value for your setup.
    * TCP control sockets: you can now define a limited-functionality TCP
      control socket listener which gdnsdctl can connect to from another
      machine.  See the documentation for the new config option "tcp_control".
    * experimental_no_chain config option: As the name implies, this is for
      experimentation only.  If set to true, gdnsd will never chain through
      zone-local CNAME entries while generating responses, instead emitting
      just a singular CNAME RR.  See the documentation for more details!
    * Some substantial internal refactoring was done for code cleanliness and
      for making runtime queries more CPU/cache-efficient.