Skip to content

Rollup of 10 pull requests #140415

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 28 commits into from
Apr 29, 2025
Merged

Rollup of 10 pull requests #140415

merged 28 commits into from
Apr 29, 2025

Conversation

ChrisDenton
Copy link
Member

Successful merges:

r? @ghost
@rustbot modify labels: rollup

Create a similar rollup

scottmcm and others added 28 commits April 10, 2025 21:07
Also mention them from `as_flattened(_mut)`.
Since deref patterns on boxes will be lowered differently, I'll be
making a separate test file for them. This makes sure we're still
testing the generic `Deref(Mut)::deref(_mut)`-based lowering.
This allows deref patterns to move out of boxes.

Implementation-wise, I've opted to put the information of whether a
deref pattern uses a built-in deref or a method call in the THIR. It'd
be a bit less code to check `.is_box()` everywhere, but I think this way
feels more robust (and we don't have a `mutability` field in the THIR
that we ignore when the smart pointer's a box). I'm not sure about the
naming (or using `ByRef`), though.
Support for `f16` and `f128` is varied across targets, backends, and
backend versions. Eventually we would like to reach a point where all
backends support these approximately equally, but until then we have to
work around some of these nuances of support being observable.

Introduce the `cfg_target_has_reliable_f16_f128` internal feature, which
provides the following new configuration gates:

* `cfg(target_has_reliable_f16)`
* `cfg(target_has_reliable_f16_math)`
* `cfg(target_has_reliable_f128)`
* `cfg(target_has_reliable_f128_math)`

`reliable_f16` and `reliable_f128` indicate that basic arithmetic for
the type works correctly. The `_math` versions indicate that anything
relying on `libm` works correctly, since sometimes this hits a separate
class of codegen bugs.

These options match configuration set by the build script at [1]. The
logic for LLVM support is duplicated as-is from the same script. There
are a few possible updates that will come as a follow up.

The config introduced here is not planned to ever become stable, it is
only intended to replace the build scripts for `std` tests and
`compiler-builtins` that don't have any way to configure based on the
codegen backend.

MCP: rust-lang/compiler-team#866
Closes: rust-lang/compiler-team#866

[1]: https://github.com/rust-lang/rust/blob/555e1d0386f024a8359645c3217f4b3eae9be042/library/std/build.rs#L84-L186
New compiler configuration has been introduced that is designed to
replace the build script configuration `reliable_f16`, `reliable_f128`,
`reliable_f16_math`, and `reliable_f128_math`. Do this replacement here,
which allows us to clean up `std`'s build script.

All tests are gated by `#[cfg(bootstrap)]` rather than doing a more
complicated `cfg(bootstrap)` / `cfg(not(bootstrap))` split since the
next beta split is within two weeks.
The test run-make/amdgpu-kd has an issue where rust-lld will sometimes fail with error 0xc0000374 (STATUS_HEAP_CORRUPTION).
…-inline, r=ZuseZ4

add autodiff inline

closes: rust-lang#138920

r? ```@ZuseZ4```

try-job: dist-aarch64-linux
…, r=dtolnay

Stabilize `slice_as_chunks` library feature

~~Draft as this needs rust-lang#139163 to land first.~~

FCP: rust-lang#74985 (comment)

Methods being stabilized are:
```rust
impl [T] {
    const fn as_chunks<const N: usize>(&self) -> (&[[T; N]], &[T]);
    const fn as_rchunks<const N: usize>(&self) -> (&[T], &[[T; N]]);
    const unsafe fn as_chunks_unchecked<const N: usize>(&self) -> &[[T; N]];
    const fn as_chunks_mut<const N: usize>(&mut self) -> (&mut [[T; N]], &mut [T]);
    const fn as_rchunks_mut<const N: usize>(&mut self) -> (&mut [T], &mut [[T; N]]);
    const unsafe fn as_chunks_unchecked_mut<const N: usize>(&mut self) -> &mut [[T; N]];
}
```

~~(FCP's not done quite yet, but will in another day if I'm counting right.)~~ FCP Complete: rust-lang#74985 (comment)
allow deref patterns to move out of boxes

This adds a case to lower deref patterns on boxes using a built-in deref instead of a `Deref::deref` or `DerefMut::deref_mut` call: if `deref!(inner): Box<T>` is matching on place `place`, the inner pattern `inner` now matches on `*place` rather than a temporary. No longer needing to call a method also means it won't borrow the scrutinee in match arms. This allows for bindings in `inner` to move out of `*place`.

For comparison with box patterns, this uses the same MIR lowering but different THIR. Consequently, deref patterns on boxes are treated the same as any other deref patterns in match exhaustiveness analysis. Box patterns can't quite be implemented in terms of deref patterns until exhaustiveness checking for deref patterns is implemented (I'll open a PR for exhaustiveness soon!).

