Skip to content

Conversation

@matthiaskrgr
Copy link
Member

@matthiaskrgr matthiaskrgr commented Dec 4, 2025

Successful merges:

r? @ghost
@rustbot modify labels: rollup

Create a similar rollup

chenyukang and others added 30 commits November 21, 2025 12:19
For half-open ranges, specifies that the upper bound cannot be the minimum.

Also specify that this only applies to range patterns and not also expressions.
This reduces check times for miri from 2m15s to 20s. And reduces check
times for miri with --compile-time-deps from 1m50s to 7s. This makes
rust-analyzer start a lot faster after switching branches.
…flelapkin

Fix ICE when applying test macro to crate root

This PR does a couple of things. First of all, I found [an ICE](https://play.rust-lang.org/?version=stable&mode=debug&edition=2024&gist=a733a7f3d223e1a9712e44b571f3e5cf) that happens when applying `#![core::prelude::v1::test]` to the crate root. This is caused by the test macro not expanding to an item when `--test` isn't applied. For the crate root, that means it deletes the crate....

The fix now first does target checking, and only if the target is valid discards the item when `--test` isn't applied. The discarding is, I think, important for perf.

The problem with this PR is that it means that `#[test]` applied to structs previously would give no errors unless `--test` is applied! That sounds like a bug to me, but maybe we should crater run it just in case, since technically that's a breaking change. Errors in such items wouldn't be reported previously.

 Also fixed a smol diagnostics bug with `#[bench]`'s error messages refering to `#[test]` accidentally.

r? noratrieb (since I already explained you a bunch, feel free to re-assign)

Fixes rust-lang#114920
…nments-macro-gen-147648, r=JonathanBrouwer

Fix unused_assignments false positives from macros

Fixes rust-lang#147648
Use `TypingMode::PostAnalysis` in `try_evaluate_const`

As mentioned in rust-lang#148698 (comment), we should use ``TypingMode::PostAnalysis`` for that path.

````@BoxyUwU```` prefer the match in ``try_evaluate_const`` to be exhaustive, so I also included that in this PR :3
…lacrum

std: don't call `current_os_id` from signal handler

`current_os_id` is not always async-signal-safe depending on the platform, hence it may not be called from the SIGSEGV handler. Instead, store the thread ID along with the thread name during setup. With rust-lang#144465 merged, this information is available even before the thread main function.
…, r=lqd,oli-obk

CTFE: avoid emitting a hard error on generic normalization failures

Fixes rust-lang#149081.

The fix is quite unsatisfying and should not be necessary, cc rust-lang#149283. That change is significantly more involved. This temporary fix introduces some unnecessary complexity and may hide other type system bugs.

cc ````@rust-lang/types```` I think we should try to fix issue rust-lang#149283 in the near future and then remove this hack again.

I originally intended a more targeted fix. I wanted to skip evaluating constants in MIR opts if their body was polymorphic and the current generic arguments still reference generic parameters. Notes from looking into this:
- we only fetch the MIR in the `eval_to_allocation_raw` query
- figuring out which MIR to use is hard
	- dealing with trivial consts is annoying
	- need to resolve instances for associated consts
	- implementing this by hand is hard
- inlining handles this issue by bailing on literally all normalization failures, even the ones that imply an unsoundness
	- `try_normalize_after_erasing_regions` generally does two things
		- deal with ambiguity after inlining
		- deal with error tainting issues (please don't, we should stop doing that)
- CTFE could be changed to always silently ignore normalization failures if we're in a generic body
	- hides actual bugs <- went with this option

r? types
…, r=jieyouxu

reword error for invalid range patterns

For half-open ranges, specifies that the upper bound cannot be the minimum.

Also specify that this only applies to range patterns and not also expressions.

Fixes rust-lang#149165
…ark-Simulacrum

Additional test for uN::{gather,scatter}_bits

Feature gate: #![feature(uint_gather_scatter_bits)]
Tracking issue: rust-lang#149069
Accepted ACP: rust-lang/libs-team#695 (comment)

Adds an additional runtime test for `uN::gather_bits` and `uN::scatter_bits` in coretests. They are each other's inverses in a sense, so a shared test can test both with relative ease.

I plan to follow up with optimized implementations for these functions.
…-ttbr0_el2, r=WaffleLapkin

Regression test for system register `ttbr0_el2`

Regression test for recognising the `ttbr0_el2` register.

closes rust-lang#97724
…=RalfJung

Disable native-lib for x check miri

This reduces check times for miri from 2m15s to 20s. And reduces check times for miri with --compile-time-deps from 1m50s to 7s. This makes rust-analyzer start a lot faster after switching branches.

r? ```@RalfJung```
…=Mark-Simulacrum

build-manifest: generate MSI and MINGW arrays from rustc

An alternative to rust-lang#149503

The arrays after generating:
```
❯ bat -n build/x86_64-unknown-linux-gnu/stage2-tools/x86_64-unknown-linux-gnu/release/build/build-manifest-e0236666c7c4187b/out/targets.rs | rg MSI -A14
 136 static MSI_INSTALLERS: &[&str] = &[
 137     "aarch64-pc-windows-gnullvm",
 138     "aarch64-pc-windows-msvc",
 139     "i686-pc-windows-gnu",
 140     "i686-pc-windows-msvc",
 141     "x86_64-pc-windows-gnu",
 142     "x86_64-pc-windows-gnullvm",
 143     "x86_64-pc-windows-msvc",
 144 ];
 145 static MINGW: &[&str] = &[
 146     "aarch64-pc-windows-gnullvm",
 147     "i686-pc-windows-gnu",
 148     "x86_64-pc-windows-gnu",
 149     "x86_64-pc-windows-gnullvm",
 150 ];
```

r? ```@Mark-Simulacrum```
…d, r=workingjubilee

c-variadic: bpf and spirv do not support c-variadic definitions

tracking issue: rust-lang#44930

Emit a nice error message on bpf and spirv targets when a c-variadic function is defined. Spirv also does not support c-variadic calls, bpf appears to allow them.

r? ```@workingjubilee```
Fix mailmap issue

My name and username got separated in thanks.rust-lang.org, probably due to me changing my email in Github about a month ago.
@rustbot rustbot added A-meta Area: Issues & PRs about the rust-lang/rust repository itself O-unix Operating system: Unix-like S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. T-bootstrap Relevant to the bootstrap subteam: Rust's build system (x.py and src/bootstrap) T-compiler Relevant to the compiler 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. rollup A PR which is a rollup labels Dec 4, 2025
@matthiaskrgr
Copy link
Member Author

@bors r+ rollup=never p=5

@bors
Copy link
Collaborator

bors commented Dec 4, 2025

📌 Commit eeff7ad has been approved by matthiaskrgr

It is now in the queue for this repository.

@bors 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-review Status: Awaiting review from the assignee but also interested parties. labels Dec 4, 2025
@bors
Copy link
Collaborator

bors commented Dec 4, 2025

⌛ Testing commit eeff7ad with merge b1b08cd...

@bors
Copy link
Collaborator

bors commented Dec 4, 2025

☀️ Test successful - checks-actions
Approved by: matthiaskrgr
Pushing b1b08cd to main...

@bors bors added the merged-by-bors This PR was explicitly merged by bors. label Dec 4, 2025
@bors bors merged commit b1b08cd into rust-lang:main Dec 4, 2025
12 checks passed
@rustbot rustbot added this to the 1.93.0 milestone Dec 4, 2025
@github-actions
Copy link
Contributor

github-actions bot commented Dec 4, 2025

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 556beb9 (parent) -> b1b08cd (this PR)

Test differences

Show 203 test diffs

Stage 0

  • errors::verify_ast_passes_abi_cannot_be_coroutine_70: [missing] -> pass (J1)
  • errors::verify_ast_passes_abi_custom_safe_foreign_function_68: [missing] -> pass (J1)
  • errors::verify_ast_passes_abi_must_not_have_parameters_or_return_type_70: pass -> [missing] (J1)
  • errors::verify_ast_passes_abi_must_not_have_parameters_or_return_type_71: [missing] -> pass (J1)
  • errors::verify_ast_passes_abi_x86_interrupt_73: [missing] -> pass (J1)
  • errors::verify_ast_passes_constraint_on_negative_bound_60: pass -> [missing] (J1)
  • errors::verify_ast_passes_extern_without_abi_65: pass -> [missing] (J1)
  • errors::verify_ast_passes_extern_without_abi_66: [missing] -> pass (J1)
  • errors::verify_ast_passes_extern_without_abi_sugg_66: pass -> [missing] (J1)
  • errors::verify_ast_passes_extern_without_abi_sugg_67: [missing] -> pass (J1)
  • errors::verify_ast_passes_match_arm_with_no_body_63: [missing] -> pass (J1)
  • errors::verify_ast_passes_negative_bound_not_supported_59: pass -> [missing] (J1)
  • errors::verify_ast_passes_negative_bound_with_parenthetical_notation_61: pass -> [missing] (J1)
  • errors::verify_ast_passes_pattern_in_bodiless_57: pass -> [missing] (J1)
  • errors::verify_ast_passes_pattern_in_bodiless_58: [missing] -> pass (J1)
  • errors::verify_ast_passes_pattern_in_foreign_56: pass -> [missing] (J1)
  • errors::verify_ast_passes_precise_capturing_duplicated_65: [missing] -> pass (J1)
  • errors::verify_ast_passes_precise_capturing_not_allowed_here_64: [missing] -> pass (J1)
  • errors::verify_mir_build_bindings_with_variant_name_11: pass -> [missing] (J1)
  • errors::verify_mir_build_borrow_of_moved_value_16: pass -> [missing] (J1)
  • errors::verify_mir_build_const_continue_missing_label_or_value_33: pass -> [missing] (J1)
  • errors::verify_mir_build_const_continue_missing_label_or_value_34: [missing] -> pass (J1)
  • errors::verify_mir_build_const_continue_unknown_jump_target_34: pass -> [missing] (J1)
  • errors::verify_mir_build_invalid_pattern_20: pass -> [missing] (J1)
  • errors::verify_mir_build_invalid_pattern_21: [missing] -> pass (J1)
  • errors::verify_mir_build_irrefutable_let_patterns_if_let_12: pass -> [missing] (J1)
  • errors::verify_mir_build_irrefutable_let_patterns_if_let_13: [missing] -> pass (J1)
  • errors::verify_mir_build_irrefutable_let_patterns_if_let_guard_13: pass -> [missing] (J1)
  • errors::verify_mir_build_irrefutable_let_patterns_if_let_guard_14: [missing] -> pass (J1)
  • errors::verify_mir_build_irrefutable_let_patterns_let_else_15: [missing] -> pass (J1)
  • errors::verify_mir_build_irrefutable_let_patterns_while_let_15: pass -> [missing] (J1)
  • errors::verify_mir_build_loop_match_arm_with_guard_31: pass -> [missing] (J1)
  • errors::verify_mir_build_loop_match_bad_rhs_29: pass -> [missing] (J1)
  • errors::verify_mir_build_loop_match_bad_rhs_30: [missing] -> pass (J1)
  • errors::verify_mir_build_loop_match_bad_statements_29: [missing] -> pass (J1)
  • errors::verify_mir_build_loop_match_invalid_match_26: pass -> [missing] (J1)
  • errors::verify_mir_build_loop_match_invalid_match_27: [missing] -> pass (J1)
  • errors::verify_mir_build_loop_match_invalid_update_25: pass -> [missing] (J1)
  • errors::verify_mir_build_loop_match_invalid_update_26: [missing] -> pass (J1)
  • errors::verify_mir_build_loop_match_missing_assignment_30: pass -> [missing] (J1)
  • errors::verify_mir_build_loop_match_unsupported_type_27: pass -> [missing] (J1)
  • errors::verify_mir_build_loop_match_unsupported_type_28: [missing] -> pass (J1)
  • errors::verify_mir_build_nan_pattern_22: pass -> [missing] (J1)
  • errors::verify_mir_build_non_partial_eq_match_19: pass -> [missing] (J1)
  • errors::verify_mir_build_trailing_irrefutable_let_patterns_10: pass -> [missing] (J1)
  • errors::verify_mir_build_type_not_structural_18: pass -> [missing] (J1)
  • errors::verify_mir_build_type_not_structural_19: [missing] -> pass (J1)
  • errors::verify_mir_build_union_pattern_17: pass -> [missing] (J1)
  • errors::verify_mir_build_unsized_pattern_22: [missing] -> pass (J1)
  • errors::verify_mir_build_upper_range_bound_cannot_be_min_9: [missing] -> pass (J1)

Stage 1

  • errors::verify_ast_passes_abi_cannot_be_coroutine_69: pass -> [missing] (J0)
  • errors::verify_ast_passes_abi_cannot_be_coroutine_70: [missing] -> pass (J0)
  • errors::verify_ast_passes_abi_custom_safe_function_69: [missing] -> pass (J0)
  • errors::verify_ast_passes_abi_must_not_have_parameters_or_return_type_71: [missing] -> pass (J0)
  • errors::verify_ast_passes_abi_x86_interrupt_72: pass -> [missing] (J0)
  • errors::verify_ast_passes_c_variadic_not_supported_56: [missing] -> pass (J0)
  • errors::verify_ast_passes_constraint_on_negative_bound_60: pass -> [missing] (J0)
  • errors::verify_ast_passes_constraint_on_negative_bound_61: [missing] -> pass (J0)
  • errors::verify_ast_passes_extern_without_abi_66: [missing] -> pass (J0)
  • errors::verify_ast_passes_extern_without_abi_sugg_66: pass -> [missing] (J0)
  • errors::verify_ast_passes_incompatible_features_58: pass -> [missing] (J0)
  • errors::verify_ast_passes_incompatible_features_59: [missing] -> pass (J0)
  • errors::verify_ast_passes_negative_bound_not_supported_59: pass -> [missing] (J0)
  • errors::verify_ast_passes_negative_bound_not_supported_60: [missing] -> pass (J0)
  • errors::verify_ast_passes_negative_bound_with_parenthetical_notation_62: [missing] -> pass (J0)
  • errors::verify_ast_passes_pattern_in_bodiless_58: [missing] -> pass (J0)
  • errors::verify_ast_passes_precise_capturing_not_allowed_here_64: [missing] -> pass (J0)
  • errors::verify_mir_build_bindings_with_variant_name_11: pass -> [missing] (J0)
  • errors::verify_mir_build_const_continue_bad_const_32: pass -> [missing] (J0)
  • errors::verify_mir_build_const_continue_missing_label_or_value_34: [missing] -> pass (J0)
  • errors::verify_mir_build_irrefutable_let_patterns_if_let_guard_13: pass -> [missing] (J0)
  • errors::verify_mir_build_irrefutable_let_patterns_while_let_16: [missing] -> pass (J0)
  • errors::verify_mir_build_leading_irrefutable_let_patterns_10: [missing] -> pass (J0)
  • errors::verify_mir_build_loop_match_bad_rhs_29: pass -> [missing] (J0)
  • errors::verify_mir_build_loop_match_bad_rhs_30: [missing] -> pass (J0)
  • errors::verify_mir_build_loop_match_invalid_match_26: pass -> [missing] (J0)
  • errors::verify_mir_build_loop_match_invalid_update_26: [missing] -> pass (J0)
  • errors::verify_mir_build_loop_match_unsupported_type_27: pass -> [missing] (J0)
  • errors::verify_mir_build_loop_match_unsupported_type_28: [missing] -> pass (J0)
  • errors::verify_mir_build_non_empty_never_pattern_24: pass -> [missing] (J0)
  • errors::verify_mir_build_non_empty_never_pattern_25: [missing] -> pass (J0)
  • errors::verify_mir_build_non_partial_eq_match_19: pass -> [missing] (J0)
  • errors::verify_mir_build_non_partial_eq_match_20: [missing] -> pass (J0)
  • errors::verify_mir_build_pointer_pattern_24: [missing] -> pass (J0)
  • errors::verify_mir_build_trailing_irrefutable_let_patterns_10: pass -> [missing] (J0)
  • errors::verify_mir_build_trailing_irrefutable_let_patterns_11: [missing] -> pass (J0)
  • errors::verify_mir_build_type_not_structural_18: pass -> [missing] (J0)
  • errors::verify_mir_build_union_pattern_18: [missing] -> pass (J0)
  • errors::verify_mir_build_unsized_pattern_21: pass -> [missing] (J0)
  • errors::verify_mir_build_upper_range_bound_cannot_be_min_9: [missing] -> pass (J0)
  • [ui] tests/ui/feature-gates/gating-of-test-attrs.rs: [missing] -> pass (J1)
  • [ui] tests/ui/macros/test-on-crate-root.rs: [missing] -> pass (J1)
  • [ui] tests/ui/where-clauses/projection-bound-unsatisfied-item-bounds-mit-opt-ice.rs: [missing] -> pass (J1)
  • num::u16::test_lots_of_gather_scatter: [missing] -> pass (J5)

Stage 2

  • [ui] tests/ui/macros/test-on-crate-root.rs: [missing] -> pass (J2)
  • [ui] tests/ui/where-clauses/projection-bound-unsatisfied-item-bounds-mit-opt-ice.rs: [missing] -> pass (J2)
  • [ui] tests/ui/asm/aarch64/ttbr0_el2.rs: [missing] -> ignore (only executed when the architecture is aarch64) (J3)
  • num::u128::test_lots_of_gather_scatter: [missing] -> pass (J4)
  • num::u32::test_lots_of_gather_scatter: [missing] -> pass (J4)
  • num::u8::test_lots_of_gather_scatter: [missing] -> pass (J4)

(and 101 additional test diffs)

Additionally, 2 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 b1b08cdef5ed3bca71c0d6638fccadc90d2e0ea3 --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. dist-x86_64-apple: 8128.6s -> 9484.4s (+16.7%)
  2. x86_64-gnu-gcc: 3001.9s -> 3444.6s (+14.7%)
  3. x86_64-rust-for-linux: 2623.6s -> 2981.2s (+13.6%)
  4. aarch64-apple: 10098.6s -> 8799.4s (-12.9%)
  5. dist-apple-various: 3939.2s -> 4400.6s (+11.7%)
  6. pr-check-1: 1682.6s -> 1878.2s (+11.6%)
  7. dist-aarch64-msvc: 6346.8s -> 5643.5s (-11.1%)
  8. i686-gnu-2: 5499.8s -> 6087.5s (+10.7%)
  9. x86_64-gnu-tools: 3322.0s -> 3665.6s (+10.3%)
  10. x86_64-gnu-miri: 4409.0s -> 4849.6s (+10.0%)
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
Collaborator

📌 Perf builds for each rolled up PR:

PR# Message Perf Build Sha
#147841 Fix ICE when applying test macro to crate root 9b9e0731889cba19bb3a7f778c12e6772cb6721a (link)
#149147 Fix unused_assignments false positives from macros 4da4cc50d15322746cc27267d8ceab7810c033d1 (link)
#149183 Use TypingMode::PostAnalysis in try_evaluate_const 44a908398ca928140cf25894f05190bc34978f7a (link)
#149456 std: don't call current_os_id from signal handler 112f354918b0bdb6ad953b2b4a4092c6131a14ba (link)
#149501 CTFE: avoid emitting a hard error on generic normalization … d464bf7d75aa5f21235dace21b2f161590d333a5 (link)
#149528 reword error for invalid range patterns df1ef36b1a48e35bc701358d5f2a314bb8c54236 (link)
#149539 Additional test for uN::{gather,scatter}_bits d517445835ba82a6c917dcf159135409110a205d (link)
#149549 Regression test for system register ttbr0_el2 ce97567b1394860a895a1d0e85446d9e85847939 (link)
#149550 Disable native-lib for x check miri 1a8f030b823512f4bd89de859cc38a5178842b51 (link)
#149554 build-manifest: generate MSI and MINGW arrays from rustc 52b8087768d5f3b5bcb6c9102cc6e27a9029f3c6 (link)
#149557 c-variadic: bpf and spirv do not support c-variadic definit… c475ad57cf8442c3544d36b55d4647a06940efb6 (link)
#149569 Fix mailmap issue 30e5a3e54bbc0673d27c5e9e24a9c88e8bbb9207 (link)

previous master: 556beb9ec7

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

@rust-timer
Copy link
Collaborator

Finished benchmarking commit (b1b08cd): comparison URL.

Overall result: ❌ regressions - please read the text below

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)
7.4% [0.1%, 25.0%] 10
Improvements ✅
(primary)
- - 0
Improvements ✅
(secondary)
- - 0
All ❌✅ (primary) - - 0

Max RSS (memory usage)

Results (primary -0.8%, secondary 10.1%)

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

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

Cycles

Results (secondary 19.2%)

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

mean range count
Regressions ❌
(primary)
- - 0
Regressions ❌
(secondary)
19.2% [2.1%, 39.3%] 5
Improvements ✅
(primary)
- - 0
Improvements ✅
(secondary)
- - 0
All ❌✅ (primary) - - 0

Binary size

Results (primary -0.0%, secondary -0.0%)

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

mean range count
Regressions ❌
(primary)
- - 0
Regressions ❌
(secondary)
0.1% [0.1%, 0.1%] 1
Improvements ✅
(primary)
-0.0% [-0.0%, -0.0%] 8
Improvements ✅
(secondary)
-0.0% [-0.1%, -0.0%] 14
All ❌✅ (primary) -0.0% [-0.0%, -0.0%] 8

Bootstrap: 468.789s -> 467.027s (-0.38%)
Artifact size: 386.75 MiB -> 386.67 MiB (-0.02%)

@Kobzol
Copy link
Member

Kobzol commented Dec 4, 2025

Started perf. runs in #147841, #149147 and #149183.

@Kobzol
Copy link
Member

Kobzol commented Dec 4, 2025

Ah, the unrolled perf. builds are still running 🤦

@matthiaskrgr
Copy link
Member Author

probably #149147 🤔

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

A-meta Area: Issues & PRs about the rust-lang/rust repository itself merged-by-bors This PR was explicitly merged by bors. O-unix Operating system: Unix-like perf-regression Performance regression. rollup A PR which is a rollup S-waiting-on-bors Status: Waiting on bors to run and complete tests. Bors will change the label on completion. T-bootstrap Relevant to the bootstrap subteam: Rust's build system (x.py and src/bootstrap) T-compiler Relevant to the compiler 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.

Projects

None yet

Development

Successfully merging this pull request may close these issues.