T-compiler Meeting Agenda 2022-12-01
Announcements
- Compiler P-high review slot at time:2022-12-02T10: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 (calendar link)
- wg-debugging status & design meeting at time:2022-12-05T10:00:00-05:00
- [Types team] Shallow subtyping weekly meeting at time:2022-12-05T10:00:00-05:00
- Async WG triage meeting at time:2022-12-05T11:30:00-05:00
- [wg-traits] GATs Sync at time:2022-12-05T16:00:00-05:00
MCPs/FCPs
- New MCPs (take a look, see if you like them!)
- “x.py –keep-stage-rustc N (a “smarter” keep-stage)” compiler-team#571
- Old MCPs (not seconded, take a look)
- “Add
#[alias]
attribute to allow symbol aliasing” compiler-team#526 (last review activity: 4 months ago) - “Use RangeInclusive in SpanData instead of lo/hi” compiler-team#534 (last review activity: 3 months ago)
- " Promote
i586-unknown-linux-gnu
to Tier 2 with Host Tools " compiler-team#543 (last review activity: 3 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: 2 months 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 37 days ago)
- “Introduce a
#[rustc::*]
tool attribute namespace and provide a stable#[rustc::on_unimplemented]
attribute” compiler-team#560 (last review activity: about 43 days ago) - “
-Z instrument-xray
option” compiler-team#561 (last review activity: about 43 days ago) - “New tier-3 targets for OpenHarmony” compiler-team#568 (last review activity: about 12 days ago)
- “Add
- Pending FCP requests (check your boxes!)
- “Encode spans relative to the enclosing item – enable by default” rust#84762
- “Change
bindings_with_variant_name
to deny-by-default” rust#104154
- Things in FCP (make sure you’re good with it)
- “Arbitrary annotations in compiletest” compiler-team#513
- Accepted MCPs
- “Redefine dropck in terms of bound-like constructs” compiler-team#563
- “Reboot Parallel Rustc WG Proposal” compiler-team#567
- “Raw pointer alignment checks in debug” compiler-team#570
- 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
- “Stabilize native library modifier
verbatim
” rust#104360 - “Expand a style-guide principle: readability in plain text” rust#104506
WG checkins
-
Generic Associated Types initiative by @Jack Huey (previous checkin):
No big changes. A couple small diagnostic additions:
- Implied static bug note readded: https://github.com/rust-lang/rust/pull/101924
- Better error when using GATs in generator interiors: https://github.com/rust-lang/rust/pull/103171
Aside: I’ve seen several crates being published (from Reddit) mentioning GATs usage, so stabilization seems to be helpful and relatively smooth.
-
@_WG-diagnostics by @Esteban Küber and @oli (previous checkin):
Checkin text
Backport nominations
T-compiler beta / T-compiler stable
-
:beta: “Reverts check done by #100757” rust#104610
-
:beta: “Statics used in reachable function’s inline asm are reachable” rust#105023
-
No stable nominations for
T-compiler
this time.
T-rustdoc beta / T-rustdoc stable
- No backport nominations for
T-rustdoc
this time.
:back: / :shrug: / :hand:
PRs S-waiting-on-team
- “Encode spans relative to the enclosing item – enable by default” rust#84762
- (other hidden issues in progress or waiting on other teams, details here)
Oldest PRs waiting for review
- “Allow to feed a value in another query’s cache” rust#96840
- unsure about the status, does #104940 supersedes this? cc @cjgillot
- “Error parsing lifetime following by Sized and message + between them” rust#103020
- cc: @Michael Goulet (compiler-errors)
- “Inferred lifetimes cleanup” rust#102673 (last review activity: about 55 days ago)
- rust highfive added T-compiler: is it the case though?
- “add
with_hash_task
to generateDepNode
deterministically” rust#100987 (last review activity: about 45 days ago)- cc @cjgillot
- “Remove
box_free
lang item” rust#100036 (last review activity: about 39 days ago)- needs review? cc @Wesley Wiser
- “Add
SEMICOLON_IN_EXPRESSIONS_FROM_MACROS
to future-incompat report” rust#103418 (last review activity: about 34 days ago)- needs
T-compiler
signoff?
- needs
Issues of Note
Short Summary
- 0 T-compiler P-critical issues
- 55 T-compiler P-high issues
- 0 P-critical, 2 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, 85 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
- (issue #102754 recently discussed in past meetings)
Unassigned P-high nightly regressions
- No unassigned
P-high
nightly regressions this time.
Performance logs
A relatively quiet week for performance, with the notable exception of “Avoid
GenFuture
shim when compiling async constructs #104321”
which brought sizeable wins on a number of stress test benchmarks. It probably
won’t be of huge benefit to most codebases, but should provide smaller wins to
folks with large amounts of async-generated futures.
Triage done by @simulacrum. Revision range: a78c9bee4d9d51a3891bd8ecae1f28a93b83653b..8a09420ac48658cad726e0a6997687ceac4151e3
Summary:
(instructions:u) | mean | range | count |
---|---|---|---|
Regressions (primary) | 1.0% | [0.3%, 1.5%] | 11 |
Regressions (secondary) | 1.8% | [0.4%, 3.0%] | 25 |
Improvements (primary) | -1.0% | [-3.8%, -0.3%] | 148 |
Improvements (secondary) | -6.7% | [-87.7%, -0.3%] | 107 |
All (primary) | -0.9% | [-3.8%, 1.5%] | 159 |
3 Regressions, 3 Improvements, 6 Mixed; 2 of them in rollups 43 artifact comparisons made in total
Regressions
Rollup of 6 pull requests #104758 (Comparison Link)
(instructions:u) | mean | range | count |
---|---|---|---|
Regressions (primary) | 0.3% | [0.3%, 0.3%] | 1 |
Regressions (secondary) | 2.1% | [0.6%, 7.1%] | 13 |
Improvements (primary) | - | - | 0 |
Improvements (secondary) | - | - | 0 |
All (primary) | 0.3% | [0.3%, 0.3%] | 1 |
This PR was a perf regression (see the report here https://github.com/rust-lang/rust/pull/104758#issuecomment-1325100344). It’s relatively small and mostly limited to secondary workloads so I’m marking as triaged.
Branch Clause from Predicate #104846 (Comparison Link)
(instructions:u) | mean | range | count |
---|---|---|---|
Regressions (primary) | 0.8% | [0.2%, 2.4%] | 38 |
Regressions (secondary) | 0.4% | [0.3%, 0.8%] | 5 |
Improvements (primary) | - | - | 0 |
Improvements (secondary) | - | - | 0 |
All (primary) | 0.8% | [0.2%, 2.4%] | 38 |
Unexpected regression, PR reviewer and author are going to look into it.
Add ConstKind::Expr
#99798 (Comparison Link)
(instructions:u) | mean | range | count |
---|---|---|---|
Regressions (primary) | 0.3% | [0.2%, 0.5%] | 6 |
Regressions (secondary) | 0.9% | [0.3%, 1.6%] | 21 |
Improvements (primary) | - | - | 0 |
Improvements (secondary) | -0.2% | [-0.2%, -0.2%] | 1 |
All (primary) | 0.3% | [0.2%, 0.5%] | 6 |
Previous perf runs showed slight improvements, but the post-merge one shows regressions. They are mostly among secondary benchmarks.
Improvements
Fix perf regression by correctly matching keywords #104410 (Comparison Link)
(instructions:u) | mean | range | count |
---|---|---|---|
Regressions (primary) | - | - | 0 |
Regressions (secondary) | - | - | 0 |
Improvements (primary) | -0.3% | [-0.5%, -0.2%] | 32 |
Improvements (secondary) | -0.8% | [-1.1%, -0.5%] | 8 |
All (primary) | -0.3% | [-0.5%, -0.2%] | 32 |
Use an IndexVec to cache queries with index-like key #103808 (Comparison Link)
(instructions:u) | mean | range | count |
---|---|---|---|
Regressions (primary) | - | - | 0 |
Regressions (secondary) | - | - | 0 |
Improvements (primary) | -0.8% | [-2.3%, -0.2%] | 133 |
Improvements (secondary) | -1.2% | [-7.8%, -0.2%] | 105 |
All (primary) | -0.8% | [-2.3%, -0.2%] | 133 |
Avoid GenFuture
shim when compiling async constructs #104321 (Comparison Link)
(instructions:u) | mean | range | count |
---|---|---|---|
Regressions (primary) | - | - | 0 |
Regressions (secondary) | - | - | 0 |
Improvements (primary) | - | - | 0 |
Improvements (secondary) | -28.0% | [-87.8%, -1.9%] | 22 |
All (primary) | - | - | 0 |
Mixed
optimize field ordering by grouping m*2^n
-sized fields with equivalently aligned ones #102750 (Comparison Link)
(instructions:u) | mean | range | count |
---|---|---|---|
Regressions (primary) | 0.5% | [0.3%, 0.8%] | 4 |
Regressions (secondary) | 1.2% | [0.3%, 2.3%] | 26 |
Improvements (primary) | -0.5% | [-2.2%, -0.2%] | 44 |
Improvements (secondary) | -0.6% | [-1.2%, -0.1%] | 22 |
All (primary) | -0.4% | [-2.2%, 0.8%] | 48 |
Some followup discussion on https://github.com/rust-lang/rust/issues/104807 but overall a roughly neutral change.
privacy: Fix more (potential) issues with effective visibilities #104602 (Comparison Link)
(instructions:u) | mean | range | count |
---|---|---|---|
Regressions (primary) | 0.3% | [0.2%, 0.3%] | 8 |
Regressions (secondary) | 2.2% | [0.3%, 3.6%] | 17 |
Improvements (primary) | -1.0% | [-1.4%, -0.5%] | 13 |
Improvements (secondary) | - | - | 0 |
All (primary) | -0.5% | [-1.4%, 0.3%] | 21 |
This fixes correctness issues, and the regressions are mostly in unused-warnings which is a stress test where 3% doesn’t really matter. Plus libc got a bit faster. So overall, not a performance concern.
Manually implement PartialEq for Option<T>
and specialize non-nullable types #103556
(Comparison Link)
(instructions:u) | mean | range | count |
---|---|---|---|
Regressions (primary) | 2.1% | [2.1%, 2.1%] | 1 |
Regressions (secondary) | - | - | 0 |
Improvements (primary) | -0.3% | [-0.4%, -0.2%] | 2 |
Improvements (secondary) | -0.3% | [-0.4%, -0.3%] | 2 |
All (primary) | 0.5% | [-0.4%, 2.1%] | 3 |
Relatively few relatively small changes, no further investigation needed.
Stop peeling the last iteration of the loop in Vec::resize_with
#104818
(Comparison Link)
(instructions:u) | mean | range | count |
---|---|---|---|
Regressions (primary) | 0.8% | [0.8%, 0.8%] | 1 |
Regressions (secondary) | 0.3% | [0.3%, 0.3%] | 1 |
Improvements (primary) | -0.3% | [-0.3%, -0.3%] | 3 |
Improvements (secondary) | -0.3% | [-0.4%, -0.1%] | 7 |
All (primary) | -0.0% | [-0.3%, 0.8%] | 4 |
Perf changes are very small, and wins slightly outweigh losses.
Update VecDeque implementation to use head+len instead of head+tail #102991 (Comparison Link)
(instructions:u) | mean | range | count |
---|---|---|---|
Regressions (primary) | - | - | 0 |
Regressions (secondary) | 0.8% | [0.2%, 1.4%] | 4 |
Improvements (primary) | -0.3% | [-0.5%, -0.2%] | 3 |
Improvements (secondary) | -0.3% | [-0.5%, -0.2%] | 3 |
All (primary) | -0.3% | [-0.5%, -0.2%] | 3 |
Performance looks like overall neutral to slight win.
Rollup of 6 pull requests #105008 (Comparison Link)
(instructions:u) | mean | range | count |
---|---|---|---|
Regressions (primary) | 0.6% | [0.2%, 0.9%] | 8 |
Regressions (secondary) | - | - | 0 |
Improvements (primary) | -0.9% | [-0.9%, -0.8%] | 2 |
Improvements (secondary) | -2.4% | [-2.7%, -2.1%] | 6 |
All (primary) | 0.3% | [-0.9%, 0.9%] | 10 |
keccak improvements may be spurious but overall neutral so no further investigation warranted.
Nominated Issues
- No nominated issues for
T-compiler
this time.
- No nominated RFCs for
T-compiler
this time.
Next week’s WG checkins
- @_WG-rustc-dev-guide by @Santiago Pastorino and @Yuki Okushi|217081
- Impl Trait initiative by @oli