T Compiler Meeting Agenda 2022 11 10

T-compiler Meeting Agenda 2022-11-10

Announcements

Other WG meetings

MCPs/FCPs

  • New MCPs (take a look, see if you like them!)
    • No new proposals this time.
  • Old MCPs (not seconded, take a look)
    • “Arbitrary annotations in compiletest” compiler-team#513 (last review activity: 6 months ago)
    • “Add #[alias] attribute to allow symbol aliasing” compiler-team#526 (last review activity: 3 months ago)
    • “Use RangeInclusive in SpanData instead of lo/hi” compiler-team#534 (last review activity: 2 months ago)
    • " Promote i586-unknown-linux-gnu to Tier 2 with Host Tools " compiler-team#543 (last review activity: 2 months ago)
    • “Lower baseline expectations for i686 unix-like targets” compiler-team#548 (last review activity: 2 months ago)
    • “MCP: Flag to disable extended error info.” compiler-team#550 (last review activity: about 43 days ago)
    • “configurable rustc timeout for compiletest tests” compiler-team#554 (last review activity: 2 months ago)
    • “Rustc Contributor Program Major Change Proposal” compiler-team#557 (last review activity: about 16 days ago)
    • “Introduce a #[rustc::*] tool attribute namespace and provide a stable #[rustc::on_unimplemented] attribute” compiler-team#560 (last review activity: about 22 days ago)
    • -Z instrument-xray option” compiler-team#561 (last review activity: about 22 days ago)
    • “Redefine dropck in terms of bound-like constructs” compiler-team#563 (last review activity: about 6 days ago)
  • Pending FCP requests (check your boxes!)
    • “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
    • “Handle projections as uncovered types during coherence check” rust#100555
    • “Elaborate supertrait obligations when deducing closure signatures” rust#101834
    • “make const_err a hard error” rust#102091
    • “make unaligned_reference a hard error” rust#102513
    • “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

WG checkins

Backport nominations

T-compiler stable / T-compiler beta

  • :beta: “Don’t silently eat label before block in block-like expr” rust#103986
    • nominated by @Michael Goulet (compiler-errors) (comment)
    • an easy fix for #103983, better if removed asap
  • :beta: “Use nominal_obligations_without_const in wf for FnDef” rust#104180
    • Fixes #104155, P-critical
  • :stable: “Don’t silently eat label before block in block-like expr” rust#103986
    • in case a 1.65.1 was discussed for other important stable backports (if any)

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

  • “Support endianness mark in test case check files” rust#104135
    • Most of this PR seems to be for T-infra but there are some small bits also in ./tools/compiletest/src
  • (other hidden issues in progress or waiting on other teams, details here)

Oldest PRs waiting for review

T-compiler

  • “Refactor metadata emission to avoid visiting HIR” rust#98867 (last review activity: 4 months ago)
    • ping @cjgillot (self-assigned)
  • “Fix implied outlives bounds logic for projections” rust#101680 (last review activity: about 59 days ago)
    • ping @Esteban Küber on comment but otherwise ping @aliemjay ?
  • “Implement the +whole-archive modifier for wasm-ldrust#102215 (last review activity: about 46 days ago)
    • ping @Esteban Küber

Issues of Note

Short Summary

P-critical

T-compiler

  • “ld64.lld: error: too many personalities (4) for compact unwind to encode” rust#102754
    • Waiting for T-release on including a mention about this (comment)
    • unsure if in the end an action was taken
  • “Rust update from 1.63 to 1.64 introduce lifetime problem on build” rust#103141
    • #103141 previously discussed and should be in stable (left a comment about that)

T-rustdoc

  • 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-11-08

A relatively noisy week (most of those have been dropped below, and comments left on GitHub), but otherwise a quiet one in terms of performance changes, with essentially no significant changes occuring.

Triage done by @simulacrum. Revision range: 822f8c22f540b12f296d844ad5bf39aaa47bfeb4..57d3c58ed6e0faf89a62411f96c000ffc9fd3937

Summary:

(instructions:u) mean range count
Regressions (primary) 1.2% [0.2%, 1.8%] 13
Regressions (secondary) 1.2% [0.2%, 2.1%] 47
Improvements (primary) -1.5% [-4.0%, -0.2%] 21
Improvements (secondary) -1.8% [-3.9%, -0.3%] 61
All (primary) -0.4% [-4.0%, 1.8%] 34

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

Regressions

Rollup of 6 pull requests #103998 (Comparison Link)

(instructions:u) mean range count
Regressions (primary) 2.5% [0.3%, 3.9%] 6
Regressions (secondary) 1.4% [0.4%, 3.5%] 43
Improvements (primary) - - 0
Improvements (secondary) -1.3% [-1.5%, -1.0%] 2
All (primary) 2.5% [0.3%, 3.9%] 6

