Skip to content

Rollup of 12 pull requests - #147512

Merged
bors merged 29 commits into
rust-lang:masterfrom
Zalathar:rollup-p8kb5f7
Oct 9, 2025
Merged

Rollup of 12 pull requests#147512
bors merged 29 commits into
rust-lang:masterfrom
Zalathar:rollup-p8kb5f7

Conversation

@Zalathar

@ZalatharZalathar commented Oct 9, 2025

Copy link
Copy Markdown
Member

Successful merges:

r? @ghost
@rustbot modify labels: rollup

Create a similar rollup

cyrganiand others added 29 commits October 5, 2025 13:58
When building with `rust.rpath = false`, every `rustc` invocation needs
to include the library path as well. I particularly ran into this in
`generate_target_spec_json_schema` when testing 1.91-beta in Fedora,
where we do disable rpath for our system builds. The new helper function
will hopefully encourage the right thing going forward.
Users who build `core` for the sole purpose of enabling `panic_immediate_abort` might expect
"`panic_immediate_abort` is now a real panic strategy" to mean that setting `panic =
"immediate-abort"` in `Cargo.toml` or `-Cpanic=immediate-abort` in `RUSTFLAGS` to be sufficient for
migration. But this is not the case, `core` still needs to be built for those changes to take
effect.
See rust-lang#146974 for additional context.
LLVM generally can do this on its own, but it helps miri and other backends.
…obal`
Since it can easily be implemented using the existing LLVM C API in
terms of `LLVMAddGlobal` and `LLVMSetLinkage` and `define_private_global`
was only used in one place.
All APIs used from outside the compiletest library crate have been isolated to
the `cli` and `rustdoc_gui_test` modules, so no other items need to be publicly
exported.
Port the implemention of SIMD intrinsics from Miri to const-eval
Ported the implementation of most SIMD intrinsics from Miri to rustc_const_eval. Remaining are
- Math functions (as per `@RalfJung's` suggestions)
- FMA (non-deterministic)
- Funnel Shifts (not implemented in Miri yet)
- Unordered reduction intrinsics (not implemented in Miri yet)
…mdev
give a better example why `std` modules named like primitives are needed
A small update to the `std` `lib.rs` introduction to replace mentions of `std::i32` (never needed) with `std::char` (sometimes needed).
Related to rust-lang#146882.
…lathar,jieyouxu
bootstrap: add `Builder::rustc_cmd` that includes the lib path
When building with `rust.rpath = false`, every `rustc` invocation needs
to include the library path as well. I particularly ran into this in
`generate_target_spec_json_schema` when testing 1.91-beta in Fedora,
where we do disable rpath for our system builds. The new helper function
will hopefully encourage the right thing going forward.
…d, r=joboet
Add diagnostic items for `pub mod consts` of FP types
They will be used in Clippy.
…Jung,joboet
specialize slice::fill to use memset when possible
It helps const eval performance rust-lang/miri#4616, debug builds and the gcc backend.
Previously attempted in rust-lang#83245 but reverted due to unsoundness rust-lang#87891 around potentially-uninitialized types. This PR only handles primitives where the problem does not arise.
split off from rust-lang#147294
…=JonathanBrouwer
Fix double warnings on `#[no_mangle]`
Fixes 2 out of 3 cases in rust-lang#147417
The fix on closures removes the old error and marks closures as an error target.
The fix on consts adds `AllowSilent` to to ignore a target, and uses the old error because that one has a nice suggestion.
r? ````@jdonszelmann````
…crum
Clarify how to remediate the panic_immediate_abort error
Users who build `core` for the sole purpose of enabling `panic_immediate_abort` might expect "`panic_immediate_abort` is now a real panic strategy" to mean that setting `panic = "immediate-abort"` in `Cargo.toml` or `-Cpanic=immediate-abort` in `RUSTFLAGS` to be sufficient for migration. But this is not the case, `core` still needs to be built for those changes to take effect.
See rust-lang#146974 for additional context.
See rust-lang#147286 and rust-lang/cargo#16042 for the revelant tracking issues.
…miasko
Do not invalidate CFG caches in CtfeLimit.
This does not matter much, as no optimization pass runs after `CtfeLimit`, but I still find the code cleaner.
format: some small cleanup
Some small cleanup and some additional comments I did while trying to understand this code.
…ate_global, r=nikic
refactor: Remove `LLVMRustInsertPrivateGlobal` and `define_private_global`
Since it can easily be implemented using the existing LLVM C API in
terms of `LLVMAddGlobal` and `LLVMSetLinkage` and `define_private_global`
was only used in one place.
Work towards rust-lang#46437
… r=Kivooeo,oli-obk
Prefer to use repeat_n over repeat().take()
More from rust-lang#147464, but batch processed with `ast-grep` to find and replace.
second commit add notes for library: rust-lang@affaf53
r? ``@RalfJung``
compiletest: Isolate public APIs and minimize public surface area
As part of my ongoing efforts to improve directive parsing, I would like to be able to make internal changes without worrying about whether they're going to break the rustdoc-gui-test tool. That tool currently uses compiletest as a dependency to help with directive parsing.
This PR therefore isolates all of compiletest's public APIs into two dedicated modules, one used by rustdoc-gui-test, and one used by the compiletest binary in `compiletest/src/bin/main.rs`.
All other modules (and crate-root items) are then made non-`pub` to achieve the API isolation. Doing so reveals some unused items, which have been removed.
(To reduce the amount of immediate textual churn, this PR does not comprehensively replace `pub` with `pub(crate)` throughout the whole crate; that could be done in a follow-up PR.)
---
Ideally, rustdoc-gui-test would not depend on compiletest at all, but properly fixing that is out of scope for this PR.
- rust-lang#143827
r? jieyouxu
@rustbotrustbot added the A-attributes Area: Attributes (`#[…]`, `#![…]`) label Oct 9, 2025
@rustbotrustbot added 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. T-rustdoc Relevant to the rustdoc team, which will review and decide on the PR/issue. rollup A PR which is a rollup labels Oct 9, 2025
@Zalathar

