Skip to content

Conversation

@matthiaskrgr
Copy link
Member

@matthiaskrgr matthiaskrgr commented Dec 11, 2025

Successful merges:

r? @ghost
@rustbot modify labels: rollup

Create a similar rollup

cyrgani and others added 24 commits September 27, 2025 12:29
This is useful for changing the *default* for whether doctests are
merged or not. Currently, that default is solely controlled by
`edition = 2024`, which adds a high switching cost to get doctest
merging. This flag allows opt-ing in even on earlier additions.

Unlike the `edition = 2024` default, `--merge-doctests=yes` gives a hard
error if merging fails instead of falling back to running standalone
tests. The user has explicitly said they want merging, so we shouldn't
silently do something else.

`--merge-doctests=auto` is equivalent to the current 2024 edition
behavior, but available on earlier editions.
This allows viewing failed merged doctests.
…xternal macro

```
error[E0308]: mismatched types
  --> $DIR/macro-span-caller-replacement.rs:5:17
   |
LL |             s = format!("{arg}");
   |                 ^^^^^^^^^^^^^^^^ expected `&str`, found `String`
...
LL |     macro_with_format!();
   |     -------------------- in this macro invocation
   |
   = note: this error originates in the macro `format` which comes from the expansion of the macro `macro_with_format` (in Nightly builds, run with -Z macro-backtrace for more info)
```
…=yotamofek

Put negative implementors first and apply same ordering logic to foreign implementors

Fixes rust-lang#51129.

This PR changeda surprisingly small amount of things to put negative trait impls before the others: basically just adding a new information in the generated JS file for foreign implementors and a "negative marker" DOM element to know where to insert negative impls.

I also used this occasion to make the foreign implementors sort the same as the local ones by using `compare_names`.

