owned this note
owned this note
Published
Linked with GitHub
---
tags: weekly, rustc
type: docs
---
# T-compiler Meeting Agenda 2021-12-02
[Tracking Issue](https://github.com/rust-lang/rust/issues/54818)
## Announcements
- :loudspeaker: today release of Rust stable 1.57 (the last for 2021 `:)`)
- Reminder: if you see a PR/issue that seems like there might be legal implications due to copywrite/IP/etc, please let the Core team know (or at least message @_**pnkfelix** or @_**Wesley Wiser** so we can pass it along).
## MCPs/FCPs
- New MCPs (take a look, see if you like them!)
- "Tier 3 target proposal: riscv64gc-linux-android (Android target for `riscv64gc`)" [compiler-team#472](https://github.com/rust-lang/compiler-team/issues/472)
- "`-Dwarnings` to cover all warnings" [compiler-team#473](https://github.com/rust-lang/compiler-team/issues/473)
- Old MCPs (not seconded, take a look)
- "CI should exercise (subset of) tests under --stage 1" [compiler-team#439](https://github.com/rust-lang/compiler-team/issues/439) (last review activity: 3 months ago)
- "Accept `pc` in place of `unknown` and `unknown` in place of `pc` for `x86_64` and `i?86` targets" [compiler-team#441](https://github.com/rust-lang/compiler-team/issues/441) (last review activity: 5 months ago)
- "Make `-Z binary-dep-depinfo` the default behavior" [compiler-team#464](https://github.com/rust-lang/compiler-team/issues/464) (last review activity: 2 months ago)
- Pending FCP requests (check your boxes!)
- No pending FCP requests this time.
- Things in FCP (make sure you're good with it)
- No FCP requests this time.
- Accepted MCPs
- "Unstable lints should be considered unknown" [compiler-team#469](https://github.com/rust-lang/compiler-team/issues/469)
- Finalized FCPs (disposition merge)
- "Tracking Issue for cargo report future-incompat" [rust#71249](https://github.com/rust-lang/rust/issues/71249)
- "Tracking Issue for inline assembly (`asm!`)" [rust#72016](https://github.com/rust-lang/rust/issues/72016)
### WG checkins
@_wg-incr-comp_ by @**pnkfelix** and @**Wesley Wiser** ([previous checkin](https://hackmd.io/t04YVEwTRJWwTej-kLvDsw#WG-checkins)):
> nothing to report at this time
@_WG-llvm_ by @**nagisa** ([previous checkin](https://hackmd.io/t04YVEwTRJWwTej-kLvDsw#WG-checkins)):
> * pretty disappointing that our hand is forced to turn off newPM for the time being; LLVM project is undergoing migration of their issue tracker from bugzilla to github, which may serve for a more straightforward experience in contributing issues to the LLVM project.
> * LLVM 13.0.1-rc1 release candidate out
## Backport nominations
[T-compiler stable](https://github.com/rust-lang/rust/issues?q=is%3Aall+label%3Abeta-nominated+-label%3Abeta-accepted+label%3AT-compiler) / [T-compiler beta](https://github.com/rust-lang/rust/issues?q=is%3Aall+label%3Astable-nominated+-label%3Astable-accepted+label%3AT-compiler)
- No beta nominations for `T-compiler` this time.
- No stable nominations for `T-compiler` this time.
[T-rustdoc stable](https://github.com/rust-lang/rust/issues?q=is%3Aall+label%3Abeta-nominated+-label%3Abeta-accepted+label%3AT-rustdoc) / [T-rustdoc beta](https://github.com/rust-lang/rust/issues?q=is%3Aall+label%3Astable-nominated+-label%3Astable-accepted+label%3AT-rustdoc)
- 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](https://github.com/rust-lang/rust/pulls?utf8=%E2%9C%93&q=is%3Aopen+label%3AS-waiting-on-team+label%3AT-compiler)
- no PR waiting on T-compiler
## Oldest PRs waiting for review
[T-compiler](https://github.com/rust-lang/rust/pulls?q=is%3Apr+is%3Aopen+sort%3Aupdated-asc+label%3AS-waiting-on-review+draft%3Afalse+label%3AT-compiler)
- [Postpone the evaluation of constant expressions that depend on inference variables](https://github.com/rust-lang/rust/pull/90023) (last activity: about 17 days ago)
- review from @**lcnr**, [left some comments](https://github.com/rust-lang/rust/pull/90023#issuecomment-953497106) about merging this PR later after some more thoughts
- [Introduce linter for diagnostic messages](https://github.com/rust-lang/rust/pull/89455) (last activity: about 30 days ago)
- previously reviewed by @**Esteban Küber** and @**simulacrum**
- "Abort in panic_abort eh_personality" [rust#86801](https://github.com/rust-lang/rust/pull/86801) (last review activity: 4 months ago)
- mentioned in T-compiler meeting about one month ago, no activity since then
- no reviewer assigned: who could own this PR?
- "Fix ICE with inferred type in `const` or `static` item" [rust#89161](https://github.com/rust-lang/rust/pull/89161) (last review activity: about 57 days ago)
- last review from Niko
- [improve type abiguity error for functions and methods](https://github.com/rust-lang/rust/pull/89862) (last activity about 1 month ago)
- PR author @**lcnr**
- is it waiting for another review or feedback from author?
- [Introduce MIR summary to avoid loading large bodies without inlining them](https://github.com/rust-lang/rust/pull/89708) (last activity about 1 month ago)
- PR author @**cjgillot**?
- last review from @**wesley wiser**
- [Fix false positive for typoed crate or module suggestion](https://github.com/rust-lang/rust/pull/90125) (last activity: none)
- opened 1 month ago, needs a reviewer
- highfive bot assigned to @**Esteban Küber**
- changed to s-waiting-on-author to fix the CI
- author has [left a question](https://github.com/rust-lang/rust/pull/90125#issuecomment-948491831) (maybe not yet answered)
## Issues of Note
### Short Summary
- [4 T-compiler P-critical issues](https://github.com/rust-lang/rust/issues?q=is%3Aopen+label%3AT-compiler+label%3AP-critical)
- [2 of those are unassigned](https://github.com/rust-lang/rust/issues?q=is%3Aopen+label%3AT-compiler+label%3AP-critical+no%3Aassignee)
- [77 T-compiler P-high issues](https://github.com/rust-lang/rust/issues?q=is%3Aopen+label%3AT-compiler+label%3AP-high)
- [53 of those are unassigned](https://github.com/rust-lang/rust/issues?q=is%3Aopen+label%3AT-compiler+label%3AP-high+no%3Aassignee)
- [2 P-critical, 5 P-high, 2 P-medium, 0 P-low regression-from-stable-to-beta](https://github.com/rust-lang/rust/labels/regression-from-stable-to-beta)
- [0 P-critical, 2 P-high, 2 P-medium, 1 P-low regression-from-stable-to-nightly](https://github.com/rust-lang/rust/labels/regression-from-stable-to-nightly)
- [4 P-critical, 46 P-high, 81 P-medium, 12 P-low regression-from-stable-to-stable](https://github.com/rust-lang/rust/labels/regression-from-stable-to-stable)
### P-critical
[T-compiler](https://github.com/rust-lang/rust/issues?utf8=%E2%9C%93&q=is%3Aopen+label%3AP-critical+label%3AT-compiler)
- "Miscompilation where binding only some fields leaks the others" [rust#90752](https://github.com/rust-lang/rust/issues/90752)
- @**Dylan MacKenzie (ecstatic-morse)** authored PR [rust#90788](https://github.com/rust-lang/rust/pull/90788) which backport on beta [was declined](https://rust-lang.zulipchat.com/#narrow/stream/238009-t-compiler.2Fmeetings/topic/.5Bweekly.5D.202021-11-24.20.2354818/near/262604287)
- "Unsound drop due to imperfect lifetime checks" [rust#90838](https://github.com/rust-lang/rust/issues/90838)
- @**pnkfelix** fixed this in PR [#90840](https://github.com/rust-lang/rust/pull/90840) which was beta backported
- next steps for this issue? perhaps close it?
- "Implied bounds by associated types as function parameters are inconsistent in an unsound way." [rust#91068](https://github.com/rust-lang/rust/issues/91068)
- handled by PRs [rust#91243](https://github.com/rust-lang/rust/pull/91243) and [rust#91242](https://github.com/rust-lang/rust/pull/91242) which partially reverts [rust#88312](https://github.com/rust-lang/rust/pull/88312)
- "Huge compile-time regression in beta/nightly" [rust#91128](https://github.com/rust-lang/rust/issues/91128)
- @**Nikita Popov** [points out](https://github.com/rust-lang/rust/issues/91128#issuecomment-978072653) the problematic IR generated by `opt -03`
- [previously discussion](https://github.com/rust-lang/rust/issues/91128#issuecomment-978072653): the new pass-manager has been disabled in beta pre-1.57 with PR [rust#91189](https://github.com/rust-lang/rust/pull/91189) from @**nagisa**
- Next steps for this issue? (still critical)?
[T-rustdoc](https://github.com/rust-lang/rust/issues?utf8=%E2%9C%93&q=is%3Aopen+label%3AP-critical+label%3AT-rustdoc)
- No `P-critical` issues for `T-rustdoc` this time.
### P-high regressions
[P-high beta regressions](https://github.com/rust-lang/rust/issues?q=is%3Aopen+label%3Aregression-from-stable-to-beta+label%3AP-high+-label%3AT-infra+-label%3AT-libs+-label%3AT-libs-api+-label%3AT-release+-label%3AT-rustdoc+-label%3AT-core)
- "Compilation appears to loop indefinitely " [rust#89195](https://github.com/rust-lang/rust/issues/89195)
- already discussed
- assigned to Felix
- "regression: rustc suggests `.as_ref()` at incorrect location and other spans have regressed" [rust#90286](https://github.com/rust-lang/rust/issues/90286)
- assigned to Felix
- @**Esteban Küber** [commented](https://github.com/rust-lang/rust/issues/90286#issuecomment-974534925) about the possibility of authoring a PR
- "DWARF info for `static` vars in lib crates has stopped being produced reliably in LTO builds" [rust#90357](https://github.com/rust-lang/rust/issues/90357)
- assigned to Felix
- [already discussed](https://github.com/rust-lang/rust/issues/90286#issuecomment-974534925), Felix did some investigation on this
[Unassigned P-high nightly regressions](https://github.com/rust-lang/rust/issues?q=is%3Aopen+label%3Aregression-from-stable-to-nightly+label%3AP-high+no%3Aassignee+-label%3AT-infra+-label%3AT-libs+-label%3AT-libs-api+-label%3AT-release+-label%3AT-rustdoc+-label%3AT-core+)
- "Undefined reference to `getauxval` in function `init_have_lse_atomics` when compiling to nightly `aarch64-unknown-linux-musl`" [rust#89626](https://github.com/rust-lang/rust/issues/89626)
- [Already discussed](https://rust-lang.zulipchat.com/#narrow/stream/238009-t-compiler.2Fmeetings/topic/.5Bweekly.5D.202021-11-24.20.2354818/near/262607266)
- Issue is fixed by [rust#90527](https://github.com/rust-lang/rust/pull/90527) + [libc#2272](https://github.com/rust-lang/libc/pull/2272) and as soon as the fixed `libc 0.2.107` is merged, see [rust#90681](https://github.com/rust-lang/rust/pull/90681)
- Can this be closed?
## Performance logs
> [triage logs for 2021-11-30](https://github.com/rust-lang/rustc-perf/blob/master/triage/2021-11-30.md)
Overall, many changes this week, but overall an improvement on multiple benchmarks over
the week from a number of pull requests dedicated to optimizations of certain
patterns. We are still seeing a large number of spurious changes due to
[rustc-perf#1105](https://github.com/rust-lang/rustc-perf/issues/1105), which has yet to be addressed.
Triage done by **@simulacrum**.
Revision range: [22c2d9ddbf356bcdb718e88ca6ee3665e1e42690..1c0287830e0fb3c4007afea2819ba03766da6e9c](https://perf.rust-lang.org/?start=22c2d9ddbf356bcdb718e88ca6ee3665e1e42690&end=1c0287830e0fb3c4007afea2819ba03766da6e9c&absolute=false&stat=instructions%3Au)
4 Regressions, 4 Improvements, 9 Mixed; 5 of them in rollups
41 comparisons made in total
#### Regressions
Mark places as initialized when mutably borrowed [#90788](https://github.com/rust-lang/rust/issues/90788)
- Moderate regression in [instruction counts](https://perf.rust-lang.org/compare.html?start=311fa1f14dd8ffbbe83b229a94b17f7f1ecaf33b&end=7b3cd075bbe309031b418650a9c32baf0b4a3276&stat=instructions:u) (up to 0.6% on `full` builds of `match-stress-enum`)
- Fix for a miscompilation, so necessary regression.
Visit `param_env` field in Obligation's `TypeFoldable` impl [#91205](https://github.com/rust-lang/rust/issues/91205)
- Very large regression in [instruction counts](https://perf.rust-lang.org/compare.html?start=a7836bf885e70aaf1a2e0d4669406b183a79acaa&end=1e79d79dac11ce121b972fbaa0db9b0d1756b991&stat=instructions:u) (up to 6.6% on `full` builds of `hyper-2`)
- Fix for incorrect code, regressions unfortunately unavoidable.
#### Improvements
- Rollup of 6 pull requests [#91159](https://github.com/rust-lang/rust/issues/91159)
- Optimize live point computation [#90491](https://github.com/rust-lang/rust/issues/90491)
- Remove eval_always from upvars. [#90580](https://github.com/rust-lang/rust/issues/90580)
- Rollup of 8 pull requests [#91388](https://github.com/rust-lang/rust/issues/91388)
#### Mixed
Avoid generating empty closures for fieldless enum variants [#89881](https://github.com/rust-lang/rust/issues/89881)
- Small improvement in [instruction counts](https://perf.rust-lang.org/compare.html?start=22c2d9ddbf356bcdb718e88ca6ee3665e1e42690&end=311fa1f14dd8ffbbe83b229a94b17f7f1ecaf33b&stat=instructions:u) (up to -1.6% on `incr-patched: add static arr item` builds of `coercions`)
- Small regression in [instruction counts](https://perf.rust-lang.org/compare.html?start=22c2d9ddbf356bcdb718e88ca6ee3665e1e42690&end=311fa1f14dd8ffbbe83b229a94b17f7f1ecaf33b&stat=instructions:u) (up to 0.6% on `incr-unchanged` builds of `clap-rs`)
- Primarily benefits bootstrap time (-5.4 seconds, -0.7%), instruction count
changes largely real but not avoidable (differences in LLVM decision making).
Remove eval_always for inherent_impls. [#90579](https://github.com/rust-lang/rust/issues/90579)
- Very large improvement in [instruction counts](https://perf.rust-lang.org/compare.html?start=982c552c908d179eaa38b6ef152ad3fa30268778&end=c6a7ca196a707acd65e6cce1d337cd11786c59a5&stat=instructions:u) (up to -5.6% on `incr-unchanged` builds of `stm32f4`)
- Small regression in [instruction counts](https://perf.rust-lang.org/compare.html?start=982c552c908d179eaa38b6ef152ad3fa30268778&end=c6a7ca196a707acd65e6cce1d337cd11786c59a5&stat=instructions:u) (up to 0.2% on `incr-full` builds of `stm32f4`)
Faster `Layout::array` [#91246](https://github.com/rust-lang/rust/issues/91246)
- Large improvement in [instruction counts](https://perf.rust-lang.org/compare.html?start=6d246f0c8d3063fea86abbb65a824362709541ba&end=ccce98535bd51687554be8a209b3a529ef84f7e1&stat=instructions:u) (up to -4.2% on `incr-unchanged` builds of `deep-vector`)
- Very large regression in [instruction counts](https://perf.rust-lang.org/compare.html?start=6d246f0c8d3063fea86abbb65a824362709541ba&end=ccce98535bd51687554be8a209b3a529ef84f7e1&stat=instructions:u) (up to 5.0% on `incr-unchanged` builds of `inflate`)
- Most prominent regression is spurious, and overall this looks like
improvements outweighing regressions.
Rollup of 7 pull requests [#91269](https://github.com/rust-lang/rust/issues/91269)
- Very large improvement in [instruction counts](https://perf.rust-lang.org/compare.html?start=ccce98535bd51687554be8a209b3a529ef84f7e1&end=bbad745a688c933a43d1bd977756bd6fc7f034f2&stat=instructions:u) (up to -5.1% on `incr-unchanged` builds of `inflate`)
- Very large regression in [instruction counts](https://perf.rust-lang.org/compare.html?start=ccce98535bd51687554be8a209b3a529ef84f7e1&end=bbad745a688c933a43d1bd977756bd6fc7f034f2&stat=instructions:u) (up to 18.3% on `incr-unchanged` builds of `clap-rs`)
- Regressions seem potentially real, but may also be related to
[rustc-perf#1105](https://github.com/rust-lang/rustc-perf/issues/1105).
Locally this seems to not be the case, though, so it seems probable that the
regression is real.
Rollup of 6 pull requests [#91288](https://github.com/rust-lang/rust/issues/91288)
- Small improvement in [instruction counts](https://perf.rust-lang.org/compare.html?start=5fd3a5c7c175f228afaf5fc6ff00c177b83d8055&end=686e313a9aa14107c8631ffe48fa09110a7692db&stat=instructions:u) (up to -1.0% on `incr-patched: b9b3e592dd cherry picked` builds of `style-servo`)
- Large regression in [instruction counts](https://perf.rust-lang.org/compare.html?start=5fd3a5c7c175f228afaf5fc6ff00c177b83d8055&end=686e313a9aa14107c8631ffe48fa09110a7692db&stat=instructions:u) (up to 1.7% on `full` builds of `externs`)
- Seems to be a genuine regression. Unclear what the cause is.
Make `TypeFolder::fold_*` return `Result` [#91230](https://github.com/rust-lang/rust/issues/91230)
- Large improvement in [instruction counts](https://perf.rust-lang.org/compare.html?start=58f9efd36de5669ab731ec7ebf565999ff17b159&end=e6d2de9483a27f846f003fc745713339a9122473&stat=instructions:u) (up to -1.0% on `incr-full` builds of `deeply-nested-async`)
- Large regression in [instruction counts](https://perf.rust-lang.org/compare.html?start=58f9efd36de5669ab731ec7ebf565999ff17b159&end=e6d2de9483a27f846f003fc745713339a9122473&stat=instructions:u) (up to 4.0% on `incr-unchanged` builds of `deep-vector`)
- Regressions seem genuine, but are likely to be shuffling of instruction
sequences rather than something directly addressable.
Update libc to 0.2.108 [#90681](https://github.com/rust-lang/rust/issues/90681)
- Very large improvement in [instruction counts](https://perf.rust-lang.org/compare.html?start=db9d361a4731ca0bb48533fab6297a8fea75696f&end=350158dd6d7ba840666999efa9a19c6ae403eed1&stat=instructions:u) (up to -15.3% on `incr-unchanged` builds of `clap-rs`)
- Large regression in [instruction counts](https://perf.rust-lang.org/compare.html?start=db9d361a4731ca0bb48533fab6297a8fea75696f&end=350158dd6d7ba840666999efa9a19c6ae403eed1&stat=instructions:u) (up to 3.0% on `incr-unchanged` builds of `deeply-nested-async`)
- Looks like a genuine regression, potentially slightly more work at crate loading time.
Tokenize emoji as if they were valid identifiers [#88781](https://github.com/rust-lang/rust/issues/88781)
- Small improvement in [instruction counts](https://perf.rust-lang.org/compare.html?start=c6eda7d8a7af3ef51311d3106874a7d8de994edc&end=23a436606b118bd2fbb12f64fce21e7f9d355349&stat=instructions:u) (up to -0.8% on `full` builds of `deeply-nested`)
- Small regression in [instruction counts](https://perf.rust-lang.org/compare.html?start=c6eda7d8a7af3ef51311d3106874a7d8de994edc&end=23a436606b118bd2fbb12f64fce21e7f9d355349&stat=instructions:u) (up to 0.3% on `incr-full` builds of `deeply-nested-async`)
- Genuine regression; more expensive logic in tokenization.
Rollup of 6 pull requests [#91221](https://github.com/rust-lang/rust/issues/91221)
- Moderate improvement in [instruction counts](https://perf.rust-lang.org/compare.html?start=862962b90e59c5c1e217df74de80d3a81eee42f4&end=37a49713cb256f4033a3c2fab4810c5a61e89dd9&stat=instructions:u) (up to -1.3% on `incr-unchanged` builds of `wg-grammar`)
- Small regression in [instruction counts](https://perf.rust-lang.org/compare.html?start=862962b90e59c5c1e217df74de80d3a81eee42f4&end=37a49713cb256f4033a3c2fab4810c5a61e89dd9&stat=instructions:u) (up to 0.6% on `full` builds of `ctfe-stress-4`)
- Regression seems genuine, though cause is unclear.
#### Untriaged Pull Requests
[60 untriaged pull requests](https://github.com/rust-lang/rust/issues?q=is%3Amerged+label%3Aperf-regression+-label%3Aperf-regression-triaged+sort%3Acreated-asc).
## Nominated Issues
[T-compiler](https://github.com/rust-lang/rust/labels/I-compiler-nominated)
- "Change `char` type in debuginfo to DW_ATE_UTF" [rust#89887](https://github.com/rust-lang/rust/pull/89887)
- "sess: default to v0 symbol mangling" [rust#89917](https://github.com/rust-lang/rust/pull/89917)
- this is `s-blocked` ([see comment](https://github.com/rust-lang/rust/pull/89917#issuecomment-946731268))
- "Stabilize `-Z instrument-coverage` as `-C instrument-coverage`" [rust#90132](https://github.com/rust-lang/rust/pull/90132)
- @**tmandry** nominated
- "implement aspect-oriented programming (AOP) for Rust" [rust#90721](https://github.com/rust-lang/rust/pull/90721)
- nominated by @**mw** ([see comment](https://github.com/rust-lang/rust/pull/90721#issuecomment-966078438))
- suggested to open an RFC
- "Miscompilation where binding only some fields leaks the others" [rust#90752](https://github.com/rust-lang/rust/issues/90752)
- discussed in [P-critical](https://hackmd.io/R_-u5cmyQtmcPSL8sNtbuw?view#P-critical)
- perhaps nomination can be removed?
[RFC](https://github.com/rust-lang/rfcs/issues?q=is%3Aopen+label%3AI-nominated+label%3AT-compiler)
- No nominated RFCs for `T-compiler` this time.