T Compiler Meeting Agenda 2022 12 15

T-compiler Meeting Agenda 2022-12-15


  • Today release of Rust stable 1.66
  • Compiler Team Planning meeting at time:2022-12-16T10: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)


  • New MCPs (take a look, see if you like them!)
  • Old MCPs (not seconded, take a look)
    • “Add #[alias] attribute to allow symbol aliasing” compiler-team#526 (last review activity: 4 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: 3 months ago)
    • “configurable rustc timeout for compiletest tests” compiler-team#554 (last review activity: 3 months ago)
    • “Rustc Contributor Program Major Change Proposal” compiler-team#557 (last review activity: about 51 days ago)
    • “Introduce a #[rustc::*] tool attribute namespace and provide a stable #[rustc::on_unimplemented] attribute” compiler-team#560 (last review activity: about 57 days ago)
    • -Z instrument-xray option” compiler-team#561 (last review activity: about 57 days ago)
  • Pending FCP requests (check your boxes!)
    • “Add SEMICOLON_IN_EXPRESSIONS_FROM_MACROS to future-incompat report” rust#103418
    • “Change bindings_with_variant_name to deny-by-default” rust#104154
  • Things in FCP (make sure you’re good with it)
  • Accepted MCPs
    • No new accepted proposals this time.
  • Finalized FCPs (disposition merge)
    • “Make PROC_MACRO_DERIVE_RESOLUTION_FALLBACK a hard error” rust#84022
    • “Make Sized coinductive, again” rust#100386
    • “Elaborate supertrait obligations when deducing closure signatures” rust#101834
    • “make const_err a hard error” rust#102091
    • “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
    • “Stabilize native library modifier verbatimrust#104360
    • “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

