Skip to content

Conversation

jhpratt
Copy link
Member

@jhpratt jhpratt commented Aug 15, 2025

Successful merges:

r? @ghost
@rustbot modify labels: rollup

Create a similar rollup

Jules-Bertholet and others added 25 commits July 15, 2025 17:41
…lnay

Add `Default` impls for `Pin`ned `Box`, `Rc`, `Arc`

Fixes rust-lang#143688.

`@rustbot` label T-libs-api needs-fcp

Also needs a crater run, as the `Box` impls could theoretically be breaking due to `#[fundamental]` (though a [cursory search](https://github.com/search?q=%2Fimpl%28%3C.*%3E%29%3F+Default+for+Pin%3C%2F+path%3A*.rs&type=code) suggests this is unlikely to cause issues).
…ls, r=tgross35

Stabilize as_array_of_cells

This PR stabilizes

```rust
impl<T, const N: usize> Cell<[T; N]> {
    pub const fn as_array_of_cells(&self) -> &[Cell<T>; N];
}
```

Stabilization report: rust-lang#88248 (comment)
Closes: rust-lang#88248
fix: Reject async assoc fns of const traits/impls in ast_passes

Fixes rust-lang#117629
Implement `#[derive(From)]`

Implements the `#[derive(From)]` feature ([tracking issue](rust-lang#144889), [RFC](rust-lang/rfcs#3809)).

It allows deriving the `From` impl on structs and tuple structs with exactly one field. Some implementation notes:
- I wasn't exactly sure which spans to use in the derive generating code, so I just used `span` everywhere. I don't know if it's the Right Thing To Do. In particular the errors when `#[derive(From)]` is used on a struct with an unsized field are weirdly duplicated.
- I had to solve an import stability problem, where if I just added the unstable `macro From` to `core::convert`, previously working code like `use std::convert::From` would suddenly require an unstable feature gate, because rustc would think that you're trying to import the unstable macro. `@petrochenkov` suggested that I add the macro the the core prelude instead. This has worked well, although it only works in edition 2021+. Not sure if I botched the prelude somehow and it should live elsewhere (?).
- I had to add `Ty::AstTy`, because the `from` function receives an argument with the type of the single field, and the existing variants of the `Ty` enum couldn't represent an arbitrary type.
…-iter-chain, r=jhpratt

Stabilize `core::iter::chain`

Closes rust-lang#125964
…alexcrichton

fix(tests/rmake/wasm-unexpected-features): change features from `WASM1` to `MVP`

missed this in rust-lang#145275
since test calls `rustc` with  `-C target-cpu mvp`
try-job: `test-various`
Remove duplicated tracing span in bootstrap

`trace_cmd` is now called also in the `stream` method, so including it also here was duplicating command spans.

r? `@jieyouxu`
…pr, r=jieyouxu

Fix tracing debug representation of steps without arguments in bootstrap

I was wondering why I see `lainSourceTarbal` in tracing logs...

r? `@jieyouxu`
…-run, r=jieyouxu

Do not copy files in `copy_src_dirs` in dry run

This reduces the time to run the current 9 dist snapshot tests from ~24s to ~2s on my PC.

r? `@jieyouxu`
…ovenance, r=RalfJung

Stabilize `const_exposed_provenance` feature

This closes [tracking issue](rust-lang#144538) and stabilises `fn with_exposed_provenance` and `fn with_exposed_provenance_mut` in const
Enable new `[range-diff]` feature in triagebot

This new feature adds a comment to triagebot range-diff feature when a PR is rebased  onto a different base/master commit.

Related to [#t-compiler > Experimental range-diff for force-push @ 💬](https://rust-lang.zulipchat.com/#narrow/channel/131828-t-compiler/topic/Experimental.20range-diff.20for.20force-push/near/534649322)

r? Kobzol
@rustbot rustbot added A-meta Area: Issues & PRs about the rust-lang/rust repository itself A-run-make Area: port run-make Makefiles to rmake.rs 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. labels Aug 15, 2025
@rustbot rustbot added T-libs Relevant to the library team, which will review and decide on the PR/issue. rollup A PR which is a rollup labels Aug 15, 2025
@jhpratt
Copy link
Member Author

jhpratt commented Aug 15, 2025

@bors r+ rollup=never p=5

@bors
Copy link
Collaborator

bors commented Aug 15, 2025

📌 Commit cf28e2b has been approved by jhpratt

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

bors commented Aug 15, 2025

⌛ Testing commit cf28e2b with merge 1ae7c49...

@bors
Copy link
Collaborator

bors commented Aug 16, 2025

☀️ Test successful - checks-actions
Approved by: jhpratt
Pushing 1ae7c49 to master...

@bors bors added the merged-by-bors This PR was explicitly merged by bors. label Aug 16, 2025
@bors bors merged commit 1ae7c49 into rust-lang:master Aug 16, 2025
11 checks passed
@rustbot rustbot added this to the 1.91.0 milestone Aug 16, 2025
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 cd7cbe8 (parent) -> 1ae7c49 (this PR)

Test differences

Show 357 test diffs

Stage 1

  • errors::verify_ast_passes_abi_cannot_be_coroutine_61: [missing] -> pass (J0)
  • errors::verify_ast_passes_abi_custom_safe_foreign_function_59: [missing] -> pass (J0)
  • errors::verify_ast_passes_abi_must_not_have_parameters_or_return_type_61: pass -> [missing] (J0)
  • errors::verify_ast_passes_abi_must_not_have_return_type_63: [missing] -> pass (J0)
  • errors::verify_ast_passes_assoc_fn_without_body_10: pass -> [missing] (J0)
  • errors::verify_ast_passes_assoc_type_without_body_11: pass -> [missing] (J0)
  • errors::verify_ast_passes_async_fn_in_const_trait_or_trait_impl_1: [missing] -> pass (J0)
  • errors::verify_ast_passes_auto_items_31: pass -> [missing] (J0)
  • errors::verify_ast_passes_auto_items_32: [missing] -> pass (J0)
  • errors::verify_ast_passes_bad_c_variadic_26: [missing] -> pass (J0)
  • errors::verify_ast_passes_bound_in_context_19: pass -> [missing] (J0)
  • errors::verify_ast_passes_const_and_c_variadic_47: pass -> [missing] (J0)
  • errors::verify_ast_passes_const_and_c_variadic_48: [missing] -> pass (J0)
  • errors::verify_ast_passes_const_and_coroutine_47: [missing] -> pass (J0)
  • errors::verify_ast_passes_const_bound_trait_object_45: pass -> [missing] (J0)
  • errors::verify_ast_passes_constraint_on_negative_bound_53: [missing] -> pass (J0)
  • errors::verify_ast_passes_extern_item_ascii_24: pass -> [missing] (J0)
  • errors::verify_ast_passes_extern_without_abi_58: [missing] -> pass (J0)
  • errors::verify_ast_passes_fieldless_union_42: [missing] -> pass (J0)
  • errors::verify_ast_passes_fn_body_extern_23: [missing] -> pass (J0)
  • errors::verify_ast_passes_fn_param_c_var_args_not_last_5: [missing] -> pass (J0)
  • errors::verify_ast_passes_fn_param_doc_comment_5: pass -> [missing] (J0)
  • errors::verify_ast_passes_fn_param_forbidden_attr_6: pass -> [missing] (J0)
  • errors::verify_ast_passes_fn_param_forbidden_attr_7: [missing] -> pass (J0)
  • errors::verify_ast_passes_fn_param_forbidden_self_8: [missing] -> pass (J0)
  • errors::verify_ast_passes_fn_ptr_invalid_safety_17: pass -> [missing] (J0)
  • errors::verify_ast_passes_fn_ptr_invalid_safety_18: [missing] -> pass (J0)
  • errors::verify_ast_passes_forbidden_bound_1: pass -> [missing] (J0)
  • errors::verify_ast_passes_forbidden_const_param_2: pass -> [missing] (J0)
  • errors::verify_ast_passes_forbidden_default_8: pass -> [missing] (J0)
  • errors::verify_ast_passes_forbidden_default_9: [missing] -> pass (J0)
  • errors::verify_ast_passes_generic_default_trailing_43: pass -> [missing] (J0)
  • errors::verify_ast_passes_generic_default_trailing_44: [missing] -> pass (J0)
  • errors::verify_ast_passes_item_invalid_safety_16: pass -> [missing] (J0)
  • errors::verify_ast_passes_item_invalid_safety_17: [missing] -> pass (J0)
  • errors::verify_ast_passes_item_underscore_26: pass -> [missing] (J0)
  • errors::verify_ast_passes_match_arm_with_no_body_54: pass -> [missing] (J0)
  • errors::verify_ast_passes_match_arm_with_no_body_55: [missing] -> pass (J0)
  • errors::verify_ast_passes_negative_bound_not_supported_52: [missing] -> pass (J0)
  • errors::verify_ast_passes_nested_impl_trait_35: [missing] -> pass (J0)
  • errors::verify_ast_passes_nomangle_ascii_28: [missing] -> pass (J0)
  • errors::verify_ast_passes_obsolete_auto_37: pass -> [missing] (J0)
  • errors::verify_ast_passes_out_of_order_params_37: [missing] -> pass (J0)
  • errors::verify_ast_passes_pattern_in_bodiless_50: [missing] -> pass (J0)
  • errors::verify_ast_passes_pattern_in_fn_pointer_32: pass -> [missing] (J0)
  • errors::verify_ast_passes_pattern_in_fn_pointer_33: [missing] -> pass (J0)
  • errors::verify_ast_passes_precise_capturing_duplicated_56: pass -> [missing] (J0)
  • errors::verify_ast_passes_precise_capturing_duplicated_57: [missing] -> pass (J0)
  • errors::verify_ast_passes_static_without_body_14: [missing] -> pass (J0)
  • errors::verify_ast_passes_trait_object_single_bound_34: [missing] -> pass (J0)
  • errors::verify_ast_passes_ty_alias_without_body_14: pass -> [missing] (J0)
  • errors::verify_ast_passes_ty_alias_without_body_15: [missing] -> pass (J0)
  • errors::verify_ast_passes_unsafe_item_39: pass -> [missing] (J0)
  • errors::verify_ast_passes_unsafe_negative_impl_38: pass -> [missing] (J0)
  • errors::verify_ast_passes_unsafe_negative_impl_39: [missing] -> pass (J0)
  • errors::verify_ast_passes_unsafe_static_18: pass -> [missing] (J0)
  • errors::verify_ast_passes_where_clause_after_type_alias_42: pass -> [missing] (J0)
  • errors::verify_builtin_macros_asm_duplicate_arg_65: pass -> [missing] (J0)
  • errors::verify_builtin_macros_asm_explicit_register_name_61: [missing] -> pass (J0)
  • errors::verify_builtin_macros_asm_mayunwind_69: pass -> [missing] (J0)
  • errors::verify_builtin_macros_asm_modifier_invalid_63: pass -> [missing] (J0)
  • errors::verify_builtin_macros_asm_modifier_invalid_65: [missing] -> pass (J0)
  • errors::verify_builtin_macros_asm_mutually_exclusive_62: [missing] -> pass (J0)
  • errors::verify_builtin_macros_asm_no_matched_argument_name_68: pass -> [missing] (J0)
  • errors::verify_builtin_macros_asm_noreturn_67: pass -> [missing] (J0)
  • errors::verify_builtin_macros_asm_noreturn_69: [missing] -> pass (J0)
  • errors::verify_builtin_macros_asm_opt_already_provided_70: pass -> [missing] (J0)
  • errors::verify_builtin_macros_asm_pos_after_68: [missing] -> pass (J0)
  • errors::verify_builtin_macros_asm_pure_combine_63: [missing] -> pass (J0)
  • errors::verify_builtin_macros_asm_pure_no_output_64: [missing] -> pass (J0)
  • errors::verify_builtin_macros_asm_unsupported_clobber_abi_72: pass -> [missing] (J0)
  • errors::verify_builtin_macros_asm_unsupported_clobber_abi_74: [missing] -> pass (J0)
  • errors::verify_builtin_macros_asm_unsupported_option_73: [missing] -> pass (J0)
  • errors::verify_builtin_macros_cannot_derive_union_47: pass -> [missing] (J0)
  • errors::verify_builtin_macros_cannot_derive_union_49: [missing] -> pass (J0)
  • errors::verify_builtin_macros_cfg_select_unreachable_86: [missing] -> pass (J0)
  • errors::verify_builtin_macros_derive_from_wrong_field_count_47: [missing] -> pass (J0)
  • errors::verify_builtin_macros_env_not_defined_52: [missing] -> pass (J0)
  • errors::verify_builtin_macros_env_not_unicode_53: [missing] -> pass (J0)
  • errors::verify_builtin_macros_expected_other_82: pass -> [missing] (J0)
  • errors::verify_builtin_macros_format_duplicate_arg_53: pass -> [missing] (J0)
  • errors::verify_builtin_macros_format_duplicate_arg_55: [missing] -> pass (J0)
  • errors::verify_builtin_macros_format_positional_after_named_54: pass -> [missing] (J0)
  • errors::verify_builtin_macros_format_positional_after_named_56: [missing] -> pass (J0)
  • errors::verify_builtin_macros_format_requires_string_52: pass -> [missing] (J0)
  • errors::verify_builtin_macros_format_unused_arg_56: pass -> [missing] (J0)
  • errors::verify_builtin_macros_naked_functions_testing_attribute_80: pass -> [missing] (J0)
  • errors::verify_builtin_macros_non_generic_pointee_83: [missing] -> pass (J0)
  • errors::verify_builtin_macros_only_one_argument_76: pass -> [missing] (J0)
  • errors::verify_builtin_macros_proc_macro_attribute_only_usable_with_crate_type_80: [missing] -> pass (J0)
  • errors::verify_builtin_macros_source_uitls_expected_item_79: pass -> [missing] (J0)
  • errors::verify_builtin_macros_takes_no_arguments_79: [missing] -> pass (J0)
  • errors::verify_builtin_macros_test_bad_fn_58: pass -> [missing] (J0)
  • errors::verify_builtin_macros_test_bad_fn_60: [missing] -> pass (J0)
  • errors::verify_builtin_macros_test_case_non_item_59: [missing] -> pass (J0)
  • errors::verify_builtin_macros_test_runner_nargs_76: [missing] -> pass (J0)
  • [crashes] tests/crashes/117629.rs: pass -> [missing] (J3)
  • [ui] tests/ui/deriving/deriving-from.rs: [missing] -> pass (J3)

Stage 2

  • [crashes] tests/crashes/117629.rs: pass -> [missing] (J1)
  • [ui] tests/ui/deriving/deriving-from-wrong-target.rs: [missing] -> pass (J2)

(and 115 additional test diffs)

Additionally, 142 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 1ae7c4907275f10b3db9e886bc8809ec063e45ee --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. aarch64-apple: 6472.0s -> 8799.4s (36.0%)
  2. x86_64-apple-2: 5244.9s -> 7057.3s (34.6%)
  3. dist-apple-various: 7271.1s -> 4840.3s (-33.4%)
  4. pr-check-2: 2265.6s -> 2746.8s (21.2%)
  5. pr-check-1: 1444.1s -> 1725.5s (19.5%)
  6. x86_64-gnu-llvm-19: 2501.9s -> 2931.0s (17.2%)
  7. i686-gnu-2: 5343.3s -> 6237.4s (16.7%)
  8. x86_64-apple-1: 9255.1s -> 7783.1s (-15.9%)
  9. aarch64-gnu-llvm-19-2: 2216.7s -> 2530.7s (14.2%)
  10. aarch64-gnu-llvm-19-1: 3364.5s -> 3779.5s (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

📌 Perf builds for each rolled up PR:

PR# Message Perf Build Sha
#143717 Add Default impls for Pinned Box, Rc, Arc b5b1874fc1862306e8904ea7c40017ea23911715 (link)
#144054 Stabilize as_array_of_cells 749e773a443d366a2ee1d0470c8586e0813fcbac (link)
#144907 fix: Reject async assoc fns of const traits/impls in ast_pa… b9b0b6ab9e0e3c37cace375d14461f3c58162972 (link)
#144922 Implement #[derive(From)] 0664c790550ed09ad98545e8565e76696a9e3532 (link)
#144963 Stabilize core::iter::chain 3fa08148f4fa3ca870388ee1d8bf6462d8ef489c (link)
#145436 fix(tests/rmake/wasm-unexpected-features): change features … 671f8ee38685448705b8514ada3910f63322803b (link)
#145453 Remove duplicated tracing span in bootstrap b930880ba5d1cbb4e82eec8521627d1523509ffc (link)
#145454 Fix tracing debug representation of steps without arguments… fb3f6cddd15f900bb9659f14f0ba900420327c01 (link)
#145455 Do not copy files in copy_src_dirs in dry run 2ce807a0ae6bb19bc7f7e61563c8447f66694f72 (link)
#145462 Stabilize const_exposed_provenance feature 5e3a332a08b778f6f308eb4761a43112c1e69666 (link)
#145466 Enable new [range-diff] feature in triagebot c91f36b8fba5d44a63bee454a4bc077626b087e9 (link)

previous master: cd7cbe818e

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 (1ae7c49): comparison URL.

Overall result: ❌✅ regressions and improvements - 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.2%, 3.0%] 11
Regressions ❌
(secondary)
0.3% [0.2%, 0.6%] 9
Improvements ✅
(primary)
- - 0
Improvements ✅
(secondary)
-0.7% [-1.8%, -0.1%] 6
All ❌✅ (primary) 0.5% [0.2%, 3.0%] 11

Max RSS (memory usage)

Results (primary -0.9%, 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.4% [3.4%, 3.4%] 1
Improvements ✅
(primary)
-0.9% [-0.9%, -0.9%] 1
Improvements ✅
(secondary)
-6.1% [-10.6%, -1.9%] 3
All ❌✅ (primary) -0.9% [-0.9%, -0.9%] 1

Cycles

Results (primary 3.0%, 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)
3.0% [3.0%, 3.0%] 1
Regressions ❌
(secondary)
3.4% [1.9%, 4.9%] 2
Improvements ✅
(primary)
- - 0
Improvements ✅
(secondary)
- - 0
All ❌✅ (primary) 3.0% [3.0%, 3.0%] 1

Binary size

Results (primary 0.6%, secondary -1.5%)

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

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

Bootstrap: 469.562s -> 469.963s (0.09%)
Artifact size: 377.55 MiB -> 377.54 MiB (-0.00%)

@Kobzol
Copy link
Member

Kobzol commented Aug 16, 2025

Noise :(

@rustbot label: +perf-regression-triaged

@rustbot rustbot added the perf-regression-triaged The performance regression has been triaged. label Aug 16, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
A-meta Area: Issues & PRs about the rust-lang/rust repository itself A-run-make Area: port run-make Makefiles to rmake.rs merged-by-bors This PR was explicitly merged by bors. perf-regression Performance regression. perf-regression-triaged The performance regression has been triaged. 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
Development

Successfully merging this pull request may close these issues.