Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Rollup of 5 pull requests #146077

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
bors merged 14 commits into rust-lang:master from Zalathar:rollup-l7ip5yi
Sep 1, 2025
Merged

Rollup of 5 pull requests #146077

bors merged 14 commits into rust-lang:master from Zalathar:rollup-l7ip5yi
Sep 1, 2025

Conversation

Copy link
Contributor

@Zalathar Zalathar commented Sep 1, 2025
edited by rustbot
Loading

Successful merges:

r? @ghost
@rustbot modify labels: rollup

Create a similar rollup

Zalathar and others added 14 commits August 24, 2025 20:29
...nces
The RFC only limits hyphens at the beginning of lines and not if they
are indented or embedded in other content.
Sticking to that approach was confirmed by the T-lang liason at
rust-lang#141367 (comment)
There is a regression in error message quality which I'm leaving for
someone if they feel this needs improving.
I left the additional asserts on {f16, f128}::MAX.recip() in a new
test_max_recip tests.
...gross35
dedup recip, powi, to_degrees, and to_radians float tests
Deduplicates recip, powi, to_degrees, and to_radians float tests.
I had to fiddle and slightly increase the tolerances for a few comparisons, so maybe not all of the tests are worth deduplicating.
Part of rust-lang#141726.
Best reviewed commit-by-commit.
r? `@tgross35`
coverage: Build an "expansion tree" and use it to unexpand raw spans
Historically and currently, coverage instrumentation assumes that all of a function's spans are in the same file and have the same syntax context. The spans extracted directly from MIR don't satisfy that assumption, so there is an "unexpansion" step that walks up each span's expansion-call-site tree to find a suitable span in the same context as the function's body span.
(That unexpansion step is what allows us to have somewhat reasonable coverage instrumentation for macros like `println!`, and for syntax like `for` and `?` that undergo desugaring expansion.)
The current unexpansion code mostly works fine in that "flat" single-file single-context world. But it's not suitable for incremental work towards proper expansion-aware coverage instrumentation, which would allow a function's coverage spans to encompass multiple expansion contexts and multiple files.
This PR therefore replaces the current unexpansion code with a more sophisticated system that uses the raw MIR spans to reconstruct an "expansion tree", and then uses that tree to help perform most of the unexpansion work.
Building the tree is "overkill" for current unexpansion needs (though it does give some minor edge-case improvements), but my hope is that having the explicit tree available will be a big help when taking the next steps towards proper expansion-region support.
fix(lexer): Don't require frontmatters to be escaped with indented fences
The RFC only limits hyphens at the beginning of lines and not if they are indented or embedded in other content.
Sticking to that approach was confirmed by the T-lang liason at rust-lang#141367 (comment)
There is a regression in error message quality which I'm leaving for someone if they feel this needs improving.
Tracking issue: rust-lang#136889
Fixes rust-lang#141367 
...gain, r=Noratrieb
fixup nix dev shell again
r? Noratrieb
compiletest: Capture panic messages via a custom panic hook
Currently, output-capture of panic messages relies on special cooperation between `#![feature(internal_output_capture)]` and the default panic hook. That's a problem if we want to perform our own output capture, because the default panic hook won't know about our custom output-capture mechanism.
We can work around that by installing a custom panic hook that prints equivalent panic messages to a buffer instead.
The custom hook is always installed, but delegates to the default panic hook unless a panic-capture buffer has been installed on the current thread. A panic-capture buffer is only installed on compiletest test threads (by the executor), and only if output-capture is enabled.
---
Right now this PR doesn't provide any particular concrete benefits. But it will be essential as part of further efforts to replace compiletest's use of `#![feature(internal_output_capture)]` with our own output-capture mechanism.
r? jieyouxu
@rustbot rustbot added A-compiletest Area: The compiletest test runner 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 Sep 1, 2025
Copy link
Contributor Author

Zalathar commented Sep 1, 2025

Rollup of everything not in #146072.

@bors r+ rollup=never p=5

Copy link
Collaborator

bors commented Sep 1, 2025

📌 Commit 92bc467 has been approved by Zalathar

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 Sep 1, 2025
Copy link
Collaborator

bors commented Sep 1, 2025

⌛ Testing commit 92bc467 with merge 84a1747...

Copy link
Collaborator

bors commented Sep 1, 2025

☀️ Test successful - checks-actions
Approved by: Zalathar
Pushing 84a1747 to master...

@bors bors added the merged-by-bors This PR was explicitly merged by bors. label Sep 1, 2025
@bors bors merged commit 84a1747 into rust-lang:master Sep 1, 2025
11 checks passed
@rustbot rustbot added this to the 1.91.0 milestone Sep 1, 2025
Copy link
Collaborator

📌 Perf builds for each rolled up PR:

