This PR updates all non-user visible dependencies.
It also makes a slight change to the CI workflow to make it compatible
with our Minimal Supported Rust Version policy.
Bug fixes
* Fix handling of tabs when formatting RDATA using `DisplayKind::Tabbed`.
([#516])
* Fix for in-place zone parser yielding incorrect TTLs. ([#538])
* Generalize `ZoneUpdater` to support any `Record` type, not just
`ParsedRecord`. ([#535])
* Trim leading modulus and public exponent zeroes per RFC 3110 section 2.
([#541])
* Fix panic in zonetree from in-place zonefile after encountering a malformed
record. ([#573])
Unstable features
* `unstable-server-transport`:
* Don't discard the NOTIFY SOA serial, if one is received. Existing users
of the `Notifiable` trait will need to update their code as this change
adds an argument to `Notifiable::notify_zone_changed()`. [#562])
* `unstable-client-transport`:
* Fix an issue in Stream::Transport when a reply arrives early.
([#568] by [@TheJokr])
Other changes
* Fix docs on `XfrResponseInterpreter`. ([#510])
---------
Co-authored-by: Anthony Ramine <123095+nox@users.noreply.github.com>
The MSRV is being bumped so that `domain` can access newer language features. In particular:
- `<[u8]>::utf8_chunks()` (1.79) is very useful for processing byte strings that will _mostly_ contain valid UTF-8 text.
- `core::net` (1.77) allows us to remove our polyfills of `Ipv4Addr` etc., used when the `std` feature is disabled.
- `async fn` and return-position `impl Trait` in traits (1.75) allow us to define traits using `async fn`, avoiding the overhead of `Box<dyn Future>` for un-nameable future types.
- `Option::is_some_and()` (1.70) simplifies a very common pattern when inspecting optional values.
The MSRV bump policy is also being updated; it sets a maximum MSRV (relative to the latest stable Rust version) and documents the conditions under which a bump will occur.
This PR proposes a revised policy for dealing with minimum supported Rust
versions.
It suggests to keep the rust-version field in Cargo.toml at the oldest Rust
version that is able to build with minimal dependency versions and all
features enabled. In addition, the Rust version necessary to build with
latest dependencies is provided in the README and as a comment in
Cargo.toml. Both these versions are checked in the CI workflow.
The reasoning behind the proposal is that rust-version sets a hard limit on
the version, so it should be chosen as low as possible. While technically it
could be lower with a subset of the features selected, this feels like a
slippery slope and setting the version with all features selected feels like
an acceptable compromise.
Only documenting the version that is necessary to build with latest
dependencies isn’t ideal but at least provides some guidance as to what to
choose for people who go look for some.