Skip to content

Conversation

Diggsey
Copy link
Contributor

@Diggsey Diggsey commented Jul 6, 2025

It's common to import dependencies from the sysroot via extern crate rather than use an explicit cargo dependency, when it's necessary to use the same dependency version as used by rustc itself. However, this is dangerous for crates.io crates, since rustc may not pull in the dependency on some targets, or may pull in multiple versions. In both cases, the extern crate fails to resolve.

To address this, re-export all such dependencies from the appropriate rustc_* crates, and use this alias from crates which would otherwise need to use extern crate.

See #143492 for an example of the kind of issue that can occur.

@rustbot
Copy link
Collaborator

rustbot commented Jul 6, 2025

r? @oli-obk

rustbot has assigned @oli-obk.
They will have a look at your PR within the next two weeks and either review your PR or reassign to another reviewer.

Use r? to explicitly pick a reviewer

@rustbot rustbot added A-attributes Area: Attributes (`#[…]`, `#![…]`) A-compiletest Area: The compiletest test runner A-LLVM Area: Code generation parts specific to LLVM. Both correctness bugs and optimization-related issues. A-query-system Area: The rustc query system (https://rustc-dev-guide.rust-lang.org/query.html) A-rustdoc-json Area: Rustdoc JSON backend A-testsuite Area: The testsuite used to check the correctness of rustc A-translation Area: Translation infrastructure, and migrating existing diagnostics to SessionDiagnostic PG-exploit-mitigations Project group: Exploit mitigations 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-rustdoc Relevant to the rustdoc team, which will review and decide on the PR/issue. T-rustdoc-frontend Relevant to the rustdoc-frontend team, which will review and decide on the web UI/UX output. WG-trait-system-refactor The Rustc Trait System Refactor Initiative (-Znext-solver) labels Jul 6, 2025
@rustbot
Copy link
Collaborator

rustbot commented Jul 6, 2025

Some changes occurred in compiler/rustc_codegen_ssa

cc @WaffleLapkin

Some changes occurred in compiler/rustc_codegen_cranelift

cc @bjorn3

Some changes occurred in src/tools/clippy

cc @rust-lang/clippy

Some changes occurred in src/tools/compiletest

cc @jieyouxu

Some changes occurred in src/tools/rustfmt

cc @rust-lang/rustfmt

Some changes occurred in compiler/rustc_attr_data_structures

cc @jdonszelmann

Some changes occurred in compiler/rustc_attr_parsing

cc @jdonszelmann

Some changes occurred in compiler/rustc_codegen_gcc

cc @antoyo, @GuillaumeGomez

The Miri subtree was changed

cc @rust-lang/miri

Some changes occurred in exhaustiveness checking

cc @Nadrieril

Some changes occurred in compiler/rustc_sanitizers

cc @rcvalle

rustc_error_messages was changed

cc @davidtwco, @compiler-errors, @TaKO8Ki

@Diggsey Diggsey force-pushed the db-limit-extern-crate-usage branch from 8e8dd82 to c613bce Compare July 6, 2025 22:54
@rustbot
Copy link
Collaborator

rustbot commented Jul 6, 2025

The Miri subtree was changed

cc @rust-lang/miri

Some changes occurred in src/tools/clippy

cc @rust-lang/clippy

Some changes occurred in compiler/rustc_codegen_cranelift

cc @bjorn3

Some changes occurred in src/tools/rustfmt

cc @rust-lang/rustfmt

Some changes occurred in compiler/rustc_codegen_gcc

cc @antoyo, @GuillaumeGomez

@rust-log-analyzer

This comment has been minimized.

Copy link
Member

@RalfJung RalfJung left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The Miri changes LGTM, except the ones in the vendored file where only the header at the top should be edited.

I'm fine with having these Miri changes here, seems easier to do this centrally than coordinate half a dozen PRs.

@oli-obk
Copy link
Contributor

oli-obk commented Jul 7, 2025

Do you think it is feasible to add an internal lint that rejects extern crate items where the crate name doesn't start with rustc_ or sth like that?

@Diggsey
Copy link
Contributor Author

Diggsey commented Jul 7, 2025

@oli-obk I'll look into this. How does testing work for sub-trees? Would each sub-tree need its own copy of the lint, or do the subtree repos have some way to run rust-wide lints?

@RalfJung
Copy link
Member

RalfJung commented Jul 7, 2025

"internal" lints live in rustc like normal lints, but are gated behind a nightly-only flag. Miri enables them in their CI, I don't know if ./x check miri also enables them.

@oli-obk
Copy link
Contributor

oli-obk commented Jul 7, 2025

We have a list of internal lints that rustc has and enables everywhere. We'd have to limit it to crates with #![allow(internal_features)] or sth like it. Most other lints are obviously limited to that as they look for e.g. TyKind .

@RalfJung
Copy link
Member

RalfJung commented Jul 7, 2025

Not sure what you mean about restricting it, the lints need -Zunstable-options -Wrustc::internal to be enabled, right?

@oli-obk
Copy link
Contributor

oli-obk commented Jul 7, 2025

Ah right, my bad

bors added a commit that referenced this pull request Oct 15, 2025
Restrict sysroot crate imports to those defined in this repo.

It's common to import dependencies from the sysroot via `extern crate` rather than use an explicit cargo dependency, when it's necessary to use the same dependency version as used by rustc itself. However, this is dangerous for crates.io crates, since rustc may not pull in the dependency on some targets, or may pull in multiple versions. In both cases, the `extern crate` fails to resolve.

To address this, re-export all such dependencies from the appropriate `rustc_*` crates, and use this alias from crates which would otherwise need to use `extern crate`.

See #143492 for an example of the kind of issue that can occur.
@bors
Copy link
Collaborator

bors commented Oct 15, 2025

⌛ Testing commit 79d57fa with merge 7585282...

@rust-log-analyzer

This comment has been minimized.

@bors
Copy link
Collaborator

bors commented Oct 15, 2025

💔 Test failed - checks-actions

@bors bors added S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. and removed S-waiting-on-bors Status: Waiting on bors to run and complete tests. Bors will change the label on completion. labels Oct 15, 2025
It's common to import dependencies from the sysroot via `extern crate`
rather than use an explicit cargo dependency, when it's necessary to use
the same dependency version as used by rustc itself. However, this is
dangerous for crates.io crates, since rustc may not pull in the
dependency on some targets, or may pull in multiple versions. In both
cases, the `extern crate` fails to resolve.

To address this, re-export all such dependencies from the appropriate
`rustc_*` crates, and use this alias from crates which would otherwise
need to use `extern crate`.
@Diggsey Diggsey force-pushed the db-limit-extern-crate-usage branch from 79d57fa to c6a9521 Compare October 15, 2025 12:18
@Diggsey
Copy link
Contributor Author

Diggsey commented Oct 15, 2025

Looks like we pull tikv_jemalloc_sys from the sysroot on macos, so I've added that to the whitelist. The way this works seems quite questionable with a bunch of duplicated (yet subtly different...) code between various main.rs files, and no explanation of the differences, so might be worth trying to un-whitelist this in a future PR...

@bors r=@oli-obk

@bors
Copy link
Collaborator

bors commented Oct 15, 2025

📌 Commit c6a9521 has been approved by oli-obk

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 Oct 15, 2025
@bors
Copy link
Collaborator

bors commented Oct 15, 2025

⌛ Testing commit c6a9521 with merge 28d0a4a...

@bors
Copy link
Collaborator

bors commented Oct 15, 2025

☀️ Test successful - checks-actions
Approved by: oli-obk
Pushing 28d0a4a to master...

@bors bors added the merged-by-bors This PR was explicitly merged by bors. label Oct 15, 2025
@bors bors merged commit 28d0a4a into rust-lang:master Oct 15, 2025
12 checks passed
@rustbot rustbot added this to the 1.92.0 milestone Oct 15, 2025
Copy link
Contributor

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 4f08307 (parent) -> 28d0a4a (this PR)

Test differences

Show 244 test diffs

Stage 0

  • lints::verify_lint_ambiguous_glob_reexport_118: pass -> [missing] (J0)
  • lints::verify_lint_associated_const_elided_lifetime_121: pass -> [missing] (J0)
  • lints::verify_lint_atomic_ordering_fence_94: pass -> [missing] (J0)
  • lints::verify_lint_atomic_ordering_store_93: pass -> [missing] (J0)
  • lints::verify_lint_confusable_identifier_pair_77: pass -> [missing] (J0)
  • lints::verify_lint_dangling_pointers_from_locals_73: pass -> [missing] (J0)
  • lints::verify_lint_dangling_pointers_from_temporaries_72: pass -> [missing] (J0)
  • lints::verify_lint_hidden_glob_reexport_119: pass -> [missing] (J0)
  • lints::verify_lint_hidden_glob_reexport_120: [missing] -> pass (J0)
  • lints::verify_lint_identifier_non_ascii_char_75: pass -> [missing] (J0)
  • lints::verify_lint_identifier_uncommon_codepoints_76: pass -> [missing] (J0)
  • lints::verify_lint_ignored_unless_crate_specified_71: pass -> [missing] (J0)
  • lints::verify_lint_ignored_unless_crate_specified_72: [missing] -> pass (J0)
  • lints::verify_lint_ill_formed_attribute_input_113: [missing] -> pass (J0)
  • lints::verify_lint_implicit_sysroot_crate_import_69: [missing] -> pass (J0)
  • lints::verify_lint_invalid_asm_label_named_105: [missing] -> pass (J0)
  • lints::verify_lint_macro_is_private_109: [missing] -> pass (J0)
  • lints::verify_lint_macro_rule_never_used_111: [missing] -> pass (J0)
  • lints::verify_lint_mixed_script_confusables_79: [missing] -> pass (J0)
  • lints::verify_lint_named_argument_used_positionally_116: pass -> [missing] (J0)
  • lints::verify_lint_non_fmt_panic_braces_79: pass -> [missing] (J0)
  • lints::verify_lint_only_cast_u8_to_char_84: pass -> [missing] (J0)
  • lints::verify_lint_only_cast_u8_to_char_85: [missing] -> pass (J0)
  • lints::verify_lint_overflowing_uint_85: pass -> [missing] (J0)
  • lints::verify_lint_pass_by_value_83: pass -> [missing] (J0)
  • lints::verify_lint_path_statement_no_effect_99: pass -> [missing] (J0)
  • lints::verify_lint_private_extern_crate_reexport_107: pass -> [missing] (J0)
  • lints::verify_lint_redundant_import_visibility_122: pass -> [missing] (J0)
  • lints::verify_lint_reserved_multihash_126: pass -> [missing] (J0)
  • lints::verify_lint_reserved_multihash_127: [missing] -> pass (J0)
  • lints::verify_lint_surrogate_char_cast_87: pass -> [missing] (J0)
  • lints::verify_lint_surrogate_char_cast_88: [missing] -> pass (J0)
  • lints::verify_lint_suspicious_double_ref_clone_82: pass -> [missing] (J0)
  • lints::verify_lint_suspicious_double_ref_deref_81: pass -> [missing] (J0)
  • lints::verify_lint_suspicious_double_ref_deref_82: [missing] -> pass (J0)
  • lints::verify_lint_too_large_char_cast_89: [missing] -> pass (J0)
  • lints::verify_lint_unit_bindings_104: [missing] -> pass (J0)
  • lints::verify_lint_unnecessary_qualification_121: [missing] -> pass (J0)
  • lints::verify_lint_unqualified_local_imports_125: [missing] -> pass (J0)
  • lints::verify_lint_unused_allocation_mut_102: pass -> [missing] (J0)
  • lints::verify_lint_unused_closure_98: [missing] -> pass (J0)
  • lints::verify_lint_unused_crate_dependency_111: pass -> [missing] (J0)
  • lints::verify_lint_unused_crate_dependency_112: [missing] -> pass (J0)
  • lints::verify_lint_unused_import_braces_100: pass -> [missing] (J0)
  • lints::verify_lint_unused_macro_definition_109: pass -> [missing] (J0)
  • lints::verify_lint_unused_macro_definition_110: [missing] -> pass (J0)
  • lints::verify_lint_unused_result_97: [missing] -> pass (J0)
  • lints::verify_lint_uses_power_alignment_90: [missing] -> pass (J0)
  • lints::verify_lint_variant_size_differences_92: [missing] -> pass (J0)
  • transmute::verify_lint_undefined_transmute_128: [missing] -> pass (J0)

Stage 1

  • lints::verify_lint_associated_const_elided_lifetime_122: [missing] -> pass (J1)
  • lints::verify_lint_atomic_ordering_invalid_95: pass -> [missing] (J1)
  • lints::verify_lint_atomic_ordering_invalid_96: [missing] -> pass (J1)
  • lints::verify_lint_atomic_ordering_load_92: pass -> [missing] (J1)
  • lints::verify_lint_atomic_ordering_store_93: pass -> [missing] (J1)
  • lints::verify_lint_atomic_ordering_store_94: [missing] -> pass (J1)
  • lints::verify_lint_confusable_identifier_pair_77: pass -> [missing] (J1)
  • lints::verify_lint_dangling_pointers_from_locals_74: [missing] -> pass (J1)
  • lints::verify_lint_deprecated_lint_name_69: pass -> [missing] (J1)
  • lints::verify_lint_deprecated_lint_name_70: [missing] -> pass (J1)
  • lints::verify_lint_extern_crate_not_idiomatic_117: pass -> [missing] (J1)
  • lints::verify_lint_extern_crate_not_idiomatic_118: [missing] -> pass (J1)
  • lints::verify_lint_identifier_non_ascii_char_75: pass -> [missing] (J1)
  • lints::verify_lint_identifier_uncommon_codepoints_76: pass -> [missing] (J1)
  • lints::verify_lint_ignored_unless_crate_specified_71: pass -> [missing] (J1)
  • lints::verify_lint_ill_formed_attribute_input_112: pass -> [missing] (J1)
  • lints::verify_lint_ill_formed_attribute_input_113: [missing] -> pass (J1)
  • lints::verify_lint_invalid_asm_label_binary_106: pass -> [missing] (J1)
  • lints::verify_lint_invalid_asm_label_format_arg_105: pass -> [missing] (J1)
  • lints::verify_lint_mixed_script_confusables_78: pass -> [missing] (J1)
  • lints::verify_lint_mixed_script_confusables_79: [missing] -> pass (J1)
  • lints::verify_lint_multiple_supertrait_upcastable_75: [missing] -> pass (J1)
  • lints::verify_lint_named_argument_used_positionally_116: pass -> [missing] (J1)
  • lints::verify_lint_out_of_scope_macro_calls_124: [missing] -> pass (J1)
  • lints::verify_lint_overflowing_literal_87: [missing] -> pass (J1)
  • lints::verify_lint_pass_by_value_84: [missing] -> pass (J1)
  • lints::verify_lint_private_extern_crate_reexport_107: pass -> [missing] (J1)
  • lints::verify_lint_raw_prefix_115: [missing] -> pass (J1)
  • lints::verify_lint_removed_lint_70: pass -> [missing] (J1)
  • lints::verify_lint_removed_lint_71: [missing] -> pass (J1)
  • lints::verify_lint_reserved_multihash_126: pass -> [missing] (J1)
  • lints::verify_lint_surrogate_char_cast_88: [missing] -> pass (J1)
  • lints::verify_lint_suspicious_double_ref_clone_82: pass -> [missing] (J1)
  • lints::verify_lint_suspicious_double_ref_clone_83: [missing] -> pass (J1)
  • lints::verify_lint_suspicious_double_ref_deref_82: [missing] -> pass (J1)
  • lints::verify_lint_unit_bindings_103: pass -> [missing] (J1)
  • lints::verify_lint_unnecessary_qualification_120: pass -> [missing] (J1)
  • lints::verify_lint_unused_allocation_101: pass -> [missing] (J1)
  • lints::verify_lint_unused_allocation_mut_102: pass -> [missing] (J1)
  • lints::verify_lint_unused_allocation_mut_103: [missing] -> pass (J1)
  • lints::verify_lint_unused_closure_98: [missing] -> pass (J1)
  • lints::verify_lint_unused_coroutine_98: pass -> [missing] (J1)
  • lints::verify_lint_unused_coroutine_99: [missing] -> pass (J1)
  • lints::verify_lint_unused_crate_dependency_111: pass -> [missing] (J1)
  • lints::verify_lint_unused_lifetime_115: pass -> [missing] (J1)
  • lints::verify_lint_unused_macro_definition_109: pass -> [missing] (J1)
  • lints::verify_lint_unused_macro_definition_110: [missing] -> pass (J1)
  • lints::verify_lint_unused_result_97: [missing] -> pass (J1)
  • lints::verify_lint_uses_power_alignment_89: pass -> [missing] (J1)
  • lints::verify_lint_variant_size_differences_92: [missing] -> pass (J1)

(and 138 additional test diffs)

Additionally, 6 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 28d0a4a205f9e511ad2f51ee79a4aa19a704a455 --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-i686-mingw: 10751.7s -> 9108.0s (-15.3%)
  2. dist-x86_64-mingw: 10591.0s -> 9001.8s (-15.0%)
  3. x86_64-gnu-llvm-20: 2435.8s -> 2726.9s (11.9%)
  4. dist-ohos-armv7: 4070.2s -> 4446.3s (9.2%)
  5. x86_64-rust-for-linux: 2809.3s -> 3064.7s (9.1%)
  6. x86_64-gnu-tools: 3650.3s -> 3339.0s (-8.5%)
  7. dist-riscv64-linux: 4584.3s -> 4967.8s (8.4%)
  8. dist-ohos-aarch64: 4664.4s -> 4275.5s (-8.3%)
  9. x86_64-gnu-llvm-20-3: 6650.9s -> 6145.3s (-7.6%)
  10. aarch64-msvc-2: 5138.6s -> 4749.8s (-7.6%)
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.

@Diggsey Diggsey deleted the db-limit-extern-crate-usage branch October 15, 2025 17:40
@rust-timer
Copy link
Collaborator

Finished benchmarking commit (28d0a4a): comparison URL.

Overall result: ✅ improvements - no action needed

@rustbot label: -perf-regression

Instruction count

Our most reliable metric. Used to determine the overall result above. However, even this metric can be noisy.

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

Max RSS (memory usage)

Results (primary 4.1%, secondary 2.3%)

A less reliable metric. May be of interest, but not used to determine the overall result above.

mean range count
Regressions ❌
(primary)
4.1% [1.0%, 7.2%] 2
Regressions ❌
(secondary)
2.3% [2.3%, 2.3%] 1
Improvements ✅
(primary)
- - 0
Improvements ✅
(secondary)
- - 0
All ❌✅ (primary) 4.1% [1.0%, 7.2%] 2

Cycles

Results (primary -3.1%)

A less reliable metric. May be of interest, but not used to determine the overall result above.

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

Binary size

Results (primary -1.1%)

A less reliable metric. May be of interest, but not used to determine the overall result above.

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

Bootstrap: 476.148s -> 474.854s (-0.27%)
Artifact size: 388.04 MiB -> 388.09 MiB (0.01%)

@bors bors mentioned this pull request Oct 15, 2025
.unwrap_or(span)
.id()
.into_u64()
span.scope()
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Uh, what is happening here?

This PR has introduced a bunch of nonsensical whitespace changes across various Miri files -- none of which rustfmt is able to fix, apparently.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can you please submit a follow-up PR to fix these? Preferably in the Miri repo.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ugh, I'm not sure what happened here? All the affected files are excluded from rustfmt, so presumably a rebase caused these issues and then they didn't get caught in CI, but I have no idea why rebasing would break the whitespace like this.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

(None of these files had conflicts during rebase...)

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@RalfJung looks like the changes haven't synced to Miri yet, so I opened a PR here for now - #147742

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yeah rust-lang/miri#4635 is still in the queue. I guess we can also land it via rust-lang.

matthiaskrgr added a commit to matthiaskrgr/rust that referenced this pull request Oct 15, 2025
…RalfJung

Revert unintentional whitespace changes to rustfmt-excluded file

Accidentally introduced in rust-lang#143548
rust-timer added a commit that referenced this pull request Oct 16, 2025
Rollup merge of #147742 - Diggsey:db-fix-miri-whitespace, r=RalfJung

Revert unintentional whitespace changes to rustfmt-excluded file

Accidentally introduced in #143548
github-actions bot pushed a commit to rust-lang/miri that referenced this pull request Oct 16, 2025
Revert unintentional whitespace changes to rustfmt-excluded file

Accidentally introduced in rust-lang/rust#143548
matthiaskrgr added a commit to matthiaskrgr/rust that referenced this pull request Oct 16, 2025
…r=samueltardieu

Fix whitespace in rustfmt-excluded clippy file

Accidentally introduced in rust-lang#143548
matthiaskrgr added a commit to matthiaskrgr/rust that referenced this pull request Oct 16, 2025
…r=samueltardieu

Fix whitespace in rustfmt-excluded clippy file

Accidentally introduced in rust-lang#143548
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

A-attributes Area: Attributes (`#[…]`, `#![…]`) A-compiletest Area: The compiletest test runner A-LLVM Area: Code generation parts specific to LLVM. Both correctness bugs and optimization-related issues. A-query-system Area: The rustc query system (https://rustc-dev-guide.rust-lang.org/query.html) A-rustdoc-json Area: Rustdoc JSON backend A-testsuite Area: The testsuite used to check the correctness of rustc A-translation Area: Translation infrastructure, and migrating existing diagnostics to SessionDiagnostic merged-by-bors This PR was explicitly merged by bors. PG-exploit-mitigations Project group: Exploit mitigations 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-clippy Relevant to the Clippy team. T-compiler Relevant to the compiler team, which will review and decide on the PR/issue. T-rustdoc Relevant to the rustdoc team, which will review and decide on the PR/issue. T-rustdoc-frontend Relevant to the rustdoc-frontend team, which will review and decide on the web UI/UX output. 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.