Welcome to the future!
v4.0.0 highlights:
--diff2=true
is now the default. diff2 is a new algorithm that is more reliable, safer, and easier to build on.- Bugfix: Information messages no longer count as "changes"
- DEV: CI/CD pipeline has moved from CircleCI to Github Actions.
- DEV: Added proper integration testing for IGNORE() functions.
- Many documentation updates and corrections
Before using this version, please test it!
$ dnscontrol --diff2=false preview
(This should be the same output you got with v3.x)
$ dnscontrol preview
(Check the output. The above 2 commands should have equivalent output. The format is different.)
$ dnscontrol push
(Review the changes for accuracy.)
diff2 is now the default!
v4.0.0 has zero (intentional) incompatible changes. The change to 4.x is to signify that the diff2 algorithm is now the default. The "diff2 project" is a rewrite of how DNSControl generates the list of changes to be performed when doing a dnscontrol push
. It is 100% upwards compatible but has more features, is easier to test and maintain, makes it easier to write new DNS providers, and makes it easier to add new features.
If you find a bug, issue, or incompatibility you can disable diff2 (dnscontrol --diff2=false preview
) or stay on the last 3.x release until the issue is fixed in v4.x. No new 3.x releases are planned. All new features/bugfixes will be on v4.x. Some new features will only be active for diff2 users. The diff1 code will be deleted from DNSControl sometime after August 1, 2023. See #2262 for all the dates and rationale.
Why diff2?
- IGNORE/NO_PURGE functions now work for all providers!
- IGNORE/NO_PURGE are now fully supported. Warnings about instability have been removed from the docs.
- IGNORE/NO_PURGE is more transparent: you see what is being ignored/not purged!
- It is significantly easier to write new providers. 80% of the work is done for the provider.
- Make it easier to add new features. Here's a preview of new features that will be added soon:
No DNSControl releases in June
I will be on vacation and won't be working on DNSControl from June 5 to July 5, 2023. I won't have much time for DNSControl in July either.
I hate to do a major release 2 weeks before I go away. However, I feel it is safe to do because of reasons listed in #2262 (comment). Hopefully a version number like v4.0.0 will signal to people not to switch to this release without additional testing.
I'm actually on vacation June 5 to July 30, 2023 but I hope to have time for coding in July.
Thanks!
Thanks to the many, many people that have tested recent releases. The bigger the bug you found, the more grateful I am! Special shout out to @SignalRichard for the new CI/CD pipeline. Thanks to @riyadhalnur for suggesting going to v4.x for this release. Thanks to @JBOClara for reporting a bug with diff2... he suffered through my debugging process and prevented everyone else from being exposed to the bug! Thanks to everyone that has contributed a bug fix, bug report, documentation fixes and all sorts of contributions! This is a community project (Stack's support is mostly paying for Github, I do most of the coding on my own time.) and it wouldn't be possible without the 185 contributors that make it happen!
Changelog
Other changes and improvements:
- 3d1cd30: BUG: "dnscontrol version" not working (#2356) (@tlimoncelli)
- 75a0d5d: DOCS: Document functions that return lists (#2358) (@tlimoncelli)
- 221a2d4: DOCS: Fix formatting error (missing endcode) (#2360) (@tlimoncelli)
- f6785aa: DOCS: Improve docker example (#2359) (@tlimoncelli)
- 66a76c4: Don't count diff2.REPORT (informational warnings) as a "correction" (#2361) (@tlimoncelli)
- 3aac3d3: TESTING: Mark 'IGNORE_TARGET b2285' as diff2-only (#2357) (@tlimoncelli)
- 0d044fd: Update Dockerfile to use Alpine 3.18 (#2362) (@jauderho)
- 84e39b4: ci: Remove duplicate goreleaser docker build (#2363) (@tlimoncelli)
- 8161e73: ci: Sort the provider test list (#2364) (@tlimoncelli)
- a597b28: diff2 is now the default. Users of diff1 will get a warning (#2366) (@tlimoncelli)
- 9e66c37: fix yaml (@TomOnTime)