Skip to content

Rollup of 15 pull requests #142997

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 37 commits into from
Jun 25, 2025
Merged

Rollup of 15 pull requests #142997

merged 37 commits into from
Jun 25, 2025

Conversation

workingjubilee
Copy link
Member

@workingjubilee workingjubilee commented Jun 25, 2025

Successful merges:

r? @ghost
@rustbot modify labels: rollup

Create a similar rollup

ChrisDenton and others added 30 commits June 13, 2025 09:49
For things that only change the valid ranges, we can just skip the `LLVMBuildBitCast` call.

I tried to tweak this a bit more and broke stuff, so I also added some extra tests for that as we apparently didn't have coverage.
It currently reports net size, i.e. size(output) - size(input). After
some use I think this is sub-optimal, and it's better to just report
size(output). Because for derive macros the input size is always 1, and
for attribute macros it's almost always 1.
Ensure rustc_codegen_cranelift doesn't get normalized to rustc. And
handle -Cpanic=abort.
While cg_llvm is very lax about mismatched function signatures, cg_clif
will crash when there is any mismatch. It could be turned into an error,
but without Cranelift changes can't just be ignored.
cg_llvm likely just optimizes out their references for these tests, but
cg_clif doesn't and would thus give a linker error.
`cargo fix` does not have a way of distinguishing a suggestion with
multiple spans which should all be applied from multiple suggestions
where only one should be applied (see issue 53934). `cargo fix` only
works with `MachineApplicable` suggestions, so downgrading the
applicability will stop `cargo` from suggesting the user run `cargo
fix`. rust-analyzer does work with `MaybeIncorrect`, so interactive
fixes are still available.
Changed "you're" to "your" on line 470.
This brings in a few updates to the bundled `wasm-component-ld`
dependency used by the `wasm32-wasip2` target. This primarily includes
support for upcoming component model async/WASIp3 support which will be
convenient to have native support for a few months from now.
…holk,traviscross

Implement parsing of pinned borrows

This PR implements part of rust-lang#130494.

EDIT: It introduces `&pin mut $place` and `&pin const $place` as sugars for `std::pin::pin!($place)` and its shared reference equivalent, except that `$place` will not be moved when borrowing. The borrow check will be in charge of enforcing places cannot be moved or mutably borrowed since being pinned till dropped.

### Implementation steps:
- [x] parse the `&pin mut $place` and `&pin const $place` syntaxes
- [ ] borrowck of `&pin mut|const`
- [ ] support autoref of `&pin mut|const` when needed
…attr, r=oli-obk,traviscross

Add `#[loop_match]` for improved DFA codegen

tracking issue: rust-lang#132306
project goal: rust-lang/rust-project-goals#258

This PR adds the `#[loop_match]` attribute, which aims to improve code generation for state machines. For some (very exciting) benchmarks, see rust-lang/rust-project-goals#258 (comment)

Currently, a very restricted syntax pattern is accepted. We'd like to get feedback and merge this now before we go too far in a direction that others have concerns with.

## current state

We accept code that looks like this

```rust
#[loop_match]
loop {
    state = 'blk: {
        match state {
            State::A => {
                #[const_continue]
                break 'blk State::B
            }
            State::B => { /* ... */ }
            /* ... */
        }
    }
}
```

- a loop should have the same semantics with and without `#[loop_match]`: normal `continue` and `break` continue to work
- `#[const_continue]` is only allowed in loops annotated with `#[loop_match]`
- the loop body needs to have this particular shape (a single assignment to the match scrutinee, with the body a labelled block containing just a match)

## future work

- perform const evaluation on the `break` value
- support more state/scrutinee types

## maybe future work

- allow `continue 'label value` syntax, which `#[const_continue]` could then use.
- allow the match to be on an arbitrary expression (e.g. `State::Initial`)
- attempt to also optimize `break`/`continue` expressions that are not marked with `#[const_continue]`

