Skip to content

Rollup of 24 pull requests#158847

Merged
rust-bors[bot] merged 90 commits into
rust-lang:mainfrom
jhpratt:rollup-MkjhKjV
Jul 6, 2026
Merged

Rollup of 24 pull requests#158847
rust-bors[bot] merged 90 commits into
rust-lang:mainfrom
jhpratt:rollup-MkjhKjV

Conversation

@jhpratt

@jhpratt jhpratt commented Jul 6, 2026

Copy link
Copy Markdown
Member

View all comments

Successful merges:

r? @ghost

Create a similar rollup

tgross35 and others added 30 commits June 10, 2026 20:35
The disclaimers relevant for other `LocalKey` methods are relevant for
`update`, so add them to the documentation.
Newly stable API:

    impl<T: 'static> LocalKey<Cell<T>> {
        pub fn update(&'static self, f: impl FnOnce(T) -> T)
        where
            T: Copy;
    }

This matches the signature on `Cell`.

Tracking issue: RUST-143989
Update syntax of try build delegation in bors
do not use title case for section names
do not use title case for section names (part 2)
This updates the rust-version file to 7fb284d.
update autodiff install docs for nix
`Interned` does pointer equality/hashing, which is valid in two cases.
- The values are guaranteed to be unique (e.g. via interning, or
  construction). This is how `rustc_middle` uses `Interned`.
- The type has "identity" and different values should be considered
  distinct even if they are identical. This is how `rustc_resolve` uses
  `Interned`.

PR 137202 tried to clarify things by adding a `T: Hash` constraint to
`Interned<'a, T>`. This constraint isn't actually used, because
`Interned` is hashed based on pointer value, not contents. But it was
intended to communicate the idea that a type stored in `Interned` is
actually interned, which is likely to be done with hashing. Panicking
impls of `Hash` were added for the relevant `rustc_resolve` types to
work around the fact that it doesn't use hashing-based interning.

In my opinion PR 137202 didn't improve things. The `T: Hash` constraint
is only aimed at the interning case, and even for that case it's not
quite right because you could use a `BTreeMap` to intern instead of a
`HashMap`.

This commit does several things.
- Removes the `T: Hash` constraint and the `Hash` impls for
  `rustc_resolve` types added in PR 137202.
- Improves the comments on `Interned` to cover the non-interning cases.
- Removes the `PartialOrd`/`Ord` impls on `Interned` because (a) they're
  not used, and (b) their meaning is unclear for the "identity" case.
- Improves the documentation in `rustc_resolve` to explain how
  `Interned` usage is valid there.
update `FIXME(static_mut_refs)` comment to say: use raw pointers instead
of references.
This is more robust then assuming it's in Program Files. We still fallback to Program Files as a last resort.
Because we use `ThinVec` rather than `Vec` almost everywhere else in the
AST.
@jhpratt

jhpratt commented Jul 6, 2026

Copy link
Copy Markdown
Member Author

@bors treeclosed-

@rust-bors

rust-bors Bot commented Jul 6, 2026

Copy link
Copy Markdown
Contributor

Tree is now open for merging.

@rust-bors rust-bors Bot added merged-by-bors This PR was explicitly merged by bors. and removed S-waiting-on-bors Status: Waiting on bors to run and complete tests. Bors will change the label on completion. labels Jul 6, 2026
@rust-bors

rust-bors Bot commented Jul 6, 2026

Copy link
Copy Markdown
Contributor

☀️ Test successful - CI
Approved by: jhpratt
Duration: 3h 13m 22s
Pushing c4af710 to main...

@github-actions

github-actions Bot commented Jul 6, 2026

Copy link
Copy Markdown
Contributor
What is this? This is an experimental post-merge analysis report that shows differences in test outcomes between the merged PR and its parent PR.

Comparing 36714a9 (parent) -> c4af710 (this PR)

Test differences

Show 224 test diffs

Stage 0

  • core::builder::tests::flags_env_prefers_plain_form_without_spaces: [missing] -> pass (J10)

