Skip to content

Conversation

@Zalathar
Copy link
Member

Successful merges:

r? @ghost

Create a similar rollup

ehuss and others added 23 commits January 12, 2026 09:35
This tries to clarify a few things regarding fmt syntax:

- The comment on `Parser::word` seems to be wrong, as that
  underscore-prefixed words are just fine. This was changed in
  rust-lang#66847.
- I struggled to follow the description of the width argument. It
  referred to a "second argument", but I don't know what second argument
  it is referring to (which is the first?). Either way, I rewrote the
  paragraph to try to be a little more explicit, and to use shorter
  sentences.
- The description of the precision argument wasn't really clear about
  the distinction of an Nth argument and a named argument. I added
  a sentence to try to emphasize the difference.
- `IDENTIFIER_OR_KEYWORD` was changed recently in
  rust-lang/reference#2049 to include bare `_`.
  But fmt named arguments are not allowed to be a bare `_`.
Remove `skip-filecheck` and add FileCheck directives to verify that GVN
propagates the constant `false` and eliminates the match entirely.

The test now verifies:
- The debug info shows `x` as `const false` (constant propagation)
- No `switchInt` remains (match elimination)
- The function body is just `return` (dead code elimination)
This was refactored incorrectly at some point and would run `cargo check`
even for `x fix`.
…ait-variant, r=oli-obk

Support trait objects in type info reflection

Tracking issue: rust-lang#146922

Adds type_info support for trait object types by introducing a DynTrait variant

~~I can't seem to get it to work correctly with `dyn for<'a> Foo<'a>`, though it works fine for normal `dyn Foo` trait objects~~

r? @oli-obk
…-obk

offload: move (un)register lib into global_ctors

Right now we initialize the openmp/offload runtime before every single offload call, and tear it down directly afterwards.
What we should rather do is initialize it once in the binary startup code, and tear it down at the end of the binary execution. Here I implement these changes.

Together, our generated IR has a lot less usage of globals, which in turn simplifies the refactoring in rust-lang#150683, where I introduce a new variant of our offload intrinsic.

r? oli-obk
Add some clarifications and fixes for fmt syntax

This tries to clarify a few things regarding fmt syntax:

- The comment on `Parser::word` seems to be wrong, as that underscore-prefixed words are just fine. This was changed in rust-lang#66847.
- I struggled to follow the description of the width argument. It referred to a "second argument", but I don't know what second argument it is referring to (which is the first?). Either way, I rewrote the paragraph to try to be a little more explicit, and to use shorter sentences.
- The description of the precision argument wasn't really clear about the distinction of an Nth argument and a named argument. I added a sentence to try to emphasize the difference.
- `IDENTIFIER_OR_KEYWORD` was changed recently in rust-lang/reference#2049 to include bare `_`. But fmt named arguments are not allowed to be a bare `_`.
compiler: Rename several types/traits for per-query vtables

- Follow-up to rust-lang#151577
---

This is another round of renaming for some subtle types and traits used by the query system, to hopefully make them easier to understand.

Key renames:
- struct `DynamicQuery` → `QueryVTable` (the actual vtable-like structure)
- struct `DynamicQueries` → `PerQueryVTables` (holds a vtable for each query)
- trait `QueryConfig` → `QueryDispatcher`
  - (used by generic functions in `rustc_query_system` to interact with query vtables)
- struct `DynamicConfig` → `SemiDynamicQueryDispatcher`
  - (implements `QueryDispatcher` by combining a vtable with some compile-time boolean flags for improved perf)
