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.