T Compiler Meeting Agenda 2023 01 26

T-compiler Meeting Agenda 2023-01-26

Announcements

  • Today - release of Rust stable 1.67!
  • [Types team] Shallow subtyping weekly meeting at time:2023-01-30T10: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).
  • @jyn : Does T-compiler want to be on the review rotation for PRs modifying compiletest?

Other WG meetings (calendar link)

MCPs/FCPs

  • New MCPs (take a look, see if you like them!)
    • No new proposals this time.
  • Stale MCPs (tracked on HackMD. Candidate for closing, see 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 33 days ago)
    • “configurable rustc timeout for compiletest tests” compiler-team#554 (last review activity: about 13 days ago)
    • “Rustc Contributor Program Major Change Proposal” compiler-team#557 (last review activity: about 14 days ago)
    • needs_drop as an auto trait” compiler-team#575 (last review activity: about 20 days ago)
    • “Store ICE backtraces to disk and point end users at the file location” compiler-team#578 (last review activity: about 12 days ago)
    • “Add builtin# for compiler-intrinsic syntax” compiler-team#580 (last review activity: about 1 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
    • “Support true and false as boolean flag params” rust#107043
  • Things in FCP (make sure you’re good with it)
  • Accepted MCPs
  • Finalized FCPs (disposition merge)
    • “rustdoc: change trait bound formatting” rust#102842
    • “Add SEMICOLON_IN_EXPRESSIONS_FROM_MACROS to future-incompat report” rust#103418
    • “Check ADT fields for copy implementations considering regions” rust#105102

WG checkins

  • @_WG-rustc-dev-guide by @Santiago Pastorino and @Yuki Okushi|217081 (previous checkin):

    Most notable changes

    • Add a section for how to review code more easily #1538
    • Add help for when you update a submodule by accident #1537
    • Add more rebasing help #1536
    • Add documentation for LLVM KCFI support #1529
    • Simplify “how to build and run” section #1528
    • Remove TyS #1526

    Most notable WIPs

    • wip: extend bootstrap related documentations #1563
    • bootsrapping stages overview list #1555
    • add section for the new trait solver #1551
    • Add Neovim configuration information #1545
    • Add back the canonicalization chapter. #1532
    • Create a chapter for AST validation #1524
    • Add a review checklist and suggest reviews as a way to get started with the project #1463
    • Improve documentation of MIR queries & passes #1434
    • Document inert vs active attributes #1110
  • Impl Trait initiative by @oli (previous checkin):

    TAIT stabilization FCP started. Leftover blockers: more documentation and landing open PRs

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

  • “add with_hash_task to generate DepNode deterministically” rust#100987 (last review activity: 3 months ago)
    • ping @cjgillot for another look
  • “Parse unnamed struct and union fields” rust#99754 (last review activity: 2 months ago)
    • cc: @cjgillot
  • “Remove dead unwinds before drop elaboration” rust#106430 (last review activity: about 21 days ago)
    • assigned to @nils (Nilstrieb) @Wesley Wiser

Issues of Note

Short Summary

P-critical

T-compiler

  • “regression: failed to resolve proc macro definition” rust#106337
    • already discussed: #107133 will revert #84022
    • Was also discussed whether to revert #103760 (unsure if it was reverted)

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

  • “Regression in Beta/Nightly: implementation of Trait is not general enough” rust#106630
    • Reverted by #106759 by @Michael Goulet (compiler-errors)
  • “Windows builds fail to link C++ static library” rust#107162
    • Assigned P-high (though not completely sure, see comment)
    • opened recently, seems caused by #97485

Unassigned P-high nightly regressions

  • No unassigned P-high nightly regressions this time.

Performance logs

triage logs for 2023-01-24

Largely a win for compiler performance with 100 test cases in real-world crates showing some sort of change in performance with an average 1% improvement. These wins were a combination of many different changes including how doc(hidden) gets more efficiently encoded in metadata, some optimizations in the borrow checker, and simplification of the output from derive(Debug) for fieldless enums.

Triage done by @rylev. Revision range: 1f72129f..c8e6a9e8

Summary:

(instructions:u) mean range count
Regressions (primary) 0.4% [0.2%, 0.7%] 19
Regressions (secondary) 0.9% [0.2%, 1.5%] 34
Improvements (primary) -1.3% [-17.2%, -0.2%] 81
Improvements (secondary) -2.1% [-7.1%, -0.2%] 64
All (primary) -1.0% [-17.2%, 0.7%] 100

