Skip to content

Conversation

matthiaskrgr
Copy link
Member

@matthiaskrgr matthiaskrgr commented Oct 12, 2025

Successful merges:

r? @ghost
@rustbot modify labels: rollup

Create a similar rollup

joboet and others added 20 commits March 21, 2025 21:01
This is an alternative to rust-lang#137400. The current macro is incredibly complicated and introduces subtle bugs like calling the `extend_one` of the individual collections in backwards order. This PR drastically simplifies the macro by removing recursion and moving the specialization out of the macro. It also fixes the ordering issue described above (I've stolen the test of the new behaviour from rust-lang#137400). Additionally, the 1-tuple is now special-cased to allow taking advantage of the well-optimized `Extend` implementations of the individual collection.
ordering of side-effects to `coretest`.
Most new API has an associated ACP that is useful to reference, but it
doesn't appear anywhere on the template for new tracking issues. Update
this template to include a link to the ACP.
Since `LLVMRustContextCreate` can easily be replaced with a call to
`LLVMContextCreate` and `LLVMContextSetDiscardValueNames`.
Currently x.py help (or x.py --help) builds bootstrap binary everytime, but it delays printing help.
This change saves the current top level help text into a file. x.py help prints the file and doesn't touch bootstrap binary.
x.py test bootstrap checks if the file is up to date.
Note that subcommand level helps (e.g., x.py check --help) aren't saved.
…crum

core: simplify `Extend` for tuples

This is an alternative to rust-lang#137400. The current macro is incredibly complicated and introduces subtle bugs like calling the `extend_one` of the individual collections in backwards order. This PR drastically simplifies the macro by removing recursion and moving the specialization out of the macro. It also fixes the ordering issue described above (I've stolen the test of the new behaviour from rust-lang#137400). Additionally, the 1-tuple is now special-cased to allow taking advantage of the well-optimized `Extend` implementations of the individual collection.
…r=jieyouxu

