Skip to content

track renamed and removed library feature gates #141617

Open
@jyn514

Description

@jyn514

Code

#![feature(stdsimd)]

fn main() {
    unsafe { core::arch::x86_64::_xbegin(); }
}

Current output

Compiling playground v0.0.1 (/playground)
error[E0658]: use of unstable library feature `stdarch_x86_rtm`
 --> src/main.rs:4:14
  |
4 |     unsafe { core::arch::x86_64::_xbegin(); }
  |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^
  |
  = note: see issue #111138 <https://github.com/rust-lang/rust/issues/111138> for more information
  = help: add `#![feature(stdarch_x86_rtm)]` to the crate attributes to enable
  = note: this compiler was built on 2025-05-25; consider upgrading it if it is out of date

error[E0635]: unknown feature `stdsimd`
 --> src/main.rs:1:12
  |
1 | #![feature(stdsimd)]
  |            ^^^^^^^

Some errors have detailed explanations: E0635, E0658.
For more information about an error, try `rustc --explain E0635`.
error: could not compile `playground` (bin "playground") due to 2 previous errors

Desired output

error[E0557]: feature has been removed
 --> src/main.rs:1:12
  |
1 | #![feature(stdsimd)]
  |            ^^^^^^^ feature has been removed
  |
  = note: removed in 1.78 (you are currently using 1.89-nightly)
  = note: this feature has been split into many smaller features; see <https://github.com/rust-lang/rust/issues/27731#issuecomment-1937538034> for an exhaustive list

Rationale and extra context

we have something like this for lang features, whose removal we explicitly track:

error[E0557]: feature has been removed
 --> src/main.rs:3:12
  |
3 | #![feature(external_doc)]
  |            ^^^^^^^^^^^^ feature has been removed
  |
  = note: use #[doc = include_str!("filename")] instead, which handles macro invocations

but there is no way to track this for libs features, which leads to unnecessarily confusing errors. it would be nice if we could help people out more here, especially since the people seeing this error are likely not the crate authors but just people who happen to be using a nightly toolchain.

Other cases

Rust Version

1.89.0-nightly

(2025-05-25 283db70ace62a0ae704a)

Anything else?

No response

Metadata

Metadata

Assignees

Labels

A-diagnosticsArea: Messages for errors, warnings, and lintsA-stabilityArea: `#[stable]`, `#[unstable]` etc.C-feature-requestCategory: A feature request, i.e: not implemented / a PR.E-help-wantedCall for participation: Help is requested to fix this issue.E-mediumCall for participation: Medium difficulty. Experience needed to fix: Intermediate.E-mentorCall for participation: This issue has a mentor. Use #t-compiler/help on Zulip for discussion.F-staged_api`#![feature(staged_api)]`T-compilerRelevant to the compiler team, which will review and decide on the PR/issue.T-libsRelevant to the library team, which will review and decide on the PR/issue.

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions