Skip to content

Rustc pull update#2859

Merged
tshepang merged 17 commits intomainfrom
rustc-pull
Apr 30, 2026
Merged

Rustc pull update#2859
tshepang merged 17 commits intomainfrom
rustc-pull

Conversation

@workflows-rustc-dev-guide
Copy link
Copy Markdown

Latest update from rustc.

bors and others added 17 commits April 28, 2026 07:33
…, r=oli-obk

Remove `WithCachedTypeInfo::stable_hash`.



We store a stable hash value in the most common interned values (e.g. types, predicates, regions). This is 16 bytes of data.
- In non-incremental builds it's a straightforward performance loss: the stable hash isn't computed or used, and the 16 bytes of space goes to waste (but it still gets hashed when interning).
- In incremental builds it avoids some hashing but doesn't seem to actually be a genuine performance win, and the complexity doesn't seem worth it.

r? @oli-obk
Add infrastructure to query LLVM backend for specific assembly mnemonics
and use it in compiletest to conditionally run tests based on instruction
availability.

This fixes test failures with naked-dead-code-elimination which requires
the `RET` mnemonic.

Co-authored-by: Folkert de Vries <flokkievids@gmail.com>
switch to v0 mangling by default on stable

Following rust-lang/rust#89117, rustc has defaulted to the v0 mangling scheme by default (since Nov 20th 2025). This surfaced two bugs:

- rust-lang/rust#138261 was a small ICE (found via fuzzing) where an implementation-internal namespace was missing for global assembly - this occurs with names instantiated within global assembly (that can happen inside constants)

- rust-lang/rust#134479 only occurs with unstable `generic_const_exprs`

Since there have been three-to-four months for users to find bugs with this mangling scheme on nightly, that the scheme has been waiting many years to be stabilised, and has been used successfully internally at Microsoft, Meta and Google for many years, this patch proposes stabilising the v0 mangling scheme on stable.

This patch does not propose removing the legacy mangling, it will remain usable on nightly as an escape-hatch if there are remaining bugs (though admittedly it would require switching to nightly for those on stable) - it is anticipated that this would be unlikely given current testing undergone by v0. Legacy mangling can be removed in another follow-up.

r? @wesleywiser
…dtwco

Tweak irrefutable let else warning output

Fixes rust-lang/rust#153454

Greeting!
This PR tweak diagnostic output for `irrefutable-let-else` patterns and adds a check for `let a = Some(b) else {...}`
Thanks for the review!

```
help: consider using `let Some(name) = case` to match on a specific variant
   |
LL -     let name = Some(case) else {
LL +     let Some(name) = case else {
   |
```
…elmann

Lock stable_crate_ids once in create_crate_num

This is a small refactor PR removing redundant locks of `stable_crate_ids` from  `create_crate_num`.
Document that CFI diverges from Rust wrt. ABI-compatibility rules

The CFI sanitizer is a sanitizer that checks that no ABI-incompatible function calls are made at runtime, but there is currently an unfortunate divergence between the Rust ABI-compatibility rules and what the CFI sanitizer checks. Thus, document that this divergence exists.

There are proposals for how we can align the ABI rules to eliminate this discrepancy, and I would like to follow through with those, but for now I think we can at least document that the discrepancy exists.

For further discussion please see [Re-evaluate ABI compatibility rules in light of CFI](rust-lang/unsafe-code-guidelines#489) and [Can CFI be made compatible with type erasure schemes?](rust-lang/rust#128728) and [`fn_cast!` macro](rust-lang/rust#140803).

cc @rcvalle @samitolvanen @maurer @bjorn3 @RalfJung

Rendered:

<img width="956" height="391" alt="image" src="https://github.com/user-attachments/assets/410d3eaa-9476-4800-9ef8-bbb100a100c5" />
…olkertdev

disable naked-dead-code-elimination test if no RET mnemonic is available

this test emit x86_64 specific ret asm instruction and should not be compiled on any other arch.
Update documentation for `wasm32-wali-linux-musl` after integrating n…

Additional documentation updates, along with rust-lang/rust#155654
compiletest: Overhaul the code for running an incremental test revision

The main goals of this overhaul are:
- Introduce a dedicated `IncrRevKind` enum for exhaustive matching.
- Eliminate any dependency on `PassMode` and `FailMode`.
- Use a single code path for all incremental revision kinds.

Separating incremental tests from the existing pass/fail enums should make it easier to overhaul the implementation of pass/fail expectations in UI tests.

---

Later on we might want to reintroduce more shared code paths for the different test modes, but for now the extra isolation makes it easier to clean up the individual modes.

r? jieyouxu
Handle hkl const closures

I severely overthought this in rust-lang/rust#153818 😆

The const closure trait solver impl is now in sync with the non-const closure trait solver impl.
misc stuff from reading borrowck again :)

r? lcnr
Delete the 12 year old fixme

I think Option is documented well enough at this point.
…jieyouxu

remove review queue triagebot mentions

t-compiler's review queue isn't in the `triagebot.toml` anymore so these pings don't make sense.
…uwer,Urgau

Rename `SharedContext::emit_dyn_lint*` into `emit_lint*`

Part of rust-lang/rust#153099.

Very small cleanup while I figure out how to have a `Diagnostic` argument instead of the current closures.

r? @JonathanBrouwer
…uwer

Rollup of 15 pull requests

Successful merges:

 - rust-lang/rust#155923 (Subtree sync for rustc_codegen_cranelift)
 - rust-lang/rust#155930 (Sync from portable simd 2026 04 28)
 - rust-lang/rust#155850 (Only exclude the rust-lang/rust#155473 change for 1-byte bool-likes)
 - rust-lang/rust#151994 (switch to v0 mangling by default on stable)
 - rust-lang/rust#154325 (Tweak irrefutable let else warning output)
 - rust-lang/rust#155273 (Lock stable_crate_ids once in create_crate_num)
 - rust-lang/rust#155361 (Document that CFI diverges from Rust wrt. ABI-compatibility rules)
 - rust-lang/rust#155692 (disable naked-dead-code-elimination test if no RET mnemonic is available)
 - rust-lang/rust#155747 (Update documentation for `wasm32-wali-linux-musl` after integrating n…)
 - rust-lang/rust#155768 (compiletest: Overhaul the code for running an incremental test revision)
 - rust-lang/rust#155907 (Handle hkl const closures)
 - rust-lang/rust#155910 (misc stuff from reading borrowck again :))
 - rust-lang/rust#155913 (Delete the 12 year old fixme)
 - rust-lang/rust#155920 (remove review queue triagebot mentions)
 - rust-lang/rust#155936 (Rename `SharedContext::emit_dyn_lint*` into `emit_lint*`)
This updates the rust-version file to f53b654a8882fd5fc036c4ca7a4ff41ce32497a6.
@rustbot
Copy link
Copy Markdown
Collaborator

rustbot commented Apr 30, 2026

Thanks for the PR. If you have write access, feel free to merge this PR if it does not need reviews. You can request a review using r? rustc-dev-guide or r? <username>.

@rustbot rustbot added the S-waiting-on-review Status: this PR is waiting for a reviewer to verify its content label Apr 30, 2026
@tshepang tshepang merged commit 3085415 into main Apr 30, 2026
1 check passed
@rustbot rustbot removed the S-waiting-on-review Status: this PR is waiting for a reviewer to verify its content label Apr 30, 2026
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

Successfully merging this pull request may close these issues.

5 participants