Stage 1

  • [ui] tests/ui/borrowck/index-self-with-arithmetic-on-self-item.rs: [missing] -> pass (J0)
  • [ui] tests/ui/cfg/disallowed-cli-cfgs.rs#target_has_threads_: [missing] -> pass (J0)
  • [ui] tests/ui/coercion/generic-fn-items-in-array-literal.rs: [missing] -> pass (J0)
  • [ui] tests/ui/const-generics/min_adt_const_params/tuple_with_infer_arg.rs: [missing] -> pass (J0)
  • [ui] tests/ui/drop/move-closure-drop-on-unwind.rs: [missing] -> pass (J0)
  • [ui] tests/ui/drop/panic-during-slice-init.rs: [missing] -> pass (J0)
  • [ui] tests/ui/dst/tuple-with-unsized-tail-field.rs: [missing] -> pass (J0)
  • [ui] tests/ui/error-emitter/multibyte-char-in-diagnostic-source-line.rs: [missing] -> pass (J0)
  • [ui] tests/ui/fmt/format-enum-with-recursive-variant.rs: [missing] -> pass (J0)
  • [ui] tests/ui/fn_traits/fn-trait-ufcs-call-in-impl.rs: [missing] -> pass (J0)
  • [ui] tests/ui/fn_traits/parenthesized-fn-trait-in-qualified-path.rs: [missing] -> pass (J0)
  • [ui] tests/ui/issues/issue-29743.rs: pass -> [missing] (J0)
  • [ui] tests/ui/issues/issue-2989.rs: pass -> [missing] (J0)
  • [ui] tests/ui/issues/issue-29948.rs: pass -> [missing] (J0)
  • [ui] tests/ui/issues/issue-33241.rs: pass -> [missing] (J0)
  • [ui] tests/ui/issues/issue-35988.rs: pass -> [missing] (J0)
  • [ui] tests/ui/issues/issue-37733.rs: pass -> [missing] (J0)
  • [ui] tests/ui/issues/issue-39687.rs: pass -> [missing] (J0)
  • [ui] tests/ui/issues/issue-44023.rs: pass -> [missing] (J0)
  • [ui] tests/ui/issues/issue-45510.rs: pass -> [missing] (J0)
  • [ui] tests/ui/issues/issue-52489.rs: pass -> [missing] (J0)
  • [ui] tests/ui/parser/accept-lifetime-list-empty-or-trailing-comma.rs: [missing] -> pass (J0)
  • [ui] tests/ui/privacy/fn-returns-unnameable-type.rs: [missing] -> pass (J0)
  • [ui] tests/ui/resolve/impl-method-cant-capture-env.rs: [missing] -> pass (J0)
  • [ui] tests/ui/resolve/impl-trait-for-type-cant-capture-env.rs: [missing] -> pass (J0)
  • [ui] tests/ui/resolve/trait-impl-cant-capture-env.rs: [missing] -> pass (J0)
  • collections::hash::set::tests::test_extract_if_consuming_nothing: [missing] -> pass (J2)
  • collections::hash::set::tests::test_extract_if_empty: [missing] -> pass (J2)
  • [ui (polonius)] tests/ui/attributes/builtin-attr-macro-value-issue-145922.rs: [missing] -> pass (J4)
  • [ui (polonius)] tests/ui/borrowck/index-self-with-arithmetic-on-self-item.rs: [missing] -> pass (J4)
  • [ui (polonius)] tests/ui/closures/closure_requires_expectation.rs: [missing] -> pass (J4)
  • [ui (polonius)] tests/ui/codegen/bitvec-to-bools-opt-miscompile.rs: [missing] -> pass (J4)
  • [ui (polonius)] tests/ui/drop/panic-during-slice-init.rs: [missing] -> pass (J4)
  • [ui (polonius)] tests/ui/dst/tuple-with-unsized-tail-field.rs: [missing] -> pass (J4)
  • [ui (polonius)] tests/ui/enum/unsized-field-in-enum-variant.rs: [missing] -> pass (J4)
  • [ui (polonius)] tests/ui/feature-gates/feature-gate-cfg-target-has-threads.rs: [missing] -> pass (J4)
  • [ui (polonius)] tests/ui/fmt/format-enum-with-recursive-variant.rs: [missing] -> pass (J4)
  • [ui (polonius)] tests/ui/fn_traits/overloaded-fnonce-resolution.rs: [missing] -> pass (J4)
  • [ui (polonius)] tests/ui/fn_traits/parenthesized-fn-trait-in-qualified-path.rs: [missing] -> pass (J4)
  • [ui (polonius)] tests/ui/issues/issue-29743.rs: pass -> [missing] (J4)
  • [ui (polonius)] tests/ui/issues/issue-30018-panic.rs: pass -> [missing] (J4)
  • [ui (polonius)] tests/ui/issues/issue-30081.rs: pass -> [missing] (J4)
  • [ui (polonius)] tests/ui/issues/issue-3021-b.rs: pass -> [missing] (J4)
  • [ui (polonius)] tests/ui/issues/issue-3021-d.rs: pass -> [missing] (J4)
  • [ui (polonius)] tests/ui/issues/issue-33241.rs: pass -> [missing] (J4)
  • [ui (polonius)] tests/ui/issues/issue-3556.rs: pass -> [missing] (J4)
  • [ui (polonius)] tests/ui/issues/issue-35988.rs: pass -> [missing] (J4)
  • [ui (polonius)] tests/ui/issues/issue-37733.rs: pass -> [missing] (J4)
  • [ui (polonius)] tests/ui/issues/issue-39687.rs: pass -> [missing] (J4)
  • [ui (polonius)] tests/ui/issues/issue-44023.rs: pass -> [missing] (J4)
  • [ui (polonius)] tests/ui/issues/issue-45510.rs: pass -> [missing] (J4)
  • [ui (polonius)] tests/ui/issues/issue-52489.rs: pass -> [missing] (J4)
  • [ui (polonius)] tests/ui/privacy/fn-returns-unnameable-type.rs: [missing] -> pass (J4)
  • [ui (polonius)] tests/ui/resolve/impl-method-cant-capture-env.rs: [missing] -> pass (J4)
  • [ui (polonius)] tests/ui/resolve/impl-trait-for-type-cant-capture-env.rs: [missing] -> pass (J4)
  • [ui (polonius)] tests/ui/resolve/issue-3021-c.rs: pass -> [missing] (J4)
  • [ui] tests/rustdoc-ui/doc-auto-cfg-values-non-ident.rs: [missing] -> pass (J6)