2 Regressions, 5 Improvements, 3 Mixed; 1 of them in rollups 34 artifact comparisons made in total

Regressions

Check ADT fields for copy implementations considering regions #105102 (Comparison Link)

(instructions:u) mean range count
Regressions (primary) 0.5% [0.4%, 0.5%] 6
Regressions (secondary) 1.7% [1.4%, 2.0%] 3
Improvements (primary) - - 0
Improvements (secondary) - - 0
All (primary) 0.5% [0.4%, 0.5%] 6

ci: upgrade mingw-check to ubuntu:22.04 #106948 (Comparison Link)

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

Improvements

rustdoc: Revert #104889 #107083 (Comparison Link)

(instructions:u) mean range count
Regressions (primary) - - 0
Regressions (secondary) - - 0
Improvements (primary) -4.4% [-15.7%, -0.5%] 7
Improvements (secondary) -1.5% [-1.6%, -1.4%] 3
All (primary) -4.4% [-15.7%, -0.5%] 7

Remove some ref patterns from the compiler #106090 (Comparison Link)

(instructions:u) mean range count
Regressions (primary) - - 0
Regressions (secondary) - - 0
Improvements (primary) -0.2% [-0.2%, -0.1%] 3
Improvements (secondary) -0.3% [-0.5%, -0.3%] 5
All (primary) -0.2% [-0.2%, -0.1%] 3

Lazy dominator tree construction in borrowck #106976 (Comparison Link)

(instructions:u) mean range count
Regressions (primary) - - 0
Regressions (secondary) - - 0
Improvements (primary) -0.4% [-0.6%, -0.3%] 26
Improvements (secondary) -0.7% [-1.0%, -0.3%] 14
All (primary) -0.4% [-0.6%, -0.3%] 26

Remap paths in UI tests by default #105924 (Comparison Link)

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

rustc_metadata: Encode doc(hidden) flag to metadata #107136 (Comparison Link)

(instructions:u) mean range count
Regressions (primary) - - 0
Regressions (secondary) 0.2% [0.2%, 0.2%] 1
Improvements (primary) -1.9% [-5.7%, -0.5%] 18
Improvements (secondary) -3.3% [-5.8%, -0.8%] 28
All (primary) -1.9% [-5.7%, -0.5%] 18

Mixed

Rollup of 9 pull requests #107143 (Comparison Link)

(instructions:u) mean range count
Regressions (primary) 0.3% [0.2%, 0.8%] 57
Regressions (secondary) 0.5% [0.2%, 1.4%] 28
Improvements (primary) -0.7% [-1.1%, -0.3%] 2
Improvements (secondary) -0.7% [-1.2%, -0.5%] 8
All (primary) 0.3% [-1.1%, 0.8%] 59
  • This rollup contains a perf regression due to #104672
  • Probably caused by some changes to inlining.

Simplify derive(Debug) output for fieldless enums #106884 (Comparison Link)

(instructions:u) mean range count
Regressions (primary) - - 0
Regressions (secondary) 0.8% [0.7%, 1.0%] 7
Improvements (primary) -0.5% [-1.7%, -0.2%] 22
Improvements (secondary) -1.7% [-2.9%, -0.5%] 8
All (primary) -0.5% [-1.7%, -0.2%] 22
  • Improvements outweigh the regressions so I think it’s fine if we just take this performance as is.

Use UnordMap and UnordSet for id collections (DefIdMap, LocalDefIdMap, etc) #106977 (Comparison Link)

(instructions:u) mean range count
Regressions (primary) 0.3% [0.2%, 0.3%] 2
Regressions (secondary) 0.6% [0.4%, 0.8%] 7
Improvements (primary) -0.5% [-0.5%, -0.5%] 3
Improvements (secondary) -0.3% [-0.7%, -0.2%] 20
All (primary) -0.2% [-0.5%, 0.3%] 5
  • perf got slightly worse from the original perf run, but it’s still enough of a wash that I don’t think it needs investigating.

Nominated Issues

T-compiler

  • “Default to -Z plt=yes” rust#106380
    • nominated by @Nikita Popov (comment)
    • commit 6009da0 defaulted to -Z plt=no
    • original discussion that enabled -fno-plt by default: #54592
  • “Remove a few actually_rustdoc uses” rust#107289
    • nominated by @jyn (comment), asks for FCP
    • T-rustdoc needs to also sign-off

RFC

  • No nominated RFCs for T-compiler this time.

Next week’s WG checkins

  • @_WG-llvm by @nagisa and @Nikita Popov
  • Types team by @nikomatsakis and @Jack Huey