T Compiler Meeting Agenda 2022 08 04

T-compiler Meeting Agenda 2022-08-04


  • Types Team: Planning/Deep-Dive meeting at time:2022-08-05T09:00:00-04:00
  • Next Thursday August, 11th release of Rust stable 1.63
  • 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


  • New MCPs (take a look, see if you like them!)
  • Old MCPs (not seconded, take a look)
    • “Arbitrary annotations in compiletest” compiler-team#513 (last review activity: 3 months ago)
    • “Add support for the LoongArch architecture” compiler-team#518 (last review activity: about 48 days ago)
    • “Add #[alias] attribute to allow symbol aliasing” compiler-team#526 (last review activity: about 13 days ago)
  • Pending FCP requests (check your boxes!)
    • “[RFC] Support .comment section like GCC/Clang (!llvm.ident)” rust#97550
    • “Update cc-rs to 1.0.73 for compiler + bootstrap” rust#99477
  • Things in FCP (make sure you’re good with it)
  • Accepted MCPs
  • Finalized FCPs (disposition merge)
    • “Stabilize -Zgcc-ld=lld as -Clink-self-contained=linker -Clinker-flavor=gcc-lldcompiler-team#510
    • “Remove migrate borrowck mode” rust#95565
    • “Modify MIR building to drop repeat expressions with length zero” rust#95953
    • “Lang: Stabilize usage of rustc_nonnull_optimization_guaranteed on -1” rust#97122
    • “Remove a back-compat hack on lazy TAIT” rust#97346
    • “Make outlives::{components,verify} agree” rust#97406
    • “make cenum_impl_drop_cast deny-by-default” rust#97652
    • “make const_err show up in future breakage reports” rust#97743
    • “lub: don’t bail out due to empty binders” rust#97867
    • “allow unions with mutable references and tuples of allowed types” rust#97995
    • “do not mark interior mutable shared refs as dereferenceable” rust#98017
    • “session: stabilize split debuginfo on linux” rust#98051

WG checkins

  • @_WG-async-foundations by @nikomatsakis and @tmandry (previous checkin):

    Checkin text

  • @_WG-traits (Generic associated types initiative) by @Jack Huey (previous checkin):

    No new updates - stabilization PR is FCP-merged for lang+types

Backport nominations

T-compiler beta / T-compiler stable

  • :beta: “allow numbers with provenance within CTFE execution” rust#99965
    • There are some undocumented UB behaviours or (iiuc) indeed documented but not enough well communicated (comment)
    • This beta’s backport goal seems to revert some of rust#99965 and allow time for a discussion on rust#99923 to happen
  • :beta: “Fix backwards-compatibility check for tests with +whole-archiverust#100068
  • :stable: “Fix backwards-compatibility check for tests with +whole-archiverust#100068
    • stable nomination only in case a 1.63.1 will be planned (comment)

T-rustdoc beta / T-rustdoc stable

  • No backport nominations for T-rustdoc this time.

:back: / :shrug: / :hand:

PRs S-waiting-on-team


  • “Tracking issue for dyn upcasting coercion” rust#65991
    • Unsure about the status, waiting on T-lang?

Oldest PRs waiting for review


  • “Suggest using an appropriate keyword for struct and enumrust#94996 (last review activity: 4 months ago)
    • cc: @Esteban Küber
  • “Implement special-cased projection error message for some common traits” rust#98863 (last review activity: about 31 days ago)
    • rustbot autoassigned @Esteban Küber (reroll?)
  • “Track derive attrs for more accurate suggestion” rust#98965 (last review activity: about 29 days ago)
    • perhaps waiting on @Vadim Petrochenkov

Issues of Note

Short Summary



  • “Wrong cast of u16 to usize on aarch64” rust#97463
    • PR rust#97800 from Felix was reviewed and r’ed from Wesley


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

P-high regressions

P-high beta regressions

  • “Source of lifetime coercion is not reported starting in 1.63” rust#99256
    • Assigned P-high (comment) but that’s open to discussion

Unassigned P-high nightly regressions

  • for<'a> &'a T: 'a and closures regressed” rust#98437
    • @Jack Huey adds a comment from T-types (see comment)
    • Close this issue? Remove the regression label?

Performance logs

triage logs for 2022-08-02

A good week! We had one regression from #99123 that could use further study, but we had a huge swath of improvements. The downward trend of the performance graph summary is striking. Perhaps best of all: Only one rollup PR impacted performance this week which makes things so much easier to evaluate! Great work everyone!

Triage done by @pnkfelix. Revision range: 50166d5e..792bc5a0


mean max count
Regressions (primary) 0.4% 0.7% 5
Regressions (secondary) 0.6% 1.1% 11
Improvements (primary) -0.8% -3.3% 140
Improvements (secondary) -0.9% -11.0% 95
All (primary) -0.8% -3.3% 145

