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
?- Some context at this Zulip topic
- Also comment from @__simulacrum
Other WG meetings (calendar link)
- wg-async weekly at time:2023-01-26T12:00:00-05:00
- wg-rls-2.0 weekly sync-up at time:2023-01-30T10:00:00-05:00
- Async WG triage meeting at time:2023-01-30T11:30:00-05:00
- [wg-traits] GATs Sync at time:2023-01-30T16:00:00-05:00
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)
- " Promote
- Pending FCP requests (check your boxes!)
- “Make
unused_allocation
lint againstBox::new
too” rust#104363 - “Add deployment-target –print flag for Apple targets” rust#105354
- “Support
true
andfalse
as boolean flag params” rust#107043
- “Make
- Things in FCP (make sure you’re good with it)
- “
-Z instrument-xray
option” compiler-team#561
- “
- Accepted MCPs
- “Upgrade
*-linux-musl
targets to musl 1.2” compiler-team#572 - “New tier-2 target for
wasm32-wasi
+ threads” compiler-team#574
- “Upgrade
- 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
Oldest PRs waiting for review
- “add
with_hash_task
to generateDepNode
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
- assigned to
Issues of Note
Short Summary
- 1 T-compiler P-critical issues
- 49 T-compiler P-high issues
- 1 P-critical, 2 P-high, 3 P-medium, 0 P-low regression-from-stable-to-beta
- 0 P-critical, 1 P-high, 4 P-medium, 1 P-low regression-from-stable-to-nightly
- 1 P-critical, 29 P-high, 90 P-medium, 8 P-low regression-from-stable-to-stable
P-critical
- “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)
- No
P-critical
issues forT-types
this time.
- No
P-critical
issues forT-rustdoc
this time.
P-high 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
- Assigned
Unassigned P-high nightly regressions
- No unassigned
P-high
nightly regressions this time.
Performance logs
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 |
- Soundness fix, combined with a small regression means we likely don’t need to worry too much about this one.
- Asked the author and reviewer to comment.
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 |
- This is noise correcting from spurious improvements in the previous run.
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
- “Default to -Z plt=yes” rust#106380
- “Remove a few
actually_rustdoc
uses” rust#107289- nominated by @jyn (comment), asks for FCP
- T-rustdoc needs to also sign-off
- 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