r? ``@traviscross``
Windows: make `read_dir` stop iterating after the first error is encountered

This also essentially makes the `ReadDir` iterator fused. Which I think is pretty much what people expect anyway.

[`FindNextFileW`](https://learn.microsoft.com/en-us/windows/win32/api/fileapi/nf-fileapi-findnextfilew) doesn't document what happens if you call it after iteration ends or after an error so we're probably in implementation defined territory at that point.
…signature, r=workingjubilee

Error on invalid signatures for interrupt ABIs

We recently added `extern "custom"`, which must have type `fn()`. The various `extern "interrupt"` ABIs impose similar constraints on the signature of functions with that ABI: `x86-interrupt` should not have a return type (linting on the exact argument types is left as future work), and the other interrupt ABIs cannot have any parameters or a return type.

r? ```@workingjubilee```
…=WaffleLapkin

Avoid a bitcast FFI call in transmuting

For things that only change the valid ranges, we can just return the input, rather than making the `LLVMBuildBitCast` call and having *it* then do nothing.

I tried to tweak this a bit more and broke stuff, so I also added some extra tests for that as we apparently didn't have coverage.
Port `#[track_caller]` to the new attribute system

r? ``@oli-obk``

depends on rust-lang#142493

Closes rust-lang#142783

(didn't add a test for this, this situation should simply never come up again, the code was simply wrong. lmk if I should add it, but it won't test something very useful)
Enable short-ice for Windows

Works fine for x64 without modifications.

x86 MSVC is still failing.

Addresses item in rust-lang#128602

---

try-job: x86_64-mingw-*
try-job: x86_64-msvc-*
try-job: i686-msvc-*
…etrochenkov

Tweak `-Zmacro-stats` measurement.

It currently reports net size, i.e. size(output) - size(input). After some use I think this is sub-optimal, and it's better to just report size(output). Because for derive macros the input size is always 1, and for attribute macros it's almost always 1.

r? ```@petrochenkov```
@rustbot rustbot added A-tidy Area: The tidy tool 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. 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. rollup A PR which is a rollup labels Jun 25, 2025
@workingjubilee
Copy link
Member Author

@bors r+ rollup=never p=5

@bors
Copy link
Collaborator

bors commented Jun 25, 2025

📌 Commit 2d73e6c has been approved by workingjubilee

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 Jun 25, 2025
@bors
Copy link
Collaborator

bors commented Jun 25, 2025

⌛ Testing commit 2d73e6c with merge a17780d...

@bors
Copy link
Collaborator

bors commented Jun 25, 2025

☀️ Test successful - checks-actions
Approved by: workingjubilee
Pushing a17780d to master...

@bors bors added the merged-by-bors This PR was explicitly merged by bors. label Jun 25, 2025
@bors bors merged commit a17780d into rust-lang:master Jun 25, 2025
11 checks passed
@rustbot rustbot added this to the 1.90.0 milestone Jun 25, 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 2c2bb99 (parent) -> a17780d (this PR)

Test differences

Show 520 test diffs

Stage 1

  • errors::verify_ast_passes_abi_custom_invalid_signature_65: pass -> [missing] (J0)
  • errors::verify_ast_passes_abi_must_not_have_parameters_or_return_type_65: [missing] -> pass (J0)
  • errors::verify_mir_build_const_continue_bad_const_32: [missing] -> pass (J0)
  • errors::verify_passes_abi_invalid_attribute_125: [missing] -> pass (J0)
  • errors::verify_passes_allow_internal_unstable_78: pass -> [missing] (J0)
  • errors::verify_passes_attr_application_struct_137: pass -> [missing] (J0)
  • errors::verify_passes_attr_application_struct_enum_union_141: [missing] -> pass (J0)
  • errors::verify_passes_collapse_debuginfo_106: [missing] -> pass (J0)
  • errors::verify_passes_confusables_88: pass -> [missing] (J0)
  • errors::verify_passes_coroutine_on_non_closure_91: [missing] -> pass (J0)
  • errors::verify_passes_debug_visualizer_placement_79: pass -> [missing] (J0)
  • errors::verify_passes_debug_visualizer_placement_81: [missing] -> pass (J0)
  • errors::verify_passes_deprecated_92: pass -> [missing] (J0)
  • errors::verify_passes_doc_alias_duplicated_26: pass -> [missing] (J0)
  • errors::verify_passes_doc_alias_duplicated_28: [missing] -> pass (J0)
  • errors::verify_passes_doc_cfg_hide_takes_list_45: [missing] -> pass (J0)
  • errors::verify_passes_doc_fake_variadic_not_valid_32: pass -> [missing] (J0)
  • errors::verify_passes_doc_inline_conflict_37: [missing] -> pass (J0)
  • errors::verify_passes_doc_invalid_51: [missing] -> pass (J0)
  • errors::verify_passes_doc_masked_not_extern_crate_self_40: [missing] -> pass (J0)
  • errors::verify_passes_doc_masked_only_extern_crate_37: pass -> [missing] (J0)
  • errors::verify_passes_doc_masked_only_extern_crate_39: [missing] -> pass (J0)
  • errors::verify_passes_doc_test_literal_41: pass -> [missing] (J0)
  • errors::verify_passes_doc_test_unknown_40: pass -> [missing] (J0)
  • errors::verify_passes_doc_test_unknown_any_44: pass -> [missing] (J0)
  • errors::verify_passes_doc_test_unknown_any_46: [missing] -> pass (J0)
  • errors::verify_passes_doc_test_unknown_plugins_49: [missing] -> pass (J0)
  • errors::verify_passes_duplicate_diagnostic_item_in_crate_114: pass -> [missing] (J0)
  • errors::verify_passes_duplicate_feature_err_151: pass -> [missing] (J0)
  • errors::verify_passes_feature_previously_declared_128: [missing] -> pass (J0)
  • errors::verify_passes_ffi_const_invalid_target_55: pass -> [missing] (J0)
  • errors::verify_passes_ffi_pure_invalid_target_56: [missing] -> pass (J0)
  • errors::verify_passes_ignored_attr_7: pass -> [missing] (J0)
  • errors::verify_passes_ignored_attr_9: [missing] -> pass (J0)
  • errors::verify_passes_implied_feature_not_exist_152: [missing] -> pass (J0)
  • errors::verify_passes_incorrect_crate_type_131: pass -> [missing] (J0)
  • errors::verify_passes_incorrect_target_132: [missing] -> pass (J0)
  • errors::verify_passes_ineffective_unstable_impl_163: [missing] -> pass (J0)
  • errors::verify_passes_inline_ignored_for_exported_134: pass -> [missing] (J0)
  • errors::verify_passes_inline_not_fn_or_closure_10: pass -> [missing] (J0)
  • errors::verify_passes_invalid_macro_export_arguments_too_many_items_97: pass -> [missing] (J0)
  • errors::verify_passes_lang_item_fn_with_track_caller_110: pass -> [missing] (J0)
  • errors::verify_passes_lang_item_on_incorrect_target_112: pass -> [missing] (J0)
  • errors::verify_passes_layout_align_116: pass -> [missing] (J0)
  • errors::verify_passes_layout_align_118: [missing] -> pass (J0)
  • errors::verify_passes_link_61: [missing] -> pass (J0)
  • errors::verify_passes_macro_export_96: [missing] -> pass (J0)
  • errors::verify_passes_may_dangle_101: [missing] -> pass (J0)
  • errors::verify_passes_may_dangle_99: pass -> [missing] (J0)
  • errors::verify_passes_missing_const_err_152: pass -> [missing] (J0)
  • errors::verify_passes_missing_lang_item_109: pass -> [missing] (J0)
  • errors::verify_passes_missing_panic_handler_109: [missing] -> pass (J0)
  • errors::verify_passes_must_use_no_effect_56: pass -> [missing] (J0)
  • errors::verify_passes_no_mangle_foreign_71: pass -> [missing] (J0)
  • errors::verify_passes_no_sanitize_163: pass -> [missing] (J0)
  • errors::verify_passes_optimize_invalid_target_12: pass -> [missing] (J0)
  • errors::verify_passes_optimize_invalid_target_14: [missing] -> pass (J0)
  • errors::verify_passes_outer_crate_level_attr_6: [missing] -> pass (J0)
  • errors::verify_passes_pass_by_value_50: pass -> [missing] (J0)
  • errors::verify_passes_proc_macro_bad_sig_156: [missing] -> pass (J0)
  • errors::verify_passes_repr_align_greater_than_target_max_76: [missing] -> pass (J0)
  • errors::verify_passes_rustc_dirty_clean_71: [missing] -> pass (J0)
  • errors::verify_passes_rustc_force_inline_87: [missing] -> pass (J0)
  • errors::verify_passes_rustc_layout_scalar_valid_range_arg_64: pass -> [missing] (J0)
  • errors::verify_passes_rustc_layout_scalar_valid_range_not_struct_65: [missing] -> pass (J0)
  • errors::verify_passes_rustc_legacy_const_generics_index_negative_70: [missing] -> pass (J0)
  • errors::verify_passes_rustc_lint_opt_deny_field_access_103: pass -> [missing] (J0)
  • errors::verify_passes_should_be_applied_to_fn_16: [missing] -> pass (J0)
  • errors::verify_passes_target_feature_on_statement_18: pass -> [missing] (J0)
  • errors::verify_passes_unexportable_fn_abi_168: pass -> [missing] (J0)
  • errors::verify_passes_unexportable_generic_fn_167: pass -> [missing] (J0)
  • errors::verify_passes_unexportable_item_168: [missing] -> pass (J0)
  • errors::verify_passes_unexportable_type_repr_171: [missing] -> pass (J0)
  • errors::verify_passes_unreachable_due_to_uninhabited_155: pass -> [missing] (J0)
  • errors::verify_passes_unused_multiple_103: [missing] -> pass (J0)
  • errors::verify_passes_useless_assignment_134: [missing] -> pass (J0)
  • errors::verify_passes_useless_stability_144: [missing] -> pass (J0)
  • [pretty] tests/pretty/pin-ergonomics-hir.rs: [missing] -> pass (J1)
  • [rustdoc] tests/rustdoc/target-feature.rs: [missing] -> pass (J1)
  • [ui] tests/ui/abi/cannot-be-coroutine.rs#i686: [missing] -> pass (J1)
  • [ui] tests/ui/abi/cannot-be-coroutine.rs#x64: [missing] -> pass (J1)
  • [ui] tests/ui/async-await/pin-ergonomics/coerce-non-pointer-pin.rs: pass -> [missing] (J1)
  • [ui] tests/ui/async-await/pin-ergonomics/sugar-ambiguity.rs: pass -> [missing] (J1)
  • [ui] tests/ui/async-await/pin-ergonomics/sugar-no-const.rs: pass -> [missing] (J1)
  • [ui] tests/ui/loop-match/macro.rs: [missing] -> pass (J1)
  • [ui] tests/ui/loop-match/or-patterns.rs: [missing] -> pass (J1)
  • [ui] tests/ui/loop-match/unwind.rs: [missing] -> pass (J1)
  • [ui] tests/ui/pin-ergonomics/reborrow-shorter.rs: [missing] -> pass (J1)
  • [ui] tests/ui/pin-ergonomics/sugar-no-const.rs: [missing] -> pass (J1)
  • [ui] tests/ui/pin-ergonomics/sugar.rs: [missing] -> pass (J1)
  • [ui] tests/ui/thir-print/thir-tree-loop-match.rs: [missing] -> pass (J1)

Stage 2

  • build_scripts_multiple::rerun_untracks_other_files: [missing] -> pass (J2)
  • [ui] tests/ui/abi/cannot-be-coroutine.rs#msp430: [missing] -> pass (J3)
  • [ui] tests/ui/async-await/pin-ergonomics/reborrow-self.rs: pass -> [missing] (J3)
  • [ui] tests/ui/feature-gates/feature-gate-loop-match.rs: [missing] -> pass (J3)
  • [ui] tests/ui/loop-match/invalid-attribute.rs: [missing] -> pass (J3)
  • [ui] tests/ui/loop-match/or-patterns.rs: [missing] -> pass (J3)
  • [ui] tests/ui/loop-match/valid-patterns.rs: [missing] -> pass (J3)
  • [ui] tests/ui/pin-ergonomics/borrow.rs: [missing] -> pass (J3)
  • [ui] tests/ui/pin-ergonomics/sugar-ambiguity.rs: [missing] -> pass (J3)

(and 366 additional test diffs)

Additionally, 54 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 a17780db7b8eebbf42a1cbe6bc9cc83013820ba5 --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: 8074.8s -> 5969.0s (-26.1%)
  2. x86_64-apple-1: 8561.7s -> 6637.4s (-22.5%)
  3. dist-android: 2130.5s -> 2468.6s (15.9%)
  4. x86_64-apple-2: 5186.3s -> 4715.3s (-9.1%)
  5. dist-x86_64-netbsd: 4621.2s -> 4967.1s (7.5%)
  6. dist-powerpc64le-linux-musl: 5018.8s -> 5373.6s (7.1%)
  7. x86_64-msvc-2: 7123.9s -> 6645.4s (-6.7%)
  8. dist-powerpc64le-linux-gnu: 5060.1s -> 5396.8s (6.7%)
  9. dist-ohos-aarch64: 4253.7s -> 4529.4s (6.5%)
  10. dist-armhf-linux: 4715.7s -> 5014.9s (6.3%)
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
#135731 Implement parsing of pinned borrows b94ce9f0f9290a54ec78b9a2e79ad4b83fc35a4a (link)
#138780 Add #[loop_match] for improved DFA codegen 0b43dab96f56d3f2d33459ec5130de8d2be087e5 (link)
#142453 Windows: make read_dir stop iterating after the first err… 183958c7375eb3740bac807877f9f8329809b972 (link)
#142633 Error on invalid signatures for interrupt ABIs e4465fe5fdb910281ec144f636aebb79e7589c19 (link)
#142768 Avoid a bitcast FFI call in transmuting 4e95f4a485c01a0579a595b1737d9ba571ee93f3 (link)
#142825 Port #[track_caller] to the new attribute system 6417f50dae878fdf3762c345136d2a3d805149af (link)
#142844 Enable short-ice for Windows fc0aa74fd2ab169e813aab0bd2d4d4a10d11dfb3 (link)
#142934 Tweak -Zmacro-stats measurement. ab63b80b2bb809adf52e3d9a968ce532a2f31e5b (link)
#142955 Couple of test suite fixes for cg_clif 9c853149d0a1071a58d776c813b302adf25e4783 (link)
#142977 rustdoc: Don't mark #[target_feature] functions as ⚠ ebefee0813c2d83491ed1299bd1bbab6baa329ca (link)
#142980 Reduce mismatched-lifetime-syntaxes suggestions to MaybeInc… ea271f60d54f3261d88994db4737dfd0ac90bd79 (link)
#142982 Corrected spelling mistake in c_str.rs 9a7544a256df86ba74d5851592085220381c4152 (link)
#142983 Taint body on invalid call ABI b33ae3312cd533d43502c107764c9cf95e77859c (link)
#142988 Update wasm-component-ld to 0.5.14 8ef39c017aa01d1a7184793042ec34836f4e48a5 (link)
#142993 Update cargo 1ecffd5d3f0d379fac660919ca2a877f199a7b1b (link)

previous master: 2c2bb995af

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 (a17780d): comparison URL.

Overall result: ❌✅ regressions and improvements - please read the text below

Our benchmarks found a performance regression caused by this PR.
This might be an actual regression, but it can also be just noise.

Next Steps:

  • If the regression was expected or you think it can be justified,
    please write a comment with sufficient written justification, and add
    @rustbot label: +perf-regression-triaged to it, to mark the regression as triaged.
  • If you think that you know of a way to resolve the regression, try to create
    a new PR with a fix for the regression.
  • If you do not understand the regression or you think that it is just noise,
    you can ask the @rust-lang/wg-compiler-performance working group for help (members of this group
    were already notified of this PR).

@rustbot label: +perf-regression
cc @rust-lang/wg-compiler-performance

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.3% [0.3%, 0.3%] 2
Improvements ✅
(primary)
-0.3% [-0.4%, -0.2%] 4
Improvements ✅
(secondary)
-0.4% [-0.5%, -0.2%] 15
All ❌✅ (primary) -0.3% [-0.4%, -0.2%] 4

Max RSS (memory usage)

Results (primary -1.0%, secondary 0.6%)

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)
6.4% [4.9%, 8.0%] 2
Improvements ✅
(primary)
-1.0% [-1.3%, -0.7%] 2
Improvements ✅
(secondary)
-5.3% [-6.3%, -4.2%] 2
All ❌✅ (primary) -1.0% [-1.3%, -0.7%] 2