Stage 2

  • [ui] tests/ui/attributes/builtin-attr-macro-value-issue-145922.rs: [missing] -> pass (J1)
  • [ui] tests/ui/borrowck/index-self-with-arithmetic-on-self-item.rs: [missing] -> pass (J1)
  • [ui] tests/ui/cfg/disallowed-cli-cfgs.rs#target_has_threads_: [missing] -> pass (J1)
  • [ui] tests/ui/closures/closure_requires_expectation.rs: [missing] -> pass (J1)
  • [ui] tests/ui/codegen/bitvec-to-bools-opt-miscompile.rs: [missing] -> pass (J1)
  • [ui] tests/ui/codegen/box-deref-segfault-misopt.rs: [missing] -> pass (J1)
  • [ui] tests/ui/coercion/generic-fn-items-in-array-literal.rs: [missing] -> pass (J1)
  • [ui] tests/ui/const-generics/min_adt_const_params/tuple_with_infer_arg.rs: [missing] -> pass (J1)
  • [ui] tests/ui/error-emitter/multibyte-char-in-diagnostic-source-line.rs: [missing] -> pass (J1)
  • [ui] tests/ui/feature-gates/feature-gate-cfg-target-has-threads.rs: [missing] -> pass (J1)
  • [ui] tests/ui/fmt/format-enum-with-recursive-variant.rs: [missing] -> pass (J1)
  • [ui] tests/ui/fn_traits/fn-trait-ufcs-call-in-impl.rs: [missing] -> pass (J1)
  • [ui] tests/ui/fn_traits/overloaded-fnonce-resolution.rs: [missing] -> pass (J1)
  • [ui] tests/ui/fn_traits/parenthesized-fn-trait-in-qualified-path.rs: [missing] -> pass (J1)
  • [ui] tests/ui/issues/issue-29743.rs: pass -> [missing] (J1)
  • [ui] tests/ui/issues/issue-29861.rs: pass -> [missing] (J1)
  • [ui] tests/ui/issues/issue-30081.rs: pass -> [missing] (J1)
  • [ui] tests/ui/issues/issue-3021-b.rs: pass -> [missing] (J1)
  • [ui] tests/ui/issues/issue-3021-d.rs: pass -> [missing] (J1)
  • [ui] tests/ui/issues/issue-33241.rs: pass -> [missing] (J1)
  • [ui] tests/ui/issues/issue-3556.rs: pass -> [missing] (J1)
  • [ui] tests/ui/issues/issue-35988.rs: pass -> [missing] (J1)
  • [ui] tests/ui/issues/issue-37733.rs: pass -> [missing] (J1)
  • [ui] tests/ui/issues/issue-39687.rs: pass -> [missing] (J1)
  • [ui] tests/ui/issues/issue-44023.rs: pass -> [missing] (J1)
  • [ui] tests/ui/issues/issue-52489.rs: pass -> [missing] (J1)
  • [ui] tests/ui/resolve/impl-method-cant-capture-env.rs: [missing] -> pass (J1)
  • [ui] tests/ui/resolve/impl-trait-for-type-cant-capture-env.rs: [missing] -> pass (J1)
  • [ui] tests/ui/resolve/issue-3021-c.rs: pass -> [missing] (J1)
  • [ui] tests/ui/resolve/issue-3021.rs: pass -> [missing] (J1)
  • [ui] tests/ui/resolve/outer-generic-in-trait-method.rs: [missing] -> pass (J1)
  • [ui] tests/ui/resolve/trait-impl-cant-capture-env.rs: [missing] -> pass (J1)
  • [ui] tests/ui/drop/panic-during-slice-init.rs: [missing] -> ignore (gcc backend is marked as ignore) (J3)
  • [ui] tests/ui/issues/issue-29948.rs: ignore (gcc backend is marked as ignore) -> [missing] (J3)
  • [ui] tests/ui/issues/issue-30018-panic.rs: ignore (gcc backend is marked as ignore) -> [missing] (J3)
  • [ui] tests/ui/drop/panic-during-slice-init.rs: [missing] -> pass (J5)
  • [ui] tests/ui/issues/issue-29948.rs: pass -> [missing] (J5)
  • collections::hash::set::tests::test_extract_if: pass -> [missing] (J7)
  • collections::hash::set::tests::test_extract_if_consuming_all: [missing] -> pass (J7)
  • collections::hash::set::tests::test_extract_if_consuming_nothing: [missing] -> pass (J7)
  • [codegen] tests/codegen-llvm/force-intrinsic-fallback.rs#NORMAL: [missing] -> pass (J8)
  • [ui] tests/rustdoc-ui/doc-auto-cfg-values-non-ident.rs: [missing] -> pass (J9)

