Skip to content

Breaking change in 1.28: consider yanking and releasing as 2.0? #4210

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

Closed
chriskrycho opened this issue Mar 3, 2025 · 3 comments
Closed

Breaking change in 1.28: consider yanking and releasing as 2.0? #4210

chriskrycho opened this issue Mar 3, 2025 · 3 comments

Comments

@chriskrycho
Copy link

chriskrycho commented Mar 3, 2025

The API of a command line tool like rustup—particularly one that like rustup does not publish a programming API—just is its command line interface. The 1.28 release changed the behavior of rustup <command> not to install the relevant toolchain (#3985).

Note

To be extra clear: This is a reasonable and well-motivated change, and I support it! However, the details of the rollout matter very much.

This is a breaking change, and as such should not be rolled out as part of a minor release, where it is likely going to cause a non-trivial amount of churn as people work to update it.

I strongly suggest the following course of action:

  1. Yank 1.28.0.

  2. Revert the change.

  3. Publish the reversion as 1.28.1.

  4. If you are indeed committed to publishing this and doing so urgently, go ahead and do so as a new 2.0 release. If you don’t want to do a 2.0 release, that’s perfectly fine, but you should then not release this breaking change.

Bonus: I would strongly suggest finding a mechanic for getting more feedback on this kind of change before rolling it out in the future. I’m pretty plugged into the Rust community and ecosystem, and I had no idea this was even being considered, and if I had, I would have noted that it was (a) a good idea in many ways but also (b) needed to be a breaking release, with the concomittant considerations of “do we want to do a breaking release?” and “do we want to do a breaking release now?” that would naturally entail.

Rust’s commitment to stability and clear use of SemVer should absolutely apply to its core tools as well!

@chriskrycho chriskrycho changed the title Breaking change in 1.28: consider yanking and releasing a 2.0 if you want this Breaking change in 1.28: consider yanking and releasing a 2.0? Mar 3, 2025
@chriskrycho chriskrycho changed the title Breaking change in 1.28: consider yanking and releasing a 2.0? Breaking change in 1.28: consider yanking and releasing as 2.0? Mar 3, 2025
@Arnavion
Copy link

Arnavion commented Mar 3, 2025

Note that every CI that installs rustup via curl sh.rustup.rs | sh is auto-enrolled into the backward-incompatible change in current 1.28.0, and thus broken. So reintroducing it in 2.0 won't help if that URL then starts pulling in 2.0, the URL will also need to change to sh2.rustup.rs or something.

@Rigidity
Copy link

Rigidity commented Mar 3, 2025

Agreed, a breaking change as widespread as this would ideally be its own major version bump and new URL to cURL from, to prevent breakage in existing CI workflows that depend on rust-toolchain.toml being pulled in automatically.

@djc
Copy link
Contributor

djc commented Mar 3, 2025

Let's focus discussion in #4211.

@djc djc closed this as not planned Won't fix, can't repro, duplicate, stale Mar 3, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

4 participants