T-compiler Meeting Agenda 2024-04-18
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
- Types Team: ITE (Impl Trait Everywhere) Triage time:2024-04-18T22:00:00+01:00
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: 3 months ago)
- concern: added-complexity-to-frontend
- “Target families for executable format” compiler-team#716 (Zulip) (last review activity: 2 months ago)
- “Promote riscv64gc-unknown-linux-musl to tier 2” compiler-team#728 (Zulip) (last review activity: about 41 days ago)
- “Skip virtual drop for !needs_drop types” compiler-team#730 (Zulip) (last review activity: about 13 days ago)
- “Add
-Zemit-thin-lto-index=<path>
to enable distributed ThinLTO users” compiler-team#735 (Zulip) (last review activity: about 13 days ago) - “Only emit forward compatible v0 symbol names with graceful degradation” compiler-team#737 (Zulip) (last review activity: about 13 days ago)
- “Partial compilation using MIR-only rlibs” compiler-team#738 (Zulip) (last review activity: about 6 days ago)
- “Add hygiene attributes to compile expanded source code” compiler-team#692 (Zulip) (last review activity: 3 months ago)
- Pending FCP requests (check your boxes!)
- “Add a new
--build-id
flag to rustc” compiler-team#635 (Zulip)- concern: other-existing-options
- concern: option-name
- “Retire the mailing list and make all decisions on zulip” compiler-team#649 (Zulip)
- concern: automatic-sync
- concern: single-point-of-failure-via-stream-archival
- “Stabilize
--env-set
option” rust#119926 - “Make casts of pointers to trait objects stricter” rust#120248
- “Add a new
- Things in FCP (make sure you’re good with it)
- “allow all command line flags to be passed multiple times, overwriting previous usages” compiler-team#731 (Zulip)
- “Policy: no discussions on T-compiler tracking issues” compiler-team#739 (Zulip)
- “Ignore
-C strip
on MSVC” rust#115120
- Accepted MCPs
- No new accepted proposals this time.
- Finalized FCPs (disposition merge)
- “Tracking Issue for RFC 3013: Checking conditional compilation at compile time” rust#82450
- “sess: stabilize
-Zrelro-level
as-Crelro-level
” rust#121694 - “stabilize
-Znext-solver=coherence
” rust#121848
- Other teams finalized FCPs
- “Stabilise inline_const” rust#104087
- “stabilize
-Znext-solver=coherence
” rust#121848
WG checkins
- @_WG-llvm by @Nikita Popov (previous checkin):
There were some LLVM patch version updates, some ABI fixes, and some changes to reduce our reliance on LLVM types (and thus LLVM layout calculations)
Backport nominations
T-compiler beta / T-compiler stable
- :beta: [1.78] “Silence
unused_imports
for redundant imports” rust#123744- Authored by @_Michael Goulet (compiler-errors) (thanks!)
- Addresses this comment from #121708, fixes a regression in #117772
- :beta: [1.78] “Stop using
HirId
for fn-like parents since closures are notOwnerNode
s” rust#123804- Authored by @_Michael Goulet (compiler-errors) (thanks!)
- Fixes #123273, a diag. regression causing an ICE (from latest beta run)
- :beta: [1.78] “Update LLVM to 1deeee3” rust#124044
- Authored by @_Quentin Dian (dianqk) (thanks!)
- Fixes #123772, regression on MIPS introduced in the last LLVM upgrade
- Diff: https://github.com/rust-lang/llvm-project/compare/af8f9eb61a2ad4ee1f2d3f46d157b93a47c6a4bf...5399a24c66cb6164cf32280e7d300488c90d5765
- LLVM 1.8.1.4 released in the meantime (comment), so probably a backport of this makes sense.
- :beta: [1.78] “Call the panic hook for non-unwind panics in proc-macros” rustc#123825
- Authored by @_Ben Kimock (Saethlin) (thanks!)
- Implements this suggestion (comment)
If a proc macro causes a non-unwinding panic, proc_macro isn’t able to catch the unwind and report the panic as a compile error by passing control back to the compiler. Our only chance to produce any diagnostic is the panic hook, so we should call it.
- 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
- 63 T-compiler P-high issues
- 0 P-critical, 1 P-high, 4 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
- None new
Unassigned P-high nightly regressions
- “nightly-2024-04-05 regression: error[E0275]: overflow evaluating the requirement” rust#123573
- Will be fixed by #123594 (last week entered in FCP), authored by @_Urgau (thanks!)
Performance logs
A quiet week, with slightly more improvements than regressions. There were a few noise spikes, but other than that nothing too interesting.
Triage done by @Kobzol. Revision range: 86b603cd..ccfcd950b
Summary:
(instructions:u) | mean | range | count |
---|---|---|---|
Regressions (primary) | 0.5% | [0.3%, 1.4%] | 9 |
Regressions (secondary) | 0.4% | [0.2%, 1.1%] | 20 |
Improvements (primary) | -0.6% | [-2.5%, -0.2%] | 41 |
Improvements (secondary) | -0.8% | [-1.4%, -0.2%] | 4 |
All (primary) | -0.4% | [-2.5%, 1.4%] | 50 |
1 Regression, 3 Improvements, 6 Mixed; 5 of them in rollups 62 artifact comparisons made in total
Regressions
Implement syntax for impl Trait
to specify its captures
explicitly (feature(precise_capturing)
) #123468 (Comparison Link)
(instructions:u) | mean | range | count |
---|---|---|---|
Regressions (primary) | 0.2% | [0.2%, 0.2%] | 5 |
Regressions (secondary) | - | - | 0 |
Improvements (primary) | - | - | 0 |
Improvements (secondary) | - | - | 0 |
All (primary) | 0.2% | [0.2%, 0.2%] | 5 |
- A tiny regression on a stress test, introduced by a new feature.
- Marked as triaged.
Improvements
Remove my scalar_copy_backend_type
optimization
attempt #123185 (Comparison Link)
(instructions:u) | mean | range | count |
---|---|---|---|
Regressions (primary) | - | - | 0 |
Regressions (secondary) | - | - | 0 |
Improvements (primary) | -0.7% | [-0.7%, -0.7%] | 4 |
Improvements (secondary) | -2.0% | [-2.7%, -1.2%] | 2 |
All (primary) | -0.7% | [-0.7%, -0.7%] | 4 |
Rollup of 8 pull requests #123823 (Comparison Link)
(instructions:u) | mean | range | count |
---|---|---|---|
Regressions (primary) | - | - | 0 |
Regressions (secondary) | - | - | 0 |
Improvements (primary) | -0.4% | [-1.1%, -0.2%] | 20 |
Improvements (secondary) | - | - | 0 |
All (primary) | -0.4% | [-1.1%, -0.2%] | 20 |
Rollup of 4 pull requests #123982 (Comparison Link)
(instructions:u) | mean | range | count |
---|---|---|---|
Regressions (primary) | - | - | 0 |
Regressions (secondary) | - | - | 0 |
Improvements (primary) | -0.6% | [-0.8%, -0.3%] | 8 |
Improvements (secondary) | -0.3% | [-0.3%, -0.3%] | 1 |
All (primary) | -0.6% | [-0.8%, -0.3%] | 8 |
Mixed
Only collect mono items from reachable blocks #123272 (Comparison Link)
(instructions:u) | mean | range | count |
---|---|---|---|
Regressions (primary) | 0.4% | [0.2%, 1.5%] | 8 |
Regressions (secondary) | - | - | 0 |
Improvements (primary) | -0.8% | [-1.5%, -0.3%] | 6 |
Improvements (secondary) | - | - | 0 |
All (primary) | -0.1% | [-1.5%, 1.5%] | 14 |
- Fixed an important bug, and results were mixed anyway.
Rollup of 7 pull requests #123725 (Comparison Link)
(instructions:u) | mean | range | count |
---|---|---|---|
Regressions (primary) | 0.2% | [0.2%, 0.2%] | 2 |
Regressions (secondary) | 0.9% | [0.2%, 2.6%] | 7 |
Improvements (primary) | -0.4% | [-0.6%, -0.2%] | 2 |
Improvements (secondary) | -0.6% | [-0.6%, -0.6%] | 1 |
All (primary) | -0.1% | [-0.6%, 0.2%] | 4 |
- The largest regressions were noise, the rest was mixed.
- Marked as triaged.
Rollup of 8 pull requests #123762 (Comparison Link)
(instructions:u) | mean | range | count |
---|---|---|---|
Regressions (primary) | 0.4% | [0.2%, 0.5%] | 2 |
Regressions (secondary) | 0.5% | [0.3%, 1.7%] | 9 |
Improvements (primary) | - | - | 0 |
Improvements (secondary) | -2.8% | [-4.2%, -1.4%] | 2 |
All (primary) | 0.4% | [0.2%, 0.5%] | 2 |
- The largest regression on the
coercions
benchmark is noise. - The rest were small regressions on
doc
benchmarks. - Marked as triaged.
Rollup of 4 pull requests #123884 (Comparison Link)
(instructions:u) | mean | range | count |
---|---|---|---|
Regressions (primary) | 0.4% | [0.4%, 0.4%] | 1 |
Regressions (secondary) | - | - | 0 |
Improvements (primary) | -1.0% | [-1.0%, -1.0%] | 1 |
Improvements (secondary) | -0.3% | [-0.3%, -0.3%] | 6 |
All (primary) | -0.3% | [-1.0%, 0.4%] | 2 |
- The single regression was immediately reverted, the rest were small improvements.
- Marked as triaged.
Re-enable has_thread_local
for
i686-msvc #123257 (Comparison Link)
(instructions:u) | mean | range | count |
---|---|---|---|
Regressions (primary) | - | - | 0 |
Regressions (secondary) | 0.3% | [0.3%, 0.4%] | 6 |
Improvements (primary) | -0.3% | [-0.3%, -0.3%] | 1 |
Improvements (secondary) | - | - | 0 |
All (primary) | -0.3% | [-0.3%, -0.3%] | 1 |
- This has to be noise, since the PR did not modify x64 Linux.
Get rid of USIZE_MARKER
in formatting
infrastructure #123819 (Comparison Link)
(instructions:u) | mean | range | count |
---|---|---|---|
Regressions (primary) | 0.6% | [0.4%, 0.9%] | 2 |
Regressions (secondary) | 1.5% | [1.5%, 1.5%] | 1 |
Improvements (primary) | -0.4% | [-0.6%, -0.3%] | 5 |
Improvements (secondary) | - | - | 0 |
All (primary) | -0.1% | [-0.6%, 0.9%] | 7 |
- More improvements than regressions.
Nominated Issues
- “Relocate coroutine upvars into Unresumed state” rust#120168
- Nominated by Felix (comment)
- Context of this PR (comment):
This PR is an attempt to address the async/coroutine size issue by allowing independent def-use/liveness analysis on individual upvars in coroutines. It has appeared to address partially the size doubling issue introduced by the use of upvars.
- Reason for nomination:
Are we okay with the
upvars: Option<(Local, usize)>
this change is adding to various dataflow analyses, at least in the short term so that we can make forward progress on the problem of generator size explosion? Or wait to land this PR until after we have a discussion in any of {dataflow, MIR representation, generator representation} to try to figure out the “right answer”.
- No I-compiler-nominated RFCs this time.
Oldest PRs waiting for review
- “Introduce perma-unstable
wasm-c-abi
flag” rust#117919- Does anybody know how to reach out for the PR reviewer (GH user
b-naber
)? Seems this PR is languishing a bit and has good potential
- Does anybody know how to reach out for the PR reviewer (GH user
- “tidy watcher” rust#114209
- cc @Wesley Wiser
- “Fix gce ICE when encountering ill-formed consts” rust#119060
- cc @Michael Goulet (compiler-errors) (PR author also needs some input)
- “Issue 83060 fix” rust#119798 (last review activity: 3 months ago)
- cc @Wesley Wiser
Next week’s WG checkins
- @_WG-mir-opt by @oli
- @_T-rust-analyzer by @Lukas Wirth
Next meetings' agenda draft: hackmd link