T Compiler Meeting Agenda 2023 02 16

T-compiler Meeting Agenda 2023-02-16

Announcements

Other WG meetings (calendar link)

MCPs/FCPs

  • New MCPs (take a look, see if you like them!)
  • Old MCPs (stale MCP might be closed as per MCP procedure)
    • None at this time
  • Old MCPs (not seconded, take a look)
    • “Lower baseline expectations for i686 unix-like targets” compiler-team#548 (last review activity: about 2 days ago)
    • “configurable rustc timeout for compiletest tests” compiler-team#554 (last review activity: about 34 days ago)
    • “Rustc Contributor Program Major Change Proposal” compiler-team#557 (last review activity: about 35 days ago)
    • needs_drop as an auto trait” compiler-team#575 (last review activity: about 42 days ago)
    • “Add builtin# for compiler-intrinsic syntax” compiler-team#580 (last review activity: about 22 days ago)
    • “Switch PLT default to “yes” for all targets except x86_64.” compiler-team#581 (last review activity: about 12 days ago)
    • “Synthetic Partial Drop Glue” compiler-team#585 (last review activity: about 12 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)
  • Accepted MCPs
  • Finalized FCPs (disposition merge)
    • “fix: Unexpected trait bound not satisfied in HRTB and Associated Type” rust#103695
    • “rework min_choice algorithm of member constraints” rust#105300
    • “Relax ordering rules for asm! operands” rust#105798
    • “Support true and false as boolean flag params” rust#107043
    • “rustdoc: compute maximum Levenshtein distance based on the query” rust#107141
    • “rustdoc: remove inconsistently-present sidebar tooltips” rust#107490

WG checkins

  • @_WG-rls2.0 by @Lukas Wirth (previous checkin):

    Lukas writes: We got a PR that implements a bit of MIR for r-a for better const evaluation and we are currently looking into making our macro spans work similar to rustc’s as our current span representation is currently not powerful enough (its basically just IDs assigned to tokens, instead of text ranges).

  • @_WG-self-profile by @mw and @Wesley Wiser (previous checkin):

    Wesley writes: we shipped a new release with some bug fixes https://github.com/rust-lang/measureme/releases/tag/10.1.1

Backport nominations

T-compiler stable / T-compiler beta

  • No beta nominations for T-compiler this time.
  • No stable nominations for T-compiler this time.

T-rustdoc stable / T-rustdoc beta

  • No beta nominations for T-rustdoc this time.
  • No stable nominations for T-rustdoc this time.

:back: / :shrug: / :hand:

PRs S-waiting-on-team

T-compiler

Oldest PRs waiting for review

T-compiler

  • “Preserve DebugInfo in DeadStoreElimination.” rust#106852 (last review activity: about 29 days ago)
    • cc: @Jak{e,ob} Degen
  • “Implement SSA-based reference propagation” rust#106285 (last review activity: about 29 days ago)
    • PR r+d by @_oli, so probably cc: @RalfJ and @Jak{e,ob} Degen?
  • “Implement jump threading MIR opt” rust#107009 (last review activity: about 28 days ago)
    • cc: @Wesley Wiser (new assignee)
  • “rustc_codegen_ssa: Set e_flags for AVR architecture based on target CPU” rust#106619
    • probably waiting for another round of review cc: @bjorn3 and github user @rahix (not on Zulip)
  • “enable rust_2018_idioms lint group for doctests” rust#106621 (last review activity: about 21 days ago)
    • mostly T-libs but cc: @nils (Nilstrieb)

Short Summary

P-critical

T-compiler

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

T-types

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

T-rustdoc

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

Other P-high issues

  • “Miscompilation: Equal pointers comparing as unequal” rust#107975
    • Unsoundness bug, not a regression, not really new it seems (from this comment)
    • many reproducibles are piling on, seem to suggest an issue on LLVM side
    • should it be prioritized/investigated?

P-high regressions

P-high beta regressions

  • “Regression in Beta/Nightly: implementation of Trait is not general enough” rust#106630
    • #106759 was backported (IIUC should also adjust the tests): needs more work or can be closed?