- trait `QueryConfigRestored` → `UnerasedQueryDispatcher`
  - (provides a `QueryDispatcher` while also remembering the query's unerased value type; allows some per-query code to be moved out of macros and into generic functions)

This was trickier than `DepKindVTable`, because there are more types and traits involved, and it's harder to come up with distinctive and useful names for all of them.

There should be no change to compiler behaviour.

r? Kivooeo (or compiler)
Add `extern crate core` to diagnostic tests

We do this to solve the `failed to resolve: you might be missing crate core` messages that were previously visible in the stderr.
We also split off `subdiagnostic-derive-2` from the main `subdiagnostic-derive`, because the error for this test is now generated post-expansion.
…eyouxu

Update `askama` version to `0.15.2`

Link to new release is [here](https://github.com/askama-rs/askama/releases/tag/v0.15.2). Basically improves a few things and remove some warnings.

r? @jieyouxu
…est, r=GuillaumeGomez

Update `browser-ui-test` version to `0.23.3`

Should fix rust-lang#151704 (comment).
Should help with rust-lang#93784.

r? ghost
…-match, r=dianqk

Add FileCheck annotations to simplify_match.rs

Remove `skip-filecheck` and add FileCheck directives to verify that GVN propagates the constant `false` and eliminates the match entirely.

The test now verifies:
- The debug info shows `x` as `const false` (constant propagation)
- No `switchInt` remains (match elimination)
- The function body is just `return` (dead code elimination)

Part of rust-lang#116971.

r? cjgillot
Fix `x fix`, again

This was refactored incorrectly at some point and would run `cargo check` even for `x fix`.
@rust-bors rust-bors bot added the rollup A PR which is a rollup label Jan 28, 2026
@rustbot rustbot added A-CI Area: Our Github Actions CI A-LLVM Area: Code generation parts specific to LLVM. Both correctness bugs and optimization-related issues. A-query-system Area: The rustc query system (https://rustc-dev-guide.rust-lang.org/query.html) A-run-make Area: port run-make Makefiles to rmake.rs 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. labels Jan 28, 2026
@rustbot rustbot added 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-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. labels Jan 28, 2026
@Zalathar
Copy link
Member Author

Rollup of everything except #151736.

@bors r+ rollup=never p=5

@rust-bors
Copy link
Contributor

rust-bors bot commented Jan 28, 2026

📌 Commit 4d2c8e3 has been approved by Zalathar

It is now in the queue for this repository.

@rust-bors rust-bors bot 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 Jan 28, 2026
@rust-bors

This comment has been minimized.

@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 Jan 28, 2026
@rust-bors
Copy link
Contributor

rust-bors bot commented Jan 28, 2026

☀️ Test successful - CI
Approved by: Zalathar
Duration: 3h 9m 10s
Pushing a234ae6 to main...

@rust-bors rust-bors bot merged commit a234ae6 into rust-lang:main Jan 28, 2026
12 checks passed
@rustbot rustbot added this to the 1.95.0 milestone Jan 28, 2026
@rust-timer
Copy link
Collaborator

📌 Perf builds for each rolled up PR:

PR# Message Perf Build Sha
#150893 offload: move (un)register lib into global_ctors 98c40890b0979b90d2ca120d4ef3278f77eded7c (link)
#151013 Add some clarifications and fixes for fmt syntax 37683d7d5111355eeb64ac343a61075b06dc1979 (link)
#151239 Support trait objects in type info reflection a1b965a4c19f5aa84254cb01ee28f1f8b9e6ee61 (link)
#151666 compiler: Rename several types/traits for per-query vtables 4bb0a62e7e2be082c6ec57e6b8f08c056a9c07c6 (link)
#151738 Add extern crate core to diagnostic tests c9acef067d79dbbe78ee4be4ace43ad0a7b91e88 (link)
#151747 Update askama version to 0.15.2 401f58c03ea4c0534839c4efa27aee8d51ba98b8 (link)
#151759 Update browser-ui-test version to 0.23.3 2cce1c72edd18504d5cf83bde170d141ab51b3eb (link)
#151763 Add FileCheck annotations to simplify_match.rs 5e4bdfbb8b3a13c07d81e801d02ed5325ebc5b00 (link)
#151766 Fix x fix, again 402623016e72e5206402e088959468d529d29c32 (link)

previous master: 466ea4e6c3

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

@github-actions
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 466ea4e (parent) -> a234ae6 (this PR)

Test differences

Show 75 test diffs

Stage 1

  • [ui] tests/ui-fulldeps/session-diagnostic/subdiagnostic-derive-2.rs: [missing] -> ignore (ignored when the bootstrapping stage is stage1) (J1)
  • mem::type_info::test_dynamic_traits: [missing] -> pass (J5)

Stage 2

  • mem::type_info::test_dynamic_traits: [missing] -> pass (J0)
  • [ui] tests/ui-fulldeps/session-diagnostic/subdiagnostic-derive-2.rs: [missing] -> ignore (ignored when the release channel is stable) (J2)
  • [ui] tests/ui-fulldeps/session-diagnostic/subdiagnostic-derive-2.rs: [missing] -> pass (J3)
  • [run-make] tests/run-make/compressed-debuginfo-zstd: ignore (ignored if LLVM wasn't build with zstd for ELF section compression or LLVM is not the default codegen backend) -> pass (J4)

Additionally, 69 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 a234ae6b6538d41de6886cb7742d062ad832b0e3 --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-apple-various: 3891.5s -> 5134.1s (+31.9%)
  2. pr-check-2: 3415.9s -> 2370.1s (-30.6%)
  3. pr-check-1: 2757.3s -> 1921.4s (-30.3%)
  4. x86_64-rust-for-linux: 4155.2s -> 2901.7s (-30.2%)
  5. x86_64-gnu-tools: 4931.2s -> 3671.7s (-25.5%)
  6. x86_64-gnu-gcc: 5209.1s -> 4038.9s (-22.5%)
  7. test-various: 8888.0s -> 7050.1s (-20.7%)
  8. x86_64-gnu-distcheck: 9459.8s -> 7728.5s (-18.3%)
  9. armhf-gnu: 6630.2s -> 5435.4s (-18.0%)
  10. x86_64-gnu-miri: 5948.0s -> 4889.1s (-17.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
Collaborator

Finished benchmarking commit (a234ae6): comparison URL.

Overall result: ❌ regressions - no action needed

@rustbot label: -perf-regression

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.3%, 0.3%] 3
Improvements ✅
(primary)
- - 0
Improvements ✅
(secondary)
- - 0
All ❌✅ (primary) - - 0

Max RSS (memory usage)

Results (primary -1.7%, secondary 0.9%)

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

mean range count
Regressions ❌
(primary)
2.7% [2.7%, 2.7%] 1
Regressions ❌
(secondary)
1.3% [0.6%, 2.2%] 4
Improvements ✅
(primary)
-2.9% [-4.6%, -1.2%] 4
Improvements ✅
(secondary)
-0.6% [-0.6%, -0.6%] 1
All ❌✅ (primary) -1.7% [-4.6%, 2.7%] 5

Cycles

Results (secondary 3.7%)

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)
3.7% [2.7%, 4.6%] 2
Improvements ✅
(primary)
- - 0
Improvements ✅
(secondary)
- - 0
All ❌✅ (primary) - - 0

Binary size

Results (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.0% [0.0%, 0.0%] 2
Improvements ✅
(primary)
- - 0
Improvements ✅
(secondary)
- - 0
All ❌✅ (primary) - - 0

Bootstrap: 476.499s -> 476.908s (0.09%)
Artifact size: 397.91 MiB -> 397.92 MiB (0.00%)

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

Labels

A-CI Area: Our Github Actions CI A-LLVM Area: Code generation parts specific to LLVM. Both correctness bugs and optimization-related issues. A-query-system Area: The rustc query system (https://rustc-dev-guide.rust-lang.org/query.html) A-run-make Area: port run-make Makefiles to rmake.rs 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 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-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.

10 participants