You may want to skip this release. More details below.
This is an exciting release. We're adding two major experimental features and fixing a number of small bugs:
-
TypeScript typings: Your IDE now knows the dnsconfig.js file format and can offer autocomplete suggestions! See https://stackexchange.github.io/dnscontrol/typescript
-
diff2: We've added a new differencing engine. This is the code that computes what DNS records have changed when doing
preview
andpush
. The new code is cleaner and easier to maintain, which will make it easier to add new features in the future. In particular, it greatly increases my confidence in features such as IGNORE() which are currently marked as "use with caution". diff2 is disabled by default; add the--diff2
flag to enable it. Once the code is stable, we plan on making diff2 the default and removing the old diff code from the project.
NOTE: We need help! Please try running with the --diff2
flag and report any errors. You should find it works the same as without the flag. If there are any differences, please let us know.
dnscontrol preview --diff2
dnscontrol push --diff2
Diff2 is implemented by these providers: AXFRDDNS, CSCGLOBAL, DIGITALOCEAN, DNSIMPLE, DOMAINNAMESHOP, GCORE, HEDNS, HETZNER, INWX, MSDNS, NS1, ORACLE, OVH, PORKBUN, SOFTLAYER.
Diff2 is NOT implemented (as of this writing) by these providers: AKAMAIEDGEDNS, AUTODNS, CLOUDFLARE, CLOUDNS, DESEC, DNSMADEEASY, GCLOUD, HEXONET, HOSTINGDE, LINODE, NAMECHEAP, NETCUP, NETLIFY, PACKETFRAME, POWERDNS, ROUTE53, RWTH, TRANSIP, VULTR.
NOTE: Support for diff2 in AZURE_DNS
is currently broken. #1907
For the current status of diff2 please refer to #1854
Why skip this release?
A few reasons:
- The build is broken and didn't generate all the binary artifacts we usually release. This should be fixed in 3.24.1 (or maybe .2 or .3!).
- The features added are experimental. You might want to use this version in your test environment but not your production environment.
- The non-experimental changes might not affect you.
Changelog
Major features:
- 54fc2e9: NEW FEATURE: diff2: A better "diff" mechanism (#1852) (@tlimoncelli)
- 1e337ab: Provide TypeScript typings for dnsconfig.js (#1830) (@j-f1)
- 481137d: OCTODNS: Remove OctoDNS provider (#1921) (@cafferata)
- bec7e1e: OCTODNS: Remove octodns provider (#1910) (@tlimoncelli)
- bf0badf: BUG: SPF split doesn't produce consistent output (#1865) (@tlimoncelli)
- ca5273b: DOC: Document how to BYO secrets (#1927) (@tlimoncelli)
Provider-specific changes in this release:
- 4cf4d34: AXFRDDNS: Add missing MD5 support (#1866) (@fritterhoff)
- 9b6a69c: AZURE_DNS: Defend against nil targets (@tlimoncelli)
- fa52b4f: GANDI_V5: Gandi now supports null MX (#1847) (@tlimoncelli)
- 7ad98a6: NS2: Update ns1 to 2.7.2 (#1857) (@costasd)
- 6f2b183: ORACLE: resolve "change to A" test fail (#1912) (@kallsyms)
- 0403b2c: TRANSIP: Fix quoting of TXT records (#1918) (@blackshadev)
- 01829a2: TRANSIP: For modifications always remove and re-add records (#1920) (@blackshadev)
- 47e9fe0: CLOUDFLAREAPI: DOCS: Clarify API instructions (#1932) (@tlimoncelli)
diff2-related changes:
- Implement diff2:
- b0f2945: REFACTOR: Add diff2 enable flag to all DNS providers (#1851) (@tlimoncelli)
- 397ce10: REFACTOR: Add a backwards compatible interface to diff2 (#1870) (@tlimoncelli)
- 214eaeb: DOCS: Clarify ByRecord() assertions (#1931) (@tlimoncelli)
- d765ced: CHORE: Make Test_filterBy more readable (#1869) (@tlimoncelli)
- Providers supporting the native diff2 module:
- 99a0eb8: HEDNS: Add full Diff2 support (#1915) (@rblenkinsopp)
- 7654107: NS1: Add support for diff2 (#1858) (@costasd)
- 6947388: OVH: Adopt diff2 (#1861) (@masterzen)
- 87c32df: PORKBUN: support diff2 and two small changes (#1855) (@imlonghao)
- Providers using diff2's backwards compatibility mode:
- 8f8c0ab: AXFRDDNS: Adopt diff2 in compatibility mode (#1905) (@tlimoncelli)
- 48f642c: CSCGLOBAL: Adopt diff2 in compatibility mode (#1875) (@tlimoncelli)
- cc132b7: DIGITALOCEAN: Adopt diff2 in compatibility mode (#1877) (@tlimoncelli)
- a498679: DNSIMPLE: Adopt diff2 in compatibility mode (#1878) (@tlimoncelli)
- e0fef39: DOMAINNAMESHOP: Adopt diff2 in compatibility mode (#1880) (@tlimoncelli)
- 801aae7: GCORE: Implement diff2 and greatly improve performance for getting record sets (#1867) (@xddxdd)
- f8fd853: HEDNS: Adopt diff2 in compatibility mode (#1887) (@tlimoncelli)
- 4083a0c: HETZNER: Adopt diff2 in compatibility mode (#1888) (@tlimoncelli)
- 30c653e: INWX: Adopt diff2 in compatibility mode (#1891) (@tlimoncelli)
- c62a85a: MSDNS: Adopt diff2 in compatibility mode (#1893) (@tlimoncelli)
- 347808f: ORACLE: Adopt diff2 in compatibility mode (#1897) (@tlimoncelli)
- 5f2dd2f: SOFTLAYER: Adopt diff2 in compatibility mode (#1901) (@tlimoncelli)
Other changes and improvements in this release:
- daf23b8: CHORE: Update deps (#1911) (@tlimoncelli)
- 46d5666: CHORE: Update deps (#1936) (@tlimoncelli)
- fe03b29: CHORE: format helpers.js (#1848) (@tlimoncelli)
- 96e4e88: Cleanups (#1871) (@tlimoncelli)
- 358ae77: DOCS: Akamai: Updated the Akamai URLs (#1926) (@cafferata)
- ba505a2: DOCS: Fixed wrong Route53 Markdown link (#1925) (@cafferata)
- 5c0801f: DOCS: Improve pkg/diff2 documentation (#1903) (@tlimoncelli)
- 446855e: DOCS: Typo
CloudFlare
(#1923) (@cafferata) - 0e3c4db: Delete CNAME (@tlimoncelli)
- a68d073: GANDI_V5: Wrong directory name in OWNERS (#1922) (@cafferata)
- 80fcc52: GCLOUD: DOCS: Clarify and fix formatting (#1924) (@tlimoncelli)