owned this note changed 4 years ago
Published Linked with GitHub

T-compiler Meeting Agenda 2021-05-20

Tracking Issue

Announcements

  • New MCPs (take a look, see if you like them!)
    • "Write text output files to stdout if options like -o - or --emit asm=- are provided" compiler-team#431
    • "Introduce ty::WhereClause to align chalk and rustc dyn representation" compiler-team#433
  • Old MCPs (not seconded, take a look)
  • Pending FCP requests (check your boxes!)
    • No pending FCP requests this time.
  • Things in FCP (make sure you're good with it)
  • Accepted MCPs
    • No new accepted proposals this time.
  • Finalized FCPs (disposition merge)
    • "Stabilize extended_key_value_attributes" rust#83366
    • "Stabilize "RangeFrom" patterns" rust#83918
    • "Uplift the invalid_atomic_ordering lint from clippy to rustc" rust#84039
    • "rustdoc: Make "rust code block is empty" and "could not parse code block" warnings a lint (INVALID_RUST_CODEBLOCKS)" rust#84587
    • "impl FromStr for proc_macro::Literal" rust#84717
    • "FCP poll for ErrorKind::OutOfMemory" rust#84916

WG checkins

@WG-rfc-2229 by @nikomatsakis @Matthew Jasper:

  • Overall improvement to closure diagnostics: we now point to part of the source code responsible for the capture kind associated with the error message.

  • We can now detect if the closure after enabling RFC 2229 will not meet Clone or any of the auto trait bounds and can provide migrations for it. These migrations are supported via rustfix as well.

  • We can annote drop implementations with #[rustc_insignificant_dtor] to avoid migrating in scenarios where drop order doesn't affect semantics of the program. We intend to use this attribute to annotate the stdlib to mark certain type as safe to be Drop reorded. eg: when a string gets dropped it would not affect the behavior of rest of the program.

  • We wrote an initial implementation for printing out the closure size before and after the feature. The implementation is somewhat incomplete, but was good enough for us to get some data on cargo and stdlib.
    Cargo and all depensices size data: https://docs.google.com/spreadsheets/d/1Irsj5O7HPPfomWat2jPTPdx_KPlsyYo5kRuQpNNuwsQ/edit?usp=sharing

@WG-rls2.0 by @matklad:

No updates for this meeting

Backport nominations

T-compiler stable / T-compiler beta

  • :beta: "Ensure TLS destructors run before thread joins in SGX" rust#84409
    • opened by "mzohreva"
    • r'ed by @David Tolnay and @Jethro, already merged
    • A bit of context in this comment
  • :beta: "Update LLVM submodule" rust#85236
    • opened by @Nikita Popov
    • approved by @cuviper
    • merges recent changes from the upstream LLVM 12 branch, should also fix rustc#84958
  • :beta: "Fix incorrect gating of nonterminals in key-value attributes" rust#85445
    • opened by @Aaron Hill
    • approved by @davidtwco
    • Fixes rusc#85432
  • :beta: "have on_completion record subcycles" rust#85186
  • :stable: "have on_completion record subcycles" rust#85186
    • (above isue nominated also for stable backport)

T-libs-impl stable / T-libs-impl beta

  • :beta: "remove InPlaceIterable marker from Peekable due to unsoundness" rust#85340
    • opened by @The 8472|239181
    • approved @Jane Lusby
    • perf run shows overall neutral
    • fixes a P-critical unsoundness (out of bounds access) rust#85322
  • No stable nominations for T-libs-impl this time.

T-rustdoc stable / T-rustdoc beta

  • :beta: "rustdoc: Call initSidebarItems in root module of crate" rust#85304
    • opened by @Stu
    • approved by @jsha
    • Fixes rust#85301
  • No stable nominations for T-rustdoc this time.

Image Not Showing Possible Reasons
  • The image file may be corrupted
  • The server hosting the image is unavailable
  • The image path is incorrect
  • The image format is not supported
Learn More →
/
Image Not Showing Possible Reasons
  • The image file may be corrupted
  • The server hosting the image is unavailable
  • The image path is incorrect
  • The image format is not supported
Learn More →
/
Image Not Showing Possible Reasons
  • The image file may be corrupted
  • The server hosting the image is unavailable
  • The image path is incorrect
  • The image format is not supported
Learn More →

PRs S-waiting-on-team

T-compiler

T-libs-impl

  • No PRs waiting on T-libs-impl this time.

Issues of Note

Short Summary

P-critical

T-compiler

  • "Unstable fingerprints - what to do on beta (and stable)" rust#84970
    • issue (and related ones) is being followed
    • anything new to discuss for this tracking issue?
  • "Miscompilation on ARM-M with nightly-2021-04-23" rust#85351
    • regression from nightly nightly-2021-04-23 (therefore regression-from-stable-to-beta) on 2 different Tier ARM targets (thumbv8m and thumbv7em)
    • issue reporter mentions that it could affect other targets
    • we don't have yet an mcve
    • in this comment "@yroux" mention is it indeed caused by LLVM 12 and will work on a patch
  • "Regression on nightly in AVX2 byte shift intrinsics" rust#85446
    • Unsoundness on byteshift on x86_64
    • Seems part of the fallout from PR rustc#83278

T-libs-impl

  • No P-critical issues for T-libs-impl this time.

T-rustdoc

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

P-high regressions

P-high beta regressions

  • "Rustc beta/nightly appears to ignore unsafe blocks inside closure in some cases" rust#85435

Unassigned P-high nightly regressions

  • No unassigned P-high nightly regressions this time.

Performance logs

triage logs for 2021-05-18

A lot of noise in the benchmark results this week. We are discussing (zulip archive, live zulip) how best to update the benchmark set to eliminate the noisy cases that are bouncing around. Beyond that, some large improvements to a few individual benchmarks.

The memory usage (max-rss) seemed largely flat. Except for an upward trend on tuple-stess that indicates 4% more memory from a week ago.

Triage done by @pnkfelix.

5 Regressions, 7 Improvements, 2 Mixed
1 of them in rollups

Regressions

Reachable statics have reachable initializers #84549

  • Moderate regression in instruction counts (up to 1.4% on incr-unchanged builds of ctfe-stress-4-opt)
  • ctfe-stress-4-debug also saw a 1.2% regression in its incr-unchanged builds.
  • Other benchmarks were not significantly impacted.
  • The two regressions were anticipated from a perf run on the PR itself.

Improvements (summary)

  • have on_completion record subcycles #85186
  • Store VariantIdx to distinguish enum variants #85195
  • Do not allocate or unwind after fork #81858

Mixed

BTree: no longer copy keys and values before dropping them #84904

  • Moderate improvement in instruction counts (up to -1.2% on incr-unchanged builds of ctfe-stress-4-check and ctfe-stress-4-opt and ctfe-stress-4-debug)
  • Moderate regression in instruction counts (up to 1.2% on incr-patched: println builds of cargo-opt)
  • These changes were anticipated from a perf run on the PR itself.

rustc_codegen_ssa: only create backend BasicBlocks as-needed. #84993

  • Moderate improvement in instruction counts (up to -4.3% on full builds of syn-opt)
  • Moderate regression in instruction counts (up to 1.8% on full builds of deeply-nested-async-check)
  • The improvement to syn-opt was anticipated from perf runs on the PR itself.
  • The regression on deeply-nested-async-check was not predicted by that run.

Suspicious Noise (summary)

coercions
  • rustc_driver cleanup #83610
  • Add auto traits and clone trait migrations for RFC2229 #84730
  • Provide ExitStatusError #82973
  • Fix --remap-path-prefix not correctly remapping rust-src component paths and unify handling of path mapping with virtualized paths #83813
  • Rollup of 5 pull requests #85231
  • Rollup of 8 pull requests #85414
html5ever
  • Add support for const operands and options to global_asm! #84107
  • Update cc crate #85190

Nags requiring follow up

  • Double-check whether regression to deeply-nested-async-check from #84993 is noise or something real.
  • Look into the 4% tuple-stress regression. The first seems like gradual creep, plus a 3% jump that seems to be associated with #84571, "Parse unnamed fields of struct and union type." (Perhaps its inherent given the nature of that microbenchmark, but some other benchmarks also had their memory usage impacted.

Nominated Issues

T-compiler

  • "ICE: unwrap none error in compiler\rustc_mir\src\monomorphize\collector.rs" rust#85447
    • opened by "kocsis1david"
    • ICE on nightly 2021-05-09 on target x86_64-pc-windows-msvc, latest working version was stable 1.51
    • bisection comment seems to point to #81172
    • comment: It seems that this only occurs if the crate-type is lib. Even if I remove a pub, it can compile successfully.
    • @Simon Sapin did some reduction and investigation, asks for a bit more insights from someone more familiar with the compiler internals
  • "error: internal compiler error: unexpected panic: Failed to get crate data for crate21" #85386
    • opened by "T0mstone"
    • ICE on stable 1.52.1, beta 1.53.0-beta.2 and nightly 1.54
    • issue only occurs when compiling for wasm32-unknown-unknown
    • A reduction is provided in this comment
    • comment: adding a call to extern crate proc_macros makes the issue disappear
    • perhaps related to #56935?
    • Question: would it be useful to have someone closer to the target wasm32-unknown-unknown evaliate this issue? We're not sure of its impact (maybe a P-high?)

T-libs-impl

  • No nominated issues for T-libs-impl this time.

RFC

  • No nominated RFCs for T-compiler this time.
Select a repo