T Compiler Meeting Agenda 2023 02 09

T-compiler Meeting Agenda 2023-02-09

Announcements

  • Compiler Team Planning meeting at time:2023-02-10T10:00:00-05:00
  • pnkfelix unilaterally approved the stable-backport of #105624, “Fix unsoundness in bootstrap cache code”, to Rust 1.67.1-stable.
  • 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 (stale MCP might be closed as per MCP procedure)
    • None at this time
  • Old MCPs (not seconded, take a look)
    • " Promote i586-unknown-linux-gnu to Tier 2 with Host Tools " compiler-team#543 (last review activity: 5 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: about 26 days ago)
    • “Rustc Contributor Program Major Change Proposal” compiler-team#557 (last review activity: about 27 days ago)
    • needs_drop as an auto trait” compiler-team#575 (last review activity: about 34 days ago)
    • “Store ICE backtraces to disk and point end users at the file location” compiler-team#578 (last review activity: about 26 days ago)
    • “Add builtin# for compiler-intrinsic syntax” compiler-team#580 (last review activity: about 14 days ago)
    • “Switch PLT default to “yes” for all targets except x86_64.” compiler-team#581 (last review activity: about 4 days ago)
    • “Synthetic Partial Drop Glue” compiler-team#585 (last review activity: about 4 days ago)
  • Pending FCP requests (check your boxes!)
    • “Make unused_allocation lint against Box::new too” rust#104363
    • “Add deployment-target –print flag for Apple targets” rust#105354
    • “Update the version of musl used on *-linux-musl targets to 1.2.3” rust#107129
  • Things in FCP (make sure you’re good with it)
    • “MCP: Resolve documentation links in rustc and store the results in metadata” compiler-team#584
    • “Support true and false as boolean flag params” rust#107043
  • Accepted MCPs
  • Finalized FCPs (disposition merge)
    • “rustdoc: compute maximum Levenshtein distance based on the query” rust#107141

WG checkins

@_WG-mir-opt by @oli (previous checkin):

#[custom_mir] supports more constructs now, allowing you to actually write some useful MIR directly from Rust source code. See the examples in our test suite for details. We’re reworking how drop works to simplify the analyses (and as a side effect allow const code to handle matching on Option of Drop types nicely)

@_WG-polymorphization by @davidtwco (previous checkin):

Checkin text

Backport nominations

T-compiler beta / T-compiler stable

  • :beta: “Do not eagerly recover for bad impl Trait types in macros” rust#107813
    • Fixes rust#107813, P-high
    • This also fixes a separate regression from #99915
    • work by @Michael Goulet (compiler-errors), should be safe to backport (nomination comment)
  • 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

T-compiler

Oldest PRs waiting for review

T-compiler

  • “Support #[global_allocator] without the allocator shim” rust#86844
    • by reading comment from @Jack Huey: could this be merged?
  • “Fix #99684 through autoref in write! macro with a two-phased borrows retrocompat workaround” rust#100202 (last review activity: about 53 days ago)
    • @pnkfelix self-assigned
  • “Remove dead unwinds before drop elaboration” rust#106430 (last review activity: about 33 days ago)
    • ping @Wesley Wiser (some new perf. results awaiting triage)
  • “Implement RFC 3323: restrictions” rust#106074 (last review activity: about 32 days ago)
    • ping @Michael Goulet (compiler-errors)

Issues of Note

Short Summary

P-critical

