T-compiler Meeting Agenda 2023-01-05
Announcements
- 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-async weekly at time:2023-01-05T12:00:00-05:00
- wg-rls-2.0 weekly sync-up at time:2023-01-09T10:00:00-05:00
- [Types team] Shallow subtyping weekly meeting at time:2023-01-09T10:00:00-05:00
- [wg-traits] GATs Sync at time:2023-01-09T16: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)
- “Add
#[alias]
attribute to allow symbol aliasing” compiler-team#526 (last review activity: 5 months ago) - " Promote
i586-unknown-linux-gnu
to Tier 2 with Host Tools " compiler-team#543 (last review activity: 4 months ago) - “Lower baseline expectations for i686 unix-like targets” compiler-team#548 (last review activity: about 12 days ago)
- “configurable rustc timeout for compiletest tests” compiler-team#554 (last review activity: 3 months ago)
- Stale MCP: candidate for closing soon
- “Rustc Contributor Program Major Change Proposal” compiler-team#557 (last review activity: 2 months ago)
- Stale MCP: candidate for closing soon (actually the initiative moved forward without MCP)
- “Introduce a
#[rustc::*]
tool attribute namespace and provide a stable#[rustc::on_unimplemented]
attribute” compiler-team#560 (last review activity: 2 months ago)- Replaced by T-lang RFC, maybe can be closed
- “
-Z instrument-xray
option” compiler-team#561 (last review activity: 2 months ago) - “Upgrade
*-linux-musl
targets to musl 1.2” compiler-team#572 (last review activity: about 13 days ago) - “New tier-2 target for
wasm32-wasi
+ threads” compiler-team#574 (last review activity: about 0 days ago) - “
needs_drop
as an auto trait” compiler-team#575 (last review activity: about 0 days ago)
- “Add
- Pending FCP requests (check your boxes!)
- “Add
SEMICOLON_IN_EXPRESSIONS_FROM_MACROS
to future-incompat report” rust#103418 - “Add deployment-target –print flag for Apple targets” rust#105354
- “Add
- Things in FCP (make sure you’re good with it)
- No FCP requests this time.
- Accepted MCPs
- “Move tests out of src” compiler-team#573
- Finalized FCPs (disposition merge)
- “Tracking issue for the “efiapi” calling convention” rust#65815
- “Make PROC_MACRO_DERIVE_RESOLUTION_FALLBACK a hard error” rust#84022
- “Encode spans relative to the enclosing item – enable on nightly” rust#84762
- “Stabilize
#![feature(target_feature_11)]
” rust#99767 - “Make
Sized
coinductive, again” rust#100386 - “Elaborate supertrait obligations when deducing closure signatures” rust#101834
- “Don’t normalize in AstConv” rust#101947
- “make const_err a hard error” rust#102091
- “Stabilize default_alloc_error_handler” rust#102318
- “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
- “Remove const eval limit and implement an exponential backoff lint instead” rust#103877
- “Change
bindings_with_variant_name
to deny-by-default” rust#104154 - “Stabilize native library modifier
verbatim
” rust#104360 - “More deriving on packed structs” rust#104429
- “Expand a style-guide principle: readability in plain text” rust#104506
- “Find the right lower bound region in the scenario of partial order relations” rust#104765
- “Stop promoting all the things” rust#105085
- “Add
IMPLIED_BOUNDS_ENTAILMENT
lint” rust#105575
WG checkins
None
Backport nominations
T-compiler beta / T-compiler stable
- No beta nominations for
T-compiler
this time. - :stable: “Don’t copy symbols from dylibs with
-Zdylib-lto
” rust#105800- backport nominated by @lqd
- patch addresses (among others) rust#105637 a
P-critical
regression impacting bug reports on ICEs - beta backport previously approved (Zulip link)
- stable backport was on hold to wait for some feedback once it lands on beta
- or just let it ride and land on stable (Jan, 26th)
T-rustdoc beta / T-rustdoc stable
- No backport nominations for
T-rustdoc
this time.
:back: / :shrug: / :hand:
PRs S-waiting-on-team
- “Remove proc-macro back-compat hack for rental” rust#106060
- Waiting for team but @Esteban Küber and @Aaron Hill already contributed some comments
- (other hidden issues in progress or waiting on other teams, details here)
Oldest PRs waiting for review
- “Add
SEMICOLON_IN_EXPRESSIONS_FROM_MACROS
to future-incompat report” rust#103418 (last review activity: 2 months ago)- The FCP needs some more ticks to progress. As mentioned in comment,
T-lang
can review but it’s not blocked on them
- The FCP needs some more ticks to progress. As mentioned in comment,
- “Parse unnamed struct and union fields” rust#99754 (last review activity: about 54 days ago)
- cc: @cjgillot
- “TokenTreesReader now can find the correct mismatch delimiter pairs” rust#104012 (last review activity: about 54 days ago)
- cc @Esteban Küber
- “Add Trusty OS as tier 3 target” rust#103895 (last review activity: about 50 days ago)
- Does this proposal need an MCP? (Left a comment a little while ago)
- “Don’t drain-on-drop in DrainFilter impls of various collections.” rust#104455 (last review activity: about 50 days ago)
- Some bits are under
./compiler
(reviewable fromT-compiler
?)
- Some bits are under
Issues of Note
Short Summary
- 4 T-compiler P-critical issues
- 48 T-compiler P-high issues
- 2 P-critical, 0 P-high, 1 P-medium, 0 P-low regression-from-stable-to-beta
- 1 P-critical, 3 P-high, 3 P-medium, 0 P-low regression-from-stable-to-nightly
- 2 P-critical, 28 P-high, 89 P-medium, 8 P-low regression-from-stable-to-stable
P-critical
- “Seg fault in Rust 1.65.0 if I don’t create temporary variable” rust#105295
- @Michael Goulet (compiler-errors) is following up on this with a lint (#105572) and then a new PR to promote it to an error (comment)
- “where_clauses_object_safety regression on a trait where it shouldn’t trigger” rust#106247
- a revert PR landed with #106248
- a fix PR by @Gary Guo is open at #106253, review assigned to @Michael Goulet (compiler-errors)
- “regression: anonymous lifetimes now unstable in impl trait” rust#106338
- a crater run in latest beta found these regressions
- bisection seems to point to #104048 cc: @cjgillot
- “regression: non-defining opaque type use in defining scope” rust#105826
- regression in beta, some crates fail building
- seems to point to #103491 cc @cjgillot (comment)
- issue is
I-types-nominated
- No
P-critical
issues forT-rustdoc
this time.
P-high regressions
- No
P-high
beta regressions this time.
Unassigned P-high nightly regressions
- “deref_target_place is not a deref projection” rust#105881
- should be fixed by rust#105958 (reviewed and in progress)
Performance logs
Fairly busy week with some massive performance improvements at the expense of some significant albeit smaller regressions. The main wins came in a long-standing PR from @cjgillot to enable encoding spans in metadata relative to their enclosing item. This causes more work in full compilation which causes some regressions up to 5% but can lead to very large wins in incremental compilation scenarios (up to ~70%). For example, the clap crate compiles 68% faster after a small 1 line change than it did previously.
Triage done by @rylev. Revision range: b38a6d..b43596
Summary:
(instructions:u) | mean | range | count |
---|---|---|---|
Regressions (primary) | 1.6% | [0.3%, 4.6%] | 97 |
Regressions (secondary) | 1.8% | [0.2%, 7.6%] | 60 |
Improvements (primary) | -9.7% | [-68.7%, -0.2%] | 53 |
Improvements (secondary) | -1.7% | [-15.3%, -0.1%] | 62 |
All (primary) | -2.4% | [-68.7%, 4.6%] | 150 |
1 Regressions, 1 Improvements, 4 Mixed; 1 of them in rollups 47 artifact comparisons made in total
Regressions
Rollup of 8 pull requests #106228 (Comparison Link)
(instructions:u) | mean | range | count |
---|---|---|---|
Regressions (primary) | 0.4% | [0.2%, 0.6%] | 7 |
Regressions (secondary) | - | - | 0 |
Improvements (primary) | - | - | 0 |
Improvements (secondary) | - | - | 0 |
All (primary) | 0.4% | [0.2%, 0.6%] | 7 |
-
Kicked off a perf run on the only likely culprit. The regression is small enough that I don’t think it’s a big deal if we don’t figure this out.
Allow trait method paths to satisfy const Fn bounds #106210 (Comparison Link)
(instructions:u) | mean | range | count |
---|---|---|---|
Regressions (primary) | 0.3% | [0.2%, 0.5%] | 16 |
Regressions (secondary) | 0.4% | [0.2%, 0.7%] | 16 |
Improvements (primary) | - | - | 0 |
Improvements (secondary) | -1.4% | [-1.4%, -1.4%] | 1 |
All (primary) | 0.3% | [0.2%, 0.5%] | 16 |
- Massive amount of noise reversed in #106268. No idea where this noise comes from.
Improvements
fix comment for TokenCursor::desugar
#106268 (Comparison Link)
(instructions:u) | mean | range | count |
---|---|---|---|
Regressions (primary) | - | - | 0 |
Regressions (secondary) | - | - | 0 |
Improvements (primary) | -0.3% | [-0.5%, -0.2%] | 17 |
Improvements (secondary) | -0.3% | [-0.7%, -0.2%] | 15 |
All (primary) | -0.3% | [-0.5%, -0.2%] | 17 |
-
Massive amount of noise coming in #106210 reversed here. No idea where this noise comes from.
Abolish
QueryVTable
in favour of more assoc items onQueryConfig
#106307 (Comparison Link)
(instructions:u) | mean | range | count |
---|---|---|---|
Regressions (primary) | - | - | 0 |
Regressions (secondary) | 0.6% | [0.4%, 1.0%] | 4 |
Improvements (primary) | -0.5% | [-1.0%, -0.2%] | 63 |
Improvements (secondary) | -0.6% | [-1.3%, -0.4%] | 60 |
All (primary) | -0.5% | [-1.0%, -0.2%] | 63 |
Mixed
Catch panics/unwinding in destruction of TLS values #105426 (Comparison Link)
(instructions:u) | mean | range | count |
---|---|---|---|
Regressions (primary) | 0.7% | [0.3%, 1.9%] | 11 |
Regressions (secondary) | - | - | 0 |
Improvements (primary) | -0.3% | [-0.6%, -0.2%] | 41 |
Improvements (secondary) | -1.8% | [-14.6%, -0.2%] | 31 |
All (primary) | -0.1% | [-0.6%, 1.9%] | 52 |
-
Very much unsure where the performance changes are coming from. Some show LLVM regressions but not all. LLVM also does not explain the improvements.
-
Ask in the PR for thoughts.
Use some more
const_eval_select
in pointer methods for compile times #106275 (Comparison Link)
(instructions:u) | mean | range | count |
---|---|---|---|
Regressions (primary) | 0.4% | [0.4%, 0.4%] | 1 |
Regressions (secondary) | 0.7% | [0.6%, 0.9%] | 2 |
Improvements (primary) | -0.5% | [-0.9%, -0.2%] | 28 |
Improvements (secondary) | -0.8% | [-0.8%, -0.7%] | 3 |
All (primary) | -0.4% | [-0.9%, 0.4%] | 29 |
-
Author investigated why this might have caused a regression in
regex
and found nothing. The gains much outweigh the regressions so we should be fine keeping it.Encode spans relative to the enclosing item – enable on nightly #84762 (Comparison Link)
(instructions:u) | mean | range | count |
---|---|---|---|
Regressions (primary) | 1.7% | [0.2%, 5.0%] | 108 |
Regressions (secondary) | 1.8% | [0.2%, 7.6%] | 90 |
Improvements (primary) | -20.0% | [-68.9%, -0.6%] | 25 |
Improvements (secondary) | -2.7% | [-4.8%, -1.5%] | 11 |
All (primary) | -2.4% | [-68.9%, 5.0%] | 133 |
-
There was an FCP to decide whether the trade off of some regressions for some huge incremental performance wins was worth it.
-
This FCP passed and so the PR was merged.
Reenable limited top-down MIR inlining #106364 (Comparison Link)
(instructions:u) | mean | range | count |
---|---|---|---|
Regressions (primary) | 0.5% | [0.3%, 1.1%] | 4 |
Regressions (secondary) | 0.6% | [0.5%, 0.6%] | 4 |
Improvements (primary) | -0.6% | [-1.2%, -0.2%] | 9 |
Improvements (secondary) | -0.9% | [-2.4%, -0.2%] | 18 |
All (primary) | -0.2% | [-1.2%, 1.1%] | 13 |
- As pointed out here this was effectively a performance wash with regressions and improvements canceling themselves out.
Nominated Issues
- No nominated issues for
T-compiler
this time.
- No nominated RFCs for
T-compiler
this time.
Next week’s WG checkins
- @_WG-self-profile by @mw and @Wesley Wiser