You can test it [here](https://rustdoc.crud.net/imperio/neg-implementors/core/marker/trait.Sync.html#implementors).

r? ```@notriddle```
…aumeGomez

remove duplicated columns from `rustc_error_code::error_codes!`

Possible because of rust-lang#146308 ~~, but currently still blocked on the next stage0 bump~~.
…nkov

Point at span within local macros even when error happens in nested external macro

Address issue noticed at https://users.rust-lang.org/t/error-message-does-not-specify-where-in-macro/135157/1. On errors occurring within a macro expansion, point at the innermost local macro expansion point.

```
error[E0308]: mismatched types
  --> $DIR/macro-span-caller-replacement.rs:5:17
   |
LL |             s = format!("{arg}");
   |                 ^^^^^^^^^^^^^^^^ expected `&str`, found `String`
...
LL |     macro_with_format!();
   |     -------------------- in this macro invocation
   |
   = note: this error originates in the macro `format` which comes from the expansion of the macro `macro_with_format` (in Nightly builds, run with -Z macro-backtrace for more info)
```
…iddle

rustdoc: Add unstable `--merge-doctests=yes/no/auto` flag

This is useful for changing the *default* for whether doctests are merged or not. Currently, that default is solely controlled by `edition = 2024`, which adds a high switching cost to get doctest merging. This flag allows opting in even on earlier editions.

Unlike the `edition = 2024` default, `--merge-doctests=yes` gives a hard error if merging fails instead of falling back to running standalone tests. The user has explicitly said they want merging, so we shouldn't silently do something else.

`--merge-doctests=auto` is equivalent to the current 2024 edition behavior, but available on earlier editions.

Helps with rust-lang#141240. ``@epage`` said in that issue he would like a per-doctest opt-in, and that seems useful to me in addition to this flag, but I think it's a separate use case from changing the default.
…eLapkin

Rename some issue-* tests

Also fixes one incorrect issue number: rust-lang#100168 (comment)
…yotamofek

Remove "tidy" tool for `tests/rustdoc` testsuite

As discussed in the [last rustdoc meeting](https://rust-lang.zulipchat.com/#narrow/channel/393423-t-rustdoc.2Fmeetings/topic/2025-12-08/near/562554410), it seems like the current `tidy` tool is not used much for the `rustdoc` testsuite by the rustdoc contributors as it doesn't fit nicely our needs.

Until we find something better, we decided to remove it.

r? ```@yotamofek```
Do not suggest moving expression out of for loop when hitting `break` from desugaring

Fix rust-lang#149861.
@rustbot rustbot added A-CI Area: Our Github Actions CI A-compiletest Area: The compiletest test runner A-run-make Area: port run-make Makefiles to rmake.rs A-testsuite Area: The testsuite used to check the correctness of rustc A-tidy Area: The tidy tool S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. labels Dec 11, 2025
@bors
Copy link
Collaborator

bors commented Dec 12, 2025

⌛ Testing commit 1c937f1 with merge 2706ab9...

@bors
Copy link
Collaborator

bors commented Dec 12, 2025

💔 Test failed - checks-actions

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

@bors retry

@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 12, 2025
@bors
Copy link
Collaborator

bors commented Dec 12, 2025

⌛ Testing commit 1c937f1 with merge c4dc70e...

@bors
Copy link
Collaborator

bors commented Dec 12, 2025

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

@bors bors added the merged-by-bors This PR was explicitly merged by bors. label Dec 12, 2025
@bors bors merged commit c4dc70e into rust-lang:main Dec 12, 2025
12 checks passed
@rustbot rustbot added this to the 1.94.0 milestone Dec 12, 2025
@rust-timer
Copy link
Collaborator

📌 Perf builds for each rolled up PR:

PR# Message Perf Build Sha
#142380 Put negative implementors first and apply same ordering log… 79f3d89e5fed58818497f0df068531652ded53a8 (link)
#146584 remove duplicated columns from `rustc_error_code::error_cod… 7d2e27fdaee3ed4177026efbbc50b98cd087ace1 (link)
#148717 Point at span within local macros even when error happens i… 855f1ba76cdaa5a4788f1347f6105b880b8b75c4 (link)
#149565 rustdoc: Add unstable --merge-doctests=yes/no/auto flag 5413818abc9d6e557b39bb30f11d540a148e5dc1 (link)
#149770 Rename some issue-* tests cadd6b04c4e12c0b84f67a89b401cd0885f04c80 (link)
#149807 Use ubuntu:24.04 for the x86_64-gnu-miri job 138c59a6e01c97586f8d1b55978e1c21e8140b15 (link)
#149850 Remove "tidy" tool for tests/rustdoc testsuite be61295bc95e0dabe66e031055d71007dd226a8b (link)
#149863 Do not suggest moving expression out of for loop when hitti… dc4e1c9d5a1c0e6628b5ca74f3765057312ab622 (link)
#149867 only resolve main in bin crates 5c1e6235d1121b9f571a59fbd6d3f30d8c25971c (link)

previous master: 5b150d238f

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 5b150d2 (parent) -> c4dc70e (this PR)

Test differences

Show 56 test diffs

Stage 1

  • [ui] tests/rustdoc-ui/doctest/force-merge-default-not-override.rs: [missing] -> pass (J2)
  • [ui] tests/rustdoc-ui/doctest/force-merge-fail.rs: [missing] -> pass (J2)
  • [ui] tests/rustdoc-ui/doctest/force-merge.rs: [missing] -> pass (J2)
  • [ui] tests/rustdoc-ui/doctest/force-no-merge.rs: [missing] -> pass (J2)
  • [ui] tests/rustdoc-ui/doctest/merge-doctests-auto.rs: [missing] -> pass (J2)
  • [ui] tests/rustdoc-ui/doctest/merge-doctests-invalid.rs: [missing] -> pass (J2)
  • [ui] tests/rustdoc-ui/doctest/merge-doctests-unstable.rs: [missing] -> pass (J2)
  • [ui] tests/ui/consts/const-item-no-type/dont-suggest-type-error.rs: [missing] -> pass (J2)
  • [ui] tests/ui/consts/const-item-no-type/empty-array.rs: [missing] -> pass (J2)
  • [ui] tests/ui/consts/const-item-no-type/in-macro.rs: [missing] -> pass (J2)
  • [ui] tests/ui/consts/const-item-no-type/with-colon.rs: [missing] -> pass (J2)
  • [ui] tests/ui/entry-point/imported_main_conflict_lib.rs: [missing] -> pass (J2)
  • [ui] tests/ui/macros/issue-69396-const-no-type-in-macro.rs: pass -> [missing] (J2)
  • [ui] tests/ui/moves/arc-consumed-in-looped-closure.rs: [missing] -> pass (J2)
  • [ui] tests/ui/parser/issues/issue-89574.rs: pass -> [missing] (J2)
  • [ui] tests/ui/span/macro-span-caller-replacement.rs: [missing] -> pass (J2)
  • [ui] tests/ui/typeck/issue-100164.rs: pass -> [missing] (J2)
  • [ui] tests/ui/typeck/issue-79040.rs: pass -> [missing] (J2)

Stage 2

  • [ui] tests/ui/consts/const-item-no-type/dont-suggest-type-error.rs: [missing] -> pass (J0)
  • [ui] tests/ui/consts/const-item-no-type/empty-array.rs: [missing] -> pass (J0)
  • [ui] tests/ui/consts/const-item-no-type/in-macro.rs: [missing] -> pass (J0)
  • [ui] tests/ui/consts/const-item-no-type/with-colon.rs: [missing] -> pass (J0)
  • [ui] tests/ui/entry-point/imported_main_conflict_lib.rs: [missing] -> pass (J0)
  • [ui] tests/ui/macros/issue-69396-const-no-type-in-macro.rs: pass -> [missing] (J0)
  • [ui] tests/ui/moves/arc-consumed-in-looped-closure.rs: [missing] -> pass (J0)
  • [ui] tests/ui/parser/issues/issue-89574.rs: pass -> [missing] (J0)
  • [ui] tests/ui/span/macro-span-caller-replacement.rs: [missing] -> pass (J0)
  • [ui] tests/ui/typeck/issue-100164.rs: pass -> [missing] (J0)
  • [ui] tests/ui/typeck/issue-79040.rs: pass -> [missing] (J0)
  • [ui] tests/rustdoc-ui/doctest/force-merge-default-not-override.rs: [missing] -> pass (J1)
  • [ui] tests/rustdoc-ui/doctest/force-merge-fail.rs: [missing] -> pass (J1)
  • [ui] tests/rustdoc-ui/doctest/force-merge.rs: [missing] -> pass (J1)
  • [ui] tests/rustdoc-ui/doctest/force-no-merge.rs: [missing] -> pass (J1)
  • [ui] tests/rustdoc-ui/doctest/merge-doctests-auto.rs: [missing] -> pass (J1)
  • [ui] tests/rustdoc-ui/doctest/merge-doctests-invalid.rs: [missing] -> pass (J1)
  • [ui] tests/rustdoc-ui/doctest/merge-doctests-unstable.rs: [missing] -> pass (J1)

Additionally, 20 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 c4dc70ee0ad7f811fb32e5bed9cd6c7b37beed4e --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-apple: 10891.2s -> 7357.4s (-32.4%)
  2. aarch64-apple: 11545.1s -> 8137.5s (-29.5%)
  3. dist-apple-various: 4717.4s -> 3421.5s (-27.5%)
  4. pr-check-1: 2026.3s -> 1555.6s (-23.2%)
  5. x86_64-rust-for-linux: 3132.0s -> 2621.7s (-16.3%)
  6. i686-gnu-2: 6136.8s -> 5283.6s (-13.9%)
  7. dist-x86_64-apple: 8594.4s -> 7406.1s (-13.8%)
  8. dist-x86_64-mingw: 8428.1s -> 9511.1s (+12.9%)
  9. x86_64-gnu-llvm-20-2: 5722.0s -> 5017.0s (-12.3%)
  10. arm-android: 6526.3s -> 5722.4s (-12.3%)
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 (c4dc70e): 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)
1.9% [0.5%, 7.6%] 10
Regressions ❌
(secondary)
1.2% [0.2%, 2.2%] 2
Improvements ✅
(primary)
- - 0
Improvements ✅
(secondary)
- - 0
All ❌✅ (primary) 1.9% [0.5%, 7.6%] 10

Max RSS (memory usage)

This benchmark run did not return any relevant results for this metric.

Cycles

Results (primary 2.9%, secondary -0.1%)

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

mean range count
Regressions ❌
(primary)
2.9% [2.6%, 3.2%] 2
Regressions ❌
(secondary)
2.1% [2.1%, 2.1%] 1
Improvements ✅
(primary)
- - 0
Improvements ✅
(secondary)
-2.2% [-2.2%, -2.2%] 1
All ❌✅ (primary) 2.9% [2.6%, 3.2%] 2

Binary size

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

Bootstrap: 473.727s -> 473.76s (0.01%)
Artifact size: 389.29 MiB -> 389.30 MiB (0.00%)

@lqd
Copy link
Member

lqd commented Dec 12, 2025

All in docs, so likely #142380 or #146584

@matthiaskrgr
Copy link
Member Author

matthiaskrgr commented Dec 12, 2025

@rust-timer build 79f3d89

// rust-timer build 7d2e27fdaee3ed4177026efbbc50b98cd087ace1

@rust-timer

This comment has been minimized.

@rust-timer
Copy link
Collaborator

Finished benchmarking commit (79f3d89): comparison URL.

Overall result: ❌ regressions - please read the text below

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)
1.9% [0.5%, 7.6%] 10
Regressions ❌
(secondary)
1.0% [0.2%, 2.2%] 3
Improvements ✅
(primary)
- - 0
Improvements ✅
(secondary)
- - 0
All ❌✅ (primary) 1.9% [0.5%, 7.6%] 10

Max RSS (memory usage)

This benchmark run did not return any relevant results for this metric.

Cycles

Results (primary 2.7%, secondary 4.2%)

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

Binary size

This benchmark run did not return any relevant results for this metric.

Bootstrap: 473.727s -> 474.05s (0.07%)
Artifact size: 389.29 MiB -> 389.32 MiB (0.01%)

@matthiaskrgr

This comment was marked as resolved.

@matthiaskrgr
Copy link
Member Author

@rust-timer build 7d2e27f

@rust-timer

This comment has been minimized.

@lqd
Copy link
Member

lqd commented Dec 12, 2025

The previous PR is already it, cc @GuillaumeGomez

@rust-timer
Copy link
Collaborator

Finished benchmarking commit (7d2e27f): comparison URL.

Overall result: no relevant changes - no action needed

Instruction count

This benchmark run did not return any relevant results for this metric.

Max RSS (memory usage)

This benchmark run did not return any relevant results for this metric.

Cycles

This benchmark run did not return any relevant results for this metric.

Binary size

This benchmark run did not return any relevant results for this metric.

Bootstrap: 473.727s -> 474.376s (0.14%)
Artifact size: 389.29 MiB -> 389.30 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-compiletest Area: The compiletest test runner A-run-make Area: port run-make Makefiles to rmake.rs 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 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-infra Relevant to the infrastructure 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. T-rustdoc-frontend Relevant to the rustdoc-frontend team, which will review and decide on the web UI/UX output.

Projects

None yet

Development

Successfully merging this pull request may close these issues.