Tracking issue: rust-lang#87121

r? ``@Nadrieril``
…y, r=lcnr

Do not compute type_of for impl item if impl where clauses are unsatisfied

Consider the following code:

```rust
trait Foo {
    fn call(self) -> impl Send;
}

trait Nested {}
impl<T> Foo for T
where
    T: Nested,
{
    fn call(self) -> impl Sized {
        NotSatisfied.call()
    }
}

struct NotSatisfied;
impl Foo for NotSatisfied {
    fn call(self) -> impl Sized {
        todo!()
    }
}
```

In `impl Foo for NotSatisfied`, we need to prove that the RPITIT is well formed. This requires proving the item bound `<NotSatisfied as Foo>::RPITIT: Send`. Normalizing `<NotSatisfied as Foo>::RPITIT: Send` assembles two impl candidates, via the `NotSatisfied` impl and the blanket `T` impl. We end up computing the `type_of` for the blanket impl even if `NotSatisfied: Nested` where clause does not hold.

This type_of query ends up needing to prove that its own `impl Sized` RPIT satisfies `Send`, which ends up needing to compute the hidden type of the RPIT, which is equal to the return type  of `NotSatisfied.call()`. That ends up in a query cycle, since we subsequently try normalizing that return type via the blanket impl again!

In the old solver, we don't end up computing the `type_of` an impl candidate if its where clauses don't hold, since this select call would fail before confirming the projection candidate:

https://github.com/rust-lang/rust/blob/d7ea436a02d5de4033fcf7fd4eb8ed965d0f574c/compiler/rustc_trait_selection/src/traits/project.rs#L882

This PR makes the new solver more consistent with the old solver by adding a call to `try_evaluate_added_goals` after regstering the impl predicates, which causes us to bail before computing the `type_of` for impls if the impl definitely doesn't apply.

r? lcnr

Fixes rust-lang/trait-system-refactor-initiative#185
…lcnr

Move inline asm check to typeck, properly handle aliases

Pull `InlineAsmCtxt` down to `rustc_hir_typeck`, and instead of using things like `Ty::is_copy`, use the `InferCtxt`-aware methods. To fix rust-lang/trait-system-refactor-initiative#189, we also add a `try_structurally_resolve_*` call to `expr_ty`.

r? lcnr
Implement the internal feature `cfg_target_has_reliable_f16_f128`

Support for `f16` and `f128` is varied across targets, backends, and backend versions. Eventually we would like to reach a point where all backends support these approximately equally, but until then we have to work around some of these nuances of support being observable.

Introduce the `cfg_target_has_reliable_f16_f128` internal feature, which provides the following new configuration gates:

* `cfg(target_has_reliable_f16)`
* `cfg(target_has_reliable_f16_math)`
* `cfg(target_has_reliable_f128)`
* `cfg(target_has_reliable_f128_math)`

`reliable_f16` and `reliable_f128` indicate that basic arithmetic for the type works correctly. The `_math` versions indicate that anything relying on `libm` works correctly, since sometimes this hits a separate class of codegen bugs.

These options match configuration set by the build script at [1]. The logic for LLVM support is duplicated as-is from the same script. There are a few possible updates that will come as a follow up.

The config introduced here is not planned to ever become stable, it is only intended to replace the build scripts for `std` tests and `compiler-builtins` that don't have any way to configure based on the codegen backend.

MCP: rust-lang/compiler-team#866
Closes: rust-lang/compiler-team#866

[1]: https://github.com/rust-lang/rust/blob/555e1d0386f024a8359645c3217f4b3eae9be042/library/std/build.rs#L84-L186

---

The second commit makes use of this config to replace `cfg_{f16,f128}{,_math}` in `library/`. I omitted providing a `cfg(bootstrap)` configuration to keep things simpler since the next beta branch is in two weeks.

