mehcode / config-rs

⚙️ Layered configuration system for Rust applications (with strong support for 12-factor applications).
Apache License 2.0
2.43k stars 206 forks source link

[release-0.13.x] Update MSRV to 1.63.0 #487

Closed matthiasbeyer closed 5 months ago

matthiasbeyer commented 8 months ago

Foe the next 0.13.x release, we need a newer MSRV, because the log dependency does not build with 1.59.0 anymore.

So we update the MSRV here.

matthiasbeyer commented 8 months ago

I don't like where this is going...

matthiasbeyer commented 8 months ago

UUuuh all green now. @ijackson you're welcome to experiment on another solution. If that does not work out, we can merge this PR instead. But I'll wait for your stuff. And no need to hurry if you cannot get it done tomorrow - I have time! :laughing:

polarathene commented 8 months ago

I don't like where this is going...

There's a cargo command (third-party IIRC) that can be used to identify the MSRV for a project based on its dependencies I think?

You may want to also manage it in the Cargo.toml as one of my PRs mentioned.

ijackson commented 8 months ago

Instead of this MR, how about the approach I took in #492 ?

polarathene commented 8 months ago

FWIW, cargo-msrv could detect the requirement with dev-dependencies too. It supports providing a custom command such as cargo check --tests. This avoids the approach taken in this PR with incremental bumping until the CI is happy.

The MSRV of many crates during my investigation were averaging around 1.63 / 1.64, others with 1.60. Since @ijackson has an MSRV of 1.65, you could probably consider 1.64 going forward.

1.63 is also apparently what the current Debian stable (Bookworm) release is using, which is an MSRV target for some projects, but Debian is rather slow pace, other crates have an MSRV policy that would / has moved on from that. Less of an issue when they adopt rust-version in Cargo.toml.


I think Cargo.toml can address the current CI issues with a Cargo.lock.msrv file (seems best practice?) and set a 1.56 rust-version.

Nothing else in config-rs for this branch requires raising the MSRV beyond deps and how they're resolved by default, that doesn't really warrant raising rust-version unless you want to update Cargo.toml in a way that'd require it. MSRV policy is different AFAIK, and some CI will use a higher MSRV for running tests (rust-version can still be verified separately).

TL;DR

matthiasbeyer commented 5 months ago

0.13.x is now no longer the latest release, so I'll close this unmerged. All patchreleases go to 0.14.x now.