T-compiler Meeting Agenda 2022-11-24
Announcements
- [Types team] Shallow subtyping weekly meeting at time:2022-11-28T10: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).
Other WG meetings
- wg-async weekly at time:2022-11-24T12:00:00-05:00
- [wg-traits] GATs Sync at time:2022-11-28T16:00:00-05:00
MCPs/FCPs
- New MCPs (take a look, see if you like them!)
- No new proposals this time.
- Old MCPs (not seconded, take a look)
- “Arbitrary annotations in compiletest” compiler-team#513 (last review activity: 6 months ago)
- :loudspeaker: Stale MCP: candidate for closing in about 2 weeks
- Zulip discussion
- “Add
#[alias]
attribute to allow symbol aliasing” compiler-team#526 (last review activity: 4 months ago)- Been suggested this is more a T-lang thing. Opened #t-lang>MCP #526
- “Use RangeInclusive in SpanData instead of lo/hi” compiler-team#534 (last review activity: 2 months ago)
- " Promote
i586-unknown-linux-gnu
to Tier 2 with Host Tools " compiler-team#543 (last review activity: 2 months ago) - “Lower baseline expectations for i686 unix-like targets” compiler-team#548 (last review activity: 2 months ago)
- “MCP: Flag to disable extended error info.” compiler-team#550 (last review activity: about 57 days ago)
- “configurable rustc timeout for compiletest tests” compiler-team#554 (last review activity: 2 months ago)
- “Rustc Contributor Program Major Change Proposal” compiler-team#557 (last review activity: about 30 days ago)
- “Introduce a
#[rustc::*]
tool attribute namespace and provide a stable#[rustc::on_unimplemented]
attribute” compiler-team#560 (last review activity: about 36 days ago) - “
-Z instrument-xray
option” compiler-team#561 (last review activity: about 36 days ago) - “New tier-3 targets for OpenHarmony” compiler-team#568 (last review activity: about 4 days ago)
- “Arbitrary annotations in compiletest” compiler-team#513 (last review activity: 6 months ago)
- Pending FCP requests (check your boxes!)
- “Change
bindings_with_variant_name
to deny-by-default” rust#104154
- “Change
- Things in FCP (make sure you’re good with it)
- “Redefine dropck in terms of bound-like constructs” compiler-team#563
- “Stabilize native library modifier
verbatim
” rust#104360
- Accepted MCPs
- “Raw pointer alignment checks in debug” compiler-team#570
- “Reboot Parallel Rustc WG Proposal” compiler-team#567
- Finalized FCPs (disposition merge)
- “Make PROC_MACRO_DERIVE_RESOLUTION_FALLBACK a hard error” rust#84022
- “Make
Sized
coinductive, again” rust#100386 - “Handle projections as uncovered types during coherence check” rust#100555
- “Elaborate supertrait obligations when deducing closure signatures” rust#101834
- “make const_err a hard error” rust#102091
- “make unaligned_reference a hard error” rust#102513
- “make
order_dependent_trait_objects
show up in future-breakage reports” rust#102635 - “Stabilize raw-dylib for non-x86” rust#102793
- “Use
token::Lit
inast::ExprKind::Lit
.” rust#102944 - “Remove drop order twist of && and || and make them associative” rust#103293
- “Unreserve braced enum variants in value namespace” rust#103578
WG checkins
- @_WG-self-profile @mw and @Wesley Wiser (previous checkin):
nothing to report this cycle
Backport nominations
T-compiler beta / T-compiler stable
- :beta: “Bump the const eval step limit” rust#104782
- Fixes #103814, P-high regression, pending review from @pnkfelix
- issue was discussed last week
- this PR replaces #103877 - should the beta nomination be removed there @oli ?
T-rustdoc beta / T-rustdoc stable
- No backport nominations for
T-rustdoc
this time.
:back: / :shrug: / :hand:
PRs S-waiting-on-team
- (hidden issues in progress or waiting on other teams, details here)
Oldest PRs waiting for review
- “stop special-casing
'static
in evaluation” rust#102472 (last review activity: about 55 days ago)- waiting for some comments from @nikomatsakis
- “Track
-Cprofile-use
and-Cprofile-sample-use
value by file hash, not file path” rust#100413 (last review activity: about 47 days ago)- waiting for some comments from @nikomatsakis
- “Inferred lifetimes cleanup” rust#102673 (last review activity: about 49 days ago)
- rust highfive added T-compiler: is it the case though?
- “Fix #99684 through autoref in
write!
macro with a two-phased borrows retrocompat workaround” rust#100202 (last review activity: about 45 days ago)- anything more to review from T-compiler @eddyb ?
- “make a help text for ‘cannot find macro’ actionable” rust#102881 (last review activity: about 43 days ago)
- pending comment for @Michael Goulet (compiler-errors)
Issues of Note
Short Summary
- 0 T-compiler P-critical issues
- 56 T-compiler P-high issues
- 0 P-critical, 3 P-high, 2 P-medium, 0 P-low regression-from-stable-to-beta
- 0 P-critical, 2 P-high, 3 P-medium, 0 P-low regression-from-stable-to-nightly
- 1 P-critical, 34 P-high, 84 P-medium, 8 P-low regression-from-stable-to-stable
P-critical
- No
P-critical
issues forT-compiler
this time.
- No
P-critical
issues forT-rustdoc
this time.
P-high regressions
- (issues #102754 and #103814 recently discussed in past meetings)
Unassigned P-high nightly regressions
- No unassigned
P-high
nightly regressions this time.
Performance logs
A fairly quiet week with regressions unfortunately slightly outweighing regressions. There was not any particular change of much note. Many of the regressions were justifiable since they were for critical bug fixes.
Triage done by @rylev. Revision range: 96ddd32c..a78c9bee
Summary:
(instructions:u) | mean | range | count |
---|---|---|---|
Regressions (primary) | 0.7% | [0.2%, 3.0%] | 76 |
Regressions (secondary) | 1.5% | [0.3%, 8.4%] | 69 |
Improvements (primary) | -0.7% | [-1.8%, -0.2%] | 18 |
Improvements (secondary) | -1.4% | [-3.2%, -0.2%] | 35 |
All (primary) | 0.4% | [-1.8%, 3.0%] | 94 |
7 Regressions, 4 Improvements, 6 Mixed; 5 of them in rollups 47 artifact comparisons made in total
Regressions
Rollup of 13 pull requests #104428 (Comparison Link)
(instructions:u) | mean | range | count |
---|---|---|---|
Regressions (primary) | 1.2% | [0.3%, 3.3%] | 14 |
Regressions (secondary) | 2.1% | [0.3%, 3.3%] | 23 |
Improvements (primary) | - | - | 0 |
Improvements (secondary) | - | - | 0 |
All (primary) | 1.2% | [0.3%, 3.3%] | 14 |
Perform simple scalar replacement of aggregates (SROA) MIR opt #102570 (Comparison Link)
(instructions:u) | mean | range | count |
---|---|---|---|
Regressions (primary) | 0.2% | [0.2%, 0.2%] | 2 |
Regressions (secondary) | 0.4% | [0.2%, 0.8%] | 6 |
Improvements (primary) | - | - | 0 |
Improvements (secondary) | -1.4% | [-1.4%, -1.4%] | 1 |
All (primary) | 0.2% | [0.2%, 0.2%] | 2 |
- #104404 is the cause of the regression.
- Justification for this regression was posted #104404. Effectively this regression is taking us back to the baseline.
Attempt to reuse Vec<T>
backing storage for Rc/Arc<[T]>
#104205 (Comparison Link)
(instructions:u) | mean | range | count |
---|---|---|---|
Regressions (primary) | - | - | 0 |
Regressions (secondary) | 0.4% | [0.1%, 1.4%] | 16 |
Improvements (primary) | - | - | 0 |
Improvements (secondary) | - | - | 0 |
All (primary) | - | - | 0 |
- This was reverted in #104571
Rollup of 11 pull requests #104555 (Comparison Link)
(instructions:u) | mean | range | count |
---|---|---|---|
Regressions (primary) | 0.4% | [0.4%, 0.5%] | 2 |
Regressions (secondary) | 1.3% | [1.3%, 1.3%] | 2 |
Improvements (primary) | - | - | 0 |
Improvements (secondary) | - | - | 0 |
All (primary) | 0.4% | [0.4%, 0.5%] | 2 |
-externs is noisy at the moment, and the two doc regressions for syn and webrender are small enough to not worry about. |
Rollup of 8 pull requests #104600 (Comparison Link)
(instructions:u) | mean | range | count |
---|---|---|---|
Regressions (primary) | 0.4% | [0.2%, 0.7%] | 3 |
Regressions (secondary) | 6.1% | [1.3%, 8.8%] | 3 |
Improvements (primary) | - | - | 0 |
Improvements (secondary) | - | - | 0 |
All (primary) | 0.4% | [0.2%, 0.7%] | 3 |
- #104411 seems to be causing most of this.
- The regressions are few enough in number that I don’t think this is necessarily worth looking into.
Revert Vec/Rc storage reuse opt #104571 (Comparison Link)
(instructions:u) | mean | range | count |
---|---|---|---|
Regressions (primary) | 0.5% | [0.4%, 0.5%] | 5 |
Regressions (secondary) | 1.2% | [1.2%, 1.2%] | 2 |
Improvements (primary) | - | - | 0 |
Improvements (secondary) | - | - | 0 |
All (primary) | 0.5% | [0.4%, 0.5%] | 5 |
- This removes a recently-merged optimization that caused CI failures because it doesn’t work reliably on all platforms.
Clean up and harden various methods around trait substs #104533 (Comparison Link)
(instructions:u) | mean | range | count |
---|---|---|---|
Regressions (primary) | 0.3% | [0.2%, 0.5%] | 11 |
Regressions (secondary) | 0.6% | [0.2%, 0.9%] | 27 |
Improvements (primary) | - | - | 0 |
Improvements (secondary) | -0.3% | [-0.3%, -0.3%] | 1 |
All (primary) | 0.3% | [0.2%, 0.5%] | 11 |
- Currently being investigated by @oli-obk in #104709
Improvements
Merge basic blocks where possible when generating LLVM IR. #103138 (Comparison Link)
(instructions:u) | mean | range | count |
---|---|---|---|
Regressions (primary) | - | - | 0 |
Regressions (secondary) | - | - | 0 |
Improvements (primary) | -0.8% | [-1.4%, -0.4%] | 6 |
Improvements (secondary) | -0.3% | [-0.3%, -0.2%] | 2 |
All (primary) | -0.8% | [-1.4%, -0.4%] | 6 |
Record LocalDefId
in HIR nodes instead of a side table #104170 (Comparison Link)
(instructions:u) | mean | range | count |
---|---|---|---|
Regressions (primary) | - | - | 0 |
Regressions (secondary) | - | - | 0 |
Improvements (primary) | -0.3% | [-0.3%, -0.2%] | 4 |
Improvements (secondary) | -1.1% | [-2.3%, -0.6%] | 12 |
All (primary) | -0.3% | [-0.3%, -0.2%] | 4 |
Remove allow(rustc::potential_query_instability) from rustc_ast_lowering #104330 (Comparison Link)
(instructions:u) | mean | range | count |
---|---|---|---|
Regressions (primary) | - | - | 0 |
Regressions (secondary) | - | - | 0 |
Improvements (primary) | - | - | 0 |
Improvements (secondary) | -0.6% | [-1.3%, -0.3%] | 6 |
All (primary) | - | - | 0 |
Factor out conservative_is_privately_uninhabited
#103454 (Comparison Link)
(instructions:u) | mean | range | count |
---|---|---|---|
Regressions (primary) | - | - | 0 |
Regressions (secondary) | - | - | 0 |
Improvements (primary) | -0.4% | [-0.9%, -0.2%] | 22 |
Improvements (secondary) | -0.7% | [-0.7%, -0.7%] | 2 |
All (primary) | -0.4% | [-0.9%, -0.2%] | 22 |
Mixed
Rollup of 9 pull requests #104437 (Comparison Link)
(instructions:u) | mean | range | count |
---|---|---|---|
Regressions (primary) | 0.3% | [0.2%, 0.4%] | 4 |
Regressions (secondary) | - | - | 0 |
Improvements (primary) | - | - | 0 |
Improvements (secondary) | -0.3% | [-0.3%, -0.3%] | 1 |
All (primary) | 0.3% | [0.2%, 0.4%] | 4 |
- Too small a regression for us to investigate this rollup (this is just barely passing the mark for being considered significant).
Use token::Lit
in ast::ExprKind::Lit
. #102944 (Comparison Link)
(instructions:u) | mean | range | count |
---|---|---|---|
Regressions (primary) | 0.3% | [0.2%, 0.7%] | 16 |
Regressions (secondary) | - | - | 0 |
Improvements (primary) | -0.2% | [-0.2%, -0.2%] | 1 |
Improvements (secondary) | -0.5% | [-1.0%, -0.3%] | 10 |
All (primary) | 0.3% | [-0.2%, 0.7%] | 17 |
- The wins and losses roughly balance out. Also, this will enable some additional improvements by shrinking the size of
ast::Expr
.
x86_64 SSE2 fast-path for str.contains(&str) and short needles #103779 (Comparison Link)
(instructions:u) | mean | range | count |
---|---|---|---|
Regressions (primary) | 0.4% | [0.3%, 0.6%] | 4 |
Regressions (secondary) | - | - | 0 |
Improvements (primary) | -0.4% | [-0.5%, -0.3%] | 5 |
Improvements (secondary) | -1.0% | [-1.3%, -0.6%] | 4 |
All (primary) | -0.1% | [-0.5%, 0.6%] | 9 |
- A few wins, a few losses, it roughly balances out.
Shrink ast::Expr
harder #101562 (Comparison Link)
(instructions:u) | mean | range | count |
---|---|---|---|
Regressions (primary) | 0.4% | [0.2%, 0.8%] | 10 |
Regressions (secondary) | 0.4% | [0.1%, 0.7%] | 10 |
Improvements (primary) | - | - | 0 |
Improvements (secondary) | -0.3% | [-0.6%, -0.2%] | 13 |
All (primary) | 0.4% | [0.2%, 0.8%] | 10 |
- Instruction count results are mixed. But the real results are for cycles and wall-time, which show lots of improvements.
Revert “Normalize opaques with escaping bound vars” #103509 (Comparison Link)
(instructions:u) | mean | range | count |
---|---|---|---|
Regressions (primary) | - | - | 0 |
Regressions (secondary) | 0.6% | [0.3%, 0.8%] | 3 |
Improvements (primary) | - | - | 0 |
Improvements (secondary) | -1.6% | [-2.2%, -0.3%] | 6 |
All (primary) | - | - | 0 |
- This is a necessary fix for a compiler hang. Additionally the improvements outweigh the regressions and this is all confined to secondary benchmarks.
Rollup of 6 pull requests #104646 (Comparison Link)
(instructions:u) | mean | range | count |
---|---|---|---|
Regressions (primary) | 0.7% | [0.4%, 0.9%] | 7 |
Regressions (secondary) | - | - | 0 |
Improvements (primary) | - | - | 0 |
Improvements (secondary) | -1.4% | [-2.1%, -0.4%] | 9 |
All (primary) | 0.7% | [0.4%, 0.9%] | 7 |
- Regressions are noise
Nominated Issues
- No nominated issues for
T-compiler
this time.
- No nominated RFCs for
T-compiler
this time.
Next week’s WG checkins
- Generic Associated Types initiative by @Jack Huey
- @_WG-diagnostics by @Esteban Küber and @oli