T Compiler Meeting Agenda 2022 09 08

T-compiler Meeting Agenda 2022-09-08

Announcements

  • wg-async weekly at time:2022-09-08T12:00:00-04: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).

Other WG meetings

MCPs/FCPs

  • New MCPs (take a look, see if you like them!)
  • Old MCPs (not seconded, take a look)
    • “Arbitrary annotations in compiletest” compiler-team#513 (last review activity: 4 months ago)
      • any comment on this one? Maybe drop it? Seems to have attracted very few comments
    • “Add #[alias] attribute to allow symbol aliasing” compiler-team#526 (last review activity: about 48 days ago)
    • “Use RangeInclusive in SpanData instead of lo/hi” compiler-team#534 (last review activity: about 13 days ago)
    • “Allow informational -Z flags on stable compiler” compiler-team#542 (last review activity: about 13 days ago)
    • " Promote i586-unknown-linux-gnu to Tier 2 with Host Tools " compiler-team#543 (last review activity: about 13 days ago)
    • “Lower baseline expectations for i686 unix-like targets” compiler-team#548 (last review activity: about 0 days ago)
    • “MCP: Flag to disable extended error info.” compiler-team#550 (last review activity: about 0 days ago)
    • “New Tier-3 target proposal: powerpc64-ibm-aix” compiler-team#553 (last review activity: about 0 days ago)
    • “configurable rustc timeout for compiletest tests” compiler-team#554 (last review activity: about 0 days ago)
  • Pending FCP requests (check your boxes!)
    • No pending FCP requests this time.
  • Things in FCP (make sure you’re good with it)
    • “Consider #[must_use] annotation on async fn as also affecting the Future::Outputrust#100633
  • Accepted MCPs
  • Finalized FCPs (disposition merge)
    • “Tracking issue for RFC 2046, label-break-value” rust#48594
    • “Tracking Issue for “unsafe blocks in unsafe fn” (RFC #2585)” rust#71668
    • “Remove migrate borrowck mode” rust#95565
    • “Modify MIR building to drop repeat expressions with length zero” rust#95953
    • “Lang: Stabilize usage of rustc_nonnull_optimization_guaranteed on -1” rust#97122
    • “Remove a back-compat hack on lazy TAIT” rust#97346
    • “Make outlives::{components,verify} agree” rust#97406
    • “make cenum_impl_drop_cast deny-by-default” rust#97652
    • “make const_err show up in future breakage reports” rust#97743
    • “lub: don’t bail out due to empty binders” rust#97867
    • “allow unions with mutable references and tuples of allowed types” rust#97995
    • “do not mark interior mutable shared refs as dereferenceable” rust#98017
    • “relate closure_substs.parent_substs() to parent fn in NLL” rust#98835
    • “Strengthen invalid_value lint to forbid uninit primitives, adjust docs to say that’s UB” rust#98919
    • “Make forward compatibility lint deprecated_cfg_attr_crate_type_name deny by default” rust#99784
    • “Stabilize raw-dylib for non-x86” rust#99916
    • “Register wf obligation before normalizing in wfcheck " rust#100046

WG checkins

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

    Nothing to report this cycle.

Backport nominations

T-compiler beta / T-compiler stable

  • :beta: “fix RPIT ICE for implicit HRTB when missing dyn” rust#101468
    • nominated by @spastorino, fixes a beta regression
  • 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

  • “Tracking issue for dyn upcasting coercion” rust#65991
  • “Warn when casting an enum that is fieldless but not C-like” rust#92700
    • waiting on t-lang
  • “panic-on-uninit: relax checks due to 0x01-filling” rust#101061
    • waiting on T-libs

Oldest PRs waiting for review

T-compiler

  • “Use only ty::Unevaluated<‘tcx, ()> in type system” rust#98588 (last review activity: 2 months ago)
    • ready for another round of review? commits stopped 1 month ago cc @lcnr
  • “Resolve $crate at the expansion-local crate” rust#99445 (last review activity: about 45 days ago)
    • maybe cc @Vadim Petrochenkov ?
  • “Add kernel-address sanitizer support for freestanding targets” rust#99679 (last review activity: about 41 days ago)
    • maybe cc: @cuviper
  • “a fn pointer doesn’t implement Fn/FnMut/FnOnce if its return type isn’t sized” rust#100096 (last review activity: about 35 days ago)
    • cc @nikomatsakis

Issues of Note

Short Summary

P-critical

T-compiler

  • “Regression in consteval: error[E0080]: could not evaluate static initializer (unable to turn pointer into raw bytes)” rust#99923
    • relevant PR from @RalfJ rust#101320. Needs r+ and perhaps beta-backport nomination?
    • blog post points were mentioned in steering meeting
  • “Potential miscompilation on i686 of chacha20” rust#101346
  • “Wrong cast of u16 to usize on aarch64” rust#97463

T-rustdoc

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

P-high regressions

P-high beta regressions

  • “Anon lifetime in impl Trait no longer suggests adding a lifetime parameter” rust#100615
    • author of original PR @_cjgillot is aware and left a comment
    • (is P-high too harsh?)
  • “Borrow checking for static methods became more strict” rust#100725

Unassigned P-high nightly regressions

Performance logs

triage logs for 2022-09-06

A relatively quiet week where regressions unfortunately outweighed improvements. What’s more, many of the regressions that were found seemed somewhat mysterious requiring some deeper investigations.

Triage done by @rylev. Revision range: 0631ea5d73..09fb0bc6e

Summary:

(instructions:u) mean range count
Regressions (primary) 0.7% [0.2%, 4.5%] 85
Regressions (secondary) 1.0% [0.3%, 5.4%] 87
Improvements (primary) -0.7% [-1.0%, -0.5%] 9
Improvements (secondary) -1.4% [-2.7%, -0.5%] 22
All (primary) 0.5% [-1.0%, 4.5%] 94

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

Regressions

Replace rustc_data_structures::thin_vec::ThinVec with thin_vec::ThinVec #100869 (Comparison Link)

(instructions:u) mean range count
Regressions (primary) 0.3% [0.2%, 0.5%] 37
Regressions (secondary) 0.5% [0.2%, 0.9%] 12
Improvements (primary) -0.5% [-0.6%, -0.4%] 4
Improvements (secondary) - - 0
All (primary) 0.2% [-0.6%, 0.5%] 41

Rollup of 14 pull requests #101295 (Comparison Link)

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

Improvements

Rollup of 7 pull requests #101238 (Comparison Link)

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

interpret: fix unnecessary allocation in validation visitor #101154 (Comparison Link)

(instructions:u) mean range count
Regressions (primary) - - 0
Regressions (secondary) - - 0
Improvements (primary) -0.5% [-0.5%, -0.5%] 1
Improvements (secondary) -1.6% [-3.3%, -0.6%] 13
All (primary) -0.5% [-0.5%, -0.5%] 1

Revert “Remove deferred sized checks” #100966 (Comparison Link)

(instructions:u) mean range count
Regressions (primary) - - 0
Regressions (secondary) 0.9% [0.6%, 2.4%] 7
Improvements (primary) -1.2% [-1.3%, -1.1%] 2
Improvements (secondary) -1.7% [-1.7%, -1.6%] 2
All (primary) -1.2% [-1.3%, -1.1%] 2
  • The regressions listed here are just noise.

Mixed

Rework definition of MIR phases to more closely reflect semantic concerns #99102 (Comparison Link)

(instructions:u) mean range count
Regressions (primary) 0.7% [0.3%, 1.7%] 33
Regressions (secondary) 1.4% [0.5%, 2.0%] 11
Improvements (primary) - - 0
Improvements (secondary) -0.5% [-0.5%, -0.5%] 4
All (primary) 0.7% [0.3%, 1.7%] 33

Rollup of 9 pull requests #101318 (Comparison Link)

(instructions:u) mean range count
Regressions (primary) 0.2% [0.2%, 0.2%] 3
Regressions (secondary) 1.0% [0.3%, 3.9%] 5
Improvements (primary) - - 0
Improvements (secondary) -0.8% [-0.8%, -0.8%] 1
All (primary) 0.2% [0.2%, 0.2%] 3
  • There doesn’t seem to be a clear cause so running a few of the PRs through performance runs to see what happens.

Nominated Issues

T-compiler

  • “Enable eager checks for memory sanitizer” rust#99207
    • nominated by @Jack Huey for discussion (see comment)
  • “Add default trait implementations for “c-unwind” ABI function pointers” rust#101263

RFC

  • No nominated RFCs for T-compiler this time.

Next week’s WG checkins

  • Generic Associated Types initiative by @Jack Huey
  • @_WG-diagnostics Diagnostics by @Esteban Küber and @oli