T-compiler Meeting Agenda 2023-08-31
Announcements
- Compiler Team Steering Meeting - External Dependency Timelines at time:2023-09-01T10: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 sprint planning at time:2023-08-31T12:00:00-04:00
- AFIT/RPITIT Impl Triage at time:2023-08-31T16:00:00-04:00
- Types team meeting at time:2023-09-04T10:00:00-04:00
- [Types] Rotating new solver / formality / polonius deep dive at time:2023-09-04T11:00:00-04:00
MCPs/FCPs
- New MCPs (take a look, see if you like them!)
- “Match the behavior of
strip
andsplit-debuginfo
across platforms” compiler-team#669
- “Match the behavior of
- 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: 2 months ago)
- “Add illumos Tier3 targets” compiler-team#644(last review activity: about 38 days ago)
- “Promote loongarch64-unknown-none* to Tier 2” compiler-team#664(last review activity: about 13 days ago)
- Pending FCP requests (check your boxes!)
- “Retire the mailing list and make all decisions on zulip” compiler-team#649
- “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) - “Stabilize
PATH
option for--print KIND=PATH
” rust#114183
- Accepted MCPs
- “Move a
wasm32-wasi-preview1-threads
target to tier 2” compiler-team#661
- “Move a
- Finalized FCPs (disposition merge)
- “stop adding dropck outlives requirements for
[T; 0]
” rust#110288 - “Allow explicit
#[repr(Rust)]
” rust#114201 - “style-guide: Add guidance for defining formatting for specific macros” rust#114919
- “stop adding dropck outlives requirements for
WG checkins
- @_T-rust-analyzer by @Lukas Wirth (previous checkin):
nothing to report at this time
Backport nominations
T-compiler stable / T-compiler beta
- :beta: [1.73] “Do not forget to pass DWARF fragment information to LLVM.” rust#115139
- Fixes (what we think is) P-critical #115113, seems to affect
- also nominated for stable backport
- :beta: [1.73] “Stop emitting non-power-of-two vectors in (non-portable-SIMD) codegen” rust#115236
- Fixes a significant perf. regression #115212 on stable by disabling (comment)
It should be very safe, since it’s only one line of product code, and all it does is disable #111999 in more cases, leaving those cases to use the same codepath as in 1.71.
- seems that the fix is working well on nightly
- :stable: [1.72.1] “Normalize before checking if local is freeze in
deduced_param_attrs
” rust#114948- Perf. regression linked to this PR (#113372) is nightly-only but this PR also fixes other perf. regressions on stable (#115216, #115207) (comment and following)
- :stable: [1.72.1] “Do not forget to pass DWARF fragment information to LLVM.” rust#115139
- this issue seems impacting. The fix missed the 1.72 train (comment so f.e. rustc 1.72.0 will be patched by Fedora in their 1.72)
- @apiraino nominated: seems a good candidate to queue into an 1.72.1
- if T-release will discuss a 1.72.1
- :stable: [1.72.1] “Stop emitting non-power-of-two vectors in (non-portable-SIMD) codegen” rust#115236
PRs S-waiting-on-team
- Other issues in progress or waiting on other teams
Issues of Note
Short Summary
- 3 T-compiler P-critical issues
- 58 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, 0 P-high, 2 P-medium, 2 P-low regression-from-stable-to-nightly
- 4 P-critical, 38 P-high, 100 P-medium, 18 P-low regression-from-stable-to-stable
P-critical
- “ICE: unexpected initial operand type.” rust#114858
- IIUC (@apiraino) the issue should be addressed (at least partially) by rust#115215 (comment)
- “ScalarReplacementOfAggregates causes rustc to emit invalid LLVM debuginfo (and sometimes rustc segfaults)” rust#115113
- Fixed by rust#115139
- “Failed assert
2 != 2
after update to LLVM 17” rust#115385- Not assigned, opened yesterday
- has eyes on it, ex. this bisection from @lqd
- “RPIT hidden types can be ill-formed” rust#114728
- UB originated in #94081
- handled by @Michael Goulet (compiler-errors) in rust#114740
- also #114933 by @aliemjay
- “ICE when building documentation: DefId(20:797 …) does not have a “object_lifetime_default”” rust#115179
- reported a crate cannot generate documentation anymore, at least since 1.72.0
- regressed in #107637
- handled by @_León Orell Liehr (fmease) in rust#115276
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 fairly quiet week, with improvements exceeding a small scattering of regressions. Memory usage and artifact size held fairly steady across the week, with no regressions or improvements.
Triage done by @simulacrum. Revision range: d4a881e1433cd10e424843353e1f939f5a798f4e..cedbe5c715c1fa9359683c5f108bed2054ac258b
Summary:
(instructions:u) | mean | range | count |
---|---|---|---|
Regressions (primary) | 1.6% | [0.3%, 2.2%] | 6 |
Regressions (secondary) | 1.4% | [0.8%, 1.9%] | 19 |
Improvements (primary) | -1.0% | [-8.0%, -0.3%] | 70 |
Improvements (secondary) | -1.6% | [-4.2%, -0.2%] | 56 |
All (primary) | -0.8% | [-8.0%, 2.2%] | 76 |
2 Regressions, 3 Improvements, 2 Mixed; 0 of them in rollups 108 artifact comparisons made in total
Regressions
rustdoc: Add lint redundant_explicit_links
#113167 (Comparison Link)
(instructions:u) | mean | range | count |
---|---|---|---|
Regressions (primary) | 0.7% | [0.4%, 0.9%] | 7 |
Regressions (secondary) | - | - | 0 |
Improvements (primary) | - | - | 0 |
Improvements (secondary) | - | - | 0 |
All (primary) | 0.7% | [0.4%, 0.9%] | 7 |
Small regression in libc compilation, primarily incremental non-doc scenarios. Unclear cause but sufficiently limited in scope that further investigation is not warranted.
Fix races conditions with SyntaxContext
decoding #115082 (Comparison Link)
(instructions:u) | mean | range | count |
---|---|---|---|
Regressions (primary) | 0.3% | [0.2%, 0.3%] | 4 |
Regressions (secondary) | 0.3% | [0.3%, 0.4%] | 7 |
Improvements (primary) | - | - | 0 |
Improvements (secondary) | - | - | 0 |
All (primary) | 0.3% | [0.2%, 0.3%] | 4 |
Some small regressions, but this is a correctness fix for parallel compilation so warranted. (Parallel compilation is not on here but the fix affects both non-parallel and parallel scenarios).
Improvements
Speed up compilation of type-system-chess
#114611 (Comparison Link)
(instructions:u) | mean | range | count |
---|---|---|---|
Regressions (primary) | - | - | 0 |
Regressions (secondary) | - | - | 0 |
Improvements (primary) | -1.7% | [-1.7%, -1.7%] | 1 |
Improvements (secondary) | -2.2% | [-4.2%, -0.7%] | 28 |
All (primary) | -1.7% | [-1.7%, -1.7%] | 1 |
Perf results look good, various small improvements in secondary benchmarks. The real driver was the type-system-chess program I mentioned above, where the walltime and max-rss changes were both about -85% when I measured them locally.
(https://github.com/rust-lang/rust/pull/114611#issuecomment-1670713067)
Add MIR validation for unwind out from nounwind functions + fixes to make validation pass #113124 (Comparison Link)
(instructions:u) | mean | range | count |
---|---|---|---|
Regressions (primary) | - | - | 0 |
Regressions (secondary) | - | - | 0 |
Improvements (primary) | -0.7% | [-1.1%, -0.5%] | 6 |
Improvements (secondary) | -0.3% | [-0.6%, -0.2%] | 3 |
All (primary) | -0.7% | [-1.1%, -0.5%] | 6 |
Update x64 Linux host compiler to LLVM 17 #114297 (Comparison Link)
(instructions:u) | mean | range | count |
---|---|---|---|
Regressions (primary) | - | - | 0 |
Regressions (secondary) | - | - | 0 |
Improvements (primary) | -0.6% | [-1.0%, -0.2%] | 41 |
Improvements (secondary) | -0.9% | [-1.5%, -0.2%] | 22 |
All (primary) | -0.6% | [-1.0%, -0.2%] | 41 |
Mixed
Remove references in VarDebugInfo #114904 (Comparison Link)
(instructions:u) | mean | range | count |
---|---|---|---|
Regressions (primary) | 0.8% | [0.3%, 1.3%] | 10 |
Regressions (secondary) | 1.4% | [1.3%, 1.4%] | 4 |
Improvements (primary) | -1.0% | [-7.3%, -0.3%] | 32 |
Improvements (secondary) | -2.1% | [-2.4%, -1.6%] | 4 |
All (primary) | -0.6% | [-7.3%, 1.3%] | 42 |
Fixed a bug in codegen. The regressions appear to be within noise range for the relevant benchmarks.
Add a new helper to avoid calling io::Error::kind #115228 (Comparison Link)
(instructions:u) | mean | range | count |
---|---|---|---|
Regressions (primary) | 0.3% | [0.3%, 0.3%] | 1 |
Regressions (secondary) | - | - | 0 |
Improvements (primary) | -0.6% | [-0.8%, -0.5%] | 3 |
Improvements (secondary) | - | - | 0 |
All (primary) | -0.4% | [-0.8%, 0.3%] | 4 |
Regression is within noise range of the relevant benchmark.
Nominated Issues
- “SIGILL Illegal Instruction on PPC64” rust#110278
- the
xvor
instruction (an AltiVec optimisation) in cargo and rustup-init binaries prevents anything to compile under PPC64 (POWER5+ class) (comment) - Issue was reported for Tier 2 family of platform (
powerpc64-unknown-linux-gnu
, discontinued in 2019, only about that particular server model, see comment) but is also visible in more recent POWER architectures - nomination by @Josh Stone (cuviper) Do we actually support this/these arch(s)?
- (issue reporter seems for now to be able to handle the situation by crosscompiling without that AltiVec opt.)
- the
- 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 (comment)
- “Fix ICE when trying to convert
ConstKind::Error
to usize” rust#113712(last review activity: about 46 days ago)- cc: @uwu
- “rustc_llvm: Link to libkstat on Solaris/SPARC” rust#114224(last review activity: about 32 days ago)
- cc: @Josh Stone (cuviper) (probably needs a bit of SPARC/Solaris context)
- “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
- @_WG-rustc-dev-guide by @Santiago Pastorino and @Yuki Okushi|217081
Next meetings' agenda draft: https://hackmd.io/Ly5571uCSUSm6Uib-f5K8Q