T Compiler Meeting Agenda 2023 11 16

T-compiler Meeting Agenda 2023-11-16

Announcements

Other WG meetings (calendar link)

MCPs/FCPs

WG checkins

  • @_WG-async-foundations by @nikomatsakis and @tmandry

    Checkin text

  • @WG-diagnostics by @Esteban Küber and @oli

    Checkin text

Backport nominations

T-compiler stable / T-compiler beta

  • :beta: [1.75] “Update to LLVM 17.0.5” rust#117907
    • Fixes #116177 perf regression on MIPS
    • nominated by @nikic: “Mips is tier 3, but it probably still makes sense to backport this, as the target is currently completely broken.” (comment)
    • Note: backport is for the next beta

T-types stable / T-types beta

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

PRs S-waiting-on-team

T-compiler

Issues of Note

Short Summary

P-critical

T-compiler

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

T-types

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

P-high regressions

P-high beta regressions

  • No unassigned P-high beta regressions this time.

Unassigned P-high nightly regressions

  • No unassigned P-high nightly regressions this time.

Performance logs

triage logs for 2023-11-14

A week dominated by one particular perf improvement that lead to huge performance gains - an avg of 5% improvement across 121 test cases! The perf improvement comes from adding an #[inline] hint to the output from #[derive(Debug)] which presumably allows the compiler to more easily do deadcode elimination reducing the binary size and the amount of code that actually needs to be code-gened.

Triage done by @rylev. Revision range: 7b97a5ca..173b6e68

Summary:

(instructions:u) mean range count
Regressions (primary) 0.4% [0.2%, 0.9%] 10
Regressions (secondary) 1.9% [0.2%, 3.6%] 12
Improvements (primary) -5.6% [-49.2%, -0.1%] 111
Improvements (secondary) -3.5% [-25.0%, -0.2%] 155
All (primary) -5.1% [-49.2%, 0.9%] 121

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

Regressions

Bump libc dependency #117617 (Comparison Link)

(instructions:u) mean range count
Regressions (primary) 8.3% [1.1%, 19.0%] 9
Regressions (secondary) - - 0
Improvements (primary) - - 0
Improvements (secondary) - - 0
All (primary) 8.3% [1.1%, 19.0%] 9
  • A curious perf infra glitch - the regression returned to normal after a few runs.

Rollup of 6 pull requests #117736 (Comparison Link)

(instructions:u) mean range count
Regressions (primary) 0.4% [0.2%, 0.5%] 5
Regressions (secondary) 0.6% [0.6%, 0.6%] 1
Improvements (primary) - - 0
Improvements (secondary) - - 0
All (primary) 0.4% [0.2%, 0.5%] 5
  • The only PR that includes actual changes to the compiler is #117645. Kicked off a test to see if that’s the root cause.

Improvements

Rollup of 4 pull requests #117680 (Comparison Link)

(instructions:u) mean range count
Regressions (primary) - - 0
Regressions (secondary) - - 0
Improvements (primary) -9.1% [-16.0%, -2.6%] 7
Improvements (secondary) - - 0
All (primary) -9.1% [-16.0%, -2.6%] 7
  • The flip side of #117617’s strange perf regression.

Add std::hash::{DefaultHasher, RandomState} exports (needs FCP) #115694 (Comparison Link)

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

Mixed

Only use normalize_param_env when normalizing predicate in check_item_bounds #117542 (Comparison Link)

(instructions:u) mean range count
Regressions (primary) 0.4% [0.4%, 0.4%] 1
Regressions (secondary) 1.4% [0.8%, 2.3%] 12
Improvements (primary) -18.4% [-49.6%, -0.2%] 20
Improvements (secondary) - - 0
All (primary) -17.5% [-49.6%, 0.4%] 21

Emit #[inline] on derive(Debug) #117727 (Comparison Link)

(instructions:u) mean range count
Regressions (primary) 3.1% [0.3%, 13.7%] 5
Regressions (secondary) 1.8% [0.2%, 3.4%] 6
Improvements (primary) -2.3% [-10.6%, -0.1%] 110
Improvements (secondary) -3.2% [-25.2%, -0.1%] 177
All (primary) -2.1% [-10.6%, 13.7%] 115
  • Huge wins outweigh the small losses.

Rollup of 6 pull requests #117769 (Comparison Link)

(instructions:u) mean range count
Regressions (primary) 0.3% [0.3%, 0.3%] 1
Regressions (secondary) 1.0% [1.0%, 1.0%] 1
Improvements (primary) -6.5% [-12.3%, -0.7%] 2
Improvements (secondary) - - 0
All (primary) -4.2% [-12.3%, 0.3%] 3
  • Noise

Nominated Issues

T-compiler

  • No I-compiler-nominated issues this time.

RFC

  • “RFC: Packages as (optional) namespaces” rfcs#3243
    • See relevant Zulip topic
    • (will now remove the nomination label, the RFC has been widely announced)

Oldest PRs waiting for review

T-compiler

  • “Require type_map::stub callers to supply file information” rust#104342 (last review activity: 5 months ago)
    • cc: @wesley wiser
    • looking closely at this comment, seems the PR author is asking for guidance on how to implement a -Z flag.
  • “Add illumos aarch64 target for rust.” rust#112936 (last review activity: 4 months ago)
    • cc: @jack huey
    • PR seems approved (comment), maybe just needs a little nudge from the assigned reviewer?
  • “fix(parse): avoid panic when cfg wrapper by bracket under capture-cfg mode” rust#113056 (last review activity: 3 months ago)
    • cc: @Aaron Hill (reviewer assigned by @_davidtwco)
  • “Add $message_type field to distinguish json diagnostic outputs” rust#115691 (last review activity: 2 months ago)
    • Waits for mcp#674 now a FCP (comment)
    • missing a few checkboxes from T-compiler
  • “Try to use approximate placeholder regions when outputting an AscribeUserType error in borrowck” rust#116097 (last review activity: about 52 days ago)
    • cc: @wesley wiser

Next triage meeting on time:2023-11-30T16:00:00+01:00