Rehome 30 `tests/ui/issues/` tests to other subdirectories under `tests/ui/` [rust-lang#4 of Batch rust-lang#2]

Part of rust-lang#133895

Methodology:

1. Refer to the previously written `tests/ui/SUMMARY.md`
2. Find an appropriate category for the test, using the original issue thread and the test contents.
3. Add the issue URL at the bottom (not at the top, as that would mess up stderr line numbers)
4. Rename the tests to make their purpose clearer

Inspired by the methodology that `@Kivooeo` was using.

r? `@jieyouxu`
…lacrum

Save x.py's help text for saving output time

Fix rust-lang#141903

Currently x.py help (--help) builds bootstrap binary everytime, so it takes some seconds to print help.
This PR does:
-  Saves current help text into a file (x.py run generate-help)
-  Changes bootstrap.py to print the help in the saved file and to exit without touching bootstrap binary
-  Modifies x.py test bootstrap to check if the help file is up-to-date
…-Simulacrum

Add an ACP list item to the library tracking issue template

Most new API has an associated ACP that is useful to reference, but it doesn't appear anywhere on the template for new tracking issues. Update this template to include a link to the ACP.
…=Mark-Simulacrum

Explain not existed key in BTreeMap::split_off

Fixes rust-lang#147174

r? libs
Extract most code from `define_feedable!`

This PR extracts most of the non-trivial code from the `define_feedable!` macro (which defines the `TyCtxtFeed::$query` methods), and moves it to a helper function `query_feed_inner` written in ordinary non-macro code.

Doing so should make that code easier to read and modify, because it now gets proper IDE support and has explicit trait bounds.

---

There should be no change in compiler behaviour.

I've structured the commits so that the actual extraction part is mostly just whitespace changes, making it easier to review individually with whitespace changes hidden.
…ate, r=Zalathar

Replace `LLVMRustContextCreate` with normal LLVM-C API calls

Since `LLVMRustContextCreate` can easily be replaced with a call to `LLVMContextCreate` and `LLVMContextSetDiscardValueNames`.

Work towards rust-lang#46437
@rustbot rustbot added A-LLVM Area: Code generation parts specific to LLVM. Both correctness bugs and optimization-related issues. A-testsuite Area: The testsuite used to check the correctness of rustc 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 Oct 12, 2025
@matthiaskrgr
Copy link
Member Author

@bors r+ rollup=never p=5

@bors
Copy link
Collaborator

bors commented Oct 12, 2025

📌 Commit 64b37b9 has been approved by matthiaskrgr

It is now in the queue for this repository.

@bors bors removed the S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. label Oct 12, 2025
@bors bors added the S-waiting-on-bors Status: Waiting on bors to run and complete tests. Bors will change the label on completion. label Oct 12, 2025
@bors
Copy link
Collaborator

bors commented Oct 12, 2025

⌛ Testing commit 64b37b9 with merge 8927649...

@bors
Copy link
Collaborator

bors commented Oct 12, 2025

☀️ Test successful - checks-actions
Approved by: matthiaskrgr
Pushing 8927649 to master...

@bors bors added the merged-by-bors This PR was explicitly merged by bors. label Oct 12, 2025
@bors bors merged commit 8927649 into rust-lang:master Oct 12, 2025
11 checks passed
@rustbot rustbot added this to the 1.92.0 milestone Oct 12, 2025
@rust-timer
Copy link
Collaborator

📌 Perf builds for each rolled up PR:

PR# Message Perf Build Sha
#138799 core: simplify Extend for tuples 6248bad8c50384a22ac805bf4de6a0a11d72a5fc (link)
#145897 Rehome 30 tests/ui/issues/ tests to other subdirectories … e16e7e3436b1e9b8d9be552e337409c7347919e0 (link)
#146692 Save x.py's help text for saving output time 4a9b055cc004af4963934036e9f632527bafc1be (link)
#147240 Add an ACP list item to the library tracking issue template e0ccf065256abce0ec09a18ea1b6a380fd9cec08 (link)
#147246 Explain not existed key in BTreeMap::split_off 8e1afaf194cc83c6d26a0afa019c2da41de11578 (link)
#147393 Extract most code from define_feedable! 4a321d471349df671e5c7a5dc393a61fefefc0b5 (link)
#147503 Fix documentation of Instant::now on mac 5318852aac7476f12dae146883d65b4282b8b4eb (link)
#147549 Replace LLVMRustContextCreate with normal LLVM-C API calls 6f1be45c473ce39a380f12e45c1bbe6134228efb (link)

previous master: 3be68033b6

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

Copy link
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 3be6803 (parent) -> 8927649 (this PR)

Test differences

Show 484 test diffs

Stage 1

  • [ui] tests/ui/associated-types/mismatched-types-in-trait-impl-65230.rs: [missing] -> pass (J1)
  • [ui] tests/ui/async-await/labeled-break-in-async-fn-ice-66702.rs: [missing] -> pass (J1)
  • [ui] tests/ui/borrowck/borrow-of-moved-value-in-for-loop-61108.rs: [missing] -> pass (J1)
  • [ui] tests/ui/borrowck/moved-value-in-closure-suggestion-64559.rs: [missing] -> pass (J1)
  • [ui] tests/ui/borrowck/multiple-mutable-borrows-error-65131.rs: [missing] -> pass (J1)
  • [ui] tests/ui/borrowck/mutable-borrow-behind-reference-61623.rs: [missing] -> pass (J1)
  • [ui] tests/ui/closures/labeled-break-inside-closure-62480.rs: [missing] -> pass (J1)
  • [ui] tests/ui/codegen/emscripten-llvm-crash-regression-66308.rs: [missing] -> pass (J1)
  • [ui] tests/ui/consts/closure-type-error-during-const-eval-66706.rs: [missing] -> pass (J1)
  • [ui] tests/ui/cycle-trait/cycle-error-comparing-function-inside-itself-66667.rs: [missing] -> pass (J1)
  • [ui] tests/ui/foreign/extern-rust-ffi-warning-64593.rs: [missing] -> pass (J1)
  • [ui] tests/ui/issues/issue-60989.rs: pass -> [missing] (J1)
  • [ui] tests/ui/issues/issue-61106.rs: pass -> [missing] (J1)
  • [ui] tests/ui/issues/issue-61108.rs: pass -> [missing] (J1)
  • [ui] tests/ui/issues/issue-61475.rs: pass -> [missing] (J1)
  • [ui] tests/ui/issues/issue-61623.rs: pass -> [missing] (J1)
  • [ui] tests/ui/issues/issue-61894.rs: pass -> [missing] (J1)
  • [ui] tests/ui/issues/issue-62480.rs: pass -> [missing] (J1)
  • [ui] tests/ui/issues/issue-63983.rs: pass -> [missing] (J1)
  • [ui] tests/ui/issues/issue-64559.rs: pass -> [missing] (J1)
  • [ui] tests/ui/issues/issue-64593.rs: pass -> [missing] (J1)
  • [ui] tests/ui/issues/issue-64792-bad-unicode-ctor.rs: pass -> [missing] (J1)
  • [ui] tests/ui/issues/issue-65131.rs: pass -> [missing] (J1)
  • [ui] tests/ui/issues/issue-65230.rs: pass -> [missing] (J1)
  • [ui] tests/ui/issues/issue-66308.rs: pass -> [missing] (J1)
  • [ui] tests/ui/issues/issue-66353.rs: pass -> [missing] (J1)
  • [ui] tests/ui/issues/issue-66667-function-cmp-cycle.rs: pass -> [missing] (J1)
  • [ui] tests/ui/issues/issue-66702-break-outside-loop-val.rs: pass -> [missing] (J1)
  • [ui] tests/ui/issues/issue-66706.rs: pass -> [missing] (J1)
  • [ui] tests/ui/issues/issue-66923-show-error-for-correct-call.rs: pass -> [missing] (J1)
  • [ui] tests/ui/issues/issue-67535.rs: pass -> [missing] (J1)
  • [ui] tests/ui/issues/issue-68010-large-zst-consts.rs: pass -> [missing] (J1)
  • [ui] tests/ui/issues/issue-68696-catch-during-unwind.rs: pass -> [missing] (J1)
  • [ui] tests/ui/issues/issue-68951.rs: pass -> [missing] (J1)
  • [ui] tests/ui/issues/issue-69130.rs: pass -> [missing] (J1)
  • [ui] tests/ui/issues/issue-69306.rs: pass -> [missing] (J1)
  • [ui] tests/ui/lifetimes/late-bound-lifetime-parameters-60622.rs: [missing] -> pass (J1)
  • [ui] tests/ui/match/unit-pattern-error-on-tuple-and-struct-variants-63983.rs: [missing] -> pass (J1)
  • [ui] tests/ui/mismatched_types/collect-method-type-mismatch-66923.rs: [missing] -> pass (J1)
  • [ui] tests/ui/mismatched_types/string-clone-mismatch-61106.rs: [missing] -> pass (J1)
  • [ui] tests/ui/no_std/no-std-panic-abort-error-64430.rs: [missing] -> pass (J1)
  • [ui] tests/ui/panic-handler/catch-unwind-during-unwind-68696.rs: [missing] -> pass (J1)
  • [ui] tests/ui/parser/pattern-matching-with-double-references-61475.rs: [missing] -> pass (J1)
  • [ui] tests/ui/parser/unicode-string-literal-syntax-error-64792.rs: [missing] -> pass (J1)
  • [ui] tests/ui/traits/trait-implementation-for-non-local-types-67535.rs: [missing] -> pass (J1)
  • [ui] tests/ui/typeck/associated-type-ice-recovery-66353.rs: [missing] -> pass (J1)
  • [ui] tests/ui/typeck/type-arguments-on-local-variable-60989.rs: [missing] -> pass (J1)
  • [ui] tests/ui/typeck/type-name-intrinsic-usage-61894.rs: [missing] -> pass (J1)

Stage 2

  • [ui] tests/ui/array-slice-vec/large-zst-array-compilation-time-68010.rs: [missing] -> pass (J0)
  • [ui] tests/ui/async-await/labeled-break-in-async-fn-ice-66702.rs: [missing] -> pass (J0)
  • [ui] tests/ui/borrowck/borrow-of-moved-value-in-for-loop-61108.rs: [missing] -> pass (J0)
  • [ui] tests/ui/borrowck/multiple-mutable-borrows-error-65131.rs: [missing] -> pass (J0)
  • [ui] tests/ui/borrowck/mutable-borrow-behind-reference-61623.rs: [missing] -> pass (J0)
  • [ui] tests/ui/closures/labeled-break-inside-closure-62480.rs: [missing] -> pass (J0)
  • [ui] tests/ui/codegen/emscripten-llvm-crash-regression-66308.rs: [missing] -> pass (J0)
  • [ui] tests/ui/cycle-trait/cycle-error-comparing-function-inside-itself-66667.rs: [missing] -> pass (J0)
  • [ui] tests/ui/foreign/extern-rust-ffi-warning-64593.rs: [missing] -> pass (J0)
  • [ui] tests/ui/generics/generic-struct-self-unconstrained-inference-vars-69306.rs: [missing] -> pass (J0)
  • [ui] tests/ui/inference/bitwise-integer-inference-68951.rs: [missing] -> pass (J0)
  • [ui] tests/ui/issues/issue-60622.rs: pass -> [missing] (J0)
  • [ui] tests/ui/issues/issue-60989.rs: pass -> [missing] (J0)
  • [ui] tests/ui/issues/issue-61106.rs: pass -> [missing] (J0)
  • [ui] tests/ui/issues/issue-61108.rs: pass -> [missing] (J0)
  • [ui] tests/ui/issues/issue-61623.rs: pass -> [missing] (J0)
  • [ui] tests/ui/issues/issue-61894.rs: pass -> [missing] (J0)
  • [ui] tests/ui/issues/issue-62480.rs: pass -> [missing] (J0)
  • [ui] tests/ui/issues/issue-63983.rs: pass -> [missing] (J0)
  • [ui] tests/ui/issues/issue-64430.rs: pass -> [missing] (J0)
  • [ui] tests/ui/issues/issue-64559.rs: pass -> [missing] (J0)
  • [ui] tests/ui/issues/issue-64593.rs: pass -> [missing] (J0)
  • [ui] tests/ui/issues/issue-64792-bad-unicode-ctor.rs: pass -> [missing] (J0)
  • [ui] tests/ui/issues/issue-65131.rs: pass -> [missing] (J0)
  • [ui] tests/ui/issues/issue-65230.rs: pass -> [missing] (J0)
  • [ui] tests/ui/issues/issue-65462.rs: pass -> [missing] (J0)
  • [ui] tests/ui/issues/issue-66308.rs: pass -> [missing] (J0)
  • [ui] tests/ui/issues/issue-66353.rs: pass -> [missing] (J0)
  • [ui] tests/ui/issues/issue-66667-function-cmp-cycle.rs: pass -> [missing] (J0)
  • [ui] tests/ui/issues/issue-66702-break-outside-loop-val.rs: pass -> [missing] (J0)
  • [ui] tests/ui/issues/issue-66706.rs: pass -> [missing] (J0)
  • [ui] tests/ui/issues/issue-66923-show-error-for-correct-call.rs: pass -> [missing] (J0)
  • [ui] tests/ui/issues/issue-67535.rs: pass -> [missing] (J0)
  • [ui] tests/ui/issues/issue-68010-large-zst-consts.rs: pass -> [missing] (J0)
  • [ui] tests/ui/issues/issue-68696-catch-during-unwind.rs: pass -> [missing] (J0)
  • [ui] tests/ui/issues/issue-68951.rs: pass -> [missing] (J0)
  • [ui] tests/ui/issues/issue-69130.rs: pass -> [missing] (J0)
  • [ui] tests/ui/issues/issue-69306.rs: pass -> [missing] (J0)
  • [ui] tests/ui/lifetimes/late-bound-lifetime-parameters-60622.rs: [missing] -> pass (J0)
  • [ui] tests/ui/match/unit-pattern-error-on-tuple-and-struct-variants-63983.rs: [missing] -> pass (J0)
  • [ui] tests/ui/mismatched_types/collect-method-type-mismatch-66923.rs: [missing] -> pass (J0)
  • [ui] tests/ui/mismatched_types/string-clone-mismatch-61106.rs: [missing] -> pass (J0)
  • [ui] tests/ui/no_std/no-std-panic-abort-error-64430.rs: [missing] -> pass (J0)
  • [ui] tests/ui/panic-handler/catch-unwind-during-unwind-68696.rs: [missing] -> pass (J0)
  • [ui] tests/ui/parser/character-indexing-bug-in-splice-lines-69130.rs: [missing] -> pass (J0)
  • [ui] tests/ui/parser/pattern-matching-with-double-references-61475.rs: [missing] -> pass (J0)
  • [ui] tests/ui/traits/trait-implementation-for-non-local-types-67535.rs: [missing] -> pass (J0)
  • [ui] tests/ui/typeck/associated-type-ice-recovery-66353.rs: [missing] -> pass (J0)
  • [ui] tests/ui/typeck/type-arguments-on-local-variable-60989.rs: [missing] -> pass (J0)
  • [ui] tests/ui/typeck/type-name-intrinsic-usage-61894.rs: [missing] -> pass (J0)
  • [ui] tests/ui/union/union-field-access-error-65462.rs: [missing] -> pass (J0)
  • iter::traits::iterator::test_extend_for_tuple_side_effects_order: [missing] -> pass (J2)

(and 14 additional test diffs)

Additionally, 370 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 89276493d3c3f85691e76b27a9dde7ec82e79cdb --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-aarch64-linux: 8824.7s -> 6495.6s (-26.4%)
  2. dist-x86_64-apple: 6326.7s -> 7648.6s (20.9%)
  3. dist-aarch64-apple: 6291.9s -> 7566.6s (20.3%)
  4. x86_64-rust-for-linux: 3024.4s -> 2563.3s (-15.2%)
  5. dist-apple-various: 3150.1s -> 3565.6s (13.2%)
  6. dist-aarch64-msvc: 6396.4s -> 5628.4s (-12.0%)
  7. aarch64-msvc-1: 7502.7s -> 6693.7s (-10.8%)
  8. x86_64-gnu-distcheck: 7664.0s -> 6852.0s (-10.6%)
  9. i686-gnu-nopt-1: 8085.8s -> 7276.3s (-10.0%)
  10. dist-i686-msvc: 7539.2s -> 8170.3s (8.4%)
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.

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

Labels

A-LLVM Area: Code generation parts specific to LLVM. Both correctness bugs and optimization-related issues. A-testsuite Area: The testsuite used to check the correctness of rustc merged-by-bors This PR was explicitly merged by bors. 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.