owned this note changed 2 years ago
Published Linked with GitHub

T-compiler Meeting Agenda 2023-05-04

Announcements

MCPs/FCPs

  • New MCPs (take a look, see if you like them!)
  • Old MCPs (stale MCP might be closed as per MCP procedure)
    • None at this time
  • Old MCPs (not seconded, take a look)
    • "Rustc Contributor Program Major Change Proposal" compiler-team#557 (last review activity: 3 months ago)
    • "Add New Values To MIPS_ALLOWED_FEATURES" compiler-team#595 (last review activity: about 41 days ago)
    • "Take MIR Analysis by &mut" compiler-team#598 (last review activity: about 41 days ago)
    • "-C linker-flavor=clang" compiler-team#601 (last review activity: about 41 days ago)
    • "Increase TypeId's hash from 64 bits to 128 bits." compiler-team#608 (last review activity: about 13 days ago)
    • "Disallow incoherent cfgs" compiler-team#610 (last review activity: about 20 days ago)
    • "2024: Decrease debuginfo generated by -Cdebuginfo=1" compiler-team#613 (last review activity: about 13 days ago)
    • "Cell Broadband Engine SPU support" compiler-team#614 (last review activity: about 20 days ago)
    • "Revise error code documentation standard" compiler-team#615 (last review activity: about 13 days ago)
  • Pending FCP requests (check your boxes!)
    • "expand: Change how #![cfg(FALSE)] behaves on crate root" rust#110141
    • "[mir-opt] SimplifyLocals should also clean up debuginfo" rust#110702
  • Things in FCP (make sure you're good with it)
  • Accepted MCPs
  • Finalized FCPs (disposition merge)
    • "Tracking Issue for debugger_visualizer" rust#95939
    • "Evaluate place expression in PlaceMention" rust#104844
    • "Add deployment-target print flag for Apple targets" rust#105354
    • "Update the version of musl used on *-linux-musl targets to 1.2.3" rust#107129
    • "Only check outlives goals on impl compared to trait" rust#109356
    • "Stabilize raw-dylib, link_ordinal, import_name_type and -Cdlltool" rust#109677
    • "rustdoc: restructure type search engine to pick-and-use IDs" rust#110371
    • "Use fulfillment to check Drop impl compatibility" rust#110577

WG checkins

  • @_WG-rls2.0 by @Lukas Wirth (previous checkin):

    r-a now loads proc-macros from the sysroot for rustc_private crates (so sym things resolve for clippy now 🎉). More mir goodies landed allowing us to calculate closure captures which we can now show on hover. The remaining proc-macro abis were dropped, so now r-a only has proc-macro support on 1.64 and beyond (where the sysroot ships a proc-macro server).

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

    Nothing to report at this time.

Backport nominations

T-compiler stable / T-compiler beta

  • [1.70.0] :beta: "only error combining +whole-archive and +bundle for rlibs" rust#110917
    • nominated by @Vadim Petrochenkov, fixes regression happened in rust#105601
  • [1.70.0] :beta: "Remove wrong assertion in match checking." rust#111015
    • Fixes rust#108504, a perf. regression reported two months ago, reported to affect at least one crate (comments)
    • compiler-errors note: not a perf regression, an ICE. See attached UI test in the PR.
  • [1.69.1] :stable: "only error combining +whole-archive and +bundle for rlibs" rust#110917
    • (also beta backport nomination)

T-rustdoc stable / T-rustdoc beta

  • No beta nominations for T-rustdoc this time.
  • 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

Oldest PRs waiting for review

T-compiler

  • "Avoid alignment mismatch between ABI and layout for unions." rust#104872 (last review activity: about 47 days ago)
    • cc: @eddyb
  • "Add note for identifier following by array literal error" rust#108222 (last review activity: about 41 days ago)
  • "Fix issue of missing sign in binary_float_op when result of rem is zero" rust#109573 (last review activity: about 38 days ago)
    • PR author mentions that it is blocked by rust#96784
    • cc: @Wesley Wiser who mentioned to switch over to eddyb's more appropriately licensed fork of rustc_apfloat (comment)
  • "Support embedding LLVM bitcode on AIX" rust#109524 (last review activity: about 34 days ago)
    • cc @nagisa
  • "Fixes LTO + build-std + Oz failed to resolve undefined symbols" rust#109821
    • @bjorn3 do you want to take the review on you (since contributed to the discussion)? Or reroll assignment?

Issues of Note

Short Summary

P-critical

T-compiler

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

T-types

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

T-rustdoc

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

P-high regressions

P-high beta regressions

  • "const-propagated arithmetic_overflow in unreachable code" rust#109731
    • has been discussed in two triage meetings (#1 and #2)
    • last summary from past meeting: we'll need to circle back on the question when a problem with a lint like this is a bug vs when it is just QoL improvement
    • worth instancing a dedicated meeting?

Unassigned P-high nightly regressions

  • No unassigned P-high nightly regressions this time.

Performance logs

triage logs 2023-05-02

This week the good outweighed the bad. In particular, we had three different PRs
that made improvements to a wide range of benchmarks. Special call out to PR
#111026,
which yielded 3% to 8% improvement for incremental compile times on a large set
of benchmarks, by avoiding unnecessary caching in the type checker.

Triage done by @pnkfelix.
Revision range: fdeef3ed..a368898d

Summary:

(instructions:u) mean range count
Regressions (primary) 0.5% [0.2%, 0.9%] 30
Regressions (secondary) 0.7% [0.4%, 1.1%] 12
Improvements (primary) -1.6% [-8.8%, -0.3%] 115
Improvements (secondary) -1.5% [-10.3%, -0.2%] 92
All (primary) -1.1% [-8.8%, 0.9%] 145

4 Regressions, 6 Improvements, 7 Mixed; 6 of them in rollups
30 Untriaged Pull Requests
56 artifact comparisons made in total

Regressions

Add loongarch64 asm! support #101069 (Comparison Link)

(instructions:u) mean range count
Regressions (primary) 2.2% [1.1%, 2.9%] 3
Regressions (secondary) 4.9% [0.3%, 8.2%] 8
Improvements (primary) - - 0
Improvements (secondary) - - 0
All (primary) 2.2% [1.1%, 2.9%] 3
  • primary regressions are all in cranelift-codegen; secondary are in keccak and externs.
  • already triaged.

Do not bother optimizing impossible functions. #110728 (Comparison Link)

(instructions:u) mean range count
Regressions (primary) 0.4% [0.4%, 0.5%] 3
Regressions (secondary) 0.3% [0.2%, 0.4%] 8
Improvements (primary) - - 0
Improvements (secondary) - - 0
All (primary) 0.4% [0.4%, 0.5%] 3
  • Seems like it didn't have the expected positive impact
  • primary regressions are to libc; most of secondary are to variants many-assoc-items (plus some check incr-unchanged on three other secondaries).
  • in any case, the measured impact looks negligible to me.
  • marked as triaged

Rollup of 7 pull requests #110896 (Comparison Link)

(instructions:u) mean range count
Regressions (primary) 0.4% [0.4%, 0.4%] 2
Regressions (secondary) 1.1% [0.2%, 2.4%] 7
Improvements (primary) - - 0
Improvements (secondary) -0.2% [-0.2%, -0.2%] 1
All (primary) 0.4% [0.4%, 0.4%] 2
  • primary regressions are to doc for syn and webrender. secondary that regressed by 2.4% was incr-unchanged for wg-grammar benchmarks.
  • marking as triaged.

Rollup of 6 pull requests #110924 (Comparison Link)

(instructions:u) mean range count
Regressions (primary) 0.6% [0.4%, 0.7%] 7
Regressions (secondary) - - 0
Improvements (primary) - - 0
Improvements (secondary) - - 0
All (primary) 0.6% [0.4%, 0.7%] 7
  • primary regressions are to debug profiles for serde_derive, hyper (plus noise from clap and cargo).
  • we've recovered the loss on serde_derive since this commit landed, but not on hyper.
  • from reviewing the PRs in the rollup, it does not seem like there's any real culprit here.
  • marking as triaged.

Improvements

Allow older LLVM versions to have missing components #110232 (Comparison Link)

(instructions:u) mean range count
Regressions (primary) - - 0
Regressions (secondary) - - 0
Improvements (primary) -1.7% [-2.8%, -0.7%] 4
Improvements (secondary) -6.0% [-7.5%, -4.9%] 6
All (primary) -1.7% [-2.8%, -0.7%] 4
  • I don't understand why this had any impact at all, albeit positive. It looks like just some environment variable settings in the Dockerfiles.

Rewrite MemDecoder around pointers not a slice #110634 (Comparison Link)

(instructions:u) mean range count
Regressions (primary) 0.4% [0.4%, 0.4%] 1
Regressions (secondary) - - 0
Improvements (primary) -0.5% [-0.7%, -0.3%] 52
Improvements (secondary) -0.5% [-0.8%, -0.3%] 16
All (primary) -0.4% [-0.7%, 0.4%] 53
  • a broad collection of small improvements, nice!

Rollup of 10 pull requests #110852 (Comparison Link)

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

Remove QueryEngine trait #109611 (Comparison Link)

(instructions:u) mean range count
Regressions (primary) - - 0
Regressions (secondary) 0.3% [0.3%, 0.3%] 3
Improvements (primary) -0.6% [-0.8%, -0.2%] 84
Improvements (secondary) -0.8% [-1.5%, -0.4%] 32
All (primary) -0.6% [-0.8%, -0.2%] 84
  • another broad collection of small improvements, good to see!

Only cache typeck results if it's the typeck root #111026 (Comparison Link)

(instructions:u) mean range count
Regressions (primary) - - 0
Regressions (secondary) - - 0
Improvements (primary) -1.8% [-7.9%, -0.4%] 62
Improvements (secondary) -4.6% [-11.5%, -1.0%] 12
All (primary) -1.8% [-7.9%, -0.4%] 62
  • nice work! (sizeable, 3% to 8% improvement on a number of benchmarks for incr runs)

Make some simple queries no longer cache on disk #111028 (Comparison Link)

(instructions:u) mean range count
Regressions (primary) - - 0
Regressions (secondary) - - 0
Improvements (primary) -0.3% [-0.4%, -0.3%] 17
Improvements (secondary) -0.5% [-0.6%, -0.4%] 9
All (primary) -0.3% [-0.4%, -0.3%] 17

Mixed

Use MIR's Offset for pointer add too #110837 (Comparison Link)

(instructions:u) mean range count
Regressions (primary) 1.2% [0.9%, 1.4%] 2
Regressions (secondary) - - 0
Improvements (primary) -0.8% [-1.4%, -0.5%] 14
Improvements (secondary) -1.3% [-2.0%, -0.5%] 11
All (primary) -0.6% [-1.4%, 1.4%] 16
  • cute idea for a PR ("reduce your useless MIR with this small trick!")
  • primary regressions are to serde_derive and webrender (opt-full for both).
  • already triaged; improvements clearly outweigh the regressions here, at least based on the counts of number of impacted benchmarks.

Rollup of 8 pull requests #110967 (Comparison Link)

(instructions:u) mean range count
Regressions (primary) 1.1% [0.4%, 2.0%] 17
Regressions (secondary) 1.1% [1.1%, 1.3%] 6
Improvements (primary) - - 0
Improvements (secondary) -0.3% [-0.3%, -0.3%] 2
All (primary) 1.1% [0.4%, 2.0%] 17
  • primary regression are to diesel, clap, and cranelift-codegen.
  • lqd and compiler-errors are discussing on the PR.
  • (pnkfelix is not convinced its a real regression that we can address, based on their conversation.)

Rollup of 6 pull requests #110978 (Comparison Link)

(instructions:u) mean range count
Regressions (primary) - - 0
Regressions (secondary) 0.3% [0.3%, 0.3%] 2
Improvements (primary) -0.3% [-0.3%, -0.3%] 2
Improvements (secondary) -0.4% [-0.4%, -0.4%] 1
All (primary) -0.3% [-0.3%, -0.3%] 2
  • regressions are solely to secondary externs benchmark.
  • its so minor. marking as triaged.

Improve niche placement by trying two strategies and picking the better result #108106 (Comparison Link)

(instructions:u) mean range count
Regressions (primary) 0.4% [0.2%, 0.6%] 7
Regressions (secondary) 0.7% [0.4%, 1.0%] 12
Improvements (primary) -2.6% [-8.5%, -0.2%] 4
Improvements (secondary) -1.2% [-2.8%, -0.3%] 31
All (primary) -0.7% [-8.5%, 0.6%] 11
  • addresses a real performance regression (#105371) to how we laid out niches.
  • primary big benefit to syn. rest of primary changes may be noise; the secondary improvements are nice to have.
  • marking as triaged.

Rollup of 6 pull requests #110994 (Comparison Link)

(instructions:u) mean range count
Regressions (primary) 0.5% [0.4%, 0.7%] 3
Regressions (secondary) - - 0
Improvements (primary) - - 0
Improvements (secondary) -0.3% [-0.3%, -0.3%] 2
All (primary) 0.5% [0.4%, 0.7%] 3
  • primary regressions to doc for clap, stm32f4, cranelift-codegen
  • already marked as triaged.

Make mem::replace simpler in codegen #111010 (Comparison Link)

(instructions:u) mean range count
Regressions (primary) 0.4% [0.2%, 0.6%] 3
Regressions (secondary) 0.3% [0.2%, 0.5%] 2
Improvements (primary) -1.3% [-1.8%, -1.0%] 3
Improvements (secondary) -0.5% [-0.7%, -0.4%] 3
All (primary) -0.5% [-1.8%, 0.6%] 6
  • primary regressions to ripgrep opt-full, plus doc for hyper and html5ever.
  • already marked as triaged.

Remove type ascription from parser and diagnostics #109128 (Comparison Link)

(instructions:u) mean range count
Regressions (primary) 0.3% [0.2%, 0.4%] 9
Regressions (secondary) 0.3% [0.2%, 0.5%] 9
Improvements (primary) - - 0
Improvements (secondary) -1.4% [-1.4%, -1.4%] 1
All (primary) 0.3% [0.2%, 0.4%] 9
  • primary regressions are to serde, hyper, diesel; mostly to incr-unchanged scenarios.
  • surprising that this had this impact.
  • i'm guessing this is noise (this change should be solely simplifying the compiler, AFAICT).
  • marking as triaged.

Nominated Issues

T-compiler

  • "const-propagated arithmetic_overflow in unreachable code" rust#109731
    • (discussed before)

RFC

  • No I-compiler-nominated RFCs this time.

Next week's WG checkins

  • @_WG-async-foundations by @nikomatsakis and @tmandry
  • Generic Associated Types initiative by @Jack Huey

Agenda draft: https://hackmd.io/iZv3HkKWRSyBMjZH3iIP8g

Select a repo