-
Notifications
You must be signed in to change notification settings - Fork 43
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Reduce MSRV to 1.63 with minor change in RawFd type #62
Conversation
Not speaking to the value of this change but to the motivation:
A change in MSRV in this crate does not affect the MSRV of any other crate unless they take an action like bump their version requirement. You can maintain a valid dependency tree for your MSRV via |
I agree in principle that the jobserver crate should be allowed to increase its MSRV, but might want to be careful about doing so. On a rust 1.64 toolchain The reasons for submitting this PR are:
@epage I see you're contributing to the issue on MSRV-aware dependency resolution at rust-lang/cargo#9930. My two cents would be that MSRV bumps could require at least a minor version bump, so that older toolchains can still benefit from bug and/or security patches in the future. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I was the person bumping rust-version
just because it happened to be 1.66, without thinking of the consequence. This PR looks good me.
MSRV bumps are generally recognized as non-breaking. From a tooling perspective, minor and patch are equivalent. Also, a 1 year old MSRV covers 99% of requests to crates.io. |
@epage I've copied our discussion into your internals thread since it seemed a better place to discuss than this PR 😊 https://internals.rust-lang.org/t/pre-rfc-msrv-aware-resolver/19871/50 Agreed the current interpretation is that MSRV bumps are considered non-breaking. They clearly are breaking for some users though, and so perhaps alongside the MSRV aware RFC we could change the precedent to consider them "semi-breaking" changes. An MSRV bump doesn't require a major version bump, but crates could benefit by leaving room in the versioning scheme to have the option to release patches on the old MSRV for security fixes. Regarding the crates.io request metrics, I don't doubt the rust community is more up to date than C++ users, but I'd note that legacy/enterprise users will often have their own crates.io mirrors and forked repositories. So crates.io metrics could be skewed in favour of smaller non-legacy projects. |
I noticed that a patch version increment has caused other crates MSRV values to change, such as the zstd crate: gyscos/zstd-rs#253
This MR changes the RawFd type to one present in older versions of rust, so that the MSRV can be reduced to 1.63.
My understanding is that this type should be equivalent because it's gated against
#[cfg(unix)]
, and so the benefits ofstd::os::fd::RawFd
also supporting WASM is negated. rust-lang/rust#98699In theory the MSRV of the crate library is 1.60, but there are dev-dependencies that require 1.63 which would break the MSRV testing workflow (rustix, required by tempfile).
If we insist on keeping the usage of
std::os::fd::RawFd
, I can feed back to the zstd crate and ask them to bump their MSRV instead. Thank you!