WG checkins

  • @_WG-llvm by @nagisa and @Nikita Popov (previous checkin):

    • @Patrick Walton has done some investigations into memcpy elimination and proposed a new transform in https://reviews.llvm.org/D140089. The big LLVM memcpy eliminator patch is up — 17% reduction in Rust memcpys now, with up to 42% possible in the future with more MIR optimization work.

    LLVM 16 is expected to branch Jan 24, so we’ll be starting the LLVM 16 upgrade around that time. A key blocker on the Rust side is the mingw-w64 upgrade (https://github.com/rust-lang/rust/pull/100178).

    Note from @_apiraino: mingw-w64 upgrade was nominated for a previous meeting (“to consider the compatibility aspect, at least”). If T-compiler if fine with the upgrade, it might be good to explicit that so nobody feels this is blocked on some decision.

  • Types team by @nikomatsakis and @Jack Huey (previous checkin):

    We had an in-person meetup Nov. 30th - Dec. 2nd. We discussed a bunch of things like: types-y tracking issues; unsound issues; some “end user” features and how we get there; roadmap for short, medium, long-term; and a planning for the trait solver rewrite/refactor. We’re planing to write a blog post “officially” announcing the team, some of things we’ve accomplished since forming, and our roadmap and goals. We’re on pause for meetings for the holidays.

Backport nominations

T-compiler beta / T-compiler stable

  • :beta: “Mangle “main” as “__main_void” on wasm32-wasi” rust#105468
    • nominated for 1.67.0-beta by @cuviper
    • backport this change as needed by wasm32-wasi since #105395
  • 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


  • “always check alignment during CTFE” rust#104616
    • @pnkfelix posted summary of the T-lang meeting
    • PR now has assigned a T-compiler reviewer
  • “Encode spans relative to the enclosing item – enable by default” rust#84762
    • entered in FCP: will be accepted if no further comments
  • (other hidden issues in progress or waiting on other teams, details here)

Oldest PRs waiting for review


  • “support higher-ranked regions in opaque type inference” rust#100503 (last review activity: 2 months ago)
  • “stop special-casing 'static in evaluation” rust#102472 (last review activity: 2 months ago)
    • cc: @nikomatsakis - or reassign?
    • S-blocked on “changing the order_dependent_trait_objects future-compat lint to a hard error”: maybe tag T-lang?
  • “[unused_braces] Lint multiline blocks as long as not in arms” rust#102432 (last review activity: 2 months ago)
  • “Fix #99684 through autoref in write! macro with a two-phased borrows retrocompat workaround” rust#100202 (last review activity: 2 months ago)
    • pinging past reviewers: @David Tolnay @eddyb (also for comment)
  • “make a help text for ‘cannot find macro’ actionable” rust#102881 (last review activity: 2 months ago)
    • pending question for @Michael Goulet (compiler-errors)
    • @TaKO8Ki autoassigned review - reassign?

Issues of Note

Short Summary



  • “Seg fault in Rust 1.65.0 if I don’t create temporary variable” rust#105295
    • Should be fixed by rust#105483 by @Michael Goulet (compiler-errors)
    • #105483 is on FCP and waiting feedback


  • 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

  • No unassigned P-high nightly regressions this time.

Performance logs

triage logs for 2022-12-13

Fairly quiet week with the only excitement coming from a nice improvement implemented by @nnethercote which fixed a pesky performance regressions in the linting system. This produced a 0.6% performance improvement across a large amount of the real world crates we test against.

Triage done by @rylev. Revision range: 9db224fc..109cccbe


(instructions:u) mean range count
Regressions (primary) 0.2% [0.2%, 0.2%] 3
Regressions (secondary) 1.7% [0.3%, 3.3%] 11
Improvements (primary) -0.8% [-2.2%, -0.2%] 129
Improvements (secondary) -1.2% [-4.4%, -0.1%] 97
All (primary) -0.7% [-2.2%, 0.2%] 132

2 Regressions, 2 Improvements, 4 Mixed; 3 of them in rollups 41 artifact comparisons made in total


Rollup of 9 pull requests #105378 (Comparison Link)

(instructions:u) mean range count
Regressions (primary) - - 0
Regressions (secondary) 1.9% [0.2%, 4.4%] 12
Improvements (primary) - - 0
Improvements (secondary) -0.8% [-0.8%, -0.8%] 1
All (primary) - - 0
  • Suspicion is that #105250 is the cause. Running a regression test to confirm.
  • This is small enough that it’s not worth stressing about.

Fast-path some binder relations #105350 (Comparison Link)

(instructions:u) mean range count
Regressions (primary) 1.1% [1.0%, 1.2%] 2
Regressions (secondary) 2.3% [2.0%, 2.7%] 6
Improvements (primary) - - 0
Improvements (secondary) - - 0
All (primary) 1.1% [1.0%, 1.2%] 2
  • This is noise. The regression cancel out the improvements in the exact same test cases from the previous commit which is a very strong indicator that this is noise.


Fix lint perf regressions #105485 (Comparison Link)

(instructions:u) mean range count
Regressions (primary) - - 0
Regressions (secondary) - - 0
Improvements (primary) -0.6% [-1.5%, -0.2%] 138
Improvements (secondary) -0.8% [-2.5%, -0.2%] 93
All (primary) -0.6% [-1.5%, -0.2%] 138

Inline and remove place_contents_drop_state_cannot_differ. #105436 (Comparison Link)

(instructions:u) mean range count
Regressions (primary) - - 0
Regressions (secondary) - - 0
Improvements (primary) -0.8% [-1.2%, -0.4%] 3
Improvements (secondary) -2.2% [-2.6%, -2.0%] 6
All (primary) -0.8% [-1.2%, -0.4%] 3
  • These are noise and went away in the next commit


Rollup of 10 pull requests #105486 (Comparison Link)

(instructions:u) mean range count
Regressions (primary) 0.4% [0.4%, 0.4%] 1
Regressions (secondary) - - 0
Improvements (primary) - - 0
Improvements (secondary) -3.9% [-4.0%, -3.8%] 2
All (primary) 0.4% [0.4%, 0.4%] 1
  • A single tiny regression on a doc profiler, not worth worrying about. (commented here)

Rollup of 9 pull requests #105512 (Comparison Link)

(instructions:u) mean range count
Regressions (primary) - - 0
Regressions (secondary) 1.1% [1.1%, 1.1%] 1
Improvements (primary) -0.2% [-0.2%, -0.2%] 1
Improvements (secondary) -0.4% [-0.6%, -0.2%] 6
All (primary) -0.2% [-0.2%, -0.2%] 1
  • The regressions is small in absolute terms, only in instructions count, it’s a short stress test that doesn’t seem to be the only one to exercize some codepath changed in this PR. Nothing jumps out in the rolled up PRs nor seems to apply to the other benchmarks. There are also small wins elsewhere, so this seems fine. (commented here)

Group some fields in a common struct so we only pass one reference instead of three #105357 (Comparison Link)

(instructions:u) mean range count
Regressions (primary) 0.4% [0.2%, 0.7%] 23
Regressions (secondary) 0.4% [0.1%, 0.7%] 22
Improvements (primary) -0.5% [-0.8%, -0.2%] 33
Improvements (secondary) -0.9% [-1.4%, -0.2%] 18
All (primary) -0.1% [-0.8%, 0.7%] 56
  • Wins appear to roughly equal or slightly outweigh the losses here. (commented here)

Remove token::Lit from ast::MetaItemLit. #105160 (Comparison Link)

(instructions:u) mean range count
Regressions (primary) - - 0
Regressions (secondary) 1.0% [1.0%, 1.0%] 1
Improvements (primary) -0.9% [-1.0%, -0.8%] 5
Improvements (secondary) - - 0
All (primary) -0.9% [-1.0%, -0.8%] 5
  • There is a single trivial regression, which may or may not be real. (commented here)

Nominated Issues


  • “Android NDK r25b changes will break developers using r22b or older” rust#103673
  • “Temporarily disable building rustc with ThinLTO on x86_64-unknown-linux-gnu and x86_64-pc-windows-msvcrust#105662
    • ThinLTO on by default seems to “regress the message we print during ICEs sometimes, including the query stack and explanation on how to open a GH issue”
    • T-compiler to review: should we proceed and disable ThinLTO on CI temporarily also for linux+windows targets?


  • No nominated RFCs for T-compiler this time.

Next week’s WG checkins

None (WG-checkins paused for a few weeks)