Copy link
Copy Markdown
MemberAuthor

Rollup of everything.

@bors r+ rollup=never p=5

@bors

bors commented Oct 9, 2025

Copy link
Copy Markdown
Collaborator

📌 Commit 76d4f37 has been approved by Zalathar

It is now in the queue for this repository.

@borsbors 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 Oct 9, 2025
@bors

bors commented Oct 9, 2025

Copy link
Copy Markdown
Collaborator

⌛ Testing commit 76d4f37 with merge acf2437...

@ZalatharZalathar mentioned this pull request Oct 9, 2025
@bors

bors commented Oct 9, 2025

Copy link
Copy Markdown
Collaborator

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

@borsbors added the merged-by-bors This PR was explicitly merged by bors. label Oct 9, 2025
@bors
bors merged commit acf2437 into rust-lang:masterOct 9, 2025
11 checks passed
@rustbotrustbot added this to the 1.92.0 milestone Oct 9, 2025
@github-actions

Copy link
Copy Markdown
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 bd34871 (parent) -> acf2437 (this PR)

Test differences

Show 742 test diffs

Stage 0

  • errors::verify_codegen_ssa_dynamic_linking_with_lto_135: [missing] -> pass (J1)
  • errors::verify_codegen_ssa_dynamic_linking_with_lto_136: pass -> [missing] (J1)
  • errors::verify_codegen_ssa_feature_not_valid_131: [missing] -> pass (J1)
  • errors::verify_codegen_ssa_feature_not_valid_132: pass -> [missing] (J1)
  • errors::verify_codegen_ssa_lto_disallowed_132: [missing] -> pass (J1)
  • errors::verify_codegen_ssa_lto_disallowed_133: pass -> [missing] (J1)
  • errors::verify_codegen_ssa_lto_dylib_133: [missing] -> pass (J1)
  • errors::verify_codegen_ssa_lto_dylib_134: pass -> [missing] (J1)
  • errors::verify_codegen_ssa_lto_proc_macro_134: [missing] -> pass (J1)
  • errors::verify_codegen_ssa_lto_proc_macro_135: pass -> [missing] (J1)
  • errors::verify_codegen_ssa_no_mangle_nameless_131: pass -> [missing] (J1)