(and 62 additional test diffs)

Additionally, 62 doctest diffs were found. These are ignored, as they are noisy.

Job group index

Test dashboard

Run

cargo run --manifest-path src/ci/citool/Cargo.toml -- \
    test-dashboard c4af71034e89a431eeee91125a31ad001379faac --output-dir test-dashboard

And then open test-dashboard/index.html in your browser to see an overview of all executed tests.

Job duration changes

  1. x86_64-gnu-miri: 1h 12m -> 1h 40m (+38.0%)
  2. dist-x86_64-llvm-mingw: 1h 33m -> 2h 2m (+30.9%)
  3. dist-powerpc64le-linux-gnu: 1h 36m -> 1h 7m (-29.6%)
  4. x86_64-gnu-gcc-core-tests: 15m 21s -> 10m 57s (-28.6%)
  5. dist-sparcv9-solaris: 1h 11m -> 1h 31m (+28.3%)
  6. x86_64-gnu-llvm-21-2: 1h 17m -> 1h 35m (+23.9%)
  7. tidy: 3m 17s -> 2m 33s (-22.6%)
  8. dist-ohos-armv7: 1h 12m -> 58m 29s (-19.3%)
  9. dist-x86_64-solaris: 1h 33m -> 1h 17m (-17.1%)
  10. dist-aarch64-apple: 1h 56m -> 1h 37m (-16.8%)
