T-compiler Meeting Agenda 2023-02-16
Announcements
- T-compiler: dealing with PR review latency (compiler-team#589) at time:2023-02-17T10:00:00-05:00
- Reminder: if you see a PR/issue that seems like there might be legal implications due to copyright/IP/etc, please let the Core team know (or at least message @pnkfelix or @Wesley Wiser so we can pass it along).
- Question from @jyn: Does T-compiler want to be on the review rotation for PRs modifying
compiletest
?- (this fell through the cracks, sorry!)
- Some context at this Zulip topic
- Also comment from @__simulacrum
Other WG meetings (calendar link)
- wg-async weekly at time:2023-02-16T12:00:00-05:00
- wg-rls-2.0 weekly sync-up at time:2023-02-20T10:00:00-05:00
- wg-debugging triage meeting at time:2023-02-20T10:00:00-05:00
- [Types team] Shallow subtyping weekly meeting at time:2023-02-20T10:00:00-05:00
- [wg-traits] GATs Sync at time:2023-02-20T16:00:00-05:00
MCPs/FCPs
- New MCPs (take a look, see if you like them!)
- “Clone “copyables” using copy codegen” compiler-team#588
- Old MCPs (stale MCP might be closed as per MCP procedure)
- None at this time
- Old MCPs (not seconded, take a look)
- “Lower baseline expectations for i686 unix-like targets” compiler-team#548 (last review activity: about 2 days ago)
- “configurable rustc timeout for compiletest tests” compiler-team#554 (last review activity: about 34 days ago)
- “Rustc Contributor Program Major Change Proposal” compiler-team#557 (last review activity: about 35 days ago)
- “
needs_drop
as an auto trait” compiler-team#575 (last review activity: about 42 days ago) - “Add builtin# for compiler-intrinsic syntax” compiler-team#580 (last review activity: about 22 days ago)
- “Switch PLT default to “yes” for all targets except x86_64.” compiler-team#581 (last review activity: about 12 days ago)
- “Synthetic Partial Drop Glue” compiler-team#585 (last review activity: about 12 days ago)
- Pending FCP requests (check your boxes!)
- “Make
unused_allocation
lint againstBox::new
too” rust#104363 - “Add deployment-target –print flag for Apple targets” rust#105354
- “Update the version of musl used on
*-linux-musl
targets to 1.2.3” rust#107129
- “Make
- Things in FCP (make sure you’re good with it)
- " Promote
i586-unknown-linux-gnu
to Tier 2 with Host Tools " compiler-team#543 - “Store ICE backtraces to disk and point end users at the file location” compiler-team#578
- “Teach
rustc
to use OSC8 on nightly / Embedded links in terminal output” compiler-team#587 - “Opportunistically show code snippet on panic” compiler-team#591
- " Promote
- Accepted MCPs
- “New Tier 3 Targets for Trusty OS” compiler-team#582
- “MCP: Resolve documentation links in rustc and store the results in metadata” compiler-team#584
- Finalized FCPs (disposition merge)
- “fix: Unexpected trait bound not satisfied in HRTB and Associated Type” rust#103695
- “rework min_choice algorithm of member constraints” rust#105300
- “Relax ordering rules for
asm!
operands” rust#105798 - “Support
true
andfalse
as boolean flag params” rust#107043 - “rustdoc: compute maximum Levenshtein distance based on the query” rust#107141
- “rustdoc: remove inconsistently-present sidebar tooltips” rust#107490
WG checkins
-
@_WG-rls2.0 by @Lukas Wirth (previous checkin):
Lukas writes: We got a PR that implements a bit of MIR for r-a for better const evaluation and we are currently looking into making our macro spans work similar to rustc’s as our current span representation is currently not powerful enough (its basically just IDs assigned to tokens, instead of text ranges).
-
@_WG-self-profile by @mw and @Wesley Wiser (previous checkin):
Wesley writes: we shipped a new release with some bug fixes https://github.com/rust-lang/measureme/releases/tag/10.1.1
Backport nominations
T-compiler stable / T-compiler beta
- No beta nominations for
T-compiler
this time. - No stable nominations for
T-compiler
this time.
T-rustdoc stable / T-rustdoc beta
- No beta nominations for
T-rustdoc
this time. - No stable nominations for
T-rustdoc
this time.
:back: / :shrug: / :hand:
PRs S-waiting-on-team
- Other issues in progress or waiting on other teams
Oldest PRs waiting for review
- “Preserve DebugInfo in DeadStoreElimination.” rust#106852 (last review activity: about 29 days ago)
- cc: @Jak{e,ob} Degen
- “Implement SSA-based reference propagation” rust#106285 (last review activity: about 29 days ago)
- PR r+d by @_oli, so probably cc: @RalfJ and @Jak{e,ob} Degen?
- “Implement jump threading MIR opt” rust#107009 (last review activity: about 28 days ago)
- cc: @Wesley Wiser (new assignee)
- “rustc_codegen_ssa: Set e_flags for AVR architecture based on target CPU” rust#106619
- probably waiting for another round of review cc: @bjorn3 and github user @rahix (not on Zulip)
- “enable
rust_2018_idioms
lint group for doctests” rust#106621 (last review activity: about 21 days ago)- mostly
T-libs
but cc: @nils (Nilstrieb)
- mostly
Short Summary
- 2 T-compiler P-critical issues
- 53 T-compiler P-high issues
- 1 P-critical, 3 P-high, 3 P-medium, 0 P-low regression-from-stable-to-beta
- 0 P-critical, 1 P-high, 3 P-medium, 1 P-low regression-from-stable-to-nightly
- 3 P-critical, 30 P-high, 92 P-medium, 8 P-low regression-from-stable-to-stable
P-critical
- “Windows builds fail to link C++ static library” rust#107162
- mentioned last week
- fixed by reverting the thin archiver reading (#107609)
- “1.67 regression with
……::{opaque#0}<'_> does not live long enough
error” rust#107516- mentioned last week
- needs MCVE, @Michael Goulet (compiler-errors) will take point from @pnkfelix on that in short term
- No
P-critical
issues forT-types
at this time.
- No
P-critical
issues forT-rustdoc
at this time.
Other P-high issues
- “Miscompilation: Equal pointers comparing as unequal” rust#107975
- Unsoundness bug, not a regression, not really new it seems (from this comment)
- many reproducibles are piling on, seem to suggest an issue on LLVM side
- should it be prioritized/investigated?
P-high regressions
- “Regression in Beta/Nightly: implementation of
Trait
is not general enough” rust#106630- #106759 was backported (IIUC should also adjust the tests): needs more work or can be closed?
Unassigned P-high nightly regressions
- No unassigned
P-high
nightly regressions this time.
Performance logs
Overall a good week for performance with 77 real world crates benchmarks showing an average of nearly 1% performance improvement. Unfortunately, the largest regressions are not yet fully understood and require additional investigation. Of particular interest were some large improvements in doc builds due to storing additional metadata. However, this change might cause some crates to compile slightly slower in incremental check builds, but this is still being investigated.
Triage done by @rylev. Revision range: e4dd9edb..9bb6e60
Summary:
(instructions:u) | mean | range | count |
---|---|---|---|
Regressions (primary) | 1.4% | [0.4%, 11.0%] | 13 |
Regressions (secondary) | 0.8% | [0.2%, 1.6%] | 4 |
Improvements (primary) | -1.4% | [-7.9%, -0.3%] | 64 |
Improvements (secondary) | -2.1% | [-5.6%, -0.3%] | 73 |
All (primary) | -0.9% | [-7.9%, 11.0%] | 77 |
3 Regressions, 4 Improvements, 9 Mixed; ??? of them in rollups 46 artifact comparisons made in total
Regressions
Rollup of 6 pull requests #107870 (Comparison Link)
(instructions:u) | mean | range | count |
---|---|---|---|
Regressions (primary) | 0.7% | [0.5%, 1.0%] | 7 |
Regressions (secondary) | - | - | 0 |
Improvements (primary) | - | - | 0 |
Improvements (secondary) | - | - | 0 |
All (primary) | 0.7% | [0.5%, 1.0%] | 7 |
Implement deferred_projection_equality
for erica solver #107507 (Comparison Link)
(instructions:u) | mean | range | count |
---|---|---|---|
Regressions (primary) | 0.8% | [0.7%, 1.0%] | 6 |
Regressions (secondary) | - | - | 0 |
Improvements (primary) | - | - | 0 |
Improvements (secondary) | - | - | 0 |
All (primary) | 0.8% | [0.7%, 1.0%] | 6 |
rustdoc: Remove cache for preprocessed markdown links #107933 (Comparison Link)
(instructions:u) | mean | range | count |
---|---|---|---|
Regressions (primary) | 1.2% | [1.2%, 1.2%] | 1 |
Regressions (secondary) | 3.9% | [3.9%, 3.9%] | 1 |
Improvements (primary) | - | - | 0 |
Improvements (secondary) | - | - | 0 |
All (primary) | 1.2% | [1.2%, 1.2%] | 1 |
- Deemed an acceptable trade off for the simplification it brings.
Improvements
ReErased regions are local #107688 (Comparison Link)
(instructions:u) | mean | range | count |
---|---|---|---|
Regressions (primary) | - | - | 0 |
Regressions (secondary) | - | - | 0 |
Improvements (primary) | -0.8% | [-1.2%, -0.3%] | 8 |
Improvements (secondary) | -1.5% | [-2.6%, -0.4%] | 6 |
All (primary) | -0.8% | [-1.2%, -0.3%] | 8 |
Rollup of 8 pull requests #107811 (Comparison Link)
(instructions:u) | mean | range | count |
---|---|---|---|
Regressions (primary) | 0.6% | [0.6%, 0.6%] | 1 |
Regressions (secondary) | - | - | 0 |
Improvements (primary) | -0.8% | [-1.4%, -0.2%] | 7 |
Improvements (secondary) | -3.4% | [-4.2%, -1.6%] | 7 |
All (primary) | -0.6% | [-1.4%, 0.6%] | 8 |
Rollup of 9 pull requests #107828 (Comparison Link)
(instructions:u) | mean | range | count |
---|---|---|---|
Regressions (primary) | - | - | 0 |
Regressions (secondary) | - | - | 0 |
Improvements (primary) | -1.3% | [-1.4%, -1.2%] | 2 |
Improvements (secondary) | -3.6% | [-4.1%, -3.2%] | 6 |
All (primary) | -1.3% | [-1.4%, -1.2%] | 2 |
Reduce interning #107869 (Comparison Link)
(instructions:u) | mean | range | count |
---|---|---|---|
Regressions (primary) | - | - | 0 |
Regressions (secondary) | - | - | 0 |
Improvements (primary) | - | - | 0 |
Improvements (secondary) | -1.4% | [-2.6%, -0.4%] | 12 |
All (primary) | - | - | 0 |
Mixed
Rollup of 8 pull requests #107768 (Comparison Link)
(instructions:u) | mean | range | count |
---|---|---|---|
Regressions (primary) | - | - | 0 |
Regressions (secondary) | 1.7% | [1.7%, 1.7%] | 2 |
Improvements (primary) | -1.0% | [-1.5%, -0.4%] | 3 |
Improvements (secondary) | -3.7% | [-4.2%, -3.2%] | 6 |
All (primary) | -1.0% | [-1.5%, -0.4%] | 3 |
- Small number of regressions in secondary benchmarks in a rollup - I think we’re fine calling this triaged.
Update cargo #107778 (Comparison Link)
(instructions:u) | mean | range | count |
---|---|---|---|
Regressions (primary) | 1.1% | [0.4%, 1.5%] | 3 |
Regressions (secondary) | 3.3% | [1.7%, 4.4%] | 8 |
Improvements (primary) | -2.4% | [-7.7%, -0.4%] | 8 |
Improvements (secondary) | - | - | 0 |
All (primary) | -1.4% | [-7.7%, 1.5%] | 11 |
- Most of the regressions are due to noise
Optimize query_cache_hit to reduce code size of the query hot path. #107529 (Comparison Link)
(instructions:u) | mean | range | count |
---|---|---|---|
Regressions (primary) | 0.5% | [0.5%, 0.5%] | 1 |
Regressions (secondary) | - | - | 0 |
Improvements (primary) | -0.3% | [-0.4%, -0.2%] | 4 |
Improvements (secondary) | - | - | 0 |
All (primary) | -0.1% | [-0.4%, 0.5%] | 5 |
- Regression is small
Optimize TyKind::eq
. #107717 (Comparison Link)
(instructions:u) | mean | range | count |
---|---|---|---|
Regressions (primary) | 1.1% | [1.0%, 1.2%] | 2 |
Regressions (secondary) | 3.6% | [3.3%, 4.2%] | 6 |
Improvements (primary) | - | - | 0 |
Improvements (secondary) | -1.5% | [-1.6%, -1.3%] | 2 |
All (primary) | 1.1% | [1.0%, 1.2%] | 2 |
- From @nnethercote: keccak and cranelift-codegen are noisy. wg-grammar saw the expected benefit, but it’s now considered non-significant, I guess it must have been a bit noisy recently as well.
Resolve documentation links in rustc and store the results in metadata #94857 (Comparison Link)
(instructions:u) | mean | range | count |
---|---|---|---|
Regressions (primary) | 0.6% | [0.3%, 1.5%] | 28 |
Regressions (secondary) | 0.3% | [0.3%, 0.3%] | 1 |
Improvements (primary) | -2.4% | [-5.7%, -0.6%] | 17 |
Improvements (secondary) | -3.4% | [-5.2%, -0.6%] | 21 |
All (primary) | -0.6% | [-5.7%, 1.5%] | 45 |
- Landed after an MCP and some analysis of the regressions which were deemed acceptable: https://github.com/rust-lang/rust/pull/94857#issuecomment-1414293572
simplify layout calculations in rawvec #107167 (Comparison Link)
(instructions:u) | mean | range | count |
---|---|---|---|
Regressions (primary) | 0.3% | [0.3%, 0.3%] | 2 |
Regressions (secondary) | - | - | 0 |
Improvements (primary) | -0.4% | [-0.7%, -0.2%] | 11 |
Improvements (secondary) | -0.6% | [-1.4%, -0.2%] | 9 |
All (primary) | -0.3% | [-0.7%, 0.3%] | 13 |
- Improvements greatly exceed regressions here.
Reverse Timsort scan direction #107191 (Comparison Link)
(instructions:u) | mean | range | count |
---|---|---|---|
Regressions (primary) | 0.6% | [0.6%, 0.6%] | 1 |
Regressions (secondary) | 0.2% | [0.2%, 0.2%] | 2 |
Improvements (primary) | -0.4% | [-0.4%, -0.4%] | 2 |
Improvements (secondary) | - | - | 0 |
All (primary) | -0.1% | [-0.4%, 0.6%] | 3 |
- Regressions are small enough that I think we don’t need to investigate this closely.
Improve the array::map
codegen #107634 (Comparison Link)
(instructions:u) | mean | range | count |
---|---|---|---|
Regressions (primary) | - | - | 0 |
Regressions (secondary) | 0.3% | [0.3%, 0.4%] | 6 |
Improvements (primary) | - | - | 0 |
Improvements (secondary) | -0.2% | [-0.3%, -0.2%] | 4 |
All (primary) | - | - | 0 |
Perf is a wash |
rustc/rustdoc: Perform name resolver cleanups enabled by #94857 #107765 (Comparison Link)
(instructions:u) | mean | range | count |
---|---|---|---|
Regressions (primary) | 13.4% | [13.4%, 13.4%] | 1 |
Regressions (secondary) | - | - | 0 |
Improvements (primary) | -0.4% | [-0.4%, -0.4%] | 3 |
Improvements (secondary) | -0.2% | [-0.2%, -0.2%] | 1 |
All (primary) | 3.1% | [-0.4%, 13.4%] | 4 |
- Being investigated by @petrochenkov
Nominated Issues
- No I-compiler-nominated issues this time.
- No I-compiler-nominated RFCs this time.
Next week meeting
Checkins:
- @_WG-async-foundations by @nikomatsakis and @tmandry
- Generic Associated Types initiative by @Jack Huey
Agenda draft: https://hackmd.io/lPakJ5w3S1GH3V0vyAVZfQ