T-compiler Meeting Agenda 2024-06-13
Announcements
- Today release of Rust stable 1.79! Blog post PR
- 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
- Types Team: ITE (Impl Trait Everywhere) Triage time:2024-06-13T22:00:00+01:00
MCPs/FCPs
- New MCPs (take a look, see if you like them!)
- “Enable
clang-format
forrustc
” compiler-team#756 (Zulip)
- “Enable
- 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: 4 months ago)
- concern: added-complexity-to-frontend
- “Target families for executable format” compiler-team#716 (Zulip) (last review activity: 4 months ago)
- “Promote riscv64gc-unknown-linux-musl to tier 2” compiler-team#728 (Zulip) (last review activity: 3 months ago)
- “Only emit forward compatible v0 symbol names with graceful degradation” compiler-team#737 (Zulip) (last review activity: 2 months ago)
- “Partial compilation using MIR-only rlibs” compiler-team#738 (Zulip) (last review activity: 2 months ago)
- “Add Hotpatch flag” compiler-team#745 (Zulip) (last review activity: about 27 days ago)
- “Add a
--emit=nameres
for IDEs” compiler-team#749 (Zulip) (last review activity: about 20 days ago)
- Pending FCP requests (check your boxes!)
- merge: sanitizers: stabilize core sanitizers (i.e., AddressSanitizer, LeakSanitizer, MemorySanitizer, ThreadSanitizer) (rust#123617)
- @|119009 @|124288 @|125250 @|119031 @|124287 @|426609 @_|232957
- no pending concerns
- merge: allow overwriting the output of
rustc --version
(rust#124339)- @|426609 @|216206 @_|232957
- no pending concerns
- merge: Remove the
box_pointers
lint. (rust#126018)- @|119009 @|123586 @|125294 @|119031 @_|124287
- no pending concerns
- merge: Remove the
missing_copy_implementations
lint. (rust#126293)- @|119009 @|116083 @|125250 @|119031 @|124287 @|426609 @|123856 @|116118
- no pending concerns
- merge: sanitizers: stabilize core sanitizers (i.e., AddressSanitizer, LeakSanitizer, MemorySanitizer, ThreadSanitizer) (rust#123617)
- Things in FCP (make sure you’re good with it)
- “Fully rustfmt
use
declarations” compiler-team#750 (Zulip) - “Remove
src/tools/rust-demangler
” compiler-team#754 (Zulip) - “Extract rustc stable hasher into it’s own crate” compiler-team#755 (Zulip)
- “Fully rustfmt
- Accepted MCPs
- “Promote loongarch64-unknown-linux-musl to tier 2” compiler-team#753 (Zulip)
- MCPs blocked on unresolved concerns
- merge: Add
--print host-triple
to print host target triple (rust#125579)- @|119009 @|125250 @|426609 @|232957
- concerns: triple vs tuple (by lcnr)
- merge: Add a new
--build-id
flag to rustc (compiler-team#635)- @|125250 @|116107 @|125294 @|123856
- concerns: other-existing-options (by petrochenkov) option-name (by wesleywiser)
- “Retire the mailing list and make all decisions on zulip” compiler-team#649 (Zulip)
- concern: automatic-sync
- merge: Stabilize
--env-set
option (rust#119926)- @|119009 @|124288 @|123586 @|125250 @|119031 @|124287 @_|116118
- concerns: other-rustc-vars (by petrochenkov)
- merge: Add
- Finalized FCPs (disposition merge)
- “TAIT decision on “may define implies must define”” rust#117861
- “Allow constraining opaque types during subtyping in the trait system” rust#125447
- Other teams finalized FCPs
- “TAIT decision on “may define implies must define”” rust#117861
- “Allow constraining opaque types during subtyping in the trait system” rust#125447
WG checkins
None
Backport nominations
T-compiler beta / T-compiler stable
- :beta: “Only compute
specializes
query if (min)specialization is enabled in the crate of the specializing impl” rust#126139- Authored by compiler-errors
- Fixes #125197, a regression discovered in a crater run
- As @lqd assesses, the regression is not yet reported by anyone and the impact in the crater run was rather small but still a “nice-to-have” as a backport
- :beta: “Do not define opaque types when selecting impls” rust#126258
- Authored by oli-obk
- Fixes #126117, a P-high regression reported by a user in their project
- (@_oli is also working on reintroducing an improved patch in #126316)
- 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
Issues of Note
Short Summary
- 0 T-compiler P-critical issues
- 65 T-compiler P-high issues
- 0 P-critical, 1 P-high, 2 P-medium, 1 P-low regression-from-stable-to-beta
- 0 P-critical, 1 P-high, 5 P-medium, 2 P-low regression-from-stable-to-nightly
- 0 P-critical, 36 P-high, 100 P-medium, 17 P-low regression-from-stable-to-stable
P-critical
- No
P-critical
issues forT-compiler
this time.
- No
P-critical
issues forT-types
this time.
P-high regressions
- “Regression in nightly-2024-05-27” rust#126117
- This is fixed by rust#126258
Unassigned P-high nightly regressions
- “regression: trait bound not satisfied” rust#125194
- reverted in beta (#125629) the changes that caused the regression
Performance logs
This week saw more regressions than wins, caused mostly by code being reorganized within the compiler and a new feature being implemented. There have also been some nice improvements caused by better optimizing spans.
Triage done by @kobzol. Revision range: 1d52972d..b5b13568
Summary:
(instructions:u) | mean | range | count |
---|---|---|---|
Regressions (primary) | 0.6% | [0.2%, 2.7%] | 105 |
Regressions (secondary) | 1.0% | [0.1%, 6.9%] | 74 |
Improvements (primary) | -0.5% | [-1.0%, -0.2%] | 20 |
Improvements (secondary) | -1.4% | [-8.8%, -0.2%] | 32 |
All (primary) | 0.5% | [-1.0%, 2.7%] | 125 |
5 Regressions, 3 Improvements, 4 Mixed; 5 of them in rollups 59 artifact comparisons made in total
Regressions
Rollup of 8 pull requests #125976 (Comparison Link)
(instructions:u) | mean | range | count |
---|---|---|---|
Regressions (primary) | 0.9% | [0.2%, 1.3%] | 14 |
Regressions (secondary) | 0.9% | [0.4%, 2.8%] | 5 |
Improvements (primary) | - | - | 0 |
Improvements (secondary) | - | - | 0 |
All (primary) | 0.9% | [0.2%, 1.3%] | 14 |
- Looks like it was caused by #125968.
- This PR resulted in some code being shuffled around the compiler (what we call “codegen noise”), we determined that it is not worth investigating further.
Don’t walk the bodies of free constants for reachability. #122505 (Comparison Link)
(instructions:u) | mean | range | count |
---|---|---|---|
Regressions (primary) | 1.8% | [0.2%, 2.6%] | 4 |
Regressions (secondary) | - | - | 0 |
Improvements (primary) | - | - | 0 |
Improvements (secondary) | - | - | 0 |
All (primary) | 1.8% | [0.2%, 2.6%] | 4 |
- The compiler needs to do a little bit more work after this PR, so the regression is expected.
Unsafe extern blocks #124482 (Comparison Link)
(instructions:u) | mean | range | count |
---|---|---|---|
Regressions (primary) | 0.3% | [0.2%, 0.4%] | 32 |
Regressions (secondary) | 0.2% | [0.2%, 0.3%] | 4 |
Improvements (primary) | - | - | 0 |
Improvements (secondary) | - | - | 0 |
All (primary) | 0.3% | [0.2%, 0.4%] | 32 |
- This PR adds a new feature, so a small performance regression is expected.
Rollup of 7 pull requests #126108 (Comparison Link)
(instructions:u) | mean | range | count |
---|---|---|---|
Regressions (primary) | 0.2% | [0.2%, 0.3%] | 5 |
Regressions (secondary) | 0.9% | [0.5%, 1.5%] | 15 |
Improvements (primary) | - | - | 0 |
Improvements (secondary) | - | - | 0 |
All (primary) | 0.2% | [0.2%, 0.3%] | 5 |
- Caused by #125724, which moves some code to a different compiler package, so that it can be used with the new trait solver.
Add Rust for Linux auto
CI job #125209 (Comparison Link)
(instructions:u) | mean | range | count |
---|---|---|---|
Regressions (primary) | - | - | 0 |
Regressions (secondary) | 4.3% | [2.5%, 6.1%] | 2 |
Improvements (primary) | - | - | 0 |
Improvements (secondary) | - | - | 0 |
All (primary) | - | - | 0 |
- This PR did not modify the compiler at all, so this has to be noise.
Improvements
Rollup of 11 pull requests #125989 (Comparison Link)
(instructions:u) | mean | range | count |
---|---|---|---|
Regressions (primary) | - | - | 0 |
Regressions (secondary) | 2.0% | [2.0%, 2.0%] | 1 |
Improvements (primary) | - | - | 0 |
Improvements (secondary) | -0.3% | [-0.3%, -0.2%] | 10 |
All (primary) | - | - | 0 |
Revert: create const block bodies in typeck via query feeding #125918 (Comparison Link)
(instructions:u) | mean | range | count |
---|---|---|---|
Regressions (primary) | - | - | 0 |
Regressions (secondary) | - | - | 0 |
Improvements (primary) | -0.3% | [-0.5%, -0.2%] | 35 |
Improvements (secondary) | -0.4% | [-0.4%, -0.3%] | 9 |
All (primary) | -0.3% | [-0.5%, -0.2%] | 35 |
Rollup of 9 pull requests #126240 (Comparison Link)
(instructions:u) | mean | range | count |
---|---|---|---|
Regressions (primary) | - | - | 0 |
Regressions (secondary) | - | - | 0 |
Improvements (primary) | - | - | 0 |
Improvements (secondary) | -2.3% | [-6.4%, -0.2%] | 3 |
All (primary) | - | - | 0 |
Mixed
Make TLS accessors closures that return pointers #125525 (Comparison Link)
(instructions:u) | mean | range | count |
---|---|---|---|
Regressions (primary) | 0.3% | [0.2%, 0.4%] | 6 |
Regressions (secondary) | 2.9% | [2.9%, 2.9%] | 1 |
Improvements (primary) | -0.5% | [-1.1%, -0.3%] | 14 |
Improvements (secondary) | - | - | 0 |
All (primary) | -0.2% | [-1.1%, 0.4%] | 20 |
- More wins than losses.
Rollup of 11 pull requests #126134 (Comparison Link)
(instructions:u) | mean | range | count |
---|---|---|---|
Regressions (primary) | 0.4% | [0.2%, 1.0%] | 43 |
Regressions (secondary) | 0.4% | [0.1%, 0.8%] | 14 |
Improvements (primary) | - | - | 0 |
Improvements (secondary) | -0.2% | [-0.2%, -0.2%] | 3 |
All (primary) | 0.4% | [0.2%, 1.0%] | 43 |
rustc_span: Optimize syntax context updates in spans #125017 (Comparison Link)
(instructions:u) | mean | range | count |
---|---|---|---|
Regressions (primary) | 0.5% | [0.2%, 0.6%] | 6 |
Regressions (secondary) | 0.7% | [0.4%, 1.0%] | 10 |
Improvements (primary) | -0.4% | [-1.5%, -0.2%] | 37 |
Improvements (secondary) | -1.5% | [-9.3%, -0.2%] | 33 |
All (primary) | -0.3% | [-1.5%, 0.6%] | 43 |
- More improvements than regressions.
Add SingleUseConsts
mir-opt pass #125910 (Comparison Link)
(instructions:u) | mean | range | count |
---|---|---|---|
Regressions (primary) | 0.4% | [0.3%, 0.4%] | 2 |
Regressions (secondary) | - | - | 0 |
Improvements (primary) | -0.3% | [-0.4%, -0.2%] | 4 |
Improvements (secondary) | -2.3% | [-2.9%, -1.7%] | 2 |
All (primary) | -0.1% | [-0.4%, 0.4%] | 6 |
- Slighty more wins than losses on instructions.
- Small binary size win.
Nominated Issues
- No I-compiler-nominated issues this time.
- No I-compiler-nominated RFCs this time.
Oldest PRs waiting for review
- “tidy watcher” rust#114209 (last review activity: 5 months ago)
- This PR looks to me a bit dead in the water. It’s lacking a review and the author seems to not respond. Any taker?
- “Remove unnecessary impl sorting in queries and metadata” rust#120812 (last review activity: 3 months ago)
- cc @cjgillot
- “Suggest a borrow when using dbg” rust#120990 (last review activity: 3 months ago)
- cc @Esteban Küber
- “Always emit
native-static-libs
note, even if it is empty” rust#121216 (last review activity: 3 months ago)- cc @Wesley Wiser
Next meetings' agenda draft: hackmd link