Unassigned P-high nightly regressions

  • No unassigned P-high nightly regressions this time.

Performance logs

triage logs 2023-02-14

Overall a good week for performance with 77 real world crates benchmarks showing an average of nearly 1% performance improvement. Unfortunately, the largest regressions are not yet fully understood and require additional investigation. Of particular interest were some large improvements in doc builds due to storing additional metadata. However, this change might cause some crates to compile slightly slower in incremental check builds, but this is still being investigated.

Triage done by @rylev. Revision range: e4dd9edb..9bb6e60

Summary:

(instructions:u) mean range count
Regressions (primary) 1.4% [0.4%, 11.0%] 13
Regressions (secondary) 0.8% [0.2%, 1.6%] 4
Improvements (primary) -1.4% [-7.9%, -0.3%] 64
Improvements (secondary) -2.1% [-5.6%, -0.3%] 73
All (primary) -0.9% [-7.9%, 11.0%] 77

3 Regressions, 4 Improvements, 9 Mixed; ??? of them in rollups 46 artifact comparisons made in total

Regressions

Rollup of 6 pull requests #107870 (Comparison Link)

(instructions:u) mean range count
Regressions (primary) 0.7% [0.5%, 1.0%] 7
Regressions (secondary) - - 0
Improvements (primary) - - 0
Improvements (secondary) - - 0
All (primary) 0.7% [0.5%, 1.0%] 7

Implement deferred_projection_equality for erica solver #107507 (Comparison Link)

(instructions:u) mean range count
Regressions (primary) 0.8% [0.7%, 1.0%] 6
Regressions (secondary) - - 0
Improvements (primary) - - 0
Improvements (secondary) - - 0
All (primary) 0.8% [0.7%, 1.0%] 6

rustdoc: Remove cache for preprocessed markdown links #107933 (Comparison Link)

(instructions:u) mean range count
Regressions (primary) 1.2% [1.2%, 1.2%] 1
Regressions (secondary) 3.9% [3.9%, 3.9%] 1
Improvements (primary) - - 0
Improvements (secondary) - - 0
All (primary) 1.2% [1.2%, 1.2%] 1

Improvements

ReErased regions are local #107688 (Comparison Link)

(instructions:u) mean range count
Regressions (primary) - - 0
Regressions (secondary) - - 0
Improvements (primary) -0.8% [-1.2%, -0.3%] 8
Improvements (secondary) -1.5% [-2.6%, -0.4%] 6
All (primary) -0.8% [-1.2%, -0.3%] 8

Rollup of 8 pull requests #107811 (Comparison Link)

(instructions:u) mean range count
Regressions (primary) 0.6% [0.6%, 0.6%] 1
Regressions (secondary) - - 0
Improvements (primary) -0.8% [-1.4%, -0.2%] 7
Improvements (secondary) -3.4% [-4.2%, -1.6%] 7
All (primary) -0.6% [-1.4%, 0.6%] 8

Rollup of 9 pull requests #107828 (Comparison Link)

(instructions:u) mean range count
Regressions (primary) - - 0
Regressions (secondary) - - 0
Improvements (primary) -1.3% [-1.4%, -1.2%] 2
Improvements (secondary) -3.6% [-4.1%, -3.2%] 6
All (primary) -1.3% [-1.4%, -1.2%] 2

Reduce interning #107869 (Comparison Link)

(instructions:u) mean range count
Regressions (primary) - - 0
Regressions (secondary) - - 0
Improvements (primary) - - 0
Improvements (secondary) -1.4% [-2.6%, -0.4%] 12
All (primary) - - 0

Mixed

Rollup of 8 pull requests #107768 (Comparison Link)

(instructions:u) mean range count
Regressions (primary) - - 0
Regressions (secondary) 1.7% [1.7%, 1.7%] 2
Improvements (primary) -1.0% [-1.5%, -0.4%] 3
Improvements (secondary) -3.7% [-4.2%, -3.2%] 6
All (primary) -1.0% [-1.5%, -0.4%] 3
  • Small number of regressions in secondary benchmarks in a rollup - I think we’re fine calling this triaged.

