I am not so sure: I occasionally have to deal with a bunch of busy-work of updating Cargo.toml and publishing new versions of a chain of crates, when one of rust-analyzer's dependencies bumps major only for MSRV. This happened at least twice with some of the crossbeam crates.
It does seem to me that major ecosystem crates don't bump major semver on MSRV (lazy-static being another prominent example).
I wonder if there's enough consensus to put something like this on the API guidelines page:
Recommended MSRV practice:
- Clearly document MSRV policy
- Tentative recommendation is to not treat MSRV upgrade as semver breaking: semver breaking changes create a rippling effect for the ecosystem, where each reverse dependency needs to update Cargo.toml and publish new version to crates.io. Cargo-level solution to MSRV compatibility is being discussed in this RFC: (don't know the link).
- If MSRV policy is other than "latest stable", test MSRV on CI.
- When testing MSRV on CI, use a specific version of
Cargo.lock
or-Z minimal-versions
feature of Cargo, to avoid MSRV drift of dependencies.