Stage 1

  • errors::verify_codegen_ssa_dynamic_linking_with_lto_135: [missing] -> pass (J0)
  • errors::verify_codegen_ssa_dynamic_linking_with_lto_136: pass -> [missing] (J0)
  • errors::verify_codegen_ssa_feature_not_valid_131: [missing] -> pass (J0)
  • errors::verify_codegen_ssa_feature_not_valid_132: pass -> [missing] (J0)
  • errors::verify_codegen_ssa_lto_disallowed_132: [missing] -> pass (J0)
  • errors::verify_codegen_ssa_lto_disallowed_133: pass -> [missing] (J0)
  • errors::verify_codegen_ssa_lto_dylib_133: [missing] -> pass (J0)
  • errors::verify_codegen_ssa_lto_dylib_134: pass -> [missing] (J0)
  • errors::verify_codegen_ssa_lto_proc_macro_134: [missing] -> pass (J0)
  • errors::verify_codegen_ssa_lto_proc_macro_135: pass -> [missing] (J0)
  • errors::verify_codegen_ssa_no_mangle_nameless_131: pass -> [missing] (J0)
  • [codegen] tests/codegen-llvm/lib-optimizations/slice_fill.rs: [missing] -> pass (J1)

Stage 2

  • [codegen] tests/codegen-llvm/lib-optimizations/slice_fill.rs: [missing] -> pass (J2)

Additionally, 718 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 acf243778e6c54cb7d54bee4be88e510e4be123e --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. pr-check-1: 1374.7s -> 1819.1s (32.3%)
  2. dist-various-1: 3851.9s -> 4431.7s (15.1%)
  3. dist-aarch64-apple: 7510.3s -> 8374.8s (11.5%)
  4. dist-aarch64-msvc: 6345.8s -> 5760.2s (-9.2%)
  5. aarch64-apple: 9864.4s -> 8955.6s (-9.2%)
  6. tidy: 196.9s -> 179.7s (-8.7%)
  7. dist-x86_64-windows-gnullvm: 5281.0s -> 4903.8s (-7.1%)
  8. i686-gnu-nopt-2: 8433.6s -> 7849.4s (-6.9%)
  9. dist-aarch64-linux: 6545.5s -> 6105.3s (-6.7%)
  10. dist-ohos-x86_64: 4579.7s -> 4292.7s (-6.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
Copy Markdown
Collaborator

📌 Perf builds for each rolled up PR:

PR#MessagePerf Build Sha
#146568Port the implemention of SIMD intrinsics from Miri to const…8be29f9c31da7027491f64dd2f767df538f20958 (link)
#147373give a better example why std modules named like primitiv…c55ce14ec06cf5ef910749ebcd064420bd277388 (link)
#147419bootstrap: add Builder::rustc_cmd that includes the lib p…afc08cc9370c2843947dc685a93b0d325c05bef6 (link)
#147420Add diagnostic items for pub mod consts of FP types1df4e25505420715208a0dab7db052699c4a6698 (link)
#147457specialize slice::fill to use memset when possible2a13e85cba290817869186d22212735e98e2777f (link)
#147467Fix double warnings on #[no_mangle]22d9c29f5f9e5914239bf63187872efc965ebfe1 (link)
#147470Clarify how to remediate the panic_immediate_abort error353b018ecdcffc45df829e3089c92e7ce6eeb305 (link)
#147480Do not invalidate CFG caches in CtfeLimit.b4682559135938801b44f996d93f6cee3cff7293 (link)
#147481format: some small cleanup450baa272879a916fb2db705f6ef8794c136ce3d (link)
#147488refactor: Remove LLVMRustInsertPrivateGlobal and `define_…fb1ab40bcb47fa487de24a8f59a633af46e686c7 (link)
#147489Prefer to use repeat_n over repeat().take()f12d66bea26051630d4b43d3bee409a16456cbdf (link)
#147506compiletest: Isolate public APIs and minimize public surfac…3ff58195cf6f32c3b7b3f411b865b072d8370f87 (link)

previous master: bd3487101f

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-p8kb5f7 branch October 9, 2025 11:05
@borsbors mentioned this pull request Oct 9, 2025
@rust-timer

Copy link
Copy Markdown
Collaborator

Finished benchmarking commit (acf2437): 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.

meanrangecount
Regressions ❌
(primary)
--0
Regressions ❌
(secondary)
0.4%[0.0%, 0.8%]10
Improvements ✅
(primary)
--0
Improvements ✅
(secondary)
--0
All ❌✅ (primary)--0

Max RSS (memory usage)

Results (secondary 1.8%)

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

meanrangecount
Regressions ❌
(primary)
--0
Regressions ❌
(secondary)
1.8%[1.8%, 1.8%]1
Improvements ✅
(primary)
--0
Improvements ✅
(secondary)
--0
All ❌✅ (primary)--0

Cycles

Results (primary 2.1%, secondary -2.6%)

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

meanrangecount
Regressions ❌
(primary)
2.1%[2.1%, 2.1%]1
Regressions ❌
(secondary)
2.4%[2.4%, 2.4%]1
Improvements ✅
(primary)
--0
Improvements ✅
(secondary)
-3.3%[-4.3%, -2.2%]8
All ❌✅ (primary)2.1%[2.1%, 2.1%]1

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.

meanrangecount
Regressions ❌
(primary)
0.1%[0.1%, 0.1%]1
Regressions ❌
(secondary)
--0
Improvements ✅
(primary)
-0.0%[-0.0%, -0.0%]3
Improvements ✅
(secondary)
-0.0%[-0.0%, -0.0%]17
All ❌✅ (primary)0.0%[-0.0%, 0.1%]4

Bootstrap: 474.495s -> 471.876s (-0.55%)
Artifact size: 388.40 MiB -> 388.40 MiB (-0.00%)

@rustbotrustbot added the perf-regression Performance regression. label Oct 9, 2025
@Zalathar

Copy link
Copy Markdown
MemberAuthor

Some of the secondary regressions are bimodal noise, but the coercions ones look real enough to raise an eyebrow.

@Zalathar

Copy link
Copy Markdown
MemberAuthor

@rust-timer

This comment has been minimized.

@rust-timer

Copy link
Copy Markdown
Collaborator

Finished benchmarking commit (b468255): comparison URL.

Overall result: ❌ regressions - no action needed

Instruction count

Our most reliable metric. Used to determine the overall result above. However, even this metric can be noisy.

meanrangecount
Regressions ❌
(primary)
--0
Regressions ❌
(secondary)
0.6%[0.6%, 0.6%]3
Improvements ✅
(primary)
--0
Improvements ✅
(secondary)
--0
All ❌✅ (primary)--0

Max RSS (memory usage)

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

Cycles

Results (primary 2.3%)

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

meanrangecount
Regressions ❌
(primary)
2.3%[2.3%, 2.3%]1
Regressions ❌
(secondary)
--0
Improvements ✅
(primary)
--0
Improvements ✅
(secondary)
--0
All ❌✅ (primary)2.3%[2.3%, 2.3%]1

Binary size

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

Bootstrap: 474.495s -> 473.918s (-0.12%)
Artifact size: 388.40 MiB -> 388.39 MiB (-0.00%)

@Zalathar

Copy link
Copy Markdown
MemberAuthor

Coercions rebounded in #147519 (comment), so this is probably nothing after all.

@Kobzol

Copy link
Copy Markdown
Member

Thanks for investigating! This seems like noise, yeah.

@rustbot label: +perf-regression-triaged

@rustbotrustbot added the perf-regression-triaged The performance regression has been triaged. label Oct 13, 2025
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

A-attributesArea: Attributes (`#[…]`, `#![…]`)A-compiletestArea: The compiletest test runnerA-LLVMArea: Code generation parts specific to LLVM. Both correctness bugs and optimization-related issues.A-query-systemArea: The rustc query system (https://rustc-dev-guide.rust-lang.org/query.html)A-testsuiteArea: The testsuite used to check the correctness of rustcmerged-by-borsThis PR was explicitly merged by bors.perf-regressionPerformance regression.perf-regression-triagedThe performance regression has been triaged.rollupA PR which is a rollupS-waiting-on-borsStatus: Waiting on bors to run and complete tests. Bors will change the label on completion.T-bootstrapRelevant to the bootstrap subteam: Rust's build system (x.py and src/bootstrap)T-compilerRelevant to the compiler team, which will review and decide on the PR/issue.T-libsRelevant to the library team, which will review and decide on the PR/issue.T-rustdocRelevant 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.

16 participants

@Zalathar@bors@rust-timer@Kobzol@rustbot@cyrgani@samueltardieu@cuviper@ia0@cjgillot@hkBst@sayantn@JonathanBrouwer@chenyukang@the8472@AMS21