T-compiler Meeting Agenda 2024-10-24
Announcements
- Reminder: if you see a PR/issue that seems like there might be legal implications due to copyright/IP/etc, please let us know (or at least message @davidtwco or @Wesley Wiser so we can pass it along).
Other WG meetings
- (TIP) get them from https://github.com/rust-lang/calendar
MCPs/FCPs
- New MCPs (take a look, see if you like them!)
- “Create an avr-unknown-unknown target” compiler-team#800 (Zulip)
- Old MCPs (stale MCP might be closed as per MCP procedure)
- None at this time
- Old MCPs (not seconded, take a look)
- “Add hygiene attributes to compile expanded source code” compiler-team#692 (Zulip) (last review activity: about 34 days ago)
- “Add Hotpatch flag” compiler-team#745 (Zulip) (last review activity: about 12 days ago)
- “Add
evex512
target feature for AVX10” compiler-team#778 (Zulip) (last review activity: about 47 days ago) - “Make the test cfg a userspace check-cfg” compiler-team#785 (Zulip) (last review activity: about 0 days ago)
- “Policy change around adding new unstable flags” compiler-team#787 (Zulip) (last review activity: about 5 days ago)
- “Normalize FileCheck directives” compiler-team#789 (Zulip) (last review activity: about 5 days ago)
- “Relink, don’t rebuild” compiler-team#790 (Zulip) (last review activity: about 5 days ago)
- “Support for a new
wasm32-linux-musl
Tier-3 target” compiler-team#797 (Zulip) (last review activity: about 5 days ago)
- Pending FCP requests (check your boxes!)
- “sanitizers: Stabilize AddressSanitizer and LeakSanitizer for the Tier 1 targets” rust#123617
- “Stabilize WebAssembly
multivalue
,reference-types
, andtail-call
target features” rust#131080 - “Lint on combining
#[no_mangle]
and#[export_name]
” rust#131558
- Things in FCP (make sure you’re good with it)
- “Attribute handling reworks” compiler-team#796 (Zulip)
- “Remove unstable
-Zprofile
(gcov-style coverage)” compiler-team#798 (Zulip) - “Add
--print host-triple
to print host target triple” rust#125579
- Accepted MCPs
- “Wasm minimal features target” compiler-team#791 (Zulip)
- MCPs blocked on unresolved concerns
- “Retire the mailing list and make all decisions on zulip” compiler-team#649 (Zulip)
- concern: automatic-sync
- “Retire the mailing list and make all decisions on zulip” compiler-team#649 (Zulip)
- Finalized FCPs (disposition merge)
- “make unsupported_calling_conventions a hard error” rust#129935
- Other teams finalized FCPs
- “Fixup Windows verbatim paths when used with the
include!
macro” rust#125205 - “Allow dropping
dyn Trait
principal” rust#126660 - “atomics: allow atomic and non-atomic reads to race” rust#128778
- “Decide on name for
derive(SmartPtr)
” rust#129104 - “Do not consider match/let/ref of place that evaluates to
!
to diverge, disallow coercions from them too” rust#129392 - “Make deprecated_cfg_attr_crate_type_name a hard error” rust#129670
- “Stabilize expr_2021 fragment specifier in all editions” rust#129972
- “Check elaborated projections from dyn don’t mention unconstrained late bound lifetimes” rust#130367
- “Finish stabilization of
result_ffi_guarantees
” rust#130628 - “Stabilize const
ptr::write*
andmem::replace
” rust#130954 - “Stabilize
shorter_tail_lifetime
” rust#131445
- “Fixup Windows verbatim paths when used with the
WG checkins
None
Backport nominations
T-compiler beta / T-compiler stable
- No beta nominations for
T-compiler
this time. - No stable nominations for
T-compiler
this time.
- No beta nominations for
T-types
this time. - No stable nominations for
T-types
this time.
PRs S-waiting-on-team
- “Stabilize WebAssembly
multivalue
,reference-types
, andtail-call
target features” rust#131080 - Issues in progress or waiting on other teams
Issues of Note
Short Summary
- 1 T-compiler P-critical issues
- 69 T-compiler P-high issues
- 0 P-critical, 0 P-high, 2 P-medium, 0 P-low regression-from-stable-to-beta
- 0 P-critical, 0 P-high, 5 P-medium, 3 P-low regression-from-stable-to-nightly
- 1 P-critical, 38 P-high, 100 P-medium, 17 P-low regression-from-stable-to-stable
P-critical
- “[Regression] LLVM asserts “conflicting locations for variable” since 1.82” rust#131944
- Seems the regression happened in #128861 (comment), a tentative patch is being worked on
- Assigned P-critical in case we want to evaluate a dot release for this (so far, @_apiraino not aware of other manifestations of this issue)
- No
P-critical
issues forT-types
this time.
P-high regressions
- No
P-high
beta regressions this time.
Unassigned P-high nightly regressions
- No unassigned
P-high
nightly regressions this time.
Performance logs
Some tidy improvements from switching to next generation trait solver
(solely for coherence checking) and from simplifying our dataflow
analysis framework. There were some binary size regressions associated
with PR 126557 (adding #[track_caller]
to allocating methods of
Vec
and VecDeque
), which I have handed off to T-libs to choose
whether to investigate further.
Triage done by @pnkfelix. Revision range: 5ceb623a..3e33bda0
Summary:
(instructions:u) | mean | range | count |
---|---|---|---|
Regressions (primary) | 0.4% | [0.2%, 0.9%] | 43 |
Regressions (secondary) | 0.4% | [0.2%, 0.7%] | 36 |
Improvements (primary) | -0.8% | [-5.1%, -0.2%] | 92 |
Improvements (secondary) | -0.8% | [-2.0%, -0.1%] | 65 |
All (primary) | -0.4% | [-5.1%, 0.9%] | 135 |
0 Regressions, 3 Improvements, 6 Mixed; 3 of them in rollups 47 artifact comparisons made in total
Regressions
This space intentionally left blank (0 regressions)
Improvements
stabilize -Znext-solver=coherence
again #130654 (Comparison Link)
(instructions:u) | mean | range | count |
---|---|---|---|
Regressions (primary) | - | - | 0 |
Regressions (secondary) | - | - | 0 |
Improvements (primary) | -1.9% | [-4.5%, -0.2%] | 17 |
Improvements (secondary) | -0.3% | [-0.3%, -0.3%] | 3 |
All (primary) | -1.9% | [-4.5%, -0.2%] | 17 |
- improvements are to bitmaps and nalgebra
- (presumably due to their heavy use of trait machinery; though, skimming bitmaps, I’m not sure if I see heavy use of trait machinery there)
- what else can I say, except, amazing!
Remove GenKillAnalysis
#131481 (Comparison Link)
(instructions:u) | mean | range | count |
---|---|---|---|
Regressions (primary) | - | - | 0 |
Regressions (secondary) | 1.6% | [1.6%, 1.6%] | 1 |
Improvements (primary) | -0.4% | [-0.7%, -0.2%] | 24 |
Improvements (secondary) | -0.9% | [-1.9%, -0.1%] | 19 |
All (primary) | -0.4% | [-0.7%, -0.2%] | 24 |
- improvements are spread across html5ever, serde, cargo, libc, diesel, and bitmaps.
- wow. I’m surprised
GenKillAnalysis
is a pessimization - (maybe this is a sign that our basic blocks tend to hold a small number of instructions…?)
- anyway, overall amazing work.
Rollup of 8 pull requests #131792 (Comparison Link)
(instructions:u) | mean | range | count |
---|---|---|---|
Regressions (primary) | - | - | 0 |
Regressions (secondary) | - | - | 0 |
Improvements (primary) | -0.2% | [-0.2%, -0.2%] | 5 |
Improvements (secondary) | - | - | 0 |
All (primary) | -0.2% | [-0.2%, -0.2%] | 5 |
- improvements are to incremental scenarios for stm32f4 (and one also for libc).
Mixed
Add #[track_caller]
to allocating methods of Vec
& VecDeque
#126557 (Comparison Link)
(instructions:u) | mean | range | count |
---|---|---|---|
Regressions (primary) | 0.3% | [0.0%, 0.5%] | 26 |
Regressions (secondary) | - | - | 0 |
Improvements (primary) | - | - | 0 |
Improvements (secondary) | -0.2% | [-0.2%, -0.1%] | 4 |
All (primary) | 0.3% | [0.0%, 0.5%] | 26 |
- based on a prior perf run (which predicted 16 primary regressions of roughly the same magnitude as observed here), the T-libs team had already approved this PR under the assumption that there wouldn’t be a runtime impact from this.
- there was a note from nnethercote that it isn’t totally clear if the binary size increases were anticipated.
- marking as triaged
Rollup of 8 pull requests #131690 (Comparison Link)
(instructions:u) | mean | range | count |
---|---|---|---|
Regressions (primary) | 0.4% | [0.4%, 0.4%] | 1 |
Regressions (secondary) | - | - | 0 |
Improvements (primary) | -0.6% | [-0.8%, -0.3%] | 2 |
Improvements (secondary) | - | - | 0 |
All (primary) | -0.2% | [-0.8%, 0.4%] | 3 |
- regression to cargo opt-full; improvements to image and html5ever opt-full
- briefly skimmed detailed results. nothing stood out.
- not worth digging into further; marking as triaged
Use ThinVec
for PredicateObligation storage #131422 (Comparison Link)
(instructions:u) | mean | range | count |
---|---|---|---|
Regressions (primary) | - | - | 0 |
Regressions (secondary) | 0.3% | [0.3%, 0.5%] | 8 |
Improvements (primary) | -0.3% | [-0.7%, -0.2%] | 15 |
Improvements (secondary) | -0.3% | [-0.7%, -0.2%] | 23 |
All (primary) | -0.3% | [-0.7%, -0.2%] | 15 |
- improvements outweigh regressions. (and reported performance matches what was anticipated via perf runs.)
- marking as triaged
optimize str.replace #130223 (Comparison Link)
(instructions:u) | mean | range | count |
---|---|---|---|
Regressions (primary) | 0.5% | [0.2%, 1.2%] | 5 |
Regressions (secondary) | - | - | 0 |
Improvements (primary) | -0.8% | [-0.8%, -0.8%] | 1 |
Improvements (secondary) | -0.4% | [-0.4%, -0.3%] | 6 |
All (primary) | 0.3% | [-0.8%, 1.2%] | 6 |
- primary regressions to miscellaneous cargo and clap scenarios. (single primary improvement was to cargo incr-patched::println).
- overall seems like minor regressions, potentially “just” instrumentation bias, compared to the expected benefit for microbenchmark reported in PR description.
- marking as triaged.
Rollup of 8 pull requests #131934 (Comparison Link)
(instructions:u) | mean | range | count |
---|---|---|---|
Regressions (primary) | 0.3% | [0.3%, 0.3%] | 2 |
Regressions (secondary) | 0.2% | [0.2%, 0.3%] | 11 |
Improvements (primary) | -0.2% | [-0.2%, -0.2%] | 1 |
Improvements (secondary) | - | - | 0 |
All (primary) | 0.1% | [-0.2%, 0.3%] | 3 |
- primary regressions to helloworld (doc) and hyper (opt); primary improvement to libc (doc).
- all the secondary regressions are to doc benchmarks, which led lqd to hypothesize that this is due to PR 131908 which changed the hash used for filename generation to sha256 since it should be stable going forward.
- hyper history seems really noisy.
- marking as triaged
Update rustc-hash to version 2 but again #131949 (Comparison Link)
(instructions:u) | mean | range | count |
---|---|---|---|
Regressions (primary) | 0.2% | [0.1%, 0.2%] | 8 |
Regressions (secondary) | 0.3% | [0.1%, 0.7%] | 9 |
Improvements (primary) | -0.3% | [-0.5%, -0.2%] | 10 |
Improvements (secondary) | -0.9% | [-1.4%, -0.6%] | 13 |
All (primary) | -0.1% | [-0.5%, 0.2%] | 18 |
- primary improvements to unicode-normalization and libc
- primary regressions to typenum and serde
- I don’t think there’s anything interesting to investigate here. marking as triaged.
Nominated Issues
- No I-compiler-nominated issues this time.
- No I-compiler-nominated RFCs this time.
Oldest PRs waiting for review
- None this week
Next meetings' agenda draft: hackmd link - (is Oct, 31st a holiday in the USA?)