Skip to content

Rollup of 28 pull requests #145773

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
merged 98 commits into from
Aug 23, 2025
Merged

Rollup of 28 pull requests #145773

merged 98 commits into from
Aug 23, 2025

Conversation

jhpratt
Copy link
Member

@jhpratt jhpratt commented Aug 23, 2025

Successful merges:

r? @ghost
@rustbot modify labels: rollup

Create a similar rollup

JayAndJef and others added 30 commits June 30, 2025 13:44
Added sanity check to bootstrap to hard error on wasm builds without
clang, and changed distribution image `dist-various-2` to use clang to
build for official targets.
Also fixed a typo in the sanity check for bootstrap, as we are checking for clang-likeness in every wasm target.
This commit is a purely cosmetic change to the documentation and
ordering of items in the `rwlock.rs` file, which will help discern the
actual difference between the `nonpoison` and `poison` variants of
`rwlock`.

List of changes (lots of small things):

- Clean up some of the existing field doc comments
- Add documentation for every field in struct definitions
- Consolidate related implementation blocks (1 implementation block per
  guard instead of 2)
- Use the lifetime name `'rwlock` instead of `'a`
- Reorder implementation blocks to be consistent across the entire file
  (follows the order `ReadGuard`, `WriteGuard`, `MappedReadGuard`,
  MappedWriteGuard`)
- Move simple trait implementations to the bottom of the file
- Rename the `poison` field in `MappedRwLockWriteGuard` to
  posion_guard`
- Cut off comments at 100 columns
- Update the documentation of `downgrade` to match stabilization PR #
  143191
Adds the equivalent `nonpoison` types to the `poison::rwlock` module.
These types and implementations are gated under the `nonpoison_rwlock`
feature gate.

Also blesses the ui tests that now have a name conflicts (because these
types no longer have unique names). The full path distinguishes the
different types.
This commit simply helps discern the actual changes needed to test both
poison and nonpoison `rwlock`s.
Adds tests for the `nonpoison::RwLock` variant by using a macro to
duplicate the existing `poison` tests.

Note that all of the tests here are adapted from the existing `poison`
tests.
Most of these regressions concern elimination of panics and bounds
checks that were fixed upstream by LLVM.
When this fails, you get output that looks like:

    /home/user/rust/tests/rustdoc-gui/search-result-impl-disambiguation.goml search-result-impl-disambiguation... FAILED
    [ERROR] `tests/rustdoc-gui/utils.goml` around line 49
        from `tests/rustdoc-gui/search-result-impl-disambiguation.goml` line 25: JS errors occurred: Event: Event

Making the error message more informative requires patching browser-ui-test.
@jhpratt jhpratt deleted the rollup-kocqnzv branch August 23, 2025 08:14
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 78b89eb (parent) -> 8df154b (this PR)

Test differences

Show 299 test diffs

Stage 1

  • coverage::counters::union_find::tests::transitive: pass -> [missing] (J0)
  • errors::verify_ast_passes_abi_cannot_be_coroutine_62: [missing] -> pass (J0)
  • errors::verify_ast_passes_abi_custom_safe_foreign_function_59: pass -> [missing] (J0)
  • errors::verify_ast_passes_abi_custom_safe_function_60: pass -> [missing] (J0)
  • errors::verify_ast_passes_abi_x86_interrupt_64: pass -> [missing] (J0)
  • lints::verify_lint_associated_const_elided_lifetime_145: [missing] -> pass (J0)
  • lints::verify_lint_avoid_att_syntax_115: [missing] -> pass (J0)
  • lints::verify_lint_avoid_intel_syntax_114: [missing] -> pass (J0)
  • lints::verify_lint_byte_slice_in_packed_struct_with_derive_138: [missing] -> pass (J0)
  • lints::verify_lint_cfg_attr_no_attributes_120: pass -> [missing] (J0)
  • lints::verify_lint_duplicate_matcher_binding_122: [missing] -> pass (J0)
  • lints::verify_lint_extern_crate_not_idiomatic_140: [missing] -> pass (J0)
  • lints::verify_lint_extern_without_abi_132: pass -> [missing] (J0)
  • lints::verify_lint_ill_formed_attribute_input_126: pass -> [missing] (J0)
  • lints::verify_lint_legacy_derive_helpers_129: [missing] -> pass (J0)
  • lints::verify_lint_macro_expanded_macro_exports_accessed_by_absolute_paths_127: [missing] -> pass (J0)
  • lints::verify_lint_macro_expanded_macro_exports_accessed_by_absolute_paths_130: pass -> [missing] (J0)
  • lints::verify_lint_macro_is_private_111: [missing] -> pass (J0)
  • lints::verify_lint_macro_use_deprecated_107: [missing] -> pass (J0)
  • lints::verify_lint_macro_use_deprecated_108: pass -> [missing] (J0)
  • lints::verify_lint_metavariable_still_repeating_121: pass -> [missing] (J0)
  • lints::verify_lint_metavariable_wrong_operator_121: [missing] -> pass (J0)
  • lints::verify_lint_metavariable_wrong_operator_122: pass -> [missing] (J0)
  • lints::verify_lint_missing_unsafe_on_extern_135: [missing] -> pass (J0)
  • lints::verify_lint_named_argument_used_positionally_137: [missing] -> pass (J0)
  • lints::verify_lint_named_argument_used_positionally_141: pass -> [missing] (J0)
  • lints::verify_lint_or_patterns_back_compat_130: [missing] -> pass (J0)
  • lints::verify_lint_or_patterns_back_compat_134: pass -> [missing] (J0)
  • lints::verify_lint_out_of_scope_macro_calls_147: [missing] -> pass (J0)
  • lints::verify_lint_private_extern_crate_reexport_110: pass -> [missing] (J0)
  • lints::verify_lint_proc_macro_derive_resolution_fallback_126: [missing] -> pass (J0)
  • lints::verify_lint_raw_prefix_136: pass -> [missing] (J0)
  • lints::verify_lint_redundant_import_visibility_150: pass -> [missing] (J0)
  • lints::verify_lint_reserved_multihash_154: pass -> [missing] (J0)
  • lints::verify_lint_reserved_prefix_131: [missing] -> pass (J0)
  • lints::verify_lint_reserved_prefix_135: pass -> [missing] (J0)
  • lints::verify_lint_trailing_semi_macro_138: pass -> [missing] (J0)
  • lints::verify_lint_unknown_macro_variable_124: pass -> [missing] (J0)
  • lints::verify_lint_unnameable_test_items_117: [missing] -> pass (J0)
  • lints::verify_lint_unnameable_test_items_118: pass -> [missing] (J0)
  • lints::verify_lint_unnecessary_qualification_148: pass -> [missing] (J0)
  • lints::verify_lint_unqualified_local_imports_148: [missing] -> pass (J0)
  • lints::verify_lint_unused_builtin_attribute_137: pass -> [missing] (J0)
  • lints::verify_lint_unused_crate_dependency_124: [missing] -> pass (J0)
  • lints::verify_lint_unused_extern_crate_143: pass -> [missing] (J0)
  • lints::verify_lint_unused_label_111: pass -> [missing] (J0)
  • lints::verify_lint_unused_macro_definition_112: [missing] -> pass (J0)
  • lints::verify_lint_unused_macro_definition_113: pass -> [missing] (J0)
  • spec::tests::aarch64_be_unknown_hermit: [missing] -> pass (J0)
  • transmute::verify_lint_undefined_transmute_151: [missing] -> pass (J0)
  • transmute::verify_lint_undefined_transmute_155: pass -> [missing] (J0)
  • [assembly] tests/assembly-llvm/targets/targets-elf.rs#aarch64_be_unknown_hermit: [missing] -> pass (J1)
  • [codegen] tests/codegen-llvm/issues/elided-division-by-zero-check-74917.rs: [missing] -> pass (J1)
  • [codegen] tests/codegen-llvm/issues/no-bounds-check-after-assert-110971.rs: [missing] -> pass (J1)
  • [codegen] tests/codegen-llvm/issues/no-panic-for-pop-after-assert-71257.rs: [missing] -> pass (J1)
  • [codegen] tests/codegen-llvm/issues/num-is-digit-to-digit-59352.rs: [missing] -> pass (J1)
  • [ui] tests/ui/abi/debug.rs#loongarch64: [missing] -> pass (J1)
  • [ui] tests/ui/frontmatter/hyphen-in-infostring-non-leading.rs: [missing] -> pass (J1)
  • rwlock::nonpoison_frob: [missing] -> pass (J3)
  • rwlock::nonpoison_test_downgrade_atomic: [missing] -> pass (J3)
  • rwlock::nonpoison_test_downgrade_basic: [missing] -> pass (J3)
  • rwlock::nonpoison_test_downgrade_observe: [missing] -> pass (J3)
  • rwlock::nonpoison_test_get_cloned: [missing] -> pass (J3)
  • rwlock::nonpoison_test_get_mut: [missing] -> pass (J3)
  • rwlock::nonpoison_test_into_inner_drop: [missing] -> pass (J3)
  • rwlock::nonpoison_test_read_guard_covariance: [missing] -> pass (J3)
  • rwlock::poison_smoke: [missing] -> pass (J3)
  • rwlock::poison_test_downgrade_atomic: [missing] -> pass (J3)
  • rwlock::poison_test_downgrade_basic: [missing] -> pass (J3)
  • rwlock::poison_test_downgrade_observe: [missing] -> pass (J3)
  • rwlock::poison_test_get_cloned: [missing] -> pass (J3)
  • rwlock::poison_test_into_inner: [missing] -> pass (J3)
  • rwlock::poison_test_into_inner_drop: [missing] -> pass (J3)
  • rwlock::poison_test_read_guard_covariance: [missing] -> pass (J3)
  • rwlock::poison_test_rwlock_try_write: [missing] -> pass (J3)
  • rwlock::poison_test_rwlock_unsized: [missing] -> pass (J3)
  • rwlock::smoke: pass -> [missing] (J3)
  • rwlock::test_get_cloned: pass -> [missing] (J3)
  • rwlock::test_mapped_read_guard_covariance: pass -> [missing] (J3)
  • rwlock::test_mapping_mapped_guard: pass -> [missing] (J3)
  • rwlock::test_read_guard_covariance: pass -> [missing] (J3)
  • rwlock::test_rw_arc: pass -> [missing] (J3)
  • rwlock::test_rw_arc_access_in_unwind: pass -> [missing] (J3)
  • rwlock::test_rwlock_try_write: pass -> [missing] (J3)
  • rwlock::test_rwlock_unsized: pass -> [missing] (J3)
  • [codegen] tests/codegen-llvm/issues/and-masked-comparison-131162.rs: [missing] -> pass (J7)
  • [codegen] tests/codegen-llvm/issues/matches-logical-or-141497.rs: [missing] -> ignore (ignored when the LLVM version 20.1.2 is older than 21.0.0) (J7)
  • [codegen] tests/codegen-llvm/issues/and-masked-comparison-131162.rs: [missing] -> ignore (ignored when the LLVM version 19.1.1 is older than 20.0.0) (J9)
  • [codegen] tests/codegen-llvm/issues/iter-max-no-unwrap-failed-129583.rs: [missing] -> ignore (ignored when the LLVM version 19.1.1 is older than 20.0.0) (J9)

Stage 2

  • [ui] tests/ui/feature-gates/feature-gate-reborrow.rs: [missing] -> pass (J2)
  • [ui] tests/ui/frontmatter/hyphen-in-infostring-leading.rs: [missing] -> pass (J2)
  • [ui] tests/ui/methods/tuple-suggestions-issue-142488.rs: [missing] -> pass (J2)
  • [codegen] tests/codegen-llvm/issues/and-masked-comparison-131162.rs: [missing] -> ignore (ignored when the LLVM version 19.1.1 is older than 20.0.0) (J4)
  • [codegen] tests/codegen-llvm/issues/iter-max-no-unwrap-failed-129583.rs: [missing] -> ignore (ignored when the LLVM version 19.1.1 is older than 20.0.0) (J4)
  • [codegen] tests/codegen-llvm/issues/matches-logical-or-141497.rs: [missing] -> ignore (ignored when the LLVM version 19.1.1 is older than 21.0.0) (J4)
  • [rustdoc-js] tests/rustdoc-js/pointer.rs: [missing] -> pass (J5)
  • [ui] tests/ui/feature-gates/feature-gate-effective-target-features.rs#default: [missing] -> ignore (only executed when the architecture is x86_64) (J6)
  • [ui] tests/ui/feature-gates/feature-gate-effective-target-features.rs#feature: [missing] -> ignore (only executed when the architecture is x86_64) (J6)
  • [codegen] tests/codegen-llvm/issues/no-bounds-check-after-assert-110971.rs: [missing] -> pass (J8)
  • [codegen] tests/codegen-llvm/issues/slice-index-bounds-check-80075.rs: [missing] -> pass (J8)

(and 128 additional test diffs)

Additionally, 71 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 8df154bffddcb6bbb543ad69aff971795c5adbc2 --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: 1325.2s -> 1696.7s (28.0%)
  2. dist-apple-various: 4737.1s -> 3936.6s (-16.9%)
  3. dist-aarch64-apple: 5285.9s -> 6101.0s (15.4%)
  4. aarch64-gnu-llvm-19-2: 2244.4s -> 2500.9s (11.4%)
  5. dist-s390x-linux: 4873.6s -> 5425.9s (11.3%)
  6. pr-check-2: 2191.0s -> 2398.2s (9.5%)
  7. x86_64-gnu-distcheck: 8094.9s -> 8621.1s (6.5%)
  8. dist-powerpc64le-linux-gnu: 5496.9s -> 5170.5s (-5.9%)
  9. dist-x86_64-netbsd: 4633.6s -> 4885.8s (5.4%)
  10. dist-i686-msvc: 7981.0s -> 7551.9s (-5.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.

@rust-timer
Copy link
Collaborator

📌 Perf builds for each rolled up PR:

PR# Message Perf Build Sha
#132087 Fix overly restrictive lifetime in `core::panic::Location::… dfe99178e5865b7bc59dd2bbbb8d617b2a45d249 (link)
#137396 Recover param: Ty = EXPR 94d08c21334d24d7fb36f53d34a1714fd7a616cd (link)
#137457 Fix host code appearing in Wasm binaries 355a6723975dbd03d12c8b2d7876061236cd2696 (link)
#142185 Convert moves of references to copies in ReferencePropagati… 557edc0d7ee75b857d0b6617352a206ff2dee65c (link)
#144648 Implementation: #[feature(nonpoison_rwlock)] b48b30a396d34e23f9c4495ff6aacdbd869d3203 (link)
#144897 print raw lifetime idents with r# 49ad9e5b17356035c977161162ee1d727f8e6e32 (link)
#145218 [Debuginfo] improve enum value formatting in LLDB for bette… 25af88d42f48f3be554bc3c704e9f669c6a87dbf (link)
#145380 Add codegen-llvm regression tests 57c9f1c7c9aad0451850d0bd34bce963dd5894cb (link)
#145573 Add an experimental unsafe(force_target_feature) attribute. e4682f6abd91720e5078b0915945c4d66c73c182 (link)
#145597 resolve: Remove ScopeSet::Late 52c4316fece3e431c4f3a88971530c806eb2a1ab (link)
#145633 Fix some typos in LocalKey documentation 58c894b390437808eeb62b471db097cb2fd05886 (link)
#145641 On E0277, point at type that doesn't implement bound fd9e240cbdd83b13776fbc5649a0a382c455abd0 (link)
#145669 rustdoc-search: GUI tests check for // in URL ec6b05019e63726794480dde1b412f344d8f81fc (link)
#145695 Introduce ProjectionElem::try_map. d98f479f68d90832d4fba8c9a55afbe627b62841 (link)
#145710 Fix the ABI parameter inconsistency issue in debug.rs for L… 66bf9d8e23439e91a3ddc7b568e84a8b6a2baadc (link)
#145726 Experiment: Reborrow trait 09ec03679a12df1459cc959adcaad58d7b9ef94c (link)
#145731 Make raw pointers work in type-based search 2916fe9cbeba1246577a3daabd35d7efd65e1def (link)
#145736 triagebot: Update style team reviewers a13a60b35d5074d75108b9b751a8c8ec8eab4021 (link)
#145738 Uplift rustc_mir_transform::coverage::counters::union_find … d210f885478824fd340d8b79326a5a28bd6f6db9 (link)
#145742 rustdoc js: Even more typechecking improvments 560c1b8da9ae924a666da0e9c6d5950c6a2951f3 (link)
#145743 doc: fix some typos in comment 40e448714683c8191d9addd5ad8e919b6d097fcd (link)
#145745 tests: Ignore basic-stepping.rs on LoongArch 40bad378a444a953c83ac8706de56413b15e3cb2 (link)
#145747 Refactor lint buffering to avoid requiring a giant enum b763af51a6fb4b9a08a81f3396681b854f10f201 (link)
#145751 fix(lexer): Allow '-' in the frontmatter infostring continu… bf6c88f563a5b12e6d3f36a3490a3857f92d5793 (link)
#145761 Add aarch64_be-unknown-hermit target a09c0452e790b1cd3be246ac6123c4ee1c2f59c2 (link)
#145762 convert strings to symbols in attr diagnostics 8cd6e7da6254f2245f245d5be1bf5f194dfbf9ea (link)
#145763 Ship LLVM tools for the correct target when cross-compiling 1072fca15d905128fa0c6ec01748a09029fc68e4 (link)
#145765 Revert suggestions for missing methods in tuples cb86430dea57dfd80bd4948ae02aa993626aa754 (link)

previous master: 78b89ebb6b

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

@rust-timer
Copy link
Collaborator

Finished benchmarking commit (8df154b): 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)
0.5% [0.5%, 0.5%] 1
Regressions ❌
(secondary)
2.1% [0.1%, 4.2%] 2
Improvements ✅
(primary)
- - 0
Improvements ✅
(secondary)
- - 0
All ❌✅ (primary) 0.5% [0.5%, 0.5%] 1

Max RSS (memory usage)

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

Cycles

Results (secondary 3.4%)

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)
4.1% [2.4%, 5.3%] 10
Improvements ✅
(primary)
- - 0
Improvements ✅
(secondary)
-3.9% [-3.9%, -3.9%] 1
All ❌✅ (primary) - - 0

Binary size

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

Bootstrap: 467.345s -> 467.037s (-0.07%)
Artifact size: 378.27 MiB -> 378.11 MiB (-0.04%)

@madsmtm
Copy link
Contributor

madsmtm commented Aug 23, 2025

Wow! There should be a prize for the largest successful rollup in uh... six years.

@jhpratt
Copy link
Member Author

jhpratt commented Aug 23, 2025

@madsmtm someone has to do it 😅 I actually considered adding in a couple more PRs on top of this. Anything to get the queue down as quickly as possible.

@Zalathar
Copy link
Contributor

@rust-timer

This comment has been minimized.

@rust-timer
Copy link
Collaborator

Finished benchmarking commit (2916fe9): 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)
- - 0
Regressions ❌
(secondary)
4.2% [4.2%, 4.2%] 1
Improvements ✅
(primary)
- - 0
Improvements ✅
(secondary)
- - 0
All ❌✅ (primary) - - 0

Max RSS (memory usage)

Results (primary 6.1%, secondary -1.9%)

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

mean range count
Regressions ❌
(primary)
6.1% [6.1%, 6.1%] 1
Regressions ❌
(secondary)
- - 0
Improvements ✅
(primary)
- - 0
Improvements ✅
(secondary)
-1.9% [-1.9%, -1.9%] 1
All ❌✅ (primary) 6.1% [6.1%, 6.1%] 1

Cycles

Results (secondary 3.3%)

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)
- - 0
All ❌✅ (primary) - - 0

Binary size

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

Bootstrap: 467.345s -> 465.846s (-0.32%)
Artifact size: 378.27 MiB -> 378.29 MiB (0.00%)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
A-attributes Area: Attributes (`#[…]`, `#![…]`) A-CI Area: Our Github Actions CI A-rustc-dev-guide Area: rustc-dev-guide A-rustdoc-json Area: Rustdoc JSON backend A-rustdoc-search Area: Rustdoc's search feature A-testsuite Area: The testsuite used to check the correctness of rustc 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-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. T-rustdoc-frontend Relevant to the rustdoc-frontend team, which will review and decide on the web UI/UX output. WG-trait-system-refactor The Rustc Trait System Refactor Initiative (-Znext-solver)
Projects
None yet
Development

Successfully merging this pull request may close these issues.