How to interpret the job duration changes?

Job durations can vary a lot, based on the actual runner instance
that executed the job, system noise, invalidated caches, etc. The table above is provided
mostly for t-infra members, for simpler debugging of potential CI slow-downs.

@rust-timer

Copy link
Copy Markdown
Collaborator

📌 Perf builds for each rolled up PR:

PR# Message Perf Build Sha
#158377 add -Zforce-intrinsic-fallback flag 80838dbf96e6a3964b6fc96c63cd59f3d7f616d7 (link)
#158642 Clarify some interning details e71e784389fbb68a136c51c20914f4c258d02b25 (link)
#158694 Positive test for closures needing expectations 507da60b46e4bcbb23fbfee788ad2feedc3894df (link)
#158743 Look for cdb location in the registry first d0653f80fa832940e17d483efbca6894d69a41f3 (link)
#158775 bootstrap: only encode RUSTFLAGS when a flag contains a spa… 2a570101823b005261f74b1268f51d5d91365258 (link)
#158782 Add and use cfg(target_has_threads) to enforce no_thread im… 5f2bfd5ed4ae5674654d71ed46dab66abc8e5142 (link)
#158785 hook intrinsic-test into aarch64-gnu 04c763459f4b06faadf13db67d2f0e8886dee3ea (link)
#158819 Put InhabitedPredicate::NotInModule earlier in disjunctio… 6accbe0c33faea008e0115e303a337eb46d8ec78 (link)
#157734 Stabilize local_key_cell_update f2a503aee3c6147bd7b2e734e0641974035a77fb (link)
#158183 std: allocate less memory in current_exe for OpenBSD 5cf2f9408c91d5bb01ded3d7390dd74fbf778981 (link)
#158310 Remove unexpected usage of Unambig in non-infer variants e0e4525ef6bde395c953e69bc9abd51366257d4c (link)
#158671 Move tests batch 17 e9515a7a59e242c688e2d8c4324845e6cf97be5f (link)
#158730 Update FIXME(static_mut_refs) comments 22d28d3bbf10eb934022206e2e2c019b7c586594 (link)
#158752 Reorganize tests/ui/issues [18/N] dec6c67b62429fb222d9337014ce009d79e13c3b (link)
#158755 Use ThinVec more in the AST 8646ca4490860267dd06c74707ba990a5eac8bc0 (link)
#158757 Fix incorrect tracking issue for read_le/read_be 1976c76a37f035fca151ae8e52836d0c0bfc7dce (link)
#158765 Fix ICE on non-ident path in doc(auto_cfg values) a740c66d872197d1201d21507f8514abf27a26a0 (link)
#158771 library: expand HashSet::extract_if coverage 36e0996c8a789b08549771fff78251238e9fb606 (link)
#158772 rustc-dev-guide subtree update bc64df341722cb374dc21fc7227fa07b71ca72b0 (link)
#158776 fix: emit diagnostic for AVR target without target-cpu a372a3e2186efa2dc3a30e9dd84c4aa16a4f4a47 (link)
#158786 Add regression test for builtin attr macro values 80cd09ff5d50aeff489efadb6eb809b8c6a55e58 (link)
#158810 Add supplementary information for get_unchecked(mut) 97dd63744ad8ca6f1b275d54e14c2249558f0573 (link)
#158825 Fix typo f57ed0fc6030649662c4c4108fc595081a0c99ee (link)
#158838 tidy: Use empty_alternate = true for triagebot mention gl… a8711bfed89b82297d2e23da16e0bf97da08438d (link)

