-
Notifications
You must be signed in to change notification settings - Fork 293
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
1.84.0 release post #1451
base: master
Are you sure you want to change the base?
1.84.0 release post #1451
Conversation
cc rust-lang/rust#133210 @lcnr @rust-lang/types -- I expanded/reworded a bit the stub you had started for new trait solver in coherence, would definitely appreciate review to make sure I didn't get the details too wrong :) cc @joshtriplett @rust-lang/cargo for the section on MSRV-aware resolver, I sort of semi-randomly came up with recommendations and general prose but very happy to replace it if there's something better or actual recommendations the team wants to offer :) cc @rust-lang/opsem for the strict provenance section -- I tried to find a balance between copying in the whole contents of the standard library docs and referencing them, very open to changes though. |
cc @rust-lang/release as well... |
cc @alex-semenyuk @traviscross for relnotes blog post (I am triagebot) |
posts/2025-01-09-Rust-1.84.0.md
Outdated
while providing library consumers a way to opt-in to using new package versions | ||
if they need compatibility with older toolchains. | ||
|
||
Library authors should start declaring their MSRV. Previously, bumping the |
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.
Instead of urging people setting MSRV, I might put focus on thinking their MSRV “policy” under a reasonable consideration, and then set the value.
Cargo doc does provide expectations and recommendations to help lib authors find their own policies, though I don't know how to put that properly in this paragraph 😞.
Anyway, thanks for writing this!
@Mark-Simulacrum I already spent some effort on Strict Provenance release notes in rust-lang/rust#131996, did you see that? I thought that is the intended place for such text. |
cc @epage |
Co-authored-by: Weihang Lo <[email protected]>
Co-authored-by: Josh Triplett <[email protected]>
Co-authored-by: Josh Triplett <[email protected]>
Co-authored-by: Josh Triplett <[email protected]>
Thanks, I had seen it previously but missed it when putting together the blog (just my bad). Copied that text in, it looks good to me, thanks for writing it up! |
posts/2025-01-09-Rust-1.84.0.md
Outdated
|
||
## What's in 1.84.0 stable | ||
|
||
### Cargo can use toolchain version for library version selection |
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.
“A toolchain”? “The toolchain”?
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.
This header isn't ideal IMO -- but I'm not sure adding an article will help. It's hard for me to succinctly describe what this feature is without using jargon (e.g., MSRV), especially since it's not on by default.
posts/2025-01-09-Rust-1.84.0.md
Outdated
Library authors should take the MSRV-aware resolver into account when deciding | ||
their policy on adopting new Rust toolchain features. Previously, a library | ||
adopting features from a new Rust toolchain would force downstream users of | ||
that library who have an older Rust version to either upgrade their toolchain | ||
or manually select an old version of the library compatible with their | ||
toolchain (and avoid running `cargo update`). Now, those users will be able to | ||
automatically use older library versions compatible with their older toolchain. | ||
In the future, we expect this to provide more flexibility for library authors | ||
to select their preferred support strategy for Rust versions, with the toolchain | ||
helping users on older toolchains avoid breakage. |
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.
If we want to provide more context on setting an MSRV, https://doc.rust-lang.org/cargo/reference/rust-version.html is where we have that documented and is fairly new so people are likely to have missed it
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 think we link that already in the first sentence?
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.
The difference is that is linking to it to provide context for the field while if we linked to it here, it would be to call out that guidance on MSRV policy exists. While the lead up sections are helpful, we could even link directly to https://doc.rust-lang.org/cargo/reference/rust-version.html#setting-and-updating-rust-version
As I said, "if we want to provide more context".
posts/2025-01-09-Rust-1.84.0.md
Outdated
The new resolver will be enabled by default with the 2024 edition (expected to | ||
stabilize in 1.85), but can be enabled as of 1.84 by setting | ||
[`package.resolver = "3"`](https://doc.rust-lang.org/cargo/reference/resolver.html#resolver-versions) in the Cargo.toml manifest file, or | ||
[`resolver.incompatible-rust-versions = "fallback"`](https://doc.rust-lang.org/cargo/reference/config.html#resolverincompatible-rust-versions) in the Cargo configuration file. |
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.
(opening a new thread since #1451 (comment) is resolved and don't want this missed)
TODO: Should we talk about resolver v3 and/or recommend that as the path to enabling instead?
To me, setting it in manifest is a bit better than in config file. Not every project checks in
.cargo/config.toml
.
The emphasis should be on the config but with specific context.
It is true that we generally prefer project state to be in the manifest and transient state to be in the config file. This would generally be a project default that people would want to create a happy path for contributors.
However, if we only talk about the manifest, people will assume they can only use this feature if they bump their MSRV which would severely hamper the adoption of this feature as people with an MSRV are unlikely to bump it to gain access to this. We also need to acknowledge the config to ensure people know they can override this in CI for testing the latest dependencies.
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.
It's not clear to me what changes you're specifically looking for here (especially with a bunch of the rewording already done) -- maybe you can suggest something specific?
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.
The main focus of my comment is on emphasizing the config which is now done so people find a way to use this without bumping MSRV.
It would be nice to find a way to tell people that they don't need to bump MSRV to use this feature but I can't think of a succinct enough way of doing it.
We can probably mark this as resolved.
Co-authored-by: Jake Goulding <[email protected]>
Co-authored-by: Travis Cross <[email protected]>
Co-authored-by: Ed Page <[email protected]>
posts/2025-01-09-Rust-1.84.0.md
Outdated
The new resolver will be enabled by default with the 2024 edition (expected to | ||
stabilize in 1.85), but can be enabled as of 1.84 by setting | ||
[`package.resolver = "3"`](https://doc.rust-lang.org/cargo/reference/resolver.html#resolver-versions) in the Cargo.toml manifest file, or | ||
[`resolver.incompatible-rust-versions = "fallback"`](https://doc.rust-lang.org/cargo/reference/config.html#resolverincompatible-rust-versions) in the Cargo configuration file. |
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.
With the new example, I feel like we can trim this down
The new resolver will be enabled by default with the 2024 edition (expected to | |
stabilize in 1.85), but can be enabled as of 1.84 by setting | |
[`package.resolver = "3"`](https://doc.rust-lang.org/cargo/reference/resolver.html#resolver-versions) in the Cargo.toml manifest file, or | |
[`resolver.incompatible-rust-versions = "fallback"`](https://doc.rust-lang.org/cargo/reference/config.html#resolverincompatible-rust-versions) in the Cargo configuration file. | |
The new resolver will be enabled by default with the 2024 edition (expected to | |
stabilize in 1.85). |
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 think the example doesn't reference Cargo.toml setting so this is probably still needed in the expanded form?
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.
Saying that it can opt-in with the config is redundant with the earlier section. That just leaves package.resolver
which feels odd to leave dangling.
I posted an alternative suggestion at https://github.com/rust-lang/blog.rust-lang.org/pull/1451/files#r1902126387
Feel free to take that or close both
Co-authored-by: alexey semenyuk <[email protected]>
OK, I think that incorporates the feedback I have clear solutions for. I'm still not super happy with the header for the MSRV section, but I don't have any better ideas than the tweak I applied just now. |
Co-authored-by: Ed Page <[email protected]>
Rendered