T-compiler

  • “1.67 regression with ……::{opaque#0}<'_> does not live long enough error” rust#107516
    • needs MCVE, compiler-errors will take point from pnkfelix on that in short term
  • “Windows builds fail to link C++ static library” rust#107162
    • fixed by reverting the thin archiver reading (#107609)

T-types

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

T-rustdoc

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

P-high regressions

P-high beta regressions

Unassigned P-high nightly regressions

  • No unassigned P-high nightly regressions this time.

Performance logs

triage logs for 2022-02-07

Much noise in benchmarks this week, which makes it hard to tell what the real improvements were and what they were due to. A query cache change (PR #107667) is part of the story. In addition, much improvement was reaped from the change to not deaggregate MIR (PR #107267). Finally, microoptimizing fold_ty (PR #107627) yielded a small improvement to a broad set of benchmarks.

Triage done by @pnkfelix. Revision range: a64ef7d0..e4dd9edb

Summary:

(instructions:u) mean range count
Regressions (primary) 2.4% [0.3%, 18.8%] 18
Regressions (secondary) 1.8% [0.2%, 4.1%] 21
Improvements (primary) -1.0% [-3.2%, -0.3%] 88
Improvements (secondary) -4.0% [-13.1%, -0.1%] 47
All (primary) -0.4% [-3.2%, 18.8%] 106

3 Regressions, 3 Improvements, 8 Mixed; 3 of them in rollups 41 artifact comparisons made in total 30 Untriaged Pull Requests

Regressions

Fix handling of items inside a doc(hidden) block #107000 (Comparison Link)

(instructions:u) mean range count
Regressions (primary) 4.1% [0.2%, 18.9%] 9
Regressions (secondary) 1.1% [0.2%, 1.7%] 5
Improvements (primary) - - 0
Improvements (secondary) - - 0
All (primary) 4.1% [0.2%, 18.9%] 9
  • a number of doc benchmarks regressed, but only doc benchmarks.

  • the big hit was a 18.9% regression to doc on hyper.

  • rustdoc developer says the issue cannot be resolved without some amount of regression, so marked as triaged.

    don’t point at nonexisting code beyond EOF when warning about delims #107663 (Comparison Link)

(instructions:u) mean range count
Regressions (primary) 0.2% [0.2%, 0.2%] 1
Regressions (secondary) 0.9% [0.2%, 1.3%] 9
Improvements (primary) - - 0
Improvements (secondary) - - 0
All (primary) 0.2% [0.2%, 0.2%] 1
  • already marked as triaged

Run expand-yaml-anchors in x test tidy #107704 (Comparison Link)

(instructions:u) mean range count
Regressions (primary) 1.0% [0.4%, 1.5%] 3
Regressions (secondary) 3.7% [3.4%, 4.3%] 6
Improvements (primary) - - 0
Improvements (secondary) - - 0
All (primary) 1.0% [0.4%, 1.5%] 3
  • PR author says PR touched only CI code, and therefore this must be noise
  • primary regressions are on cranelift variations; secondary are on keccak
  • graphs for cranelift and keccak both have up-and-down swings that both begun with #107627; will check with nnethercote about that
  • marked as triaged.

Improvements

emit ConstEquate in TypeRelating<D> #107434 (Comparison Link)

(instructions:u) mean range count
Regressions (primary) - - 0
Regressions (secondary) - - 0
Improvements (primary) -0.4% [-0.4%, -0.3%] 2
Improvements (secondary) -0.8% [-1.3%, -0.2%] 10
All (primary) -0.4% [-0.4%, -0.3%] 2

Recover form missing expression in for loop #107526 (Comparison Link)

(instructions:u) mean range count
Regressions (primary) - - 0
Regressions (secondary) - - 0
Improvements (primary) -0.3% [-0.3%, -0.3%] 2
Improvements (secondary) -1.0% [-1.3%, -0.6%] 7
All (primary) -0.3% [-0.3%, -0.3%] 2

Remove OnHit callback from query caches. #107667 (Comparison Link)

(instructions:u) mean range count
Regressions (primary) - - 0
Regressions (secondary) - - 0
Improvements (primary) -0.6% [-1.7%, -0.2%] 49
Improvements (secondary) -2.0% [-5.9%, -0.3%] 36
All (primary) -0.6% [-1.7%, -0.2%] 49
  • as already noted by nnethercote, these results appear better than reality
  • much of the delta is noise (namely inverse of #107627 (see below)).

Mixed

Don’t generate unecessary &&self.field in deriving Debug #107599 (Comparison Link)

(instructions:u) mean range count
Regressions (primary) 0.4% [0.3%, 0.4%] 2
Regressions (secondary) 1.0% [0.2%, 4.9%] 7
Improvements (primary) -1.0% [-2.9%, -0.4%] 9
Improvements (secondary) - - 0
All (primary) -0.8% [-2.9%, 0.4%] 11

Rollup of 6 pull requests #107642 (Comparison Link)

(instructions:u) mean range count
Regressions (primary) - - 0
Regressions (secondary) 0.4% [0.1%, 0.8%] 9
Improvements (primary) -0.3% [-0.5%, -0.2%] 8
Improvements (secondary) -0.8% [-1.1%, -0.5%] 7
All (primary) -0.3% [-0.5%, -0.2%] 8
  • sole regressions are to (secondary) deep-vector and match-stress.
  • perf graph for deep-vector hints that this might not be noise, but it is also minor.
  • marking as triaged.

Rollup of 8 pull requests #107650 (Comparison Link)

(instructions:u) mean range count
Regressions (primary) - - 0
Regressions (secondary) 4.4% [0.3%, 6.2%] 8
Improvements (primary) - - 0
Improvements (secondary) -7.4% [-7.4%, -7.4%] 1
All (primary) - - 0
  • the vast bulk regressions are on six variations of secondary benchmarks match-stress

  • and all of those appear to to have all been resolved by follow-on PR #107667 (see above)

  • marking as triaged.

    Do not deaggregate MIR #107267 (Comparison Link)

(instructions:u) mean range count
Regressions (primary) 0.5% [0.2%, 1.1%] 51
Regressions (secondary) 0.8% [0.1%, 2.0%] 30
Improvements (primary) -1.4% [-2.6%, -0.3%] 25
Improvements (secondary) -6.0% [-12.9%, -0.6%] 27
All (primary) -0.1% [-2.6%, 1.1%] 76
(instructions:u) mean range count
Regressions (primary) - - 0
Regressions (secondary) 0.8% [0.8%, 0.8%] 2
Improvements (primary) - - 0
Improvements (secondary) -0.6% [-1.1%, -0.4%] 7
All (primary) - - 0
  • regressions are to secondary benchmark externs.
  • whatever this regression was, it has since been more than recovered by #107667

Less import overhead for errors #107679 (Comparison Link)

(instructions:u) mean range count
Regressions (primary) 0.4% [0.3%, 0.5%] 2
Regressions (secondary) 0.9% [0.3%, 1.3%] 11
Improvements (primary) - - 0
Improvements (secondary) -0.7% [-0.7%, -0.7%] 2
All (primary) 0.4% [0.3%, 0.5%] 2
(instructions:u) mean range count
Regressions (primary) - - 0
Regressions (secondary) 0.7% [0.7%, 0.7%] 2
Improvements (primary) -0.3% [-0.4%, -0.2%] 2
Improvements (secondary) -0.9% [-1.3%, -0.3%] 11
All (primary) -0.3% [-0.4%, -0.2%] 2
  • already marked as triaged (and its noise)

Optimize fold_ty #107627 (Comparison Link)

(instructions:u) mean range count
Regressions (primary) 1.1% [1.0%, 1.1%] 2
Regressions (secondary) 2.3% [0.6%, 4.2%] 12
Improvements (primary) -0.4% [-0.5%, -0.3%] 18
Improvements (secondary) -0.7% [-1.6%, -0.2%] 30
All (primary) -0.3% [-0.5%, 1.1%] 20

Nominated Issues

T-compiler

  • “Stabilize f16c_target_feature” #106323
    • we missed this one because nominated when already closed
    • context provided by @pnkfelix (in this comment)
    • related PR rust#107711 is waiting for review
    • needs to be discussed?

RFC

  • No nominated RFCs for T-compiler this time.

Next week meeting

Checkins:

  • @_WG-rls2.0 by @Lukas Wirth
  • @_WG-self-profile by @mw and @Wesley Wiser

Agenda draft: https://hackmd.io/DzXUoPG6T-S5NfXcl8h1yg