1 Regressions, 4 Improvements, 4 Mixed; 1 of them in rollups 30 Untriaged Pull Requests 44 artifact comparisons made in total


proc_macro: use crossbeam channels for the proc_macro cross-thread bridge #99123 (Comparison Link)

mean max count
Regressions (primary) 0.9% 1.4% 11
Regressions (secondary) N/A N/A 0
Improvements (primary) N/A N/A 0
Improvements (secondary) N/A N/A 0
All (primary) 0.9% 1.4% 11
  • all 11 regressions are to various profiles+scenarios for html5ever
  • @nnethercote and @eddyb are discussing the regression to html5ever on the PR (#99123)
  • not marking as triaged, not yet at least; lets try and see if eddyb’s suggested mitigation actually helps here


Rollup of 7 pull requests #99816 (Comparison Link)

mean max count
Regressions (primary) N/A N/A 0
Regressions (secondary) 1.0% 1.0% 1
Improvements (primary) -0.2% -0.2% 1
Improvements (secondary) -0.5% -1.6% 10
All (primary) -0.2% -0.2% 1
  • primary improvement was hyper check incr-unchanged; secondaries were coercions debug full, and 9 variations on extern. Secondary regression was deep-vector opt incr-patched: println.

anonymize all bound vars, not just regions #99730 (Comparison Link)

mean max count
Regressions (primary) N/A N/A 0
Regressions (secondary) N/A N/A 0
Improvements (primary) -0.4% -0.6% 56
Improvements (secondary) -0.4% -0.9% 36
All (primary) -0.4% -0.6% 56
  • As is, this PR registered compilation time improvements
  • However, @simulacrum noted that it was associated with a nearly 2% regression to bootstrap times.

Limit symbols exported from proc macros #99944 (Comparison Link)

mean max count
Regressions (primary) N/A N/A 0
Regressions (secondary) N/A N/A 0
Improvements (primary) -0.6% -2.9% 41
Improvements (secondary) -2.4% -10.7% 11
All (primary) -0.6% -2.9% 41
  • wow, this was a big win! serde_derive incr-unchanged builds up to 3% faster; ripgrep check is up to 1.75% faster, hyper and webrender check 1% faster.

Lexer improvements #99884 (Comparison Link)

mean max count
Regressions (primary) N/A N/A 0
Regressions (secondary) N/A N/A 0
Improvements (primary) -0.3% -0.6% 42
Improvements (secondary) -0.5% -1.2% 48
All (primary) -0.3% -0.6% 42


Remove remaining uses of box syntax from librustdoc #99577 (Comparison Link)

mean max count
Regressions (primary) N/A N/A 0
Regressions (secondary) 0.3% 0.3% 4
Improvements (primary) -0.3% -0.3% 2
Improvements (secondary) N/A N/A 0
All (primary) -0.3% -0.3% 2
  • as you might expect, the limited number of performance changes here were to doc benchmarks (specifically serde and libc doc).

Remove TreeAndSpacing. #99887 (Comparison Link)

mean max count
Regressions (primary) 0.3% 0.3% 1
Regressions (secondary) 0.2% 0.2% 1
Improvements (primary) -0.3% -0.4% 5
Improvements (secondary) -0.4% -0.9% 16
All (primary) -0.2% -0.4% 6
  • already triaged by nnethercote: “There’s a single regressing result and 25 improved results. The changes are all very small. This is fine”

Thin AssocItem #95884 (Comparison Link)

mean max count
Regressions (primary) 0.3% 0.4% 16
Regressions (secondary) 0.5% 0.6% 9
Improvements (primary) -0.3% -0.4% 7
Improvements (secondary) -0.4% -0.5% 8
All (primary) 0.1% 0.4% 23
  • already triaged by nnethercote: “This looks perf-neutral, with the improvements roughly the same size as the regressions.”

Remove fn backtrace and replace with usages of provider API #99431 (Comparison Link)

mean max count
Regressions (primary) N/A N/A 0
Regressions (secondary) 1.5% 1.5% 2
Improvements (primary) -0.9% -1.4% 2
Improvements (secondary) N/A N/A 0
All (primary) -0.9% -1.4% 2
  • the improvements are to building primary benchmark cargo opt in incr-patch: println and incr-full, by -1.38% and -0.42% respectively . The regression was to the externs incr-full in debug and opt profiles, both by 1.52%.
  • this is entirely acceptable (and wasn’t marked as a performance regression by the bot in the first place)

Nominated Issues


  • “compiler-builtins CI fails on powerpc64” rust#99853
    • Seems that - for this Tier 2 target - tests are slowly degrading
    • Opened a topic on Zulip to get more eyeballs
    • cc @Nikita Popov


  • No nominated RFCs for T-compiler this time.

Next week’s WG checkins

  • @_WG-diagnostics by @Esteban Küber and @oli
  • @_WG-rustc-dev-guide by @Santiago Pastorino and @Yuki Okushi|217081