try-job: aarch64-gnu
try-job: i686-msvc-1
try-job: test-various
try-job: x86_64-gnu
try-job: x86_64-msvc-ext2
Rename sub_ptr to offset_from_unsigned in docs

There are still a few mentions of `sub_ptr` in comments and doc comments, which were missed in rust-lang#137483.
…jieyouxu

Make bootstrap git tests more self-contained

Based on https://stackoverflow.com/a/67512433/1107768.

Fixes: rust-lang#140387

r? ```@jieyouxu```
Workaround for windows-gnu rust-lld test failure

The test run-make/amdgpu-kd has an issue on windows-gnu where rust-lld will sometimes fail with error 0xc0000374 (`STATUS_HEAP_CORRUPTION`).

This works around the issue by passing `--threads=1` to the linker as suggested [here](rust-lang#115985 (comment)). Note I don't know if this will help and it happens only sometimes in our CI so it's hard to test.
…r=compiler-errors

only return nested goals for `Certainty::Yes`

Ambiguous `NormalizesTo` goals can otherwise repeatedly add the same nested goals to the parent.

r? ```@compiler-errors```
@rustbot rustbot added A-run-make Area: port run-make Makefiles to rmake.rs F-autodiff `#![feature(autodiff)]` labels Apr 28, 2025
@rustbot rustbot added S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. T-bootstrap Relevant to the bootstrap subteam: Rust's build system (x.py and src/bootstrap) T-compiler Relevant to the compiler team, which will review and decide on the PR/issue. T-libs Relevant to the library team, which will review and decide on the PR/issue. WG-trait-system-refactor The Rustc Trait System Refactor Initiative (-Znext-solver) rollup A PR which is a rollup labels Apr 28, 2025
@ChrisDenton
Copy link
Member Author

@bors r+ rollup=never p=5

@bors
Copy link
Collaborator

bors commented Apr 28, 2025

📌 Commit bf37847 has been approved by ChrisDenton

It is now in the queue for this repository.

@bors bors added S-waiting-on-bors Status: Waiting on bors to run and complete tests. Bors will change the label on completion. and removed S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. labels Apr 28, 2025
@bors
Copy link
Collaborator

bors commented Apr 29, 2025

⌛ Testing commit bf37847 with merge 1b8ab72...

@bors
Copy link
Collaborator

bors commented Apr 29, 2025

☀️ Test successful - checks-actions
Approved by: ChrisDenton
Pushing 1b8ab72 to master...

@bors bors added the merged-by-bors This PR was explicitly merged by bors. label Apr 29, 2025
@bors bors merged commit 1b8ab72 into rust-lang:master Apr 29, 2025
7 checks passed
@rustbot rustbot added this to the 1.88.0 milestone Apr 29, 2025
Copy link

What is this? This is an experimental post-merge analysis report that shows differences in test outcomes between the merged PR and its parent PR.

Comparing 25cdf1f (parent) -> 1b8ab72 (this PR)

Test differences

Show 968 test diffs

Stage 0

  • f128::test_algebraic: pass -> [missing] (J1)
  • f128::test_clamp_max_is_nan: pass -> [missing] (J1)
  • f128::test_clamp_min_greater_than_max: pass -> [missing] (J1)
  • f128::test_clamp_min_is_nan: pass -> [missing] (J1)
  • f128::test_classify: pass -> [missing] (J1)
  • f128::test_float_bits_conv: pass -> [missing] (J1)
  • f128::test_from: pass -> [missing] (J1)
  • f128::test_infinity: pass -> [missing] (J1)
  • f128::test_is_finite: pass -> [missing] (J1)
  • f128::test_is_infinite: pass -> [missing] (J1)
  • f128::test_is_nan: pass -> [missing] (J1)
  • f128::test_is_normal: pass -> [missing] (J1)
  • f128::test_is_sign_negative: pass -> [missing] (J1)
  • f128::test_is_sign_positive: pass -> [missing] (J1)
  • f128::test_nan: pass -> [missing] (J1)
  • f128::test_neg_infinity: pass -> [missing] (J1)
  • f128::test_neg_zero: pass -> [missing] (J1)
  • f128::test_next_down: pass -> [missing] (J1)
  • f128::test_next_up: pass -> [missing] (J1)
  • f128::test_num_f128: pass -> [missing] (J1)
  • f128::test_one: pass -> [missing] (J1)
  • f128::test_real_consts: pass -> [missing] (J1)
  • f128::test_to_degrees: pass -> [missing] (J1)
  • f128::test_to_radians: pass -> [missing] (J1)
  • f128::test_total_cmp: pass -> [missing] (J1)
  • f128::test_zero: pass -> [missing] (J1)
  • f16::test_algebraic: pass -> [missing] (J1)
  • f16::test_clamp_max_is_nan: pass -> [missing] (J1)
  • f16::test_clamp_min_greater_than_max: pass -> [missing] (J1)
  • f16::test_clamp_min_is_nan: pass -> [missing] (J1)
  • f16::test_classify: pass -> [missing] (J1)
  • f16::test_float_bits_conv: pass -> [missing] (J1)
  • f16::test_from: pass -> [missing] (J1)
  • f16::test_infinity: pass -> [missing] (J1)
  • f16::test_is_finite: pass -> [missing] (J1)
  • f16::test_is_infinite: pass -> [missing] (J1)
  • f16::test_is_nan: pass -> [missing] (J1)
  • f16::test_is_normal: pass -> [missing] (J1)
  • f16::test_is_sign_negative: pass -> [missing] (J1)
  • f16::test_is_sign_positive: pass -> [missing] (J1)
  • f16::test_nan: pass -> [missing] (J1)
  • f16::test_neg_infinity: pass -> [missing] (J1)
  • f16::test_neg_zero: pass -> [missing] (J1)
  • f16::test_next_down: pass -> [missing] (J1)
  • f16::test_next_up: pass -> [missing] (J1)
  • f16::test_num_f16: pass -> [missing] (J1)
  • f16::test_one: pass -> [missing] (J1)
  • f16::test_real_consts: pass -> [missing] (J1)
  • f16::test_to_degrees: pass -> [missing] (J1)
  • f16::test_to_radians: pass -> [missing] (J1)
  • f16::test_zero: pass -> [missing] (J1)

Stage 1

  • [codegen] tests/codegen/autodiff/inline.rs: [missing] -> ignore (ignored when LLVM Enzyme is disabled) (J3)
  • [ui] tests/ui/asm/named_const_simd_vec_len.rs: pass -> [missing] (J3)
  • [ui] tests/ui/asm/named_const_simd_vec_len.rs#current: [missing] -> pass (J3)
  • [ui] tests/ui/asm/named_const_simd_vec_len.rs#next: [missing] -> pass (J3)
  • [ui] tests/ui/asm/normalizable-asm-ty.rs#current: [missing] -> pass (J3)
  • [ui] tests/ui/asm/normalizable-asm-ty.rs#next: [missing] -> pass (J3)
  • [ui] tests/ui/async-await/in-trait/cycle-if-impl-doesnt-apply.rs#current: [missing] -> pass (J3)
  • [ui] tests/ui/async-await/in-trait/cycle-if-impl-doesnt-apply.rs#next: [missing] -> pass (J3)
  • [ui] tests/ui/cfg/disallowed-cli-cfgs.rs#reliable_f128_: [missing] -> pass (J3)
  • [ui] tests/ui/cfg/disallowed-cli-cfgs.rs#reliable_f128_math_: [missing] -> pass (J3)
  • [ui] tests/ui/cfg/disallowed-cli-cfgs.rs#reliable_f16_: [missing] -> pass (J3)
  • [ui] tests/ui/cfg/disallowed-cli-cfgs.rs#reliable_f16_math_: [missing] -> pass (J3)
  • [ui] tests/ui/feature-gates/feature-gate-cfg-target-has-reliable-f16-f128.rs: [missing] -> pass (J3)
  • [ui] tests/ui/float/target-has-reliable-nightly-float.rs: [missing] -> pass (J3)
  • [ui] tests/ui/impl-trait/in-trait/cycle-if-impl-doesnt-apply.rs#current: [missing] -> pass (J3)
  • [ui] tests/ui/impl-trait/in-trait/cycle-if-impl-doesnt-apply.rs#next: [missing] -> pass (J3)
  • [ui] tests/ui/pattern/deref-patterns/deref-box.rs: [missing] -> pass (J3)
  • f128::test_recip: pass -> [missing] (J4)
  • errors::verify_hir_typeck_register_type_unstable_25: [missing] -> pass (J6)

Stage 2

  • [ui] tests/ui/asm/named_const_simd_vec_len.rs: ignore (only executed when the architecture is x86_64) -> [missing] (J0)
  • [ui] tests/ui/asm/named_const_simd_vec_len.rs#current: [missing] -> ignore (only executed when the architecture is x86_64) (J0)
  • [ui] tests/ui/asm/named_const_simd_vec_len.rs#next: [missing] -> ignore (only executed when the architecture is x86_64) (J0)
  • [ui] tests/ui/asm/normalizable-asm-ty.rs#current: [missing] -> pass (J2)
  • [ui] tests/ui/asm/normalizable-asm-ty.rs#next: [missing] -> pass (J2)
  • [ui] tests/ui/async-await/in-trait/cycle-if-impl-doesnt-apply.rs#current: [missing] -> pass (J2)
  • [ui] tests/ui/async-await/in-trait/cycle-if-impl-doesnt-apply.rs#next: [missing] -> pass (J2)
  • [ui] tests/ui/cfg/disallowed-cli-cfgs.rs#reliable_f128_: [missing] -> pass (J2)
  • [ui] tests/ui/cfg/disallowed-cli-cfgs.rs#reliable_f128_math_: [missing] -> pass (J2)
  • [ui] tests/ui/cfg/disallowed-cli-cfgs.rs#reliable_f16_: [missing] -> pass (J2)
  • [ui] tests/ui/cfg/disallowed-cli-cfgs.rs#reliable_f16_math_: [missing] -> pass (J2)
  • [ui] tests/ui/feature-gates/feature-gate-cfg-target-has-reliable-f16-f128.rs: [missing] -> pass (J2)
  • [ui] tests/ui/float/target-has-reliable-nightly-float.rs: [missing] -> pass (J2)
  • [ui] tests/ui/impl-trait/in-trait/cycle-if-impl-doesnt-apply.rs#current: [missing] -> pass (J2)
  • [ui] tests/ui/impl-trait/in-trait/cycle-if-impl-doesnt-apply.rs#next: [missing] -> pass (J2)
  • [ui] tests/ui/pattern/deref-patterns/deref-box.rs: [missing] -> pass (J2)
  • [ui] tests/ui/asm/named_const_simd_vec_len.rs: pass -> [missing] (J5)
  • [ui] tests/ui/asm/named_const_simd_vec_len.rs#current: [missing] -> pass (J5)
  • [ui] tests/ui/asm/named_const_simd_vec_len.rs#next: [missing] -> pass (J5)
  • [codegen] tests/codegen/autodiff/inline.rs: [missing] -> ignore (ignored when LLVM Enzyme is disabled) (J7)

Additionally, 878 doctest diffs were found. These are ignored, as they are noisy.

Job group index

Test dashboard

Run

cargo run --manifest-path src/ci/citool/Cargo.toml -- \
    test-dashboard 1b8ab72680f36e783af84c1a3c4f8508572bd9f9 --output-dir test-dashboard

And then open test-dashboard/index.html in your browser to see an overview of all executed tests.

Job duration changes

  1. dist-apple-various: 5839.6s -> 8866.3s (51.8%)
  2. x86_64-apple-2: 5737.7s -> 3881.6s (-32.4%)
  3. x86_64-apple-1: 8119.9s -> 6257.3s (-22.9%)
  4. dist-x86_64-mingw: 9140.9s -> 7544.1s (-17.5%)
  5. dist-x86_64-apple: 9743.9s -> 8236.2s (-15.5%)
  6. aarch64-gnu-debug: 3962.8s -> 4270.1s (7.8%)
  7. i686-msvc-1: 10079.0s -> 9448.5s (-6.3%)
  8. x86_64-gnu-llvm-19-1: 5547.5s -> 5228.0s (-5.8%)
  9. x86_64-gnu-aux: 6240.2s -> 5905.0s (-5.4%)
  10. dist-i686-mingw: 8149.0s -> 7722.3s (-5.2%)
How to interpret the job duration changes?

Job durations can vary a lot, based on the actual runner instance
that executed the job, system noise, invalidated caches, etc. The table above is provided
mostly for t-infra members, for simpler debugging of potential CI slow-downs.

@rust-timer
Copy link
Collaborator

📌 Perf builds for each rolled up PR:

PR# Message Perf Build Sha
#139308 add autodiff inline eed225a599ea4e2be3cd015b4a2e60b542351bf6 (link)
#139656 Stabilize slice_as_chunks library feature fbc7514ed085e0a856a9be3f1df7115e6006bea3 (link)
#140022 allow deref patterns to move out of boxes 7dab99ce036f9a495460f1e851dea26b1069830e (link)
#140276 Do not compute type_of for impl item if impl where clauses … a728176dcdbfee4bc10b4abc32731a3821a14b67 (link)
#140302 Move inline asm check to typeck, properly handle aliases 176b32f7f1cad449d2a7a4ac94f6d29180c36dcf (link)
#140323 Implement the internal feature `cfg_target_has_reliable_f16… d28df6143f59432ecdfefbb411f33ef8945f9063 (link)
#140391 Rename sub_ptr to offset_from_unsigned in docs 53b7e22d727aad90ebbbbde5ddcf305a9b9c5f70 (link)
#140394 Make bootstrap git tests more self-contained 0dd731fb044167bd92bdfadadd3e6475be2185e1 (link)
#140396 Workaround for windows-gnu rust-lld test failure 60bb7d598d75c755315246333b230d3c6c019251 (link)
#140402 only return nested goals for Certainty::Yes 7114d69583cdc7faf7c5e98ca8b7b579f25d13ee (link)

previous master: 25cdf1f674

In the case of a perf regression, run the following command for each PR you suspect might be the cause: @rust-timer build $SHA

@rust-timer
Copy link
Collaborator

Finished benchmarking commit (1b8ab72): comparison URL.

Overall result: ❌ regressions - no action needed

@rustbot label: -perf-regression

Instruction count

This is the most reliable metric that we have; it was used to determine the overall result at the top of this comment. However, even this metric can sometimes exhibit noise.

mean range count
Regressions ❌
(primary)
0.2% [0.2%, 0.2%] 1
Regressions ❌
(secondary)
- - 0
Improvements ✅
(primary)
- - 0
Improvements ✅
(secondary)
- - 0
All ❌✅ (primary) 0.2% [0.2%, 0.2%] 1

Max RSS (memory usage)

Results (primary -0.5%, secondary -2.7%)

This is a less reliable metric that may be of interest but was not used to determine the overall result at the top of this comment.

mean range count
Regressions ❌
(primary)
0.6% [0.5%, 0.7%] 2
Regressions ❌
(secondary)
- - 0
Improvements ✅
(primary)
-0.7% [-1.0%, -0.5%] 11
Improvements ✅
(secondary)
-2.7% [-4.8%, -0.6%] 2
All ❌✅ (primary) -0.5% [-1.0%, 0.7%] 13

Cycles

Results (primary -0.8%)

This is a less reliable metric that may be of interest but was not used to determine the overall result at the top of this comment.

mean range count
Regressions ❌
(primary)
- - 0
Regressions ❌
(secondary)
- - 0
Improvements ✅
(primary)
-0.8% [-1.1%, -0.5%] 3
Improvements ✅
(secondary)
- - 0
All ❌✅ (primary) -0.8% [-1.1%, -0.5%] 3

Binary size

This benchmark run did not return any relevant results for this metric.

Bootstrap: 765.701s -> 764.09s (-0.21%)
Artifact size: 365.36 MiB -> 365.39 MiB (0.01%)

@ChrisDenton ChrisDenton deleted the rollup-r0631fv branch April 29, 2025 08:26
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
A-run-make Area: port run-make Makefiles to rmake.rs F-autodiff `#![feature(autodiff)]` merged-by-bors This PR was explicitly merged by bors. rollup A PR which is a rollup S-waiting-on-bors Status: Waiting on bors to run and complete tests. Bors will change the label on completion. T-bootstrap Relevant to the bootstrap subteam: Rust's build system (x.py and src/bootstrap) T-compiler Relevant to the compiler team, which will review and decide on the PR/issue. T-libs Relevant to the library team, which will review and decide on the PR/issue. WG-trait-system-refactor The Rustc Trait System Refactor Initiative (-Znext-solver)
Projects
None yet
Development

Successfully merging this pull request may close these issues.