Cycles

Results (secondary -3.7%)

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)
- - 0
Improvements ✅
(secondary)
-3.7% [-4.0%, -3.5%] 2
All ❌✅ (primary) - - 0

Binary size

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

Bootstrap: 689.044s -> 691.011s (0.29%)
Artifact size: 372.03 MiB -> 372.15 MiB (0.03%)

@rustbot rustbot added the perf-regression Performance regression. label Jun 25, 2025
flip1995 pushed a commit to flip1995/rust that referenced this pull request Jun 26, 2025
…kingjubilee

Rollup of 15 pull requests

Successful merges:

 - rust-lang#135731 (Implement parsing of pinned borrows)
 - rust-lang#138780 (Add `#[loop_match]` for improved DFA codegen)
 - rust-lang#142453 (Windows: make `read_dir` stop iterating after the first error is encountered)
 - rust-lang#142633 (Error on invalid signatures for interrupt ABIs)
 - rust-lang#142768 (Avoid a bitcast FFI call in transmuting)
 - rust-lang#142825 (Port `#[track_caller]` to the new attribute system)
 - rust-lang#142844 (Enable short-ice for Windows)
 - rust-lang#142934 (Tweak `-Zmacro-stats` measurement.)
 - rust-lang#142955 (Couple of test suite fixes for cg_clif)
 - rust-lang#142977 (rustdoc: Don't mark `#[target_feature]` functions as ⚠)
 - rust-lang#142980 (Reduce mismatched-lifetime-syntaxes suggestions to MaybeIncorrect)
 - rust-lang#142982 (Corrected spelling mistake in c_str.rs)
 - rust-lang#142983 (Taint body on invalid call ABI)
 - rust-lang#142988 (Update wasm-component-ld to 0.5.14)
 - rust-lang#142993 (Update cargo)

r? `@ghost`
`@rustbot` modify labels: rollup
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
A-attributes Area: Attributes (`#[…]`, `#![…]`) A-run-make Area: port run-make Makefiles to rmake.rs A-tidy Area: The tidy tool merged-by-bors This PR was explicitly merged by bors. perf-regression Performance regression. 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. 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.
Projects
None yet
Development

Successfully merging this pull request may close these issues.