T-compiler Meeting Agenda 2023-09-07
Announcements
- Rust stable 1.72.1 is planned for Sept. 14th (Zulip thread)
- Compiler Team Steering Meeting - Review of open T-compiler RFCs (issue) at time:2023-09-08T10:00:00-04:00
- Types team meeting at time:2023-09-11T10:00:00-04:00
- [Types] Rotating new solver / formality / polonius deep dive at time:2023-09-11T11:00:00-04:00
- 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)
- wg-async weekly: Sprint goal work session at time:2023-09-07T12:00:00-04:00
- AFIT/RPITIT Impl Triage at time:2023-09-07T16:00:00-04:00
- wg-rls-2.0 steering meeting at time:2023-09-11T11:00:00-04:00
MCPs/FCPs
- New MCPs (take a look, see if you like them!)
- “Allow overriding default codegen backend on a per-target basis” compiler-team#670
- “Add infrastructure to “compute the ABI of a Rust type, described as a C type”” compiler-team#672
- Old MCPs (stale MCP might be closed as per MCP procedure)
- None at this time
- Old MCPs (not seconded, take a look)
- “Consistently use “region” terminology in later stages of the compiler” compiler-team#634 (last review activity: 3 months ago)
- “Add a new
--build-id
flag to rustc” compiler-team#635 (last review activity: 3 months ago) - “Simplify and improve explicitness of the check-cfg syntax” compiler-team#636 (last review activity: 2 months ago)
- “Add support for visionOS targets” compiler-team#642 (last review activity: about 5 days ago)
- “Add illumos Tier3 targets” compiler-team#644 (last review activity: about 44 days ago)
- “Promote loongarch64-unknown-none* to Tier 2” compiler-team#664(last review activity: about 20 days ago)
- “Match the behavior of
strip
andsplit-debuginfo
across platforms” compiler-team#669(last review activity: about 2 days ago)
- Pending FCP requests (check your boxes!)
- “Retire the mailing list and make all decisions on zulip” compiler_team#649 (Zulip)
- “Tracking issue for dyn upcasting coercion” rust#65991
- “stabilize combining +bundle and +whole-archive link modifiers” rust#113301
- “Support overriding
warnings
level for a specific lint via command line” rust#113307
- Things in FCP (make sure you’re good with it)
- “Add a blanket flag to enable/disable codegen UB checks” compiler_team#625 (Zulip)
- “Add support for Zephyr OS” compiler_team#629 (Zulip)
- “Report all lints, even if other errors already occurred.” compiler_team#633 (Zulip)
- “Add option to pass environment variables” compiler_team#653 (Zulip)
- “Add tidy rule against
issue-[0-9]+.rs
tests” compiler_team#658 (Zulip) - “Add
builtin:$path
option to the-L
flag” compiler_team#659 (Zulip) - “Support larger sizes in rmeta tables and incr comp alloc offsets” compiler_team#666 (Zulip)
- “Make unknown/renamed/removed lints passed via command line respect lint levels” compiler_team#667 (Zulip)
- “Condemn
asmjs-unknown-emscripten
to push a boulder up a hill for eternity” compiler_team#668 (Zulip) - “Create a binary-size working group” compiler_team#671 (Zulip)
- “Stabilize
PATH
option for--print KIND=PATH
” rust#114183
- Accepted MCPs
- No new accepted proposals this time.
- Finalized FCPs (disposition merge)
- No new finished FCP (disposition merge) this time.
WG checkins
- @_WG-rustc-dev-guide by @Santiago Pastorino and @Yuki Okushi|217081 (latest checkin):
Checkin text
Backport nominations
T-compiler stable / T-compiler beta
- :beta: [1.73.0-beta.4] “fix version for abi_thiscall to 1.73.0, which was forgotten to change when stabilized and (later) moved to beta” rust#115446
- updates the
abi_thiscall
version
- updates the
- :beta: [1.73.0-beta.4] “Don’t require
Drop
for[PhantomData<T>; N]
whereN
andT
are generic, ifT
requiresDrop
” rust#115527- patch authored by @oli
- fixes #115403 and #115410, probably
P-high
regressions
- :beta: [1.73.0-beta.4] “implied bounds: do not ICE on unconstrained region vars” rust#115559
- patch authored by @lcnr
- fixes #112832 (unclear the priority evaluation, comment)
- also nominated for stable backport
- :beta: “Remove assert that checks type equality” rust#115215
- still open and being reviewed. nominated by @apiraino since already candidate for backports (comment)
- :stable: [1.72.1] “implied bounds: do not ICE on unconstrained region vars” rust#115559
PRs S-waiting-on-team
- “Add new simpler and more explicit syntax for check-cfg” rust#111072
- MCP compiler-team#636 is not seconded (not a lot of discussion either)
- This PR probably needs a look from someone other than @Urgau / @Vadim Petrochenkov
- issue was discussed a while ago in a prev. meeting
- Other issues in progress or waiting on other teams
Issues of Note
Short Summary
- 3 T-compiler P-critical issues
- 60 T-compiler P-high issues
- 1 P-critical, 0 P-high, 0 P-medium, 1 P-low regression-from-stable-to-beta
- 0 P-critical, 1 P-high, 2 P-medium, 2 P-low regression-from-stable-to-nightly
- 3 P-critical, 39 P-high, 100 P-medium, 18 P-low regression-from-stable-to-stable
P-critical
Note: Rust stable 1.72.1 is planned for Sept. 14th
- “ICE: unexpected initial operand type.” rust#114858
- Originated in #113108 (comment)
- Should be addressed by #115215, authored by @Onur (onur-ozkan), being reviewed by @Michael Goulet (compiler-errors) (PR likely candidate for a backport)
- “ScalarReplacementOfAggregates causes rustc to emit invalid LLVM debuginfo (and sometimes rustc segfaults)” rust#115113
- addressed in #115113, just waiting for the next beta (comment)
- “Failed assert
2 != 2
after update to LLVM 17” rust#115385- regressed in the latest LLVM17 upgrade
- fixed by upstream llvm-project#65195 (comment)
- “RPIT hidden types can be ill-formed” rust#114728
- hits some real world crates (comment)
- should be addressed by #114470 by @Michael Goulet (compiler-errors), subject to RFC t-type consensus
- a parallel effort to fix in #114933 by @aliemjay, being reviewed by @lcnr (suggests waiting for this PR, comment)
- No
P-critical
issues forT-rustdoc
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
A lot of spurious noise this week from a few benchmarks (bitmaps-3.1.0, libc, and even cargo-0.60.0 at a few points). Beyond that, we had a few small improvements associated with the trait system and with parallel-rustc.
Triage done by @pnkfelix. Revision range: cedbe5c7..15e52b05
Summary:
(instructions:u) | mean | range | count |
---|---|---|---|
Regressions (primary) | 0.6% | [0.2%, 1.2%] | 11 |
Regressions (secondary) | 1.0% | [0.2%, 2.0%] | 40 |
Improvements (primary) | -1.9% | [-10.2%, -0.3%] | 69 |
Improvements (secondary) | -1.5% | [-3.7%, -0.4%] | 26 |
All (primary) | -1.5% | [-10.2%, 1.2%] | 80 |
4 Regressions, 7 Improvements, 8 Mixed; 2 of them in rollups 66 artifact comparisons made in total
Regressions
Adapt table sizes to the contents, accommodating u64 rmeta offsets #113542 (Comparison Link)
(instructions:u) | mean | range | count |
---|---|---|---|
Regressions (primary) | 0.5% | [0.2%, 1.2%] | 11 |
Regressions (secondary) | 0.8% | [0.2%, 1.3%] | 26 |
Improvements (primary) | - | - | 0 |
Improvements (secondary) | - | - | 0 |
All (primary) | 0.5% | [0.2%, 1.2%] | 11 |
- already marked as triaged.
Use conditional synchronization for Lock #111713 (Comparison Link)
(instructions:u) | mean | range | count |
---|---|---|---|
Regressions (primary) | 2.3% | [2.3%, 2.3%] | 1 |
Regressions (secondary) | - | - | 0 |
Improvements (primary) | - | - | 0 |
Improvements (secondary) | - | - | 0 |
All (primary) | 2.3% | [2.3%, 2.3%] | 1 |
- the measured regression appears spurious
- marked as triaged
update Miri #115496 (Comparison Link)
(instructions:u) | mean | range | count |
---|---|---|---|
Regressions (primary) | 0.3% | [0.2%, 0.4%] | 4 |
Regressions (secondary) | 0.5% | [0.3%, 0.6%] | 5 |
Improvements (primary) | - | - | 0 |
Improvements (secondary) | - | - | 0 |
All (primary) | 0.3% | [0.2%, 0.4%] | 4 |
- believe to be spurious, marking as triaged
Rollup of 5 pull requests #115553 (Comparison Link)
(instructions:u) | mean | range | count |
---|---|---|---|
Regressions (primary) | 0.7% | [0.7%, 0.8%] | 6 |
Regressions (secondary) | - | - | 0 |
Improvements (primary) | - | - | 0 |
Improvements (secondary) | - | - | 0 |
All (primary) | 0.7% | [0.7%, 0.8%] | 6 |
- believe to be spurious, marking as triaged
Improvements
Don’t record spans for predicates in coherence #115392 (Comparison Link)
(instructions:u) | mean | range | count |
---|---|---|---|
Regressions (primary) | - | - | 0 |
Regressions (secondary) | - | - | 0 |
Improvements (primary) | -1.1% | [-2.5%, -0.3%] | 18 |
Improvements (secondary) | -0.8% | [-1.0%, -0.2%] | 8 |
All (primary) | -1.1% | [-2.5%, -0.3%] | 18 |
- undoes regression introduced by PR 115392
Use OnceLock
for SingleCache
#115422 (Comparison Link)
(instructions:u) | mean | range | count |
---|---|---|---|
Regressions (primary) | - | - | 0 |
Regressions (secondary) | - | - | 0 |
Improvements (primary) | -0.4% | [-0.4%, -0.4%] | 2 |
Improvements (secondary) | -0.5% | [-0.6%, -0.3%] | 8 |
All (primary) | -0.4% | [-0.4%, -0.4%] | 2 |
Fall through when resolving elided assoc const lifetimes #115429 (Comparison Link)
(instructions:u) | mean | range | count |
---|---|---|---|
Regressions (primary) | - | - | 0 |
Regressions (secondary) | - | - | 0 |
Improvements (primary) | -1.0% | [-1.5%, -0.6%] | 7 |
Improvements (secondary) | - | - | 0 |
All (primary) | -1.0% | [-1.5%, -0.6%] | 7 |
Don’t manually compute param indices when adding implicit Sized
and ConstParamHasTy
#115361 (Comparison Link)
(instructions:u) | mean | range | count |
---|---|---|---|
Regressions (primary) | - | - | 0 |
Regressions (secondary) | - | - | 0 |
Improvements (primary) | -0.3% | [-0.5%, -0.2%] | 5 |
Improvements (secondary) | -0.5% | [-0.6%, -0.4%] | 2 |
All (primary) | -0.3% | [-0.5%, -0.2%] | 5 |
Encode DepKind as u16 #115391 (Comparison Link)
(instructions:u) | mean | range | count |
---|---|---|---|
Regressions (primary) | - | - | 0 |
Regressions (secondary) | - | - | 0 |
Improvements (primary) | -0.3% | [-0.3%, -0.3%] | 5 |
Improvements (secondary) | -0.3% | [-0.3%, -0.3%] | 3 |
All (primary) | -0.3% | [-0.3%, -0.3%] | 5 |
Move RawOsError defination to sys #115493 (Comparison Link)
(instructions:u) | mean | range | count |
---|---|---|---|
Regressions (primary) | - | - | 0 |
Regressions (secondary) | - | - | 0 |
Improvements (primary) | -0.6% | [-0.6%, -0.6%] | 3 |
Improvements (secondary) | - | - | 0 |
All (primary) | -0.6% | [-0.6%, -0.6%] | 3 |
- (I suspect this is spurious)
read_via_copy: don’t prematurely optimize away the read #115531 (Comparison Link)
(instructions:u) | mean | range | count |
---|---|---|---|
Regressions (primary) | - | - | 0 |
Regressions (secondary) | - | - | 0 |
Improvements (primary) | -0.7% | [-0.7%, -0.7%] | 5 |
Improvements (secondary) | - | - | 0 |
All (primary) | -0.7% | [-0.7%, -0.7%] | 5 |
- (I suspect this is spurious)
Mixed
interpret: fix projecting into an unsized field of a local #114483 (Comparison Link)
(instructions:u) | mean | range | count |
---|---|---|---|
Regressions (primary) | - | - | 0 |
Regressions (secondary) | 2.0% | [1.9%, 2.1%] | 6 |
Improvements (primary) | -2.2% | [-2.2%, -2.2%] | 1 |
Improvements (secondary) | -0.4% | [-0.4%, -0.4%] | 3 |
All (primary) | -2.2% | [-2.2%, -2.2%] | 1 |
- Ralf notes: “Regressions only affect our ctfe stress test, so it’s likely some exaggerated consequence of a tiny change.”
- marked as triaged
Lower Or
pattern without allocating place #111752 (Comparison Link)
(instructions:u) | mean | range | count |
---|---|---|---|
Regressions (primary) | 0.4% | [0.2%, 1.0%] | 8 |
Regressions (secondary) | 0.9% | [0.5%, 1.6%] | 21 |
Improvements (primary) | -1.0% | [-3.7%, -0.3%] | 10 |
Improvements (secondary) | -0.4% | [-0.5%, -0.3%] | 3 |
All (primary) | -0.3% | [-3.7%, 1.0%] | 18 |
- nnethercote notes: “Performance-wise, icounts/cycles/wall-times have a mix of wins and losses that more or less balance out. But binary size has lots of wins, which is nice.”
- marked as triaged
Skip rendering metadata strings from include_str!/include_bytes! #115286 (Comparison Link)
(instructions:u) | mean | range | count |
---|---|---|---|
Regressions (primary) | 0.3% | [0.3%, 0.3%] | 1 |
Regressions (secondary) | 0.4% | [0.3%, 0.7%] | 6 |
Improvements (primary) | -2.9% | [-10.3%, -0.3%] | 28 |
Improvements (secondary) | -2.6% | [-3.7%, -1.7%] | 9 |
All (primary) | -2.8% | [-10.3%, 0.3%] | 29 |
- saethlin notes: “Regressions look like recovery from a spurious improvement in the previous run, and are way less significant than the improvements.”
- already marked as triaged
bootstrap: use git merge-base for LLVM CI download logic #115409 (Comparison Link)
(instructions:u) | mean | range | count |
---|---|---|---|
Regressions (primary) | 1.0% | [0.6%, 1.5%] | 7 |
Regressions (secondary) | - | - | 0 |
Improvements (primary) | -0.4% | [-0.4%, -0.4%] | 1 |
Improvements (secondary) | -0.4% | [-0.5%, -0.3%] | 2 |
All (primary) | 0.8% | [-0.4%, 1.5%] | 8 |
- this is a collection of spurious regressions to bitmaps-3.1.0
- see e.g. this graph and note the blip.
- marked as triaged
Add note on non-exhaustiveness when matching on str and nested non-exhaustive enums #115270 (Comparison Link)
(instructions:u) | mean | range | count |
---|---|---|---|
Regressions (primary) | 1.1% | [0.8%, 1.4%] | 6 |
Regressions (secondary) | - | - | 0 |
Improvements (primary) | - | - | 0 |
Improvements (secondary) | -0.5% | [-0.5%, -0.5%] | 1 |
All (primary) | 1.1% | [0.8%, 1.4%] | 6 |
- seems like continued spurious noise on bitmaps-3.1.0
- marked as triaged
Rollup of 5 pull requests #115518 (Comparison Link)
(instructions:u) | mean | range | count |
---|---|---|---|
Regressions (primary) | 7.1% | [0.7%, 13.6%] | 2 |
Regressions (secondary) | - | - | 0 |
Improvements (primary) | -1.1% | [-1.5%, -0.7%] | 7 |
Improvements (secondary) | - | - | 0 |
All (primary) | 0.8% | [-1.5%, 13.6%] | 9 |
- 13.6% regression to cargo-0.60.0 seems spurious (!), since it immediately returned to normal in #115491
- marked as triaged
Outline panicking code for RefCell::borrow
and RefCell::borrow_mut
#115491 (Comparison Link)
(instructions:u) | mean | range | count |
---|---|---|---|
Regressions (primary) | 1.0% | [0.6%, 1.5%] | 8 |
Regressions (secondary) | - | - | 0 |
Improvements (primary) | -6.3% | [-12.0%, -0.6%] | 2 |
Improvements (secondary) | -0.5% | [-0.6%, -0.5%] | 4 |
All (primary) | -0.4% | [-12.0%, 1.5%] | 10 |
- as lqd notes: “bitmaps and cargo opt incr-unchanged kinda look noisy atm”
- marked as triaged
Do not require associated types with Self: Sized to uphold bounds when confirming object candidate #115467 (Comparison Link)
(instructions:u) | mean | range | count |
---|---|---|---|
Regressions (primary) | 0.6% | [0.6%, 0.6%] | 2 |
Regressions (secondary) | - | - | 0 |
Improvements (primary) | -1.0% | [-1.2%, -0.8%] | 5 |
Improvements (secondary) | - | - | 0 |
All (primary) | -0.6% | [-1.2%, 0.6%] | 7 |
- all these changes (for better or for worse) look like yet more spurious noise.
- marked as triaged
Nominated Issues
- “SIGILL Illegal Instruction on PPC64” rust#110278
- from last week (notes)
- the
xvor
instruction (an AltiVec optimisation) in cargo and rustup-init binaries prevents anything to compile under PPC64 on IBM hardware (9406-520) and similar POWER5 machines (comment), that model being discontinued in 2019 - Platform is “Tier 2 with Host tools” (
powerpc64-unknown-linux-gnu
) - nomination by @Josh Stone (cuviper): do we want to reduce the default CPU target to something that supports that very old model?
- No I-compiler-nominated RFCs this time.
Oldest PRs waiting for review
- “Rebased: Mark drop calls in landing pads cold instead of noinline” rust#102099
- probably needs a second look from someone with more MSVC expertise (comment)
- “Fix ICE when trying to convert
ConstKind::Error
to usize” rust#113712(last review activity: about 46 days ago)- cc: @uwu
- “Pretty-print argument-position impl trait to name it.” rust#113955(last review activity: about 31 days ago)
- cc @Waffle Lapkin
Next week’s WG checkins
- Impl Trait initiative by @oli
- @_WG-llvm by @nagisa and @Nikita Popov
Next meetings' agenda draft: https://hackmd.io/FuBR9iC1T4ukhQ8QPFod3Q