@rustbot
gained the ability to handle concerns on MCPs/issues:
@rustbot {concern,resolve} my-concern-title
to add or resolve a concern#[export_visibility = ...]
attribute" compiler-team#881 (Zulip)-C hint-mostly-unused
option" compiler-team#829 (Zulip) (last review activity: about 2 days ago)target_env = "macabi"
and target_env = "sim"
" rust#139451x86_64-unknown-linux-gnu
stable" rust#140525ast::ptr::P
" compiler-team#878 (Zulip)unknown_or_malformed_diagnostic_attributes
lint" rust#140717--print host-tuple
to print host target tuple" rust#125579multivalue
, reference-types
, and tail-call
target features" rust#131080#[no_mangle]
and #[export_name]
" rust#131558-Zdwarf-version
as -Cdwarf-version
" rust#136926ShouldPanic::YesWithMessage
's TrFailedMsg
" rust#136160impossible_predicates
" rust#136988i128
and u128
from improper_ctypes_definitions
" rust#137306sha512
, sm3
and sm4
for x86" rust#140767T-compiler beta / T-compiler stable
… avoid Rust 1.88 being the only release where a "Rust" ABI function with a by-value SIMD vector on an i686 target modified to disable SSE causes a hard error
(not a configuration we intend to support, but it wasn't really meant to hard-error quite so quickly)
T-compiler
this time.T-types
this time.T-types
this time.x86_64-unknown-linux-gnu
stable" rust#140525
P-critical
issues for T-types
this time.P-high
beta regressions this time.Unassigned P-high nightly regressions
P-high
nightly regressions this time.A fairly busy week, with lots of changes to performance. Most of the changes
(at least in quantity of benchmarks) are attributable to an update of our PGO
collection to newer benchmarks as part of the 2025 refresh.
Triage done by @simulacrum.
Revision range: 2805e1dc..2fc3deed
Summary:
(instructions:u) | mean | range | count |
---|---|---|---|
Regressions (primary) | 0.7% | [0.1%, 6.7%] | 56 |
Regressions (secondary) | 0.6% | [0.1%, 1.3%] | 69 |
Improvements (primary) | -1.2% | [-8.9%, -0.1%] | 133 |
Improvements (secondary) | -2.7% | [-20.2%, -0.1%] | 115 |
All (primary) | -0.6% | [-8.9%, 6.7%] | 189 |
2 Regressions, 6 Improvements, 13 Mixed; 9 of them in rollups
40 artifact comparisons made in total
Add some track_caller info to precondition panics #129658 (Comparison Link)
(instructions:u) | mean | range | count |
---|---|---|---|
Regressions (primary) | 1.0% | [0.1%, 6.2%] | 14 |
Regressions (secondary) | 0.8% | [0.4%, 1.2%] | 4 |
Improvements (primary) | -0.5% | [-0.5%, -0.5%] | 1 |
Improvements (secondary) | - | - | 0 |
All (primary) | 0.9% | [-0.5%, 6.2%] | 15 |
Expected regressions to performance for better user experience. No further follow-up warranted.
Rollup of 8 pull requests #141753 (Comparison Link)
(instructions:u) | mean | range | count |
---|---|---|---|
Regressions (primary) | 0.4% | [0.1%, 1.4%] | 78 |
Regressions (secondary) | 0.3% | [0.1%, 0.6%] | 46 |
Improvements (primary) | - | - | 0 |
Improvements (secondary) | -0.2% | [-0.3%, -0.1%] | 3 |
All (primary) | 0.4% | [0.1%, 1.4%] | 78 |
#141407 seems to be the
primary cause of the impact. This is (in part) a correctness fix so marking the
regression as triaged.
Rollup of 8 pull requests #141662 (Comparison Link)
(instructions:u) | mean | range | count |
---|---|---|---|
Regressions (primary) | - | - | 0 |
Regressions (secondary) | - | - | 0 |
Improvements (primary) | - | - | 0 |
Improvements (secondary) | -1.3% | [-4.3%, -0.0%] | 56 |
All (primary) | - | - | 0 |
Unclear cause. Probably not worth digging deeper as solely improvements and only in secondary benchmarks.
Rollup of 8 pull requests #141668 (Comparison Link)
(instructions:u) | mean | range | count |
---|---|---|---|
Regressions (primary) | - | - | 0 |
Regressions (secondary) | 0.1% | [0.1%, 0.1%] | 2 |
Improvements (primary) | -0.2% | [-0.2%, -0.1%] | 34 |
Improvements (secondary) | -0.2% | [-0.3%, -0.0%] | 19 |
All (primary) | -0.2% | [-0.2%, -0.1%] | 34 |
Unclear cause. Probably not worth digging deeper as solely improvements and only in secondary benchmarks.
Started a PR build to check one potential root cause.
rustdoc: cleanups relating to allocations #141573 (Comparison Link)
(instructions:u) | mean | range | count |
---|---|---|---|
Regressions (primary) | - | - | 0 |
Regressions (secondary) | - | - | 0 |
Improvements (primary) | -0.4% | [-0.6%, -0.2%] | 8 |
Improvements (secondary) | -0.6% | [-0.6%, -0.6%] | 1 |
All (primary) | -0.4% | [-0.6%, -0.2%] | 8 |
Add fast path for maybe-initializedness in liveness #141667 (Comparison Link)
(instructions:u) | mean | range | count |
---|---|---|---|
Regressions (primary) | - | - | 0 |
Regressions (secondary) | 0.5% | [0.5%, 0.5%] | 1 |
Improvements (primary) | -1.0% | [-10.6%, -0.2%] | 67 |
Improvements (secondary) | -0.5% | [-1.2%, -0.2%] | 59 |
All (primary) | -1.0% | [-10.6%, -0.2%] | 67 |
cstore: Use IndexSet as backing store for postorder dependencies #141730 (Comparison Link)
(instructions:u) | mean | range | count |
---|---|---|---|
Regressions (primary) | - | - | 0 |
Regressions (secondary) | - | - | 0 |
Improvements (primary) | - | - | 0 |
Improvements (secondary) | -2.3% | [-5.2%, -0.4%] | 11 |
All (primary) | - | - | 0 |
Tweak fast path trait handling #141731 (Comparison Link)
(instructions:u) | mean | range | count |
---|---|---|---|
Regressions (primary) | - | - | 0 |
Regressions (secondary) | - | - | 0 |
Improvements (primary) | - | - | 0 |
Improvements (secondary) | -1.0% | [-2.4%, -0.2%] | 10 |
All (primary) | - | - | 0 |
add additional TypeFlags
fast paths #141581 (Comparison Link)
(instructions:u) | mean | range | count |
---|---|---|---|
Regressions (primary) | 0.1% | [0.1%, 0.2%] | 8 |
Regressions (secondary) | 0.3% | [0.2%, 0.5%] | 20 |
Improvements (primary) | -0.3% | [-0.4%, -0.3%] | 5 |
Improvements (secondary) | -2.5% | [-5.7%, -0.2%] | 10 |
All (primary) | -0.0% | [-0.4%, 0.2%] | 13 |
Mostly no significant delta (averaging out to 0% change) but worth it in more pathological cases, so makes sense to land the change.
Rollup of 16 pull requests #141716 (Comparison Link)
(instructions:u) | mean | range | count |
---|---|---|---|
Regressions (primary) | 0.2% | [0.2%, 0.2%] | 3 |
Regressions (secondary) | 0.3% | [0.3%, 0.3%] | 1 |
Improvements (primary) | - | - | 0 |
Improvements (secondary) | -0.1% | [-0.1%, -0.1%] | 1 |
All (primary) | 0.2% | [0.2%, 0.2%] | 3 |
Correctness fix in wfcheck (#136429). No further investigation needed.
Bump rustc-perf and update PGO crates #141490 (Comparison Link)
(instructions:u) | mean | range | count |
---|---|---|---|
Regressions (primary) | 0.3% | [0.1%, 2.0%] | 46 |
Regressions (secondary) | 0.7% | [0.1%, 3.2%] | 110 |
Improvements (primary) | -0.4% | [-0.9%, -0.1%] | 72 |
Improvements (secondary) | -0.9% | [-4.8%, -0.2%] | 62 |
All (primary) | -0.1% | [-0.9%, 2.0%] | 118 |
Broad changes due to many benchmark crates getting updated, no particular outcome expected.
Rollup of 11 pull requests #141739 (Comparison Link)
(instructions:u) | mean | range | count |
---|---|---|---|
Regressions (primary) | 0.1% | [0.1%, 0.1%] | 4 |
Regressions (secondary) | 0.5% | [0.4%, 0.6%] | 2 |
Improvements (primary) | - | - | 0 |
Improvements (secondary) | -0.4% | [-0.5%, -0.4%] | 2 |
All (primary) | 0.1% | [0.1%, 0.1%] | 4 |
Nothing obvious in one cachegrind diff, not worth digging deeper.
Make some assertions in solver into debug assertions #141651 (Comparison Link)
(instructions:u) | mean | range | count |
---|---|---|---|
Regressions (primary) | - | - | 0 |
Regressions (secondary) | 0.4% | [0.3%, 0.5%] | 2 |
Improvements (primary) | -0.1% | [-0.1%, -0.1%] | 2 |
Improvements (secondary) | -0.8% | [-1.1%, -0.2%] | 11 |
All (primary) | -0.1% | [-0.1%, -0.1%] | 2 |
Rollup of 5 pull requests #141765 (Comparison Link)
(instructions:u) | mean | range | count |
---|---|---|---|
Regressions (primary) | 0.3% | [0.3%, 0.3%] | 6 |
Regressions (secondary) | - | - | 0 |
Improvements (primary) | - | - | 0 |
Improvements (secondary) | -0.4% | [-0.4%, -0.4%] | 1 |
All (primary) | 0.3% | [0.3%, 0.3%] | 6 |
rustc_codegen_llvm: use threadlocal.address
intrinsic to access TLS #139385 (Comparison Link)
(instructions:u) | mean | range | count |
---|---|---|---|
Regressions (primary) | - | - | 0 |
Regressions (secondary) | 0.3% | [0.3%, 0.3%] | 1 |
Improvements (primary) | -0.7% | [-2.0%, -0.2%] | 22 |
Improvements (secondary) | -1.4% | [-1.5%, -1.4%] | 3 |
All (primary) | -0.7% | [-2.0%, -0.2%] | 22 |
Expected speed up to thread local access.
Rollup of 8 pull requests #141791 (Comparison Link)
(instructions:u) | mean | range | count |
---|---|---|---|
Regressions (primary) | 2.9% | [2.9%, 2.9%] | 1 |
Regressions (secondary) | 0.3% | [0.3%, 0.3%] | 1 |
Improvements (primary) | -1.6% | [-1.6%, -1.6%] | 1 |
Improvements (secondary) | -0.4% | [-0.4%, -0.3%] | 2 |
All (primary) | 0.7% | [-1.6%, 2.9%] | 2 |
https://github.com/rust-lang/rust/pull/141765#issuecomment-2930545642
Revert "increase perf of charsearcher for single ascii characters" #141678 (Comparison Link)
(instructions:u) | mean | range | count |
---|---|---|---|
Regressions (primary) | 1.9% | [1.6%, 2.2%] | 2 |
Regressions (secondary) | - | - | 0 |
Improvements (primary) | -1.4% | [-7.3%, -0.2%] | 36 |
Improvements (secondary) | -1.6% | [-4.2%, -0.3%] | 25 |
All (primary) | -1.2% | [-7.3%, 2.2%] | 38 |
This fixes a perf regression from a previous week.
PGO new solver #141453 (Comparison Link)
(instructions:u) | mean | range | count |
---|---|---|---|
Regressions (primary) | 0.3% | [0.2%, 0.4%] | 10 |
Regressions (secondary) | 0.2% | [0.2%, 0.3%] | 6 |
Improvements (primary) | -0.2% | [-0.2%, -0.2%] | 1 |
Improvements (secondary) | -8.1% | [-15.0%, -3.3%] | 14 |
All (primary) | 0.3% | [-0.2%, 0.4%] | 11 |
Expected improvements primarily to new solver benchmarks as we now collect PGO
data. Some regressions are expected due to less precise PGO data for old solver
patterns.
slice.get(i)
should use a slice projection in MIR, like slice[i]
does #139118 (Comparison Link)
(instructions:u) | mean | range | count |
---|---|---|---|
Regressions (primary) | - | - | 0 |
Regressions (secondary) | 0.3% | [0.2%, 0.4%] | 3 |
Improvements (primary) | -1.2% | [-1.3%, -1.1%] | 2 |
Improvements (secondary) | - | - | 0 |
All (primary) | -1.2% | [-1.3%, -1.1%] | 2 |
Within noise threshold for (new) regressed benchmark, otherwise see #139118 (comment).
Merge coroutine obligation checking into borrowck parallel loop #141773 (Comparison Link)
(instructions:u) | mean | range | count |
---|---|---|---|
Regressions (primary) | - | - | 0 |
Regressions (secondary) | 0.4% | [0.3%, 0.5%] | 2 |
Improvements (primary) | -2.9% | [-2.9%, -2.9%] | 1 |
Improvements (secondary) | - | - | 0 |
All (primary) | -2.9% | [-2.9%, -2.9%] | 1 |
Not really measurable on (at least) perf, new -Zthreads=4 benchmark doesn't see
any meaningful improvement from this.
PostBorrowckAnalysis
for old solver" rust#135899 (last review activity: 2 months ago)
#[loop_match]
for improved DFA codegen" rust#138780 (last review activity: about 59 days ago)
Next meetings' agenda draft: hackmd link