T-compiler Meeting Agenda 2024-04-25
Announcements
- Reminder: if you see a PR/issue that seems like there might be legal implications due to copyright/IP/etc, please let us know (or at least message @davidtwco or @Wesley Wiser so we can pass it along).
Other WG meetings (calendar link)
- No meetings scheduled for next week
MCPs/FCPs
- New MCPs (take a look, see if you like them!)
- “Build LLVM using CI image’s Clang on Win + MacOS, instead of installing a copy” compiler-team#742 (Zulip)
- “Add –print=check-cfg” compiler-team#743 (Zulip)
- Old MCPs (not seconded, take a look)
- “Target families for executable format” compiler-team#716 (Zulip) (last review activity: 2 months ago)
- “Promote riscv64gc-unknown-linux-musl to tier 2” compiler-team#728 (Zulip) (last review activity: about 48 days ago)
- “Add
-Zemit-thin-lto-index=<path>to enable distributed ThinLTO users” compiler-team#735 (Zulip) (last review activity: about 20 days ago) - “Only emit forward compatible v0 symbol names with graceful degradation” compiler-team#737 (Zulip) (last review activity: about 20 days ago)
- “Partial compilation using MIR-only rlibs” compiler-team#738 (Zulip) (last review activity: about 13 days ago)
- Pending FCP requests (check your boxes!)
- merge: Add a new
--build-idflag to rustc (compiler-team#635)- @|125250 @|116107 @|125294 @|123856
- concerns: other-existing-options (by petrochenkov) option-name (by wesleywiser)
- merge: Retire the mailing list and make all decisions on zulip (compiler-team#649)
- no pending checkboxs
- concerns: automatic-sync (by compiler-errors) single-point-of-failure-via-stream-archival (by pnkfelix)
- merge: Stabilize
--env-setoption (rust#119926)- @|119009 @|116083 @|124288 @|123586 @|125250 @|119031 @|124287 @|116118
- concerns: other-rustc-vars (by petrochenkov)
- merge: Show files produced by
--emit fooin json artifact notifications (rust#122597)- @|119009 @|116083 @|123586 @|116107 @|125294 @|119031 @|248906 @|124287 @|426609 @|116118 @_|232957
- no pending concerns
- merge: Disable
version_check::supports_featureon nightly (rust#124339)- @|119009 @|116083 @|123586 @|125250 @|116107 @|119031 @|248906 @|124287 @|426609 @|123856 @|116118 @|216206 @_|232957
- no pending concerns
- merge: Add a new
- Things in FCP (make sure you’re good with it)
- “Skip virtual drop for !needs_drop types” compiler-team#730 (Zulip)
- “Make casts of pointers to trait objects stricter” rust#120248
- Accepted MCPs
- “allow all command line flags to be passed multiple times, overwriting previous usages” compiler-team#731 (Zulip)
- “Policy: no discussions on T-compiler tracking issues” compiler-team#739 (Zulip)
- MCPs blocked on unresolved concerns
- “Add hygiene attributes to compile expanded source code” compiler-team#692 (Zulip) (last review activity: 3 months ago)
- concern: added-complexity-to-frontend
- “Add hygiene attributes to compile expanded source code” compiler-team#692 (Zulip) (last review activity: 3 months ago)
- Finalized FCPs (disposition merge)
- “Tracking Issue for RFC 3013: Checking conditional compilation at compile time” rust#82450
- “Ignore
-C stripon MSVC” rust#115120 - “sess: stabilize
-Zrelro-levelas-Crelro-level” rust#121694 - “stabilize
-Znext-solver=coherence” rust#121848 - “Use fulfillment in method probe, not evaluation” rust#122317
- “Fix trait solver overflow with
non_local_definitionslint” rust#123594 - “More DefineOpaqueTypes::Yes” rust#123794
- Other teams finalized FCPs
- “Stabilise inline_const” rust#104087
- “restrict promotion of
const fncalls” rust#121557 - “stabilize
-Znext-solver=coherence” rust#121848 - “Use fulfillment in method probe, not evaluation” rust#122317
- “Fix trait solver overflow with
non_local_definitionslint” rust#123594 - “More DefineOpaqueTypes::Yes” rust#123794
WG checkins
None today
Backport nominations
T-compiler beta / T-compiler stable
- No beta nominations for
T-compilerthis time. - No stable nominations for
T-compilerthis time.
- No beta nominations for
T-typesthis time. - No stable nominations for
T-typesthis time.
PRs S-waiting-on-team
Issues of Note
Short Summary
- 0 T-compiler P-critical issues
- 61 T-compiler P-high issues
- 0 P-critical, 0 P-high, 2 P-medium, 1 P-low regression-from-stable-to-beta
- 0 P-critical, 0 P-high, 5 P-medium, 2 P-low regression-from-stable-to-nightly
- 0 P-critical, 36 P-high, 100 P-medium, 16 P-low regression-from-stable-to-stable
P-critical
- No
P-criticalissues forT-compilerthis time.
- No
P-criticalissues forT-typesthis time.
P-high regressions
- No
P-highbeta regressions this time.
Unassigned P-high nightly regressions
- No unassigned
P-highnightly regressions this time.
Performance logs
A week dominated by small mixed changes to perf with improvements slightly outweighing regressions. There were no pure regressions, and many of the mixed perf results were deemed worth it for their potential improvements to runtime performance through further optimization from LLVM.
Triage done by @rylev. Revision range: ccfcd950..a77f76e2
Summary:
| (instructions:u) | mean | range | count |
|---|---|---|---|
| Regressions (primary) | 0.4% | [0.2%, 1.8%] | 57 |
| Regressions (secondary) | 0.4% | [0.2%, 1.9%] | 26 |
| Improvements (primary) | -0.8% | [-3.4%, -0.2%] | 50 |
| Improvements (secondary) | -0.6% | [-1.9%, -0.1%] | 32 |
| All (primary) | -0.2% | [-3.4%, 1.8%] | 107 |
0 Regressions, 5 Improvements, 6 Mixed; 2 of them in rollups 62 artifact comparisons made in total
Regressions
None (😎)
Improvements
Simplify shallow resolver to just fold ty/consts #123537 (Comparison Link)
| (instructions:u) | mean | range | count |
|---|---|---|---|
| Regressions (primary) | 0.3% | [0.3%, 0.3%] | 1 |
| Regressions (secondary) | - | - | 0 |
| Improvements (primary) | -0.9% | [-1.4%, -0.2%] | 8 |
| Improvements (secondary) | -0.3% | [-0.4%, -0.2%] | 11 |
| All (primary) | -0.8% | [-1.4%, 0.3%] | 9 |
rustdoc-search: single result for items with multiple paths #119912 (Comparison Link)
| (instructions:u) | mean | range | count |
|---|---|---|---|
| Regressions (primary) | - | - | 0 |
| Regressions (secondary) | - | - | 0 |
| Improvements (primary) | -0.2% | [-0.3%, -0.2%] | 3 |
| Improvements (secondary) | - | - | 0 |
| All (primary) | -0.2% | [-0.3%, -0.2%] | 3 |
interpret: use ScalarInt for bin-ops; avoid PartialOrd for ScalarInt #124113 (Comparison Link)
| (instructions:u) | mean | range | count |
|---|---|---|---|
| Regressions (primary) | - | - | 0 |
| Regressions (secondary) | - | - | 0 |
| Improvements (primary) | -0.3% | [-0.4%, -0.2%] | 4 |
| Improvements (secondary) | - | - | 0 |
| All (primary) | -0.3% | [-0.4%, -0.2%] | 4 |
PatRangeBoundary::compare_with: als add a fast-path for signed integers #124190 (Comparison Link)
| (instructions:u) | mean | range | count |
|---|---|---|---|
| Regressions (primary) | - | - | 0 |
| Regressions (secondary) | - | - | 0 |
| Improvements (primary) | - | - | 0 |
| Improvements (secondary) | -3.3% | [-3.3%, -3.3%] | 1 |
| All (primary) | - | - | 0 |
Rollup of 7 pull requests #124271 (Comparison Link)
| (instructions:u) | mean | range | count |
|---|---|---|---|
| Regressions (primary) | - | - | 0 |
| Regressions (secondary) | 0.5% | [0.5%, 0.5%] | 1 |
| Improvements (primary) | -0.2% | [-0.2%, -0.2%] | 1 |
| Improvements (secondary) | -0.9% | [-2.1%, -0.4%] | 9 |
| All (primary) | -0.2% | [-0.2%, -0.2%] | 1 |
Mixed
Implement syntax for impl Trait to specify its captures explicitly (feature(precise_capturing)) #123468 (Comparison Link)
| (instructions:u) | mean | range | count |
|---|---|---|---|
| Regressions (primary) | 0.2% | [0.2%, 0.2%] | 4 |
| Regressions (secondary) | - | - | 0 |
| Improvements (primary) | - | - | 0 |
| Improvements (secondary) | -0.8% | [-0.8%, -0.8%] | 1 |
| All (primary) | 0.2% | [0.2%, 0.2%] | 4 |
- Very small regression on a stress test
At debuginfo=0, don’t inline debuginfo when inlining #123949 (Comparison Link)
| (instructions:u) | mean | range | count |
|---|---|---|---|
| Regressions (primary) | 1.0% | [0.3%, 1.8%] | 5 |
| Regressions (secondary) | 1.0% | [0.2%, 3.4%] | 4 |
| Improvements (primary) | -0.9% | [-2.4%, -0.1%] | 22 |
| Improvements (secondary) | -1.2% | [-1.8%, -0.2%] | 10 |
| All (primary) | -0.6% | [-2.4%, 1.8%] | 27 |
- Improvements outweighed the regressions and was deemed worth it by the reviewer.
Always display stability version even if it’s the same as the containing item #118441 (Comparison Link)
| (instructions:u) | mean | range | count |
|---|---|---|---|
| Regressions (primary) | 0.3% | [0.2%, 0.3%] | 2 |
| Regressions (secondary) | - | - | 0 |
| Improvements (primary) | -0.2% | [-0.2%, -0.2%] | 1 |
| Improvements (secondary) | - | - | 0 |
| All (primary) | 0.1% | [-0.2%, 0.3%] | 3 |
- Noise that is reversed in the next run.
Tell LLVM Vec::len is invariant across growth #123930 (Comparison Link)
| (instructions:u) | mean | range | count |
|---|---|---|---|
| Regressions (primary) | 0.4% | [0.1%, 1.6%] | 7 |
| Regressions (secondary) | 0.3% | [0.2%, 0.5%] | 11 |
| Improvements (primary) | -0.5% | [-0.9%, -0.4%] | 8 |
| Improvements (secondary) | -0.2% | [-0.2%, -0.1%] | 3 |
| All (primary) | -0.1% | [-0.9%, 1.6%] | 15 |
- The regressions come from LLVM, and it was deemed worth it given the possibility for LLVM to perform more optimization.
fix normalizing in different ParamEnvs with the same InferCtxt #124203 (Comparison Link)
| (instructions:u) | mean | range | count |
|---|---|---|---|
| Regressions (primary) | - | - | 0 |
| Regressions (secondary) | 4.1% | [4.1%, 4.1%] | 1 |
| Improvements (primary) | -0.7% | [-2.4%, -0.2%] | 9 |
| Improvements (secondary) | -0.9% | [-0.9%, -0.9%] | 1 |
| All (primary) | -0.7% | [-2.4%, -0.2%] | 9 |
- Noise
Rollup of 5 pull requests #124241 (Comparison Link)
| (instructions:u) | mean | range | count |
|---|---|---|---|
| Regressions (primary) | 0.7% | [0.2%, 1.6%] | 7 |
| Regressions (secondary) | 0.3% | [0.3%, 0.3%] | 1 |
| Improvements (primary) | -0.9% | [-2.8%, -0.3%] | 7 |
| Improvements (secondary) | -3.9% | [-3.9%, -3.9%] | 1 |
| All (primary) | -0.1% | [-2.8%, 1.6%] | 14 |
- More time spent in LLVM previously
- Pinged the author and reviewer for their perspective.
Nominated Issues
- “Tracking issue: 32bit x86 targets without SSE2 have unsound floating point behavior” rust#114479
- Nominated by @apiraino (github comment, zulip prioritization topic)
This tracking issue shows that we have targets that intersect tier platforms support in different ways. For example i686 are tier 1 but i686 “non-SSE2” are tier 2 (and suffer from codegen unsoundnesses). All these differences are not apparent in our documentation. Should we add a bit of nuances to our target policy? If yes, how?
[Ralf] Altogether I think there are enough issues with floating point on x86 without SSE (this one, and also #115567) that IMO we should say that tier 1 hardfloat targets require SSE period. It is already the case that using feature flags to turn a hardfloat target into a softfloat target is unsound (Cc #116344), and we should simply hard-error in those cases (e.g. disabling the x87 feature on any hardfloat x86 target). IMO we should do the same when disabling SSE/SSE2 on an i686 target.
- No I-compiler-nominated RFCs this time.
Oldest PRs waiting for review
- “Enable DestinationPropagation by default.” rust#115105 (last review activity: 3 months ago)
- cc @mw
- “Remove unnecessary impl sorting in queries and metadata” rust#120812 (last review activity: 2 months ago)
- @cjgillot
- “Use Box<[T]> for ProcessResult::Changed” rust#121355 (last review activity: 2 months ago)
- cc: @Esteban Küber? Note: @Michael Goulet (compiler-errors) was not in favour of this patch
- “Handle .init_array link_section specially on wasm” rust#121533 (last review activity: 2 months ago)
- cc @Esteban Küber
- “Allow a MIR analysis to perform the state
joindirectly” rust#114900 (last review activity: about 59 days ago)- cc: @cjgillot
Next week’s WG checkins
- @_WG-async by @nikomatsakis and @tmandry
- @_WG-diagnostics by @Esteban Küber and @oli
Next meetings’ agenda draft: hackmd link