T-compiler Meeting Agenda 2024-03-28
Announcements
- A dot release 1.77.1 is out today to fix #122857 (Zulip discussion)
- 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 (calendar link)
- Types Team: ITE (Impl Trait Everywhere) Triage time:2024-03-28T22:00:00+01:00
MCPs/FCPs
- New MCPs (take a look, see if you like them!)
- “Skip virtual drop for !needs_drop types” compiler-team#730 (Zulip)
- “allow all command line flags to be passed multiple times, overwriting previous usages” compiler-team#731 (Zulip)
- Old MCPs (stale MCP might be closed as per MCP procedure)
- None at this time
- Old MCPs (not seconded, take a look)
- “Target families for executable format” compiler-team#716 (Zulip) (last review activity: about 55 days ago)
- “Add
--emit=
to emit nothing” compiler-team#718 (Zulip) (last review activity: about 55 days ago) - “Promote riscv64gc-unknown-linux-musl to tier 2” compiler-team#728 (Zulip) (last review activity: about 20 days ago)
- Pending FCP requests (check your boxes!)
- merge: Add a new
--build-id
flag to rustc (compiler-team#635)- @|125250 @|116107 @|125294 @|123856
- other-existing-options (by petrochenkov) option-name (by wesleywiser)
- merge: Retire the mailing list and make all decisions on zulip (compiler-team#649)
- merge: Tracking Issue for RFC 3013: Checking conditional compilation at compile time (rust#82450)
- @|119009 @|116107 @|125294 @|119031 @|248906 @|232957
- no pending concerns
- merge: Limit
-C strip
on MSVC (rust#115120)- @|119009 @|116083 @|123586 @|125250 @|116107 @|125294 @|119031 @|248906 @|426609 @|116118 @|216206 @|232957
- no pending concerns
- merge: Stabilize
--env-set
option (rust#119926)- @|119009 @|116083 @|124288 @|123586 @|125250 @|119031 @|124287 @|116118
- other-rustc-vars (by petrochenkov)
- merge: Make casts of pointers to trait objects stricter (rust#120248)
- @|239881 @|116883 @_|125270
- no pending concerns
- merge: sess: stabilize
-Zrelro-level
as-Crelro-level
(rust#121694)- @|119009 @|116083 @|119031 @|116118 @_|232957
- no pending concerns
- merge: Add encoding for
f16
andf128
(rust#122106)- @|119009 @|116083 @|125250 @|125294 @|119031 @|232957
- no pending concerns
- merge: Add a new
- Things in FCP (make sure you’re good with it)
- “Stabilize Wasm target features that are in phase 4 and 5” rust#117457
- Accepted MCPs
- “Dist rustc with overflow checks” compiler-team#724 (Zulip)
- MCPs blocked on unresolved concerns
- “Add hygiene attributes to compile expanded source code” compiler-team#692 (Zulip) (last review activity: 2 months ago)
- concern: added-complexity-to-frontend
- “Add hygiene attributes to compile expanded source code” compiler-team#692 (Zulip) (last review activity: 2 months ago)
- Finalized FCPs (disposition merge)
- “rework opaque type region inference” rust#116891
- “Normalize trait ref before orphan check & consider ty params in alias types to be uncovered” rust#117164
- “instantiate higher ranked goals outside of candidate selection” rust#119820
- “transmute: caution against int2ptr transmutation” rust#122379
- Other teams finalized FCPs
- “Tracking issue for Allow a re-export for
main
(RFC 1260)” rust#28937 - “
c_unwind
full stabilization request: change inextern "C"
behavior” rust#115285 - “rework opaque type region inference” rust#116891
- “Prevent opaque types being instantiated twice with different regions within the same function” rust#116935
- “Normalize trait ref before orphan check & consider ty params in alias types to be uncovered” rust#117164
- “instantiate higher ranked goals outside of candidate selection” rust#119820
- “Split refining_impl_trait lint into _reachable, _internal variants” rust#121720
- “Stabilize associated type bounds (RFC 2289)” rust#122055
- “transmute: caution against int2ptr transmutation” rust#122379
- “Tracking issue for Allow a re-export for
WG checkins
-
@_WG-llvm by @nagisa and @Nikita Popov (previous checkin):
Update to LLVM 18.1.2 (https://github.com/rust-lang/rust/pull/122772)
-
@_WG-mir-opt by @oli (previous checkin):
no updates
Backport nominations
T-compiler beta / T-compiler stable
- :beta: [1.78] “Update to LLVM 18.1.2” rust#122772
- This will fix #122476 (thread sanitizer on x86 caused a compilation abort), upstream issue was llvm-project#85226. Thanks @Nikita Popov!
- Also fixes (avr-hal#505 and llvm-project#83362
- :beta: [1.78] “Encode implied predicates for traits” rust#122891
- patch authored by @Michael Goulet (compiler-errors) (thanks!)
- Fixes #122859, regressed on nightly:
super_predicates
andimplied_predicates
queries differ for regular traits. In cross-crate positions this means that we used to forget the implied predicates from associated type bounds. (explaination)
- 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
- 1 T-compiler P-critical issues
- 63 T-compiler P-high issues
- 0 P-critical, 0 P-high, 1 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
- 1 P-critical, 37 P-high, 100 P-medium, 14 P-low regression-from-stable-to-stable
P-critical
- “No backtrace on windows with current rustc stable” rust#122857
- Quick fix in cargo, in release 1.77.1 out today
- 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
An overall fairly quiet week with the unfortunate one exception of large instruction count and binary size regressions caused by changes in const evaluation. This was largely balanced out (at least in instruction count) by a group of small improvements, but the compiler did end up 0.2% slower on average across 97 benchmarks.
Triage done by @rylev. Revision range: 21d94a3..73476d
Summary:
(instructions:u) | mean | range | count |
---|---|---|---|
Regressions (primary) | 1.0% | [0.2%, 3.2%] | 56 |
Regressions (secondary) | 0.6% | [0.1%, 1.9%] | 38 |
Improvements (primary) | -0.8% | [-1.5%, -0.2%] | 41 |
Improvements (secondary) | -1.2% | [-5.2%, -0.4%] | 13 |
All (primary) | 0.2% | [-1.5%, 3.2%] | 97 |
4 Regressions, 6 Improvements, 2 Mixed; 4 of them in rollups 63 artifact comparisons made in total
Regressions
recursively evaluate the constants in everything that is ‘mentioned’ #122568 (Comparison Link)
(instructions:u) | mean | range | count |
---|---|---|---|
Regressions (primary) | 1.0% | [0.3%, 2.2%] | 67 |
Regressions (secondary) | 0.8% | [0.2%, 2.9%] | 24 |
Improvements (primary) | - | - | 0 |
Improvements (secondary) | - | - | 0 |
All (primary) | 1.0% | [0.3%, 2.2%] | 67 |
- An unfortunately large regression in instruction count that has to happen for correctness reasons.
- Additional regressions in binary size and an issue has been opened for it: #122936
Rollup of 8 pull requests #122900 (Comparison Link)
(instructions:u) | mean | range | count |
---|---|---|---|
Regressions (primary) | - | - | 0 |
Regressions (secondary) | 0.5% | [0.4%, 0.6%] | 11 |
Improvements (primary) | - | - | 0 |
Improvements (secondary) | - | - | 0 |
All (primary) | - | - | 0 |
- Seems that #122784 is the cause. Author and reviewer were pinged.
Replace visibility test with reachability test in dead code detection #119552 (Comparison Link)
(instructions:u) | mean | range | count |
---|---|---|---|
Regressions (primary) | 2.1% | [1.0%, 3.2%] | 4 |
Regressions (secondary) | - | - | 0 |
Improvements (primary) | - | - | 0 |
Improvements (secondary) | - | - | 0 |
All (primary) | 2.1% | [1.0%, 3.2%] | 4 |
- More warnings are now emitted from ripgrep so this is to be expected
Rollup of 9 pull requests #122966 (Comparison Link)
(instructions:u) | mean | range | count |
---|---|---|---|
Regressions (primary) | 0.3% | [0.3%, 0.3%] | 1 |
Regressions (secondary) | 0.3% | [0.2%, 0.4%] | 6 |
Improvements (primary) | - | - | 0 |
Improvements (secondary) | - | - | 0 |
All (primary) | 0.3% | [0.3%, 0.3%] | 1 |
- The regressions are probably too small here for us to need to dig much deeper.
Improvements
clean up Sized
checking #122493 (Comparison Link)
(instructions:u) | mean | range | count |
---|---|---|---|
Regressions (primary) | - | - | 0 |
Regressions (secondary) | - | - | 0 |
Improvements (primary) | -0.4% | [-0.6%, -0.3%] | 2 |
Improvements (secondary) | -0.7% | [-3.2%, -0.3%] | 11 |
All (primary) | -0.4% | [-0.6%, -0.3%] | 2 |
Move more intrinsics to rustc_intrinsic #122037 (Comparison Link)
(instructions:u) | mean | range | count |
---|---|---|---|
Regressions (primary) | - | - | 0 |
Regressions (secondary) | - | - | 0 |
Improvements (primary) | -0.3% | [-0.3%, -0.2%] | 4 |
Improvements (secondary) | - | - | 0 |
All (primary) | -0.3% | [-0.3%, -0.2%] | 4 |
Update cargo #122753 (Comparison Link)
(instructions:u) | mean | range | count |
---|---|---|---|
Regressions (primary) | - | - | 0 |
Regressions (secondary) | - | - | 0 |
Improvements (primary) | -0.8% | [-0.9%, -0.5%] | 5 |
Improvements (secondary) | -0.6% | [-0.8%, -0.4%] | 8 |
All (primary) | -0.8% | [-0.9%, -0.5%] | 5 |
select Vec::from_iter impls in a const block to optimize compile times #122785 (Comparison Link)
(instructions:u) | mean | range | count |
---|---|---|---|
Regressions (primary) | - | - | 0 |
Regressions (secondary) | - | - | 0 |
Improvements (primary) | -0.6% | [-1.5%, -0.3%] | 10 |
Improvements (secondary) | - | - | 0 |
All (primary) | -0.6% | [-1.5%, -0.3%] | 10 |
Replace mir_built
query with a hook and use mir_const everywhere instead #122721 (Comparison Link)
(instructions:u) | mean | range | count |
---|---|---|---|
Regressions (primary) | 0.5% | [0.5%, 0.5%] | 1 |
Regressions (secondary) | - | - | 0 |
Improvements (primary) | -0.4% | [-0.9%, -0.2%] | 17 |
Improvements (secondary) | -0.5% | [-0.8%, -0.2%] | 11 |
All (primary) | -0.3% | [-0.9%, 0.5%] | 18 |
Don’t emit load metadata in debug mode #122849 (Comparison Link)
(instructions:u) | mean | range | count |
---|---|---|---|
Regressions (primary) | - | - | 0 |
Regressions (secondary) | - | - | 0 |
Improvements (primary) | -0.7% | [-1.1%, -0.4%] | 13 |
Improvements (secondary) | - | - | 0 |
All (primary) | -0.7% | [-1.1%, -0.4%] | 13 |
Mixed
Rollup of 10 pull requests #122735 (Comparison Link)
(instructions:u) | mean | range | count |
---|---|---|---|
Regressions (primary) | - | - | 0 |
Regressions (secondary) | 0.3% | [0.1%, 0.6%] | 5 |
Improvements (primary) | -0.7% | [-0.8%, -0.3%] | 11 |
Improvements (secondary) | -0.3% | [-0.3%, -0.3%] | 1 |
All (primary) | -0.7% | [-0.8%, -0.3%] | 11 |
- The improvements outweigh the regressions so there’s not a huge incentive to investigate further.
Rollup of 8 pull requests #122830 (Comparison Link)
(instructions:u) | mean | range | count |
---|---|---|---|
Regressions (primary) | - | - | 0 |
Regressions (secondary) | 0.1% | [0.1%, 0.1%] | 2 |
Improvements (primary) | -0.3% | [-0.4%, -0.2%] | 2 |
Improvements (secondary) | -1.2% | [-1.7%, -0.8%] | 8 |
All (primary) | -0.3% | [-0.4%, -0.2%] | 2 |
- With only small regressions on stress tests, I think it’s fine if we don’t investigate this too deeply.
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
- cc: @Wesley Wiser
- “Fix gce ICE when encountering ill-formed consts” rust#119060
- cc: @Michael Goulet (compiler-errors)
- “Remove
suffix
fromMetaItemLit
” rust#120705 (last review activity: about 48 days ago)- cc: @davidtwco
- “Remove unnecessary impl sorting in queries and metadata” rust#120812 (last review activity: about 48 days ago)
- @cjgillot
- “Suggest a borrow when using dbg” rust#120990 (last review activity: about 44 days ago)
- cc: @Esteban Küber (o reroll?)
Next week’s WG checkins
- Skipping next week
Next meetings' agenda draft: hackmd link