Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
[RFC] Minimum Supported Rust Version Revisit #449
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
[RFC] Minimum Supported Rust Version Revisit #449
Changes from all commits
5d95e94
efac109
2f90e19
2d4ff21
25325f5
File filter
Filter by extension
Conversations
Jump to
There are no files selected for viewing
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.
Are there existing projects that do this?
I've argued against this in the last meeting, and I still feel that this is a bad idea for a general policy. To summarize my thoughts:
As such, I feel like this solution is not fit to be part of the general MSRV policy. It can still make sense to do this, but that's a case-by-case decision. I think the general policy should be to just bump the WG crate's version accordingly with the next release. Also note that we shouldn't feel like we're forced to do the new release immediately, as an MSRV bump is just a documentation change, so it can be queued up with other changes.
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'm not aware of any other projects that do this. I don't have a huge amount of visibility, though.
That being said, I did try to mitigate this approach by suggesting this in terms of documentation:
This would be the difference between "taking changes, including ones that break MSRV", and "do not take changes that break MSRV".
Without setting an upper bound on the dependency, then we have implicitly increased the MSRV, which at least as described in this RFC, would require a version bump.
I would suggest that this might be an issue that should be fixed upstream in Cargo itself, if it is something that "should" work.
Couldn't this be fixed by an implicit
cargo update -p msrv_breaking_crate
step to force re-consolidation of versions? Not sure if I'm completely understanding.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.
Does this work in practice or does Cargo have any pitfalls with
*
requirements? Also, the default recommended format should probably just be the usualversion = "1.x.y"
, notversion = "1.*"
.If the WG crate specifies an upper bound,
cargo update
must respect that. If any other crate does not specify that bound and pulls in a second, newer version,cargo update
will not do anything since it doesn't downgrade unless you tell it to choose a specific version of the dependency.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'm not sure it's a good idea. Pulling a single version of dependency instead of multiple of them is better: multiple versions of the same crate can lead to multiple incompatible interfaces.