T-compiler Meeting Agenda 2024-05-30
Announcements
- Friday [steering meeting]: Project Goals by @_nikomatsakis
- 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).
MCPs/FCPs
- New MCPs (take a look, see if you like them!)
- No new proposals this time.
- 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: 3 months ago)
- “Promote riscv64gc-unknown-linux-musl to tier 2” compiler-team#728 (Zulip) (last review activity: 2 months ago)
- “Only emit forward compatible v0 symbol names with graceful degradation” compiler-team#737 (Zulip) (last review activity: about 54 days ago)
- “Partial compilation using MIR-only rlibs” compiler-team#738 (Zulip) (last review activity: about 47 days ago)
- “Add Hotpatch flag” compiler-team#745 (Zulip) (last review activity: about 13 days ago)
- “Add a
--emit=nameres
for IDEs” compiler-team#749 (Zulip) (last review activity: about 5 days ago) - “Fully rustfmt
use
declarations” compiler-team#750 (Zulip) (last review activity: about 5 days ago)
- Pending FCP requests (check your boxes!)
- 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: sanitizers: stabilize core sanitizers (i.e., AddressSanitizer, LeakSanitizer, MemorySanitizer, ThreadSanitizer) (rust#123617)
- @|119009 @|116083 @|124288 @|123586 @|125250 @|119031 @|124287 @|426609 @|123856 @|116118 @_|232957
- no pending concerns
- merge: allow overwriting the output of
rustc --version
(rust#124339)- @|248906 @|426609 @|116118 @|216206 @_|232957
- no pending concerns
- merge: Add
--print host-triple
to print host target triple (rust#125579)- @|119009 @|116083 @|123586 @|125250 @|426609 @|116118 @_|232957
- concerns: triple vs tuple (by lcnr)
- merge: Add a new
- Things in FCP (make sure you’re good with it)
- “Promote arm64ec-pc-windows-msvc to tier 2” compiler-team#746 (Zulip)
- “Promote loongarch64-unknown-linux-musl to tier 2” compiler-team#753 (Zulip)
- “Show files produced by
--emit foo
in json artifact notifications” rust#122597
- Accepted MCPs
- “Skip virtual drop for !needs_drop types” compiler-team#730 (Zulip)
- “Add
--emit=thin-link-bitcode
to enable distributed ThinLTO users” compiler-team#735 (Zulip) - “Add –print=check-cfg” compiler-team#743 (Zulip)
- “Support
-Cforce-frame-pointers=non-leaf
” compiler-team#744 (Zulip) - “
-Zfixed-x18
” compiler-team#748 (Zulip)
- Finalized FCPs (disposition merge)
- No new finished FCP (disposition merge) this time.
- Other teams finalized FCPs
- “Tracking Issue for asm_const” rust#93332
- “Edition 2024: Make
!
fall back to!
” rust#123508 - “Edition 2024: don’t special-case diverging blocks” rust#123590
- “Turn remaining non-structural-const-in-pattern lints into hard errors” rust#124661
WG checkins
-
@_WG-async by @nikomatsakis and @tmandry
Checkin text
-
@_WG-diagnostics by @Esteban Küber and @oli
Checkin text
Backport nominations
T-compiler beta / T-compiler stable
- :beta: “Fix ICE in non-operand
aggregate_raw_ptr
intrinsic codegen” rust#125184- Authored by scottmcm
- Ben nominated:
I would like this in beta so that the stage0 compiler does not ICE if it gets passed -Zmir-opt-level=0. Yes I can work around this issue without huge difficulty, but the diff here is so small.
- :beta: “Revert problematic opaque type change” rust#125489
- Authored by oli-obk
- Fixes P-critical beta regression
- :beta: “[BETA] revert leak check changes” rust#125629
- Authored by lcnr
- Fixes P-critical beta regression
- :beta: “ast: Revert a breaking attribute visiting order change #125734”
- Authored by petrochenkov
- Fixes P-high beta regression
- 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
- 4 T-compiler P-critical issues
- 64 T-compiler P-high issues
- 3 P-critical, 1 P-high, 2 P-medium, 2 P-low regression-from-stable-to-beta
- 0 P-critical, 0 P-high, 5 P-medium, 2 P-low regression-from-stable-to-nightly
- 0 P-critical, 36 P-high, 100 P-medium, 16 P-low regression-from-stable-to-stable
P-critical
- “
-C target_cpu=cortex-a72
(and-target-cpu=native
on Raspberry Pi) wrongly enables crypto features that are optional on Cortex-A72” rust#125033- Discussed extensively last week
- “regression: trait bound not satisfied” rust#125194
- Fix was beta nominated
- “regression: type annotations needed” rust#125196
- “regression: ambiguous outer attributes” rust#125199
- No
P-critical
issues forT-types
this time.
P-high regressions
- “regression: cannot find macro in scope” rust#125201
- Fix was beta nominated
Unassigned P-high nightly regressions
- No unassigned
P-high
nightly regressions this time.
Performance logs
2024-05-27 Triage Log
A relatively quiet week, with few large changes, the largest driven by further increasing the scope of unsafe precondition checking.
Triage done by @simulacrum. Revision range: 1d0e4afd..a59072ec
Summary:
(instructions:u) | mean | range | count |
---|---|---|---|
Regressions ❌ (primary) | 1.6% | [0.2%, 6.3%] | 84 |
Regressions ❌ (secondary) | 0.9% | [0.1%, 3.8%] | 66 |
Improvements ✅ (primary) | -0.4% | [-2.3%, -0.2%] | 37 |
Improvements ✅ (secondary) | -1.7% | [-3.8%, -0.2%] | 22 |
All ❌✅ (primary) | 1.0% | [-2.3%, 6.3%] | 121 |
2 Regressions, 3 Improvements, 5 Mixed; 3 of them in rollups 51 artifact comparisons made in total
Regressions
Rewrite native thread-local storage #116123 (Comparison Link)
(instructions:u) | mean | range | count |
---|---|---|---|
Regressions ❌ (primary) | 0.4% | [0.2%, 1.2%] | 10 |
Regressions ❌ (secondary) | 1.0% | [0.7%, 1.6%] | 9 |
Improvements ✅ (primary) | - | - | 0 |
Improvements ✅ (secondary) | - | - | 0 |
All ❌✅ (primary) | 0.4% | [0.2%, 1.2%] | 10 |
Regressions deemed worth the overall change’s contents (see https://github.com/rust-lang/rust/pull/116123#issuecomment-2009408868). The TLS state is now stored in a single thread-local object rather than two, which should decrease costs of addressing it in general (modulo LLVM difficulties).
Rollup of 6 pull requests #125463 (Comparison Link)
(instructions:u) | mean | range | count |
---|---|---|---|
Regressions ❌ (primary) | 1.4% | [1.1%, 2.0%] | 8 |
Regressions ❌ (secondary) | 1.0% | [0.4%, 1.8%] | 23 |
Improvements ✅ (primary) | -0.5% | [-0.5%, -0.5%] | 1 |
Improvements ✅ (secondary) | -0.3% | [-0.3%, -0.3%] | 1 |
All ❌✅ (primary) | 1.2% | [-0.5%, 2.0%] | 9 |
Likely related to fixing an issue around LLD discovery, see https://github.com/rust-lang/rust/pull/125463#issuecomment-2129069901. Bugfix warrants spending a bit more time.
Improvements
Move the checks for Arguments constructors to inline const #125518 (Comparison Link)
(instructions:u) | mean | range | count |
---|---|---|---|
Regressions ❌ (primary) | - | - | 0 |
Regressions ❌ (secondary) | - | - | 0 |
Improvements ✅ (primary) | -0.5% | [-0.7%, -0.3%] | 5 |
Improvements ✅ (secondary) | -0.5% | [-0.9%, -0.4%] | 7 |
All ❌✅ (primary) | -0.5% | [-0.7%, -0.3%] | 5 |
Remove DefId
from EarlyParamRegion
#125468 (Comparison Link)
(instructions:u) | mean | range | count |
---|---|---|---|
Regressions ❌ (primary) | - | - | 0 |
Regressions ❌ (secondary) | - | - | 0 |
Improvements ✅ (primary) | -0.4% | [-0.9%, -0.2%] | 48 |
Improvements ✅ (secondary) | -0.8% | [-2.0%, -0.3%] | 19 |
All ❌✅ (primary) | -0.4% | [-0.9%, -0.2%] | 48 |
[perf] Delay the construction of early lint diag structs #125410 (Comparison Link)
(instructions:u) | mean | range | count |
---|---|---|---|
Regressions ❌ (primary) | - | - | 0 |
Regressions ❌ (secondary) | - | - | 0 |
Improvements ✅ (primary) | -0.5% | [-0.7%, -0.3%] | 12 |
Improvements ✅ (secondary) | -2.0% | [-2.8%, -1.2%] | 13 |
All ❌✅ (primary) | -0.5% | [-0.7%, -0.3%] | 12 |
Mixed
Follow-up fixes to report_return_mismatched_types
#123812 (Comparison Link)
(instructions:u) | mean | range | count |
---|---|---|---|
Regressions ❌ (primary) | 1.1% | [0.6%, 1.8%] | 3 |
Regressions ❌ (secondary) | 0.2% | [0.1%, 0.2%] | 6 |
Improvements ✅ (primary) | - | - | 0 |
Improvements ✅ (secondary) | -1.1% | [-1.1%, -1.1%] | 2 |
All ❌✅ (primary) | 1.1% | [0.6%, 1.8%] | 3 |
Seems to be limited primarily to one scenario in regex, with lots of new metadata decoding. Asked for follow-up by PR author.
Make early lints translatable #124417 (Comparison Link)
(instructions:u) | mean | range | count |
---|---|---|---|
Regressions ❌ (primary) | 1.5% | [0.2%, 6.3%] | 66 |
Regressions ❌ (secondary) | 0.4% | [0.3%, 0.5%] | 7 |
Improvements ✅ (primary) | - | - | 0 |
Improvements ✅ (secondary) | -0.7% | [-1.1%, -0.6%] | 12 |
All ❌✅ (primary) | 1.5% | [0.2%, 6.3%] | 66 |
Regressions are partially mitigated by #125410 (see earlier in the report). Further follow-up is expected to investigate closing remaining gap (https://github.com/rust-lang/rust/pull/124417#issuecomment-2126056523).
Panic directly in Arguments::new* instead of recursing #117804 (Comparison Link)
(instructions:u) | mean | range | count |
---|---|---|---|
Regressions ❌ (primary) | 0.3% | [0.3%, 0.3%] | 2 |
Regressions ❌ (secondary) | 0.4% | [0.1%, 0.9%] | 9 |
Improvements ✅ (primary) | -0.5% | [-0.5%, -0.5%] | 1 |
Improvements ✅ (secondary) | - | - | 0 |
All ❌✅ (primary) | 0.0% | [-0.5%, 0.3%] | 3 |
Regressions are likely to be inliner noise, not meaningful changes.
Rollup of 7 pull requests #125456 (Comparison Link)
(instructions:u) | mean | range | count |
---|---|---|---|
Regressions ❌ (primary) | - | - | 0 |
Regressions ❌ (secondary) | 0.3% | [0.2%, 0.4%] | 8 |
Improvements ✅ (primary) | -0.3% | [-0.4%, -0.3%] | 2 |
Improvements ✅ (secondary) | -0.5% | [-0.9%, -0.4%] | 7 |
All ❌✅ (primary) | -0.3% | [-0.4%, -0.3%] | 2 |
Seems plausible that the regression is due to #124389 (since it affected derive macros). But also seems not worth further investigation given it’s a secondary benchmark and minimal impact. Marked as triaged.
Add assert_unsafe_precondition to unchecked_{add,sub,neg,mul,shl,shr} methods #121571 (Comparison Link)
(instructions:u) | mean | range | count |
---|---|---|---|
Regressions ❌ (primary) | 1.5% | [0.2%, 3.4%] | 27 |
Regressions ❌ (secondary) | 1.8% | [0.4%, 3.8%] | 5 |
Improvements ✅ (primary) | -0.9% | [-2.5%, -0.3%] | 5 |
Improvements ✅ (secondary) | - | - | 0 |
All ❌✅ (primary) | 1.1% | [-2.5%, 3.4%] | 32 |
Regressions are likely expected as we’re lowering more code that’s late-removed.
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