remove deprecated tool rls
by onur-ozkan · Pull Request #126856 · rust-lang/rust (original) (raw)
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 andprivacy statement. We’ll occasionally send you account related emails.
Already on GitHub?Sign in to your account
Conversation36 Commits4 Checks6 Files changed
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.Learn more about bidirectional Unicode characters
[ Show hidden characters]({{ revealButtonHref }})
r? @clubby789
rustbot has assigned @clubby789.
They will have a look at your PR within the next two weeks and either review your PR or reassign to another reviewer.
Use r?
to explicitly pick a reviewer
rustbot added A-testsuite
Area: The testsuite used to check the correctness of rustc
Status: Awaiting review from the assignee but also interested parties.
Relevant to the bootstrap subteam: Rust's build system (x.py and src/bootstrap)
labels
These commits modify the Cargo.lock
file. Unintentional changes to Cargo.lock
can be introduced when switching branches and rebasing PRs.
If this was unintentional then you should revert the changes before this PR is merged.
Otherwise, you can ignore this comment.
This comment has been minimized.
For the issue 2, we will have to handle this (and any other deprecated components) from the rustup side.
I will change the PR label as blocked until rustup have this.
onur-ozkan added S-blocked
Status: Blocked on something else such as an RFC or other implementation work.
and removed S-waiting-on-review
Status: Awaiting review from the assignee but also interested parties.
labels
@rbtcollins and I see no obvious downsides/blockers on Rustup's side regarding the removal of the "dummy" RLS.
The removal of RLS' shim created by Rustup itself is another issue though, which will be discussed in detail at rust-lang/rustup#3316 instead. Before that, you're still expected to see an rls
-named binary on the PATH
, and running it will cause Rustup to warn you about a not-yet-installed component.
Just tried the following on my machine:
rls error: 'rls' is not installed for the toolchain 'stable-aarch64-apple-darwin'. To install, run
rustup component add rls
eza -lah (which rls) Permissions Size User Date Modified Name lrwxr-xr-x@ - rami3l 13 Feb 2023 ~/.cargo/bin/rls -> /opt/homebrew/bin/rustup-init
When we remove the dummy rls (by deleting the rls source code from the repository) and stop including it in the release builds, what will users get when they invoke rustup component add rls
?
When we remove the dummy rls (by deleting the rls source code from the repository) and stop including it in the release builds, what will users get when they invoke
rustup component add rls
?
@onur-ozkan The same thing has happened before when clippy
was missing from several nightlies. No big deal.
This time, just imagine clippy
is missing from all the nightlies starting from a certain date, and that's exactly what it'll be like1. Those who want to install rls
will get an error when rls
is not present in that channel, but we should also not break the rare use case where people really want to install from a channel before rust-analyzer
was a thing...
I don't think a new deprecation warning in Rustup is worth our while: the dummy RLS has been a thing for such a long time after all.
Footnotes
- I'm simplifying a bit: for nightlies this is not a hard error, and the updater will happily update the current toolchain to the latest one with the component(s) in question; for betas/stables however, this is expected to be a hard error. ↩
@onur-ozkan The same thing has happened before when
clippy
was missing from several nightlies. No big deal.This time, just imagine
clippy
is missing from all the nightlies starting from a certain date, and that's exactly what it'll be like. Those who want to installrls
will get an error whenrls
is not present in that channel, but we should also not break the rare use case where people really want to install from a channel beforerust-analyzer
was a thing...I don't think a new deprecation warning in Rustup is worth our while: the dummy RLS has been a thing for such a long time after all.
Some of us were concerned that when people attempt to do rustup upgrades with rls component in their toolchain (even if they don't use it), this will cause a break. So, if rustup could provide a clear warning (e.g., "rls is no longer available; it will be skipped") without breaking the process, that would be useful and we could ship this PR without any hesitation.
@onur-ozkan I've made rust-lang/rustup#3920 trying to address this concern. Where do you think we should document the removed components though? I initially proposed the Rustup Book but it turned out that the book is updated per Rustup version so that might still cause problems if you remove components in the middle of a release cycle.
https://rust-lang.github.io/rustup-components-history looks better although I have no idea who actually controls it 👀
I think we're overthinking this.
The original concerns were:
1- If they are building rls with bootstrap, the build will fail.
2- Having rls in their toolchain will break the toolchain update.
For 1) that is a source-only concern.
For 2) rustup won't error, and by definition they must be upgrading on a channel (specific version toolchains won't get updates like this) - which means that to have this suddenly break, the user must have:
- been using stable, and not upgraded their toolchain for > 2 years
- be dependent on rls
The problem I see with depending on rustup to show a message is that rustup updates are often done headless - e.g. underneath vscode, or in github actions.
Sure, we can do it, but is this particular case going to show a message to the right people at the right time - and we'll have the complexity of that message in the system forever, since rustup supports installing very rust version ever.
And also, not all rust users use rustup - adding a message to rustup won't inform people using rpm or deb packages about the removal at all.
We've advertised this removal for years now....
IMO: just ship the removal. Add a clear note to the version release notes for the subsequent release.
Oh, one other issue - the approach of blocking this PR on rustup showing announcements is that rustup is self-updated after toolchains are updated. So people that run 'rustup update' when they realise they are missing the current version, will get the version, with the rls removal, and the existing message ... and then rustup will update.
As we have no daemon or cron-check of rustup versions, we have no way to ensure that people are likely to have updated it before updating rust. (We can of course do a new release in advance, but with the behaviour pattern above, this probably needs a full rust release cycle to have a good chance of being distributed in advance).
And relatedly, homebrew, snaps, and other distribution managed versions of rustup will update on their own schedule, so we'd need to coordinate with them to do a backport to their stable versions of their distributions, before rustup will be updated for their users. (Ignoring the related question of -when- their users will update rustup)
or 2) rustup won't error, and by definition they must be upgrading on a channel (specific version toolchains won't get updates like this) - which means that to have this suddenly break, the user must have:
* been using stable, and not upgraded their toolchain for > 2 years
I'm not quite understanding what this is trying to say. If we remove the rls
component, and If someone has the rls
component installed, and they try to update, it should error, correct? Why do you say they must not have updated in >2 years?
bors added a commit to rust-lang-ci/rust that referenced this pull request
D'oh it's the book update PR. I can't cancel this try-job, please requeue once the try-job comes back.
📌 Commit a657aeb has been approved by clubby789
It is now in the queue for this repository.
bors added S-waiting-on-bors
Status: Waiting on bors to run and complete tests. Bors will change the label on completion.
and removed S-waiting-on-author
Status: This is awaiting some action (such as code changes or more information) from the author.
labels
bors added S-waiting-on-author
Status: This is awaiting some action (such as code changes or more information) from the author.
and removed S-waiting-on-bors
Status: Waiting on bors to run and complete tests. Bors will change the label on completion.
labels
Signed-off-by: onur-ozkan work@onurozkan.dev
Signed-off-by: onur-ozkan work@onurozkan.dev
Signed-off-by: onur-ozkan work@onurozkan.dev
Signed-off-by: onur-ozkan work@onurozkan.dev
📌 Commit 707d4b7 has been approved by clubby789
It is now in the queue for this repository.
bors added S-waiting-on-bors
Status: Waiting on bors to run and complete tests. Bors will change the label on completion.
and removed S-waiting-on-author
Status: This is awaiting some action (such as code changes or more information) from the author.
labels
matthiaskrgr added a commit to matthiaskrgr/rust that referenced this pull request
bors added a commit to rust-lang-ci/rust that referenced this pull request
…iaskrgr
Rollup of 9 pull requests
Successful merges:
- rust-lang#126856 (remove deprecated tool
rls
) - rust-lang#133981 (rustdoc-json: Refractor and document Id's)
- rust-lang#136842 (Add libstd support for Trusty targets)
- rust-lang#137355 (Implement
read_buf
and vectored read/write for SGX stdio) - rust-lang#137457 (fix for issue 132802: x86 code in
wasm32-unknown-unknown
binaries) - rust-lang#138162 (Update the standard library to Rust 2024)
- rust-lang#138273 (metadata: Ignore sysroot when doing the manual native lib search in rustc)
- rust-lang#138346 (naked functions: on windows emit
.endef
without the symbol name) - rust-lang#138370 (Simulate OOM for the
try_oom_error
test)
r? @ghost
@rustbot
modify labels: rollup
bors added a commit to rust-lang-ci/rust that referenced this pull request
…iaskrgr
Rollup of 8 pull requests
Successful merges:
- rust-lang#126856 (remove deprecated tool
rls
) - rust-lang#133981 (rustdoc-json: Refractor and document Id's)
- rust-lang#136842 (Add libstd support for Trusty targets)
- rust-lang#137355 (Implement
read_buf
and vectored read/write for SGX stdio) - rust-lang#138162 (Update the standard library to Rust 2024)
- rust-lang#138273 (metadata: Ignore sysroot when doing the manual native lib search in rustc)
- rust-lang#138346 (naked functions: on windows emit
.endef
without the symbol name) - rust-lang#138370 (Simulate OOM for the
try_oom_error
test)
r? @ghost
@rustbot
modify labels: rollup
rust-timer added a commit to rust-lang-ci/rust that referenced this pull request
Labels
Area: The testsuite used to check the correctness of rustc
Area: The tidy tool
Status: Waiting on bors to run and complete tests. Bors will change the label on completion.
Relevant to the bootstrap subteam: Rust's build system (x.py and src/bootstrap)