Appears to be a genuine regression. Mostly limited to smaller benchmarks, so most likely just a slight increase in the minimum work rustc does. Suspected to be due to the changes in sysroot detection; have enqueued a build to try and find out.

std: sync “Dependencies of the backtrace crate” with backtrace #103934 (Comparison Link)

(instructions:u) mean range count
Regressions (primary) 1.4% [0.9%, 1.8%] 10
Regressions (secondary) 1.5% [0.3%, 3.3%] 47
Improvements (primary) - - 0
Improvements (secondary) - - 0
All (primary) 1.4% [0.9%, 1.8%] 10

Some of this may be noise, but it’s also possible that the newer dependencies are doing slightly different things causing some regressions – it’s possible we’re computing backtraces somewhere, and even modulo that, the changes to the standard library may cause different inlining decisions, etc.

Improvements

Make rustdoc Item::visibility computed on-demand #103690 (Comparison Link)

(instructions:u) mean range count
Regressions (primary) - - 0
Regressions (secondary) - - 0
Improvements (primary) -0.8% [-1.7%, -0.4%] 11
Improvements (secondary) -1.6% [-2.7%, -0.6%] 23
All (primary) -0.8% [-1.7%, -0.4%] 11

Rollup of 7 pull requests #103962 (Comparison Link)

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

Mixed

Revert “ci: Bring back ninja for dist builders” #103846 (Comparison Link)

(instructions:u) mean range count
Regressions (primary) - - 0
Regressions (secondary) 2.5% [2.5%, 2.5%] 1
Improvements (primary) -1.7% [-7.4%, -0.2%] 19
Improvements (secondary) -2.0% [-6.6%, -0.2%] 71
All (primary) -1.7% [-7.4%, -0.2%] 19

This change was reverted precisely due to the performance regression it introduced, so this is no surprise.

Rollup of 5 pull requests #104017 (Comparison Link)

(instructions:u) mean range count
Regressions (primary) 1.4% [1.4%, 1.4%] 1
Regressions (secondary) 0.5% [0.3%, 0.8%] 2
Improvements (primary) -1.0% [-3.2%, -0.3%] 13
Improvements (secondary) -2.3% [-3.1%, -0.6%] 19
All (primary) -0.9% [-3.2%, 1.4%] 14

Minor regressions in two secondary benchmarks and in libc don’t seem to warrant further investigation, especially given the general improvement across the board.

Some tracing and comment cleanups #103975 (Comparison Link)

(instructions:u) mean range count
Regressions (primary) 1.0% [0.2%, 1.5%] 3
Regressions (secondary) 1.9% [0.3%, 4.2%] 13
Improvements (primary) - - 0
Improvements (secondary) -0.6% [-0.6%, -0.6%] 3
All (primary) 1.0% [0.2%, 1.5%] 3

Most of the regressions are probably noise, so this change is likely actually an improvement or neutral.

Nominated Issues

T-compiler

  • “libcompiler-builtins contains DWARF5 debuginfo in 1.62.0” rust#98746
    • (from previous meeting): nominated by @pnkfelix, slipped prioritization and went unnoticed (was not labelled as regression)
    • comment with some context
  • “Upgrade mingw-w64 on CI” rust#100178
    • here is some context on versions: comment
    • nominated by @cuviper (comment) for weighing in the compatibility point of view, also considering the upcoming LLVM16 comment
    • provides a summary of options
  • “Remove save-analysis.” rust#101841
    • from last week: nominated by Wesley to decide when landing this (comment) and allow other tooling to migrate to rust-analyzer Zulip discussion
  • “Android NDK r25b changes will break developers using r22b or older” rust#103673
    • First comment has a lot of useful context
    • Nominated by @simulacrum (comment), suggests a rollback of #102332 or tweak the new min. version threshold
    • Discussed also on Zulip
    • @apiraino: maybe an FCP? perhaps worth mentioning that the suggested new Android NDK min. version would be a jump (r15c -> r25b) to the latest LTS (released in Oct. 2022)
  • “Panic on invalid usages of MaybeUninit::uninit().assume_init()rust#100423
  • “const eval interpreter step limit being hit on nightly for long-running while loop” rust#103814
    • #[const_eval_limit] is now on nightly, people are tripping over it (comments in #93481)
    • @pnkfelix says: the lang team did discuss #103877 yesterday, and I think we managed to convince niko that shifting from a hard error to a lint is reasonable
    • Felix mentions for context also #67217

RFC

  • No nominated RFCs for T-compiler this time.

Next week’s WG checkins

  • @_WG-polymorphization by @davidtwco
  • @_WG-rls2.0 by @Lukas Wirth