--- tags: weekly, rustc type: docs --- # T-compiler Meeting Agenda 2021-12-16 [Tracking Issue](https://github.com/rust-lang/rust/issues/54818) ## Announcements - Tomorrow <time:2021-12-17T15:00:00+01:00>, monthly [Compiler Team Planning meeting](https://forge.rust-lang.org/compiler/steering-meeting.html) - 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!) - No new proposals this time. - 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) - "Tier 3 target proposal: riscv64gc-linux-android (Android target for `riscv64gc`)" [compiler-team#472](https://github.com/rust-lang/compiler-team/issues/472) (last review activity: about 6 days ago) - "`-Dwarnings` to cover all warnings" [compiler-team#473](https://github.com/rust-lang/compiler-team/issues/473) (last review activity: about 6 days ago) - Pending FCP requests (check your boxes!) - "Stabilize `-Z instrument-coverage` as `-C instrument-coverage`" [rust#90132](https://github.com/rust-lang/rust/pull/90132) - "Stabilize `-Z print-link-args` as `-C print-link-args`" [rust#91606](https://github.com/rust-lang/rust/pull/91606) - Things in FCP (make sure you're good with it) - "Tracking issue for RFC 2115: In-band lifetime bindings" [rust#44524](https://github.com/rust-lang/rust/issues/44524) - Accepted MCPs - No new accepted proposals this time. - Finalized FCPs (disposition merge) - "Stabilise `feature(const_generics_defaults)`" [rust#90207](https://github.com/rust-lang/rust/pull/90207) - "rustdoc: accept `--out-dir` and soft-deprecate `--output`" [rust#91260](https://github.com/rust-lang/rust/issues/91260) ### WG checkins - @_WG-rfc-2229_ by @**nikomatsakis** @**Matthew Jasper** ([previous checkin](https://hackmd.io/N_WW5tZqTLWouaed6cCjxg#WG-checkins)) > Checkin text - @_WG-rls2.0_ by @**matklad** ([previous checkin](https://hackmd.io/N_WW5tZqTLWouaed6cCjxg#WG-checkins)) > Checkin text ## 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) - :beta: "Deduplicate projection sub-obligations" [rust#90423](https://github.com/rust-lang/rust/pull/90423) - fixes [rust#91598](https://github.com/rust-lang/rust/issues/91598), a `P-critical` compile-time regression - :beta: "Sync portable-simd to remove autosplats" [rust#91484](https://github.com/rust-lang/rust/pull/91484) - PR provided by @**Jubilee** - fixes [rust#90904](https://github.com/rust-lang/rust/issues/90904), `P-high` regression in libs from stable - :beta: "Revert setting a default for the MACOSX_DEPLOYMENT_TARGET env var for linking" [rust#91870](https://github.com/rust-lang/rust/pull/91870) - fixes [rust#91372](https://github.com/rust-lang/rust/issues/91372), a breaking change on macOS targets that prevented compiling against core crates - :beta: "Fix HashStable implementation on InferTy" [rust#91892](https://github.com/rust-lang/rust/pull/91892) - opened by @**Michael Goulet** - fixes [rust#91807](https://github.com/rust-lang/rust/issues/91807) a regression from stable that prevents valid code to compile in Rust 1.57 - :stable: "Deduplicate projection sub-obligations" [rust#90423](https://github.com/rust-lang/rust/pull/90423) - fixes [rust#91598](https://github.com/rust-lang/rust/issues/91598), a `P-critical` compile-time regression [T-rustdoc beta](https://github.com/rust-lang/rust/issues?q=is%3Aall+label%3Abeta-nominated+-label%3Abeta-accepted+label%3AT-rustdoc) / [T-rustdoc stable](https://github.com/rust-lang/rust/issues?q=is%3Aall+label%3Astable-nominated+-label%3Astable-accepted+label%3AT-rustdoc) - No backport 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) - "Stabilize `-Z print-link-args` as `-C print-link-args`" [rust#91606](https://github.com/rust-lang/rust/pull/91606) - @**Wesley Wiser** [proposed merge](https://github.com/rust-lang/rust/pull/91606#issuecomment-992960418) of the RFC (pending one comment from @**Vadim Petrochenkov**) ## Oldest PRs waiting for review [T-compiler](https://github.com/rust-lang/rust/pulls?q=is%3Apr+is%3Aopen+label%3AS-waiting-on-review+draft%3Afalse+label%3AT-compiler+sort%3Acreated-asc) - "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 [rust#89862](https://github.com/rust-lang/rust/pull/89862) (last activity about 2 month ago) - PR author @**lcnr** - previously reviewed by @**Esteban Küber** - PR seems to need another round of review ## Issues of Note ### Short Summary - [3 T-compiler P-critical issues](https://github.com/rust-lang/rust/issues?q=is%3Aopen+label%3AT-compiler+label%3AP-critical) - [0 of those are unassigned](https://github.com/rust-lang/rust/issues?q=is%3Aopen+label%3AT-compiler+label%3AP-critical+no%3Aassignee) - [76 T-compiler P-high issues](https://github.com/rust-lang/rust/issues?q=is%3Aopen+label%3AT-compiler+label%3AP-high) - [51 of those are unassigned](https://github.com/rust-lang/rust/issues?q=is%3Aopen+label%3AT-compiler+label%3AP-high+no%3Aassignee) - [1 P-critical, 1 P-high, 0 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, 1 P-high, 2 P-medium, 0 P-low regression-from-stable-to-nightly](https://github.com/rust-lang/rust/labels/regression-from-stable-to-nightly) - [2 P-critical, 51 P-high, 81 P-medium, 11 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) - "Huge compile-time regression in beta/nightly" [rust#91128](https://github.com/rust-lang/rust/issues/91128) - issue author mentions that disabling the new LLVM pass manager makes the regression disappear - an MCVE is [at this comment](https://github.com/rust-lang/rust/issues/91128#issuecomment-977154873) - @**nikic** followed up with some [insights](https://github.com/rust-lang/rust/issues/91128#issuecomment-988968103) and an LLVM patch [#D115497](https://reviews.llvm.org/D115497) - "Compile-time regression between 1.56.1 and 1.57.0 for deeply nested decorator types" [rust#91598](https://github.com/rust-lang/rust/issues/91598) - @**Aaron Hill** provided a fix in PR [rust#90423](https://github.com/rust-lang/rust/pull/90423) - patch is beta- and stable-backport nominated [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-release+-label%3AT-rustdoc+-label%3AT-core) - No `P-high` beta regressions this time. [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-release+-label%3AT-rustdoc+-label%3AT-core) - No unassigned `P-high` nightly regressions this time. ## Performance logs > [triage logs 2021-12-14](https://github.com/rust-lang/rustc-perf/blob/master/triage/2021-12-14.md) This week's report started with 6 regressions; after eliminating truly obvious noise, we are left with just 2 minor regressions. Of the cases that regressed, I think the only interesting one is keccak (regressed by 1.73% in PR #91549). But don't be too depressed: keccak was also improved up to 23% by PR [#85013](https://github.com/rust-lang/rust/pull/85013) (!); thanks to @**simulacrum** for that PR. Triage done by **@pnkfelix**. Revision range: [e2116acae59654bfab2a9729a024f3e2fd6d4b02..404c8471aba60c2d837fa728e7c729a0f52d5830](https://perf.rust-lang.org/?start=e2116acae59654bfab2a9729a024f3e2fd6d4b02&end=404c8471aba60c2d837fa728e7c729a0f52d5830&absolute=false&stat=instructions%3Au) 2 Regressions, 5 Improvements, 3 Mixed; 1 of them in rollups 30 Untriaged pull-requests 48 comparisons made in total #### Regressions "Support AVR for inline asm!" [#91224](https://github.com/rust-lang/rust/issues/91224) - Moderate regression in [instruction counts](https://perf.rust-lang.org/compare.html?start=c5c94945096265b6d675b2f55a247c4799de8d87&end=0b6f079e4987ded15c13a15b734e7cfb8176839f&stat=instructions:u) (up to 0.8% on `incr-unchanged` builds of `externs`) - This regression is solely isolated to variants of the `externs` benchmark. - It seems like a near certainty that the regression reported here is noise exacerbated by this pathological benchmark. - Marked as triaged. "Eliminate ConstnessAnd again" [#91549](https://github.com/rust-lang/rust/issues/91549) - Large regression in [instruction counts](https://perf.rust-lang.org/compare.html?start=6bda5b331cfe7e04e1fe348c58a928fc2b650f4f&end=22f8bde876f2fa9c5c4e95be1bce29cc271f2b51&stat=instructions:u) (up to 3.1% on `full` builds of `inflate`) - This PR went through many rounds of performance evaluation and tuning. - The only "real" regressions are likely to be `inflate` and `keccak`, and I am suspicious of `inflate` based on its sensitivity in other PR's. - I'm leaving this PR in this week's report largely just to draw attention to the problem we face in trying to evalute impact of cases like this. #### Improvements - "Avoid string validation in rustc_serialize, check a marker byte instead" [#91407](https://github.com/rust-lang/rust/issues/91407) - "Sync portable-simd to remove autosplats" [#91484](https://github.com/rust-lang/rust/issues/91484) - "replace vec::Drain drop loops with drop_in_place" [#85157](https://github.com/rust-lang/rust/issues/85157) - "replace dynamic library module with libloading" [#90716](https://github.com/rust-lang/rust/issues/90716) - "manually implement Hash for DefId" [#91660](https://github.com/rust-lang/rust/issues/91660) #### Mixed "Replace dominators algorithm with simple Lengauer-Tarjan" [#85013](https://github.com/rust-lang/rust/issues/85013) - Very large improvement in [instruction counts](https://perf.rust-lang.org/compare.html?start=2af5c6562deed1878000e791f2cb21b981a53959&end=c67497a5da33eb3167a33e938920ce04d2b883a5&stat=instructions:u) (up to -23.6% on `full` builds of `keccak`) - Small regression in [instruction counts](https://perf.rust-lang.org/compare.html?start=2af5c6562deed1878000e791f2cb21b981a53959&end=c67497a5da33eb3167a33e938920ce04d2b883a5&stat=instructions:u) (up to 0.4% on `incr-unchanged` builds of `helloworld`) "Rollup of 6 pull requests" [#91799](https://github.com/rust-lang/rust/issues/91799) - Very large improvement in [instruction counts](https://perf.rust-lang.org/compare.html?start=b8dc6aa673317cf72a8abb9c421f573f2b34b47a&end=928783de663bd855a96f14b2d38c1061603587c6&stat=instructions:u) (up to -5.9% on `incr-unchanged` builds of `inflate`) - Small regression in [instruction counts](https://perf.rust-lang.org/compare.html?start=b8dc6aa673317cf72a8abb9c421f573f2b34b47a&end=928783de663bd855a96f14b2d38c1061603587c6&stat=instructions:u) (up to 0.8% on `incr-unchanged` builds of `issue-88862`) - I don't yet now hat's up with the regression here to issue-88862. "Deduplicate projection sub-obligations" [#90423](https://github.com/rust-lang/rust/issues/90423) - Very large improvement in [instruction counts](https://perf.rust-lang.org/compare.html?start=a0a4c7d1e48c39a73119eb9107d402d60c83293b&end=4c9bdf4cbbf1deab0b5da398d4910558a66b332f&stat=instructions:u) (up to -6.2% on `full` builds of `deeply-nested`) - Small regression in [instruction counts](https://perf.rust-lang.org/compare.html?start=a0a4c7d1e48c39a73119eb9107d402d60c83293b&end=4c9bdf4cbbf1deab0b5da398d4910558a66b332f&stat=instructions:u) (up to 0.5% on `full` builds of `regression-31157`) - This is a targetted fix to address performance regressons that leaked into 1.57. It has been beta-nominated for backport. ## Nominated Issues [T-compiler](https://github.com/rust-lang/rust/issues?q=is%3Aopen+label%3AI-compiler-nominated) - "Disable LLVM newPM by default" [rust#91190](https://github.com/rust-lang/rust/pull/91190) - mentioned in past meeting, scheduled to be re-evaluated again this week ([see comment](https://github.com/rust-lang/rust/pull/91190#issuecomment-984738762)) and relevant [Zulip discussion](https://rust-lang.zulipchat.com/#narrow/stream/238009-t-compiler.2Fmeetings/topic/.5Bweekly.5D.202021-12-02.20.2354818/near/263454357) - @**Nikita Popov** has a patch [for LLVM](https://reviews.llvm.org/D115497) (see relevant [comment with some context](https://github.com/rust-lang/rust/issues/91128#issuecomment-990064382)) [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.