previous master: 36714a9983

In the case of a perf regression, run the following command for each PR you suspect might be the cause: @rust-timer build $SHA

@jhpratt jhpratt deleted the rollup-MkjhKjV branch July 6, 2026 22:19
@rust-timer

Copy link
Copy Markdown
Collaborator

Finished benchmarking commit (c4af710): comparison URL.

Overall result: ❌✅ regressions and improvements - please read:

Our benchmarks found a performance regression caused by this PR.
This might be an actual regression, but it can also be just noise.

Next Steps:

  • If the regression was expected or you think it can be justified,
    please write a comment with sufficient written justification, and add
    @rustbot label: +perf-regression-triaged to it, to mark the regression as triaged.
  • If you think that you know of a way to resolve the regression, try to create
    a new PR with a fix for the regression.
  • If you do not understand the regression or you think that it is just noise,
    you can ask the @rust-lang/wg-compiler-performance working group for help (members of this group
    were already notified of this PR).

@rustbot label: +perf-regression
cc @rust-lang/wg-compiler-performance

Instruction count

Our most reliable metric. Used to determine the overall result above. However, even this metric can be noisy.

mean range count
Regressions ❌
(primary)
- - 0
Regressions ❌
(secondary)
0.3% [0.2%, 0.3%] 2
Improvements ✅
(primary)
-0.2% [-0.3%, -0.1%] 3
Improvements ✅
(secondary)
- - 0
All ❌✅ (primary) -0.2% [-0.3%, -0.1%] 3

Max RSS (memory usage)

Results (primary 0.9%, secondary -2.9%)

A less reliable metric. May be of interest, but not used to determine the overall result above.

mean range count
Regressions ❌
(primary)
0.9% [0.8%, 1.0%] 6
Regressions ❌
(secondary)
1.7% [1.7%, 1.7%] 1
Improvements ✅
(primary)
- - 0
Improvements ✅
(secondary)
-7.6% [-7.6%, -7.6%] 1
All ❌✅ (primary) 0.9% [0.8%, 1.0%] 6

Cycles

Results (primary 0.2%, secondary -34.1%)

A less reliable metric. May be of interest, but not used to determine the overall result above.

mean range count
Regressions ❌
(primary)
3.0% [3.0%, 3.0%] 1
Regressions ❌
(secondary)
- - 0
Improvements ✅
(primary)
-2.6% [-2.6%, -2.6%] 1
Improvements ✅
(secondary)
-34.1% [-34.1%, -34.1%] 1
All ❌✅ (primary) 0.2% [-2.6%, 3.0%] 2

Binary size

This perf run didn't have relevant results for this metric.

Bootstrap: 489.375s -> 490.62s (0.25%)
Artifact size: 388.97 MiB -> 389.03 MiB (0.02%)

@rustbot rustbot added the perf-regression Performance regression. label Jul 6, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

A-attributes Area: Attributes (`#[…]`, `#![…]`) A-CI Area: Our Github Actions CI A-LLVM Area: Code generation parts specific to LLVM. Both correctness bugs and optimization-related issues. A-run-make Area: port run-make Makefiles to rmake.rs A-rustc-dev-guide Area: rustc-dev-guide A-testsuite Area: The testsuite used to check the correctness of rustc A-tidy Area: The tidy tool merged-by-bors This PR was explicitly merged by bors. perf-regression Performance regression. rollup A PR which is a rollup T-bootstrap Relevant to the bootstrap subteam: Rust's build system (x.py and src/bootstrap) T-clippy Relevant to the Clippy team. T-compiler Relevant to the compiler team, which will review and decide on the PR/issue. T-infra Relevant to the infrastructure team, which will review and decide on the PR/issue. T-libs Relevant to the library team, which will review and decide on the PR/issue. T-rustdoc Relevant to the rustdoc team, which will review and decide on the PR/issue.

Projects

None yet

Development

Successfully merging this pull request may close these issues.