T Compiler Meeting Agenda 2023 01 05

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)

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)
    • -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)
  • 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
  • Things in FCP (make sure you’re good with it)
    • No FCP requests this time.
  • Accepted MCPs
  • 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 in ast::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 verbatimrust#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-ltorust#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

T-compiler

  • “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

T-compiler

  • “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
  • “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)
  • “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 from T-compiler?)

Issues of Note

Short Summary

P-critical

T-compiler

  • “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

T-types

  • “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

T-rustdoc

  • No P-critical issues for T-rustdoc this time.

P-high regressions

P-high beta 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

triage logs for 2023-01-03

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 on QueryConfig #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

T-compiler

  • No nominated issues for T-compiler this time.

RFC

  • No nominated RFCs for T-compiler this time.

Next week’s WG checkins

  • @_WG-self-profile by @mw and @Wesley Wiser