Update cargo #107778 (Comparison Link)

(instructions:u) mean range count
Regressions (primary) 1.1% [0.4%, 1.5%] 3
Regressions (secondary) 3.3% [1.7%, 4.4%] 8
Improvements (primary) -2.4% [-7.7%, -0.4%] 8
Improvements (secondary) - - 0
All (primary) -1.4% [-7.7%, 1.5%] 11
  • Most of the regressions are due to noise

Optimize query_cache_hit to reduce code size of the query hot path. #107529 (Comparison Link)

(instructions:u) mean range count
Regressions (primary) 0.5% [0.5%, 0.5%] 1
Regressions (secondary) - - 0
Improvements (primary) -0.3% [-0.4%, -0.2%] 4
Improvements (secondary) - - 0
All (primary) -0.1% [-0.4%, 0.5%] 5
  • Regression is small

Optimize TyKind::eq. #107717 (Comparison Link)

(instructions:u) mean range count
Regressions (primary) 1.1% [1.0%, 1.2%] 2
Regressions (secondary) 3.6% [3.3%, 4.2%] 6
Improvements (primary) - - 0
Improvements (secondary) -1.5% [-1.6%, -1.3%] 2
All (primary) 1.1% [1.0%, 1.2%] 2
  • From @nnethercote: keccak and cranelift-codegen are noisy. wg-grammar saw the expected benefit, but it’s now considered non-significant, I guess it must have been a bit noisy recently as well.

Resolve documentation links in rustc and store the results in metadata #94857 (Comparison Link)

(instructions:u) mean range count
Regressions (primary) 0.6% [0.3%, 1.5%] 28
Regressions (secondary) 0.3% [0.3%, 0.3%] 1
Improvements (primary) -2.4% [-5.7%, -0.6%] 17
Improvements (secondary) -3.4% [-5.2%, -0.6%] 21
All (primary) -0.6% [-5.7%, 1.5%] 45

simplify layout calculations in rawvec #107167 (Comparison Link)

(instructions:u) mean range count
Regressions (primary) 0.3% [0.3%, 0.3%] 2
Regressions (secondary) - - 0
Improvements (primary) -0.4% [-0.7%, -0.2%] 11
Improvements (secondary) -0.6% [-1.4%, -0.2%] 9
All (primary) -0.3% [-0.7%, 0.3%] 13
  • Improvements greatly exceed regressions here.

Reverse Timsort scan direction #107191 (Comparison Link)

(instructions:u) mean range count
Regressions (primary) 0.6% [0.6%, 0.6%] 1
Regressions (secondary) 0.2% [0.2%, 0.2%] 2
Improvements (primary) -0.4% [-0.4%, -0.4%] 2
Improvements (secondary) - - 0
All (primary) -0.1% [-0.4%, 0.6%] 3
  • Regressions are small enough that I think we don’t need to investigate this closely.

Improve the array::map codegen #107634 (Comparison Link)

(instructions:u) mean range count
Regressions (primary) - - 0
Regressions (secondary) 0.3% [0.3%, 0.4%] 6
Improvements (primary) - - 0
Improvements (secondary) -0.2% [-0.3%, -0.2%] 4
All (primary) - - 0
Perf is a wash

rustc/rustdoc: Perform name resolver cleanups enabled by #94857 #107765 (Comparison Link)

(instructions:u) mean range count
Regressions (primary) 13.4% [13.4%, 13.4%] 1
Regressions (secondary) - - 0
Improvements (primary) -0.4% [-0.4%, -0.4%] 3
Improvements (secondary) -0.2% [-0.2%, -0.2%] 1
All (primary) 3.1% [-0.4%, 13.4%] 4
  • Being investigated by @petrochenkov

Nominated Issues

T-compiler

  • No I-compiler-nominated issues this time.

RFC

  • No I-compiler-nominated RFCs this time.

Next week meeting

Checkins:

  • @_WG-async-foundations by @nikomatsakis and @tmandry
  • Generic Associated Types initiative by @Jack Huey

Agenda draft: https://hackmd.io/lPakJ5w3S1GH3V0vyAVZfQ