PR# Message Perf Build Sha
#145468 dedup recip, powi, to_degrees, and to_radians float tests df8d7237c52ad7ad356c809e7b8cda4cd9985e84 (link)
#145643 coverage: Build an "expansion tree" and use it to unexpand ... ce714beebd89fbadc9a9af0873866c31970d9917 (link)
#145754 fix(lexer): Don't require frontmatters to be escaped with i... f66fde879ac0233ecc7db610971de956e21a045c (link)
#146060 fixup nix dev shell again fc25cd511f8e536e9527cee344033f38d12162dc (link)
#146068 compiletest: Capture panic messages via a custom panic hook 5373fcbe46e8e3fbbdf6c5897c90208373f7d998 (link)

previous master: be4e9b77ab

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

@Zalathar Zalathar deleted the rollup-l7ip5yi branch September 1, 2025 10:55
Copy link
Contributor

github-actions bot commented Sep 1, 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 be4e9b7 (parent) -> 84a1747 (this PR)

Test differences

Show 101 test diffs

Stage 1

  • floats::f128::test_to_degrees: pass -> [missing] (J1)
  • floats::f128::test_to_radians: pass -> [missing] (J1)
  • floats::f16::test_max_recip: [missing] -> pass (J1)
  • floats::f16::test_powi: pass -> [missing] (J1)
  • floats::f16::test_recip: pass -> [missing] (J1)
  • floats::f16::test_to_degrees: pass -> [missing] (J1)
  • floats::f16::test_to_radians: pass -> [missing] (J1)
  • floats::f32::test_powi: pass -> [missing] (J1)
  • floats::f32::test_recip: pass -> [missing] (J1)
  • floats::f32::test_to_degrees: pass -> [missing] (J1)
  • floats::f32::test_to_radians: pass -> [missing] (J1)
  • floats::f64::test_powi: pass -> [missing] (J1)
  • floats::f64::test_recip: pass -> [missing] (J1)
  • floats::f64::test_to_degrees: pass -> [missing] (J1)
  • floats::f64::test_to_radians: pass -> [missing] (J1)
  • floats::powi::test_f16: [missing] -> pass (J1)
  • floats::powi::test_f32: [missing] -> pass (J1)
  • floats::powi::test_f64: [missing] -> pass (J1)
  • floats::recip::const_::test_f128: [missing] -> pass (J1)
  • floats::recip::const_::test_f16: [missing] -> pass (J1)
  • floats::recip::const_::test_f32: [missing] -> pass (J1)
  • floats::recip::const_::test_f64: [missing] -> pass (J1)
  • floats::recip::test_f16: [missing] -> pass (J1)
  • floats::recip::test_f32: [missing] -> pass (J1)
  • floats::recip::test_f64: [missing] -> pass (J1)
  • floats::to_degrees::const_::test_f128: [missing] -> pass (J1)
  • floats::to_degrees::const_::test_f16: [missing] -> pass (J1)
  • floats::to_degrees::const_::test_f32: [missing] -> pass (J1)
  • floats::to_degrees::const_::test_f64: [missing] -> pass (J1)
  • floats::to_degrees::test_f128: [missing] -> pass (J1)
  • floats::to_degrees::test_f16: [missing] -> pass (J1)
  • floats::to_degrees::test_f32: [missing] -> pass (J1)
  • floats::to_degrees::test_f64: [missing] -> pass (J1)
  • floats::to_radians::const_::test_f128: [missing] -> pass (J1)
  • floats::to_radians::const_::test_f16: [missing] -> pass (J1)
  • floats::to_radians::const_::test_f32: [missing] -> pass (J1)
  • floats::to_radians::const_::test_f64: [missing] -> pass (J1)
  • floats::to_radians::test_f128: [missing] -> pass (J1)
  • floats::to_radians::test_f16: [missing] -> pass (J1)
  • floats::to_radians::test_f32: [missing] -> pass (J1)
  • floats::to_radians::test_f64: [missing] -> pass (J1)
  • [coverage-map] tests/coverage/rustfmt-skip.rs: [missing] -> pass (J8)
  • [coverage-run] tests/coverage/rustfmt-skip.rs: [missing] -> ignore (ignored when the profiler runtime is not available) (J8)

Stage 2

  • floats::f128::test_to_degrees: pass -> [missing] (J0)
  • floats::f128::test_to_radians: pass -> [missing] (J0)
  • floats::f16::test_max_recip: [missing] -> pass (J0)
  • floats::f16::test_recip: pass -> [missing] (J0)
  • floats::f16::test_to_degrees: pass -> [missing] (J0)
  • floats::f16::test_to_radians: pass -> [missing] (J0)
  • floats::recip::test_f16: [missing] -> pass (J0)
  • floats::to_degrees::test_f128: [missing] -> pass (J0)
  • floats::to_degrees::test_f16: [missing] -> pass (J0)
  • floats::to_radians::test_f128: [missing] -> pass (J0)
  • floats::to_radians::test_f16: [missing] -> pass (J0)
  • floats::f128::test_powi: pass -> [missing] (J2)
  • floats::powi::test_f128: [missing] -> pass (J2)
  • floats::f32::test_powi: pass -> [missing] (J3)
  • floats::f32::test_recip: pass -> [missing] (J3)
  • floats::f32::test_to_degrees: pass -> [missing] (J3)
  • floats::f32::test_to_radians: pass -> [missing] (J3)
  • floats::f64::test_powi: pass -> [missing] (J3)
  • floats::f64::test_recip: pass -> [missing] (J3)
  • floats::f64::test_to_degrees: pass -> [missing] (J3)
  • floats::f64::test_to_radians: pass -> [missing] (J3)
  • floats::powi::test_f32: [missing] -> pass (J3)
  • floats::powi::test_f64: [missing] -> pass (J3)
  • floats::recip::const_::test_f128: [missing] -> pass (J3)
  • floats::recip::const_::test_f16: [missing] -> pass (J3)
  • floats::recip::const_::test_f32: [missing] -> pass (J3)
  • floats::recip::const_::test_f64: [missing] -> pass (J3)
  • floats::recip::test_f32: [missing] -> pass (J3)
  • floats::recip::test_f64: [missing] -> pass (J3)
  • floats::to_degrees::const_::test_f128: [missing] -> pass (J3)
  • floats::to_degrees::const_::test_f16: [missing] -> pass (J3)
  • floats::to_degrees::const_::test_f32: [missing] -> pass (J3)
  • floats::to_degrees::const_::test_f64: [missing] -> pass (J3)
  • floats::to_degrees::test_f32: [missing] -> pass (J3)
  • floats::to_degrees::test_f64: [missing] -> pass (J3)
  • floats::to_radians::const_::test_f128: [missing] -> pass (J3)
  • floats::to_radians::const_::test_f16: [missing] -> pass (J3)
  • floats::to_radians::const_::test_f32: [missing] -> pass (J3)
  • floats::to_radians::const_::test_f64: [missing] -> pass (J3)
  • floats::to_radians::test_f32: [missing] -> pass (J3)
  • floats::to_radians::test_f64: [missing] -> pass (J3)
  • floats::f128::test_max_recip: [missing] -> pass (J4)
  • floats::f128::test_recip: pass -> [missing] (J4)
  • floats::recip::test_f128: [missing] -> pass (J4)
  • floats::f16::test_powi: pass -> [missing] (J5)
  • floats::powi::test_f16: [missing] -> pass (J5)
  • [coverage-run] tests/coverage/rustfmt-skip.rs: [missing] -> ignore (ignored when cross-compiling) (J6)
  • [coverage-run] tests/coverage/rustfmt-skip.rs: [missing] -> ignore (ignored when the profiler runtime is not available) (J7)
  • [coverage-map] tests/coverage/rustfmt-skip.rs: [missing] -> pass (J9)
  • [coverage-run] tests/coverage/rustfmt-skip.rs: [missing] -> pass (J10)

Additionally, 8 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 84a17470220e7adf249b18d7c0178dfbede89462 --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-llvm-19: 2794.3s -> 2368.8s (-15.2%)
  2. aarch64-gnu-llvm-19-2: 2580.1s -> 2237.7s (-13.3%)
  3. aarch64-apple: 5900.4s -> 6674.9s (13.1%)
  4. dist-apple-various: 3149.5s -> 3544.0s (12.5%)
  5. x86_64-gnu-llvm-19-2: 5656.6s -> 6193.5s (9.5%)
  6. dist-x86_64-apple: 6258.3s -> 6838.0s (9.3%)
  7. i686-gnu-2: 5730.7s -> 6181.5s (7.9%)
  8. pr-check-1: 1616.9s -> 1740.6s (7.7%)
  9. x86_64-mingw-1: 9750.1s -> 10495.3s (7.6%)
  10. x86_64-gnu-llvm-20-1: 3560.0s -> 3305.5s (-7.1%)
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.

Copy link
Collaborator

Finished benchmarking commit (84a1747): comparison URL.

Overall result: no relevant changes - no action needed

@rustbot label: -perf-regression

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

Results (secondary -3.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)
3.3% [3.3%, 3.3%] 1
Improvements ✅
(primary)
- - 0
Improvements ✅
(secondary)
-6.4% [-10.0%, -2.8%] 2
All ❌✅ (primary) - - 0

Binary size

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

Bootstrap: 468.792s -> 468.417s (-0.08%)
Artifact size: 388.52 MiB -> 388.46 MiB (-0.01%)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Reviewers
No reviews
Assignees
No one assigned
Labels
A-compiletest Area: The compiletest test runner 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
Milestone
1.91.0
Development

Successfully merging this pull request may close these issues.

AltStyle によって変換されたページ (->オリジナル) /