Skip to content

Rollup of 12 pull requests #140581

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 32 commits into from
May 2, 2025
Merged

Rollup of 12 pull requests #140581

merged 32 commits into from
May 2, 2025

Conversation

Zalathar
Copy link
Contributor

@Zalathar Zalathar commented May 2, 2025

Successful merges:

r? @ghost
@rustbot modify labels: rollup

Create a similar rollup

VlaDexa and others added 30 commits February 23, 2025 10:51
…_exit`

Getting the address of `errno` should be just as cheap as `pthread_self()` and avoids having to use the expensive `Mutex` logic because it always results in a pointer.
The Za64rs extension (reservation set -- a primitive memory unit of LR/SC
atomic operations -- is naturally aligned and *at most* 64 bytes) is a
superset of the Za128rs extension (*at most* 128 bytes; note that smaller
the reservation set is, more fine grained control over atomics).

This commit handles this as a feature implication.
This commit adds a part of RISC-V extensions that are mandatory part of
the RVA23U64 profile (application-class processor profile) and related to
memory/atomic constraints.

The Zic64b extension constrains the cache line to naturally-aligned 64 bytes
that would make certain memory operations (like zeroing the memory using
the Zicboz extension) easier.

The Zicbom and Zicbop extensions enable managing cache block-based
operations (the Zicbop contains hints that will work as a NOP when this
extension is absent and the Zicbom contains control instructions).

Of which, the Zicbom extension is going to be discoverable from the Linux
kernel (as of the version 6.15-rc4) and this commit prepares for
corresponding stdarch changes.

The Zicc* extensions add certain constraints to "the main memory" (usually
true on the user mode application on the application-class processor but
those extensions make sure such constraints exist).
This commit adds three ratified unprivileged RISC-V extensions related to
BFloat16 (BF16) handling.

Although that they are far from stabilization due to ABI issues, they are
optional extensions of the RVA23U64 profile (application-class processor
profile) and going to be discoverable from the Linux kernel
(as of version 6.15-rc4).

This commit mainly prepares runtime detection of those extensions.
Because RISC-V Calling Conventions note that:

> This means code targeting the Zfinx extension always uses the ILP32,
> ILP32E or LP64 integer calling-convention only ABIs as there is no
> dedicated hardware floating-point register file.

{ILP32,LP64}[FD] ABIs with hardware floating-point calling conventions
are incompatible with the "Zfinx" extension.

This commit adds "zfinx" to the incompatible feature list to those ABIs
and tests whether trying to add "zdinx" (that is analogous to "zfinx" but
in double-precision) on a LP64D ABI configuration results in an error
(it also tests extension implication; "Zdinx" requires "Zfinx" extension).

Link: RISC-V psABI specification version 1.0
<https://github.com/riscv-non-isa/riscv-elf-psabi-doc/releases/tag/v1.0>
Communicate the safety invariants of these methods with `unsafe fn`
rather than privacy.
Eliminate checks for WTF-8 boundaries in `PathBuf::set_extension` and
`add_extension`, where joining WTF-8 surrogate halves is impossible.
Don't convert the `str` to `OsStr`, because `OsString::push` specializes
to skip the joining when given strings.
We have coverage for `Foo` and `Foo<T>` but not for `Foo<>`. This commit
adds it. Note that the output has bogus syntax: `impl Foo'a, >`
Delegate from `std::env::ArgsOs` to the methods of the inner
platform-specific iterators, when it would be more efficient than just
using the default methods of its own impl. Most platforms use
`vec::IntoIter` as the inner type, so prioritize delegating to the
methods it provides.

`std::env::Args` is implemented atop `std::env::ArgsOs` and performs
UTF-8 validation with a panic for invalid data. This is a visible effect
which users certainly rely on, so we can't skip any arguments. Any
further iterator methods would skip some elements, so no change is
needed for that type.

Add `#[inline]` for any methods which simply wrap the inner iterator.
`Path<>` needs to be distinguished from `Path<T>`. This commit does
that, improving some error messages.
By taking the existing `expanded-exhaustive.rs` test and running it with
both `Zunpretty=expanded` *and* `Zunpretty=hir`.

Also rename some files, and split the asm parts out so they only run on
x86-64.
handle paren in macro expand for let-init-else expr

Fixes rust-lang#131655

This PR modifies the codegen logic of the macro expansion within `let-init-else` expression:
- Before: The expression `let xxx = (mac! {}) else {}` expands to `let xxx = (expanded_ast) else {}`.
- After: The same expression expands to `let xxx = expanded_ast else {}`.

An alternative solution to this issue could involve handling the source code directly when encountering unused parentheses in `let-init-else` expressions. However, this approach might be more cumbersome due to the absence of the necessary data structure.

r? `@petrochenkov`
…ywiser

pretty-print: Print shebang at the top of the output

Shebang should stay at the top of the file, even after pretty-printing.

Closes rust-lang#134643
…inx, r=workingjubilee

rustc_target: RISC-V `Zfinx` is incompatible with `{ILP32,LP64}[FD]` ABIs

Because RISC-V Calling Conventions note that:

> This means code targeting the `Zfinx` extension always uses the ILP32,  ILP32E or LP64 integer calling-convention only ABIs as there is no dedicated hardware floating-point register file.

`{ILP32,LP64}[FD]` ABIs with hardware floating-point calling conventions are incompatible with the `Zfinx` extension.

This commit adds `"zfinx"` to the incompatible feature list to those ABIs and tests whether trying to add `"zdinx"` (that is analogous to `"zfinx"` but in double-precision) on a LP64D ABI configuration results in an error (it also tests extension implication; `Zdinx` requires `Zfinx` extension).

Links: RISC-V psABI specification version 1.0
<https://github.com/riscv-non-isa/riscv-elf-psabi-doc/blob/v1.0/riscv-cc.adoc#named-abis>
<https://github.com/riscv-non-isa/riscv-elf-psabi-doc/releases/tag/v1.0>
…=lcnr

Improve `Lifetime::suggestion`

r? ``@lcnr``
…heemdev

std: use the address of `errno` to identify threads in `unique_thread_exit`

Getting the address of `errno` should be just as cheap as `pthread_self()` and avoids having to use the expensive `Mutex` logic because it always results in a pointer.
…s, r=ibraheemdev

Clarify `async` block behaviour

Adds some documentation for control flow behaviour pertaining to `return` and `?` within `async` blocks. Fixes (or at least improves) rust-lang#101444.

r? rust-lang/docs
…workingjubilee

Delegate to inner `vec::IntoIter` from `env::ArgsOs`

Delegate from `std::env::ArgsOs` to the methods of the inner platform-specific iterators, when it would be more efficient than just using the default methods of its own impl. Most platforms use `vec::IntoIter` as the inner type, so prioritize delegating to the methods it provides.

`std::env::Args` is implemented atop `std::env::ArgsOs` and performs UTF-8 validation with a panic for invalid data. This is a visible effect which users certainly rely on, so we can't skip any arguments. Any further iterator methods would skip some elements, so no change is needed for that type.

Add `#[inline]` for any methods which simply wrap the inner iterator.
…orkingjubilee

Avoid redundant WTF-8 checks in `PathBuf`

Eliminate checks for WTF-8 boundaries in `PathBuf::set_extension` and `add_extension`, where joining WTF-8 surrogate halves is impossible. Don't convert the `str` to `OsStr`, because `OsString::push` specializes to skip the joining when given strings.

To assist in this, mark the internal methods `OsString::truncate` and `extend_from_slice` as `unsafe` to communicate their safety invariants better than with module privacy.

Similar to rust-lang#137777.

cc `@joboet` `@ChrisDenton`
Document breaking out of a named code block

Closes rust-lang#110758.
Remove `avx512dq` and `avx512vl` implication for `avx512fp16`

According to Intel, `avx512fp16` requires only `avx512bw`, but LLVM also enables `avx512vl` and `avx512dq` when `avx512fp16` is active. This is relic code, and will be fixed in LLVM soon. We should remove this from Rust too asap, especially before the stabilization of AVX512

Related:
 - llvm/llvm-project#136209
 - rust-lang#138940
 - rust-lang/stdarch#1781
 - rust-lang#111137

``@rustbot`` label O-x86_64 O-x86_32 A-SIMD A-target-feature T-compiler -T-libs
r? ``@Amanieu``

**Update: the LLVM fix has been merged**

cc ``@rust-lang/wg-llvm`` will it be possible to update the rustc llvm version to something after llvm/llvm-project#137450
Zalathar added 2 commits May 2, 2025 22:17
Improve test coverage of HIR pretty printing.

Details in individual commits.

r? `@dtolnay`

try-job: test-various
…3, r=Amanieu

rustc_target: RISC-V: feature addition batch 3

This is the last batch (3 of 3) for RISC-V feature enhancements intended for the version 1.88 cycle.

The author's primary criteria are:

1.  The extension is ratified and unprivileged one.
2.  The extension is in the RVA23U64 profile (to be a baseline of the application-class RISC-V software ecosystem in the near future), either mandatory or optional.
3.  Either:
    1.  To be discoverable through a `riscv_hwprobe` system call on (currently unreleased) Linux 6.15 (as of rc4) or
    2.  Helps memory/atomics-related operations more efficient and/or more robust.

This is based on the specifications:

*   [The latest ratified ISA Manuals (version 20240411)](https://lf-riscv.atlassian.net/wiki/spaces/HOME/pages/16154769/RISC-V+Technical+Specifications)
*   [RVA23/RVB23 profiles](https://github.com/riscv/riscv-profiles/releases/tag/rva23-rvb23-ratified)
*   [RISC-V BF16 extensions](https://github.com/riscv/riscv-bfloat16/releases/tag/v183a3dac863d7c18187a739eb52b0c8f0d16854d)

LLVM Definitions:

*   [`Zicbop`](https://github.com/llvm/llvm-project/blob/llvmorg-19.1.0/llvm/lib/Target/RISCV/RISCVFeatures.td#L82-87)
*   [`Zicbom`](https://github.com/llvm/llvm-project/blob/llvmorg-19.1.0/llvm/lib/Target/RISCV/RISCVFeatures.td#L75-L80)
*   [`Zic64b`](https://github.com/llvm/llvm-project/blob/llvmorg-19.1.0/llvm/lib/Target/RISCV/RISCVFeatures.td#L71-L73)
*   [`Ziccamoa`](https://github.com/llvm/llvm-project/blob/llvmorg-19.1.0/llvm/lib/Target/RISCV/RISCVFeatures.td#L97-L99)
*   [`Ziccif`](https://github.com/llvm/llvm-project/blob/llvmorg-19.1.0/llvm/lib/Target/RISCV/RISCVFeatures.td#L101-L103)
*   [`Zicclsm`](https://github.com/llvm/llvm-project/blob/llvmorg-19.1.0/llvm/lib/Target/RISCV/RISCVFeatures.td#L105-L107)
*   [`Ziccrse`](https://github.com/llvm/llvm-project/blob/llvmorg-19.1.0/llvm/lib/Target/RISCV/RISCVFeatures.td#L109-L111)
*   [`Zfbfmin`](https://github.com/llvm/llvm-project/blob/llvmorg-19.1.0/llvm/lib/Target/RISCV/RISCVFeatures.td#L320-L325)
*   [`Zvfbfmin`](https://github.com/llvm/llvm-project/blob/llvmorg-19.1.0/llvm/lib/Target/RISCV/RISCVFeatures.td#L697-L702)
*   [`Zvfbfwma`](https://github.com/llvm/llvm-project/blob/llvmorg-19.1.0/llvm/lib/Target/RISCV/RISCVFeatures.td#L704-L710)

The `Zicbop` extension (mandatory in RVA23U64) adds prefetch hints to prepare for subsequent memory operations (will be executed as no-op if the hardware does not support this extension).

The `Zicbom` extension (mandatory in RVA23U64) adds cache block-management instructions.  The author did not include this in the batch 2 (because of limited use cases compared to the `Zicboz` extension) but added because it will be discoverable from Linux (as of version 6.15-rc4).  Along with `Zicbop`, Rust now supports all CMO extensions.

The `Zic64b` extension (mandatory in RVA23U64) constraints the cache block to be naturally-aligned and exactly 64 bytes.  Along with CMO instructions, it can improve efficiency handling with memory (e.g. efficient memory zeroing using `Zicboz` + `Zic64b`).

The `Zicc*` extensions (mandatory in RVA23U64) add constraints to the main memory properties.  They are normally satisfied in the application environment with regular OSes but profiles like RVA23U64 ensures such properties are satisfied (through those *constraint* extensions).

The `Zfbf*` and `Zvfbf*` extensions (optional in RVA23U64) add instructions to handle BF16 (BFloat16) data.  Although stabilization of FP-related extensions are relatively far due to ABI-related issues, they are included in this batch because they will be discoverable from Linux (as of version 6.15-rc4).

The author also adds the extension implication: `Za64rs` → `Za128rs` (superset) which the author missed to include in rust-lang#140139.
@rustbot rustbot added O-unix Operating system: Unix-like S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. 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 May 2, 2025
@Zalathar
Copy link
Contributor Author

Zalathar commented May 2, 2025

@bors r+ rollup=never p=5

@bors
Copy link
Collaborator

bors commented May 2, 2025

📌 Commit 19c9b76 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 May 2, 2025
@bors
Copy link
Collaborator

bors commented May 2, 2025

⌛ Testing commit 19c9b76 with merge 7c96085b64580af5c5f619384f0e3f082138ff13...

@bors
Copy link
Collaborator

bors commented May 2, 2025

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

@bors bors added the merged-by-bors This PR was explicitly merged by bors. label May 2, 2025
@bors bors merged commit 7c96085 into rust-lang:master May 2, 2025
7 checks passed
@rustbot rustbot added this to the 1.88.0 milestone May 2, 2025
Copy link

github-actions bot commented May 2, 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 f97b3c6 (parent) -> 7c96085 (this PR)

Test differences

Show 33647 test diffs

Stage 1

  • ascii::is_ascii::unaligned_head_medium::case02_align_to: [missing] -> pass (J0)
  • ascii::long::is_ascii_uppercase: [missing] -> pass (J0)
  • hash::sip::bench_bytes_7: [missing] -> pass (J0)
  • num::bench_i8_from_str_radix_10: [missing] -> pass (J0)
  • collections::btree::map::tests::test_iter_rev: [missing] -> pass (J1)
  • collections::vec_deque::tests::test_vec_from_vecdeque: [missing] -> pass (J1)
  • io::borrowed_buf::cursor_set_init: [missing] -> pass (J1)
  • io::stdio::tests::panic_doesnt_poison: [missing] -> pass (J1)
  • iter::adapters::chain::test_iterator_chain_count: [missing] -> pass (J1)
  • iter::adapters::peekable::test_peekable_non_fused: [missing] -> pass (J1)
  • iter::adapters::skip::test_skip_advance_by: [missing] -> pass (J1)
  • iter::adapters::zip::test_zip_next_back_side_effects: [missing] -> pass (J1)
  • misc_tests::i64_slice: [missing] -> pass (J1)
  • mpsc::smoke_chan_gone: [missing] -> pass (J1)
  • mutex::test_into_inner_poison: [missing] -> pass (J1)
  • net::socket_addr::set_port: [missing] -> pass (J1)
  • num::i32::test_carrying_add: [missing] -> pass (J1)
  • num::i64::test_unbounded_shl: [missing] -> pass (J1)
  • num::test_try_u8u16: [missing] -> pass (J1)
  • num::u128::test_isolate_most_significant_one: [missing] -> pass (J1)
  • os::unix::io::tests::test_raw_fd_layout: [missing] -> pass (J1)
  • result::result_opt_conversions: [missing] -> pass (J1)
  • sort::tests::stable::correct_cell_i32_random_z1: [missing] -> pass (J1)
  • sort::tests::unstable::int_edge: [missing] -> pass (J1)
  • str::slice_index::overflow::rangetoinclusive::pass: [missing] -> pass (J1)
  • sync::test_new_weak: [missing] -> pass (J1)
  • vec::extract_if_false: [missing] -> pass (J1)
  • errors::verify_codegen_ssa_cgu_not_recorded_2: [missing] -> pass (J2)
  • errors::verify_codegen_ssa_rlib_only_rmeta_found_41: [missing] -> pass (J2)
  • errors::verify_metadata_global_alloc_required_50: [missing] -> pass (J2)
  • errors::verify_metadata_link_modifiers_form_11: [missing] -> pass (J2)
  • errors::verify_parse_missing_expression_in_for_loop_22: [missing] -> pass (J2)
  • errors::verify_passes_unknown_feature_158: [missing] -> pass (J2)
  • errors::verify_resolve_binding_in_never_pattern_14: [missing] -> pass (J2)
  • interval::tests::insert: [missing] -> pass (J2)
  • parser::tests::crlf_doc_comments: [missing] -> pass (J2)
  • session_diagnostics::verify_attr_parsing_incorrect_repr_format_expect_literal_integer_16: [missing] -> pass (J2)
  • spec::tests::i686_linux_android: [missing] -> pass (J2)
  • sort::tests::stable::self_cmp_i32_ascending: [missing] -> ignore (J3)
  • sort::tests::stable::stability_i32_descending: [missing] -> ignore (J3)
  • sort::tests::unstable::correct_i32_saw_mixed_range: [missing] -> ignore (J3)
  • sort::tests::unstable::violate_ord_retain_orig_set_cell_i32_random_d2: [missing] -> ignore (J3)
  • sys::pal::unix::linux::pidfd::tests::test_pidfd: [missing] -> pass (J4)

Stage 2

  • ascii::is_ascii::unaligned_head_medium::case00_libcore: pass -> [missing] (J0)
  • ascii::medium::case06_libcore: pass -> [missing] (J0)
  • f16::test_trunc: pass -> [missing] (J0)
  • iter::bench_filter_map_chain_ref_sum: pass -> [missing] (J0)
  • net::addr_parser::bench_parse_ipaddr_v6_compress: pass -> [missing] (J0)
  • os::unix::net::tests::timeouts: pass -> [missing] (J0)
  • slice::swap_with_slice_4x_usize_3000: pass -> [missing] (J0)
  • sort::tests::stable::self_cmp_i32_random_s95: pass -> [missing] (J0)
  • sort::tests::unstable::deterministic_string_descending: pass -> [missing] (J0)
  • str::find_zzz_char::long_lorem_ipsum: pass -> [missing] (J0)
  • tests::exclude_should_panic_option: pass -> [missing] (J0)
  • vec::bench_from_slice_0000: pass -> [missing] (J0)
  • ascii::test_is_ascii: pass -> [missing] (J1)
  • atomic::int_and: pass -> [missing] (J1)
  • clone::test_clone_to_uninit_cstr: pass -> [missing] (J1)
  • collections::binary_heap::test_into_iter_sorted_collect: pass -> [missing] (J1)
  • collections::btree::map::tests::test_extract_if::empty: pass -> [missing] (J1)
  • collections::btree::map::tests::test_split_off_empty_right: pass -> [missing] (J1)
  • collections::linked_list::tests::test_append: pass -> [missing] (J1)
  • collections::vec_deque::tests::test_rotate_right_panic: pass -> [missing] (J1)
  • fmt::builders::debug_list::test_nested_non_exhaustive: pass -> [missing] (J1)
  • iter::adapters::step_by::test_step_by_skip: pass -> [missing] (J1)
  • mpmc::drop_full: pass -> [missing] (J1)
  • mpmc::issue_32114: pass -> [missing] (J1)
  • mpmc::shared_chan_stress: pass -> [missing] (J1)
  • mpmc::smoke_threads: pass -> [missing] (J1)
  • num::dec2flt::parse::missing_pieces: pass -> [missing] (J1)
  • ops::test_bound_cloned_excluded: pass -> [missing] (J1)
  • option::as_slice: pass -> [missing] (J1)
  • rc::test_rc_cyclic_with_zero_refs: pass -> [missing] (J1)
  • slice::test_align_to_zst: pass -> [missing] (J1)
  • slice::test_overflow_does_not_cause_segfault: pass -> [missing] (J1)
  • str::slice_index::range_len_len::index_fail: pass -> [missing] (J1)
  • string::test_reserve_exact: pass -> [missing] (J1)
  • thread::tests::test_thread_id_not_equal: pass -> [missing] (J1)
  • vec::zero_sized_values: pass -> [missing] (J1)
  • errors::verify_builtin_macros_expected_comma_in_list_87: pass -> [missing] (J2)
  • errors::verify_const_eval_unallowed_op_in_const_context_20: pass -> [missing] (J2)
  • errors::verify_mir_build_non_const_path_2: pass -> [missing] (J2)
  • errors::verify_passes_deprecated_92: pass -> [missing] (J2)
  • errors::verify_passes_unused_var_assigned_only_167: pass -> [missing] (J2)
  • errors::verify_pattern_analysis_excluside_range_missing_max_0: pass -> [missing] (J2)
  • graph::scc::tests::test_bug_max_leak: pass -> [missing] (J2)
  • json::tests::span_after_crlf: pass -> [missing] (J2)
  • lints::verify_lint_builtin_anonymous_params_25: pass -> [missing] (J2)
  • lints::verify_lint_missing_fragment_specifier_118: pass -> [missing] (J2)
  • lints::verify_lint_suspicious_double_ref_clone_80: pass -> [missing] (J2)
  • spec::tests::aarch64_apple_tvos: pass -> [missing] (J2)
  • spec::tests::riscv32imafc_unknown_none_elf: pass -> [missing] (J2)
  • tests::format_position: pass -> [missing] (J2)
  • tests::single_edge_with_style: pass -> [missing] (J2)
  • sort::tests::stable::correct_cell_i32_ascending: ignore -> [missing] (J3)
  • sort::tests::stable::self_cmp_i32_saw_mixed: ignore -> [missing] (J3)
  • sort::tests::stable::stability_string_random_d2: ignore -> [missing] (J3)
  • sort::tests::unstable::correct_u64_random_d20: ignore -> [missing] (J3)
  • sort::tests::unstable::stability_string_random: ignore -> [missing] (J3)
  • vec_deque::test_try_reserve_exact: ignore -> [missing] (J3)

(and 16470 additional test diffs)

Additionally, 17077 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 7c96085b64580af5c5f619384f0e3f082138ff13 --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-apple-2: 1175.6s -> 5171.2s (339.9%)
  2. test-various: 2278.5s -> 4339.6s (90.5%)
  3. dist-x86_64-apple: 8029.7s -> 12396.4s (54.4%)
  4. x86_64-apple-1: 5292.3s -> 7451.5s (40.8%)
  5. x86_64-gnu-aux: 4411.7s -> 6071.7s (37.6%)
  6. aarch64-apple: 3056.0s -> 4197.6s (37.4%)
  7. dist-aarch64-linux: 5501.3s -> 6175.5s (12.3%)
  8. dist-ohos: 10621.3s -> 11742.1s (10.6%)
  9. x86_64-gnu: 6509.9s -> 7095.0s (9.0%)
  10. dist-powerpc64le-linux: 10488.9s -> 9587.9s (-8.6%)
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
#134034 handle paren in macro expand for let-init-else expr 701eb88e95af6951d11a346290224d01d4638fd2 (link)
#137474 pretty-print: Print shebang at the top of the output 35cb3ee5886fd183631b3424466cf9a72745632c (link)
#138872 rustc_target: RISC-V Zfinx is incompatible with `{ILP32,L… 0239fa474a5c4f7901ef9b25d5b500a426091dcf (link)
#139046 Improve Lifetime::suggestion 3417a4a3a8a8b0e4807f99eb6f1b2685081985ce (link)
#139206 std: use the address of errno to identify threads in `uni… 0fea67969438be0708fbcc01ecb057fbcb6eb429 (link)
#139608 Clarify async block behaviour d6bd9250ef0d735c124c2db7d6c4b44912b5db82 (link)
#139847 Delegate to inner vec::IntoIter from env::ArgsOs e13dfe30ae3b11831b222a5608d9e90383d9441b (link)
#140159 Avoid redundant WTF-8 checks in PathBuf c34bd5259181b9bef57770747f3281fc57e02200 (link)
#140197 Document breaking out of a named code block 17cdd79ae341077eb5430876b892a1bdb83fa760 (link)
#140389 Remove avx512dq and avx512vl implication for `avx512fp1… 208f75d7888dfdf4f950ae3c1439d3b0e9fc8520 (link)
#140430 Improve test coverage of HIR pretty printing. 0b4db65ab3d8a6041ad229f4e226f0caaa390e44 (link)
#140507 rustc_target: RISC-V: feature addition batch 3 67e66250a88612fc860d3f28cb7309454c2ca055 (link)

previous master: f97b3c6044

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 (7c96085): 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

This is the most reliable metric that we have; it was used to determine the overall result at the top of this comment. However, even this metric can sometimes exhibit noise.

mean range count
Regressions ❌
(primary)
1.6% [0.3%, 2.9%] 2
Regressions ❌
(secondary)
0.4% [0.4%, 0.4%] 1
Improvements ✅
(primary)
-0.3% [-0.3%, -0.3%] 1
Improvements ✅
(secondary)
- - 0
All ❌✅ (primary) 1.0% [-0.3%, 2.9%] 3

Max RSS (memory usage)

Results (primary 0.7%, secondary 0.7%)

This is a less reliable metric that may be of interest but was not used to determine the overall result at the top of this comment.

mean range count
Regressions ❌
(primary)
0.9% [0.4%, 3.2%] 52
Regressions ❌
(secondary)
2.9% [1.3%, 4.2%] 7
Improvements ✅
(primary)
-1.5% [-3.3%, -0.5%] 6
Improvements ✅
(secondary)
-2.2% [-2.8%, -2.0%] 5
All ❌✅ (primary) 0.7% [-3.3%, 3.2%] 58

Cycles

Results (primary 0.5%)

This is a less reliable metric that may be of interest but was not used to determine the overall result at the top of this comment.

mean range count
Regressions ❌
(primary)
0.7% [0.4%, 3.1%] 17
Regressions ❌
(secondary)
- - 0
Improvements ✅
(primary)
-0.4% [-0.5%, -0.4%] 3
Improvements ✅
(secondary)
- - 0
All ❌✅ (primary) 0.5% [-0.5%, 3.1%] 20

Binary size

Results (primary 0.0%, secondary -0.1%)

This is a less reliable metric that may be of interest but was not used to determine the overall result at the top of this comment.

mean range count
Regressions ❌
(primary)
0.1% [0.0%, 1.1%] 12
Regressions ❌
(secondary)
- - 0
Improvements ✅
(primary)
-0.1% [-0.1%, -0.0%] 7
Improvements ✅
(secondary)
-0.1% [-0.1%, -0.1%] 38
All ❌✅ (primary) 0.0% [-0.1%, 1.1%] 19

Bootstrap: 766.288s -> 769.081s (0.36%)
Artifact size: 365.55 MiB -> 365.55 MiB (-0.00%)

@rustbot rustbot added the perf-regression Performance regression. label May 2, 2025
@Zalathar Zalathar deleted the rollup-ig2jb9v branch May 3, 2025 01:01
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
merged-by-bors This PR was explicitly merged by bors. O-unix Operating system: Unix-like 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-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.