Skip to content

Automatic Rustup - #5300

Merged
RalfJung merged 35 commits into
masterfrom
rustup-2026-09-02
Sep 2, 2026
Merged

Automatic Rustup#5300
RalfJung merged 35 commits into
masterfrom
rustup-2026-09-02

Conversation

@workflows-miri

@workflows-miri workflows-miri Bot commented Sep 2, 2026

Copy link
Copy Markdown

Merge ref 'edc52f87c28f' from rust-lang/rust

Pull recent changes from https://github.com/rust-lang/rust via Josh.

Upstream ref: rust-lang/rust@edc52f8
Filtered ref: 4c181b9
Upstream diff: rust-lang/rust@17fd5b8...edc52f8

This merge was created using https://github.com/rust-lang/josh-sync.

The rustc-josh-sync Cronjob Bot and others added 30 commits August 17, 2026 04:24
internal: Download all artifacts in a single step
internal: Drop `zigbuild` support
fix: emit E0600 when unary `!`/`-` is applied to unsupported type
minor: skip iter excludes 'into_iter' method
perf: Optimize the heck out of the storage of token trees
…k-overflow

fix:prevent stack overflow for recursive ADT layouts
fix: Fix HIR lowering of params of trait assoc fns
fix: Push a generic params scope for consts
mir_build: Clearly distinguish or/refutable/irrefutable patterns during match lowering

This PR has two related parts.

- The first commit divides the various fields of InterPat into three different `InterPatKind` variants, which clearly distinguish between or-pattern nodes, refutable pattern nodes, and irrefutable pattern nodes. Such a split was suggested during review of rust-lang/rust#155144, but at the time I wasn't sure if it was the right direction. Now that I've thought more about how to make it work nicely with InterPat node building, I'm more comfortable with the explicit split.

- As a follow-on, the second commit then splits MatchPairTree into two different `MatchPairKind` variants: one for or-pattern nodes, and one for “testable” nodes.

In both cases, dividing the outer struct into multiple kinds makes it easier to understand and uphold field invariants, since previously-optional fields can be made mandatory or absent.

There should be no change to compiler output.

---
- The changes to MatchPairTree can be seen as an alternative to rust-lang/rust#158551. Instead of splitting or-patterns and testable-patterns into separate lists, they still occupy the same list but are distinguished by kind.

---

r? Nadrieril
…lkertdev

Make sin, cos, exp, exp2, log, log2, log10 generic

Rebased and smaller version of rust-lang/rust#153934

Following `fabs`, make the `sin`, `cos`, `exp`, `exp2`, `log`, `log2` and `log10` intrinsics generic over the float type, rather than having four variants per float type.

The first two commits are purely stylistic:
- reorganised Cranelift code to make following changes simpler
- moved a misplaced comment in `compiler/rustc_codegen_llvm/src/intrinsic.rs` that caused `x fmt` to give up

The last commit actually makes them generic! Most code is a bit simpler, ~~and this will also hopefully simplify adding support for these intrinsics for the future [`bf16` type](rust-lang/rust#160859 :)

Unfortunately both GCC and Cranelift backend changes are a bit churny. Their code is a bit, opaque, to put it kindly, and I didn't want to refactor those here.

r? @folkertdev
cc @RalfJung
mir_build: Clarify parts of if-condition lowering

I've been looking at this condition-lowering code a lot, and I noticed that some parts are hard to follow due to how functions and variables are named.

In particular, the function name `then_else_break` doesn't give much useful intuition for the fact that it lowers an `if` condition (or similar), and then proceeds if the condition was true or breaks if the condition was false.

Similarly, I was finding it hard to keep track of the two destinations selected after evaluating a condition, especially when dealing with complex subconditions like `||` or `!`, or looking at different callers. So this PR tries to establish a convention of always using `(true_block, false_block)` to refer to the condition's outcome paths, which can then be manipulated as appropriate by calling code.

There should be no observable change to compiler behaviour.
…BoxyUwU

explicitly track inherent const generic args kind

in doing so, and as an exercise of this new code, implement regular (non-type-const) inherent consts in the type system under `feature(generic_const_args)`

see the new big doc comment in `compiler/rustc_type_ir/src/const_kind.rs` if you dunno what the heck I'm on about with "self args" vs "impl args" ✨

on a small note, the FIXME on `alias_term_kind_from_def_id` becomes even more relevant with this PR, `ty::AliasConstInherentArgsKind` is kinda gross tbh. explicitly not refactoring that in this PR though, to keep scope/the diff manageable.

also, `check_args_compatible` is very spooky scary in that if you have a `ty::Alias`, you ought to use `check_term_args_compatible`, but nothing's stopping you from calling `check_args_compatible` with the term's DefId. I was unable to think up a clever API that would prevent this misuse.

and finally, I think some of these match statements could theoretically `bug!` on one form or the other of InherentSelf/InherentImpl, but for now I'm intentionally being a bit conservative here, we can tighten up later.

---

relevant tracking issue: rust-lang/project-const-generics#98

also very related to `feature(inherent_associated_types)`: rust-lang/rust#8995 rust-lang/project-const-generics#71

relevant PR that intentionally failed to implement inherent consts in the type system due to not tracking this: rust-lang/rust#155341

implementing support for a trait with a regular const being refined with an impl that has a directly represented RHS is extremely annoying and difficult without this, the lack of support of which causes rust-lang/rust#161264 (was working on adding support when I got sidetracked with this PR), see also this zulip thread: [#project-const-generics > implementing assoc consts as direct args](https://rust-lang.zulipchat.com/#narrow/channel/260443-project-const-generics/topic/implementing.20assoc.20consts.20as.20direct.20args/with/618953051) (is there an issue for this?)

r? @BoxyUwU
bootstrap: stage0 to cbae9b4cae2b108f6a3d18cfe6075714bb739463

This also contains a formatting change due to rustfmt bump.
Need this in order to test <rust-lang/rust#161049>.
See also [#t-cargo > ✔ 1.99 beta backport](https://rust-lang.zulipchat.com/#narrow/channel/246057-t-cargo/topic/.E2.9C.94.201.2E99.20beta.20backport/with/619824670)

r? cuviper
Switch dist-aarch64-linux to EC2 and update dist-x86_64-linux

For dist-aarch64-linux (full):

* GHA 8c takes 2h25m ($2.03/build) - current
* c8g.8xl takes 1h20m ($1.69/build)
* c9g.8xl takes 1h ($1.38/build)
* c9g.4xl takes 1h10m ($0.81/build)
* m9g.2xl takes 1h30m ($0.59/build) - selected

Adds a dist-aarch64-linux-quick (default enabled in try builds):

* c8g.8xl takes 50m ($1.059/build)
* c9g.8xl takes 40m ($0.924/build)
* c9g.4xl takes 47m ($0.543/build) - selected
* m9g.2xl takes 64m ($0.417/build)

For now I've chosen a balance between cost and speed (c9g.4xl). This is still faster than the x86 build so shouldn't slow us down.

For dist-x86_64-linux-full this reduces core count to be a bit more cost efficient:

* c8a.8xl takes 1h34m ($2.64/build) - current
* c8a.4xl takes 1h45m ($1.51/build) - selected
* m8a.2xl takes 2h10m ($1.05/build)

I'll re-benchmark dist-x86_64-linux-quick in a future PR, for now it will stay on c8a.8xl. This PR also drops codebuild configuration (but not yet cleaning up various related pieces that are more tied into our CI) since it doesn't seem relevant anymore.

Testing:

* Regular try (no jobs selected) - https://github.com/rust-lang/rust/actions/runs/33395505441
  * Runs both x86 and aarch64, both in quick variants
* Try with jobs=dist-x86_64-linux*,dist-aarch64-linux* - https://github.com/rust-lang/rust/actions/runs/33394676009
  * Runs both x86 and aarch64, quick and non-quick
  * This fixes a bug where dist-x86_64-linux-quick via explicit request used to not be a quick job AFAICT; nothing set DIST_TRY_BUILD on it.

r? @Kobzol
…trochenkov

Add test for parallel compiler reproducible build

Adds a test for reproducible binaries when using parallel compiler.

Confirmed with bisection and manual testing that rust-lang/rust#144722 fixed rust-lang/rust#140413, added test fails before commit (075ce31bd39c68b911edda233f0af3f40113212b) from rust-lang/rust#144722.
```rust
********************************************************************************
Regression in nightly-2025-08-14
********************************************************************************

fetching https://static.rust-lang.org/dist/2025-08-13/channel-rust-nightly-git-commit-hash.txt
nightly manifest 2025-08-13: 40 B / 40 B [============================================================================================================================================================================] 100.00 % 357.18 KB/s converted 2025-08-13 to 8e62bfd311791bfd9dca886abdfbab07ec54d8b4
fetching https://static.rust-lang.org/dist/2025-08-14/channel-rust-nightly-git-commit-hash.txt
nightly manifest 2025-08-14: 40 B / 40 B [============================================================================================================================================================================] 100.00 % 123.86 KB/s converted 2025-08-14 to 3672a55b7cfd0a12e7097197b6242872473ffaa7
looking for regression commit between 2025-08-13 and 2025-08-14
fetching (via remote github) commits from max(8e62bfd311791bfd9dca886abdfbab07ec54d8b4, 2025-08-11) to 3672a55b7cfd0a12e7097197b6242872473ffaa7
ending github query because we found starting sha: 8e62bfd311791bfd9dca886abdfbab07ec54d8b4
get_commits_between returning commits, len: 7
  commit[0] 2025-08-12: Auto merge of #144678 - jdonszelmann:no-mangle-extern, r=bjorn3
  commit[1] 2025-08-12: Auto merge of #145295 - Kobzol:unify-stages, r=jieyouxu
  commit[2] 2025-08-13: Auto merge of #145093 - nikic:dead-on-return, r=nnethercote
  commit[3] 2025-08-13: Auto merge of #145334 - Kobzol:rollup-fs5a133, r=Kobzol
  commit[4] 2025-08-13: Auto merge of #144722 - ywxt:parallel-reproducibile, r=SparrowLii
  commit[5] 2025-08-13: Auto merge of #145298 - nikic:llvm21-rc3, r=cuviper
  commit[6] 2025-08-13: Auto merge of #145366 - GuillaumeGomez:rollup-v0a6v3u, r=GuillaumeGomez
```

Fixes rust-lang/rust#140413.

r? @petrochenkov
A series of Polonius Alpha refactors

Based on rust-lang/rust#161776

Best reviewed by commit.

This is a series of refactors to enable lazy liveness calculation. Each commit is relatively targeted.

r? lqd
…hanBrouwer

`rustc_feature` cleanups

Various cleanups. Details in individual commits.

r? @JonathanBrouwer
remove `_{style}` recovery for diagnostic structs

Followup to rust-lang/rust#103575

Also documents the `style = "..."` option.
…anBrouwer

Move track_caller on closures gating to attribute parsing

I noticed this while reviewing rust-lang/rust#161958
std: implement `File::fsync` for Hermit

- hermit-abi 0.5.3 exposes `fsync`, so the operation no longer has to return `Unsupported`.

cc: @mkroening
Deduplicate `InstrumentFnAttr`

cc @pmur

Instead of having a `Default` variant (which can't be specified in the attribute, it only does on/off), use an Option to model "no attribute used".
JonathanBrouwer and others added 5 commits September 1, 2026 13:27
fix typo in feature documentation

This is causing failing local executions of `typos-cli` (used in CI) in rust-analyzer. rust-analyzer uses the feature documentation to produce generated code.
…uwer

Rollup of 16 pull requests

Successful merges:

 - rust-lang/rust#137720 (support `#[target_feature(enable = ...)]` on `#[naked]` functions)
 - rust-lang/rust#160534 (stabilize smart pointer map functions)
 - rust-lang/rust#160551 (mir_build: Clearly distinguish or/refutable/irrefutable patterns during match lowering)
 - rust-lang/rust#160989 (Make sin, cos, exp, exp2, log, log2, log10 generic)
 - rust-lang/rust#161861 (mir_build: Clarify parts of if-condition lowering)
 - rust-lang/rust#161929 (explicitly track inherent const generic args kind)
 - rust-lang/rust#162040 (bootstrap: stage0 to cbae9b4cae2b108f6a3d18cfe6075714bb739463)
 - rust-lang/rust#162063 (Switch dist-aarch64-linux to EC2 and update dist-x86_64-linux)
 - rust-lang/rust#161353 (Add test for parallel compiler reproducible build)
 - rust-lang/rust#161937 (A series of Polonius Alpha refactors)
 - rust-lang/rust#162051 (`rustc_feature` cleanups)
 - rust-lang/rust#162055 (remove `_{style}` recovery for diagnostic structs)
 - rust-lang/rust#162075 (Move track_caller on closures gating to attribute parsing)
 - rust-lang/rust#162079 (std: implement `File::fsync` for Hermit)
 - rust-lang/rust#162097 (Deduplicate `InstrumentFnAttr`)
 - rust-lang/rust#162115 (fix typo in feature documentation)
Revert "Use `drop_guard` in some places in {core,alloc,std}"

cc @panstromek @GrigorenkoPV 

Reverts this PR due to perf issues, so that a fix can be verified to not affect perf. Apologies for not initially running perf; kinda tunnel-visioned "this just does the same thing" without considering the changes from non-generic functions to generic closures.
This updates the rust-version file to edc52f87c28f328c61685a02c47887a5cec7d767.
@rustbot rustbot added the S-waiting-on-review Status: Waiting for a review to complete label Sep 2, 2026
@RalfJung
RalfJung added this pull request to the merge queue Sep 2, 2026
Merged via the queue into master with commit 44690ee Sep 2, 2026
14 checks passed
@RalfJung
RalfJung deleted the rustup-2026-09-02 branch September 2, 2026 06:55
@rustbot rustbot removed the S-waiting-on-review Status: Waiting for a review to complete label Sep 2, 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.

9 participants