Releases: dnsimple/erldns
v8.0.0
This release has many optimisations, documentation and code quality improvements.
Changed
- Rework
erldns_zone_cache
anderldns_resolver
: algorithm is extensively optimised and now supports ENT correctly. - Rework
erldns_handler
: behaviour is now improved and clearly defined. Minimum supported handler version is now2
. - Split
erldns_resolver
pipe into more granular steps, addingerldns_resolver_recursive
,
erldns_dnssec
,erldns_sorter
, anderldns_section_counter
. - Add
erldns_questions
questions filter to the packet pipeline. - Update dns_erlang to v4.3 and remove
erldns_records:name_type/1
. - Accept no SOA record if no RRSIG are required.
- Documentation improvements (#267)
- Separate edns payload size over UDP as a configurable pipe (#267)
- Extend pipelines with halt and secondary pipelines (#268)
Added
[erldns, pipeline, questions]
telemetry event with#{count => non_neg_integer()}
wherecount
is the number of questions removed.- Document some design decisions (#265)
- Add TLSA record support (#270)
Deprecated
- SPF record support will be removed in the upcoming releases (https://blog.dnsimple.com/2025/07/discontinuing-spf-record-type/)
Fixed
Full list of changes
- Cosmetic cleanups by @NelsonVides in #252
- Update dns_erlang and remove erldns_records:name_type by @NelsonVides in #255
- Apply new elvis rules to further directories by @NelsonVides in #256
- Create question pipeline filter by @NelsonVides in #257
- Rework erldns_handler to be performant and type-safe by @NelsonVides in #258
- Split erldns_resolver by @NelsonVides in #259
- Cleanups by @NelsonVides in #260
- Zone and resolver rework — ENT ready by @NelsonVides in #261
- Improve handlers configuration by @NelsonVides in #262
- Coverage and minor resolver improvements by @NelsonVides in #263
- Stop overwriting SOA RRSIG TTLs by @NelsonVides in #264
- Document some design decisions by @NelsonVides in #265
- Fix bug with SOA records not updating correctly by @NelsonVides in #266
- Documentation improvements and minor code changes. by @NelsonVides in #267
- Pipeline improvements and extensions by @NelsonVides in #268
- Linter and compiler cleanups and v8 RC5 by @NelsonVides in #269
- Add TLSA record by @gustawlippa in #270
- Prepare v8 RC6 by @gustawlippa in #272
- Bump actions/checkout from 4 to 5 by @dependabot[bot] in #274
- Append exception details to the telemetry event by @NelsonVides in #273
- Prepare release v8.0.0 by @gustawlippa in #275
Full Changelog: v7.0.0...v8.0.0
v7.0.0
This is a big release full of massive performance improvements and protocol compliance,
but also of breaking changes. Read carefully the changelog and the documentation before migrating.
Major Changes
The application is now divided in three core subsystems, that is, listeners, packet pipelines,
and zones, which are configured differently and will require migration.
See m:erldns_listeners
. m:erldns_pipeline
and m:erldns_zones
respectively for documentation
on how to reconfigure.
Telemetry events, as well as logger events, are entirely scoped within these respective subsystems,
that means, that the events are now prefixed with [erldns, request, _]
, for listener workers,
and [erldns, pipeline]
for pipeline processing. Similarly, logger events are tagged with
domain => [erldns, admin | listeners | pipeline | zones]
metadata, and all are structured.
Custom parsers and encoders
If you had any custom parser or encoder, you will need to update them to the new API, which unifies
both into a single module. See m:erldns_zone_codec
for more information on its callbacks. Note
that the zone_to_erlang/1,2
callbacks are now decode/1
and zone_*/x
callbacks are now
encode/2
, and they all take only maps as input and output respectively.
TXT and SPF record formats
TXT and SPF record formats has changed, from a single string, to an array, to support
more complex DNS records & use cases, so that the following:
{
...
"type": "TXT",
"data": {
"txt": "\"Hi, this is some text\" \"with extras\""
}
},
becomes
{
...
"type": "TXT",
"data": {
"txts": ["Hi, this is some text", "with extras"]
}
},
A warning will be logged for each invalid record, but they will be skipped, and not loaded.
Changes
- Refactor the query processing pipeline #224
- Reimplement the network stack #225
- Rework zones loader #230
- Rework zones codecs #231
- Rework zones cache #232
- Rework documentation and internals #233
- Fix overriding packet size in optrr record #242
- Upgrade
dns_erlang
to v4. - Use
segmented_cache
for the zone cache and the throttle modules.
Added
- Support for OTP28 #220
- Support for
dns_erlang
v4, which enforces strings as binaries and options as maps - Introduce domain tag in logger events #244
- zone cache
put_rrset_zone
accepts zone records #243 - Add statistic functionality to listeners #227
Removed
- Support for TXT and SPF records with data as a single string, they must be a list of strings instead.
- Support for the
erldns_txt
parser #248 - Support for zone parsers taking input as lists #231
Fixed
- Fix DNSSEC timestamps #234
- Fix (C)DNS/(C)DNSKEY signing #235
- Fix cache non-normalised match bug #241
Security
- Introduce backpressure and load shedding #240