Skip to content

Rollup of 13 pull requests#156441

Merged
rust-bors[bot] merged 451 commits into
rust-lang:mainfrom
JonathanBrouwer:rollup-7K8EuPO
May 11, 2026
Merged

Rollup of 13 pull requests#156441
rust-bors[bot] merged 451 commits into
rust-lang:mainfrom
JonathanBrouwer:rollup-7K8EuPO

Conversation

@JonathanBrouwer
Copy link
Copy Markdown
Contributor

Successful merges:

r? @ghost

Create a similar rollup

A4-Tacks and others added 30 commits May 1, 2026 01:30
internal: fix incorrect offset on multiple indel
Clarify that `SmolStr` doesn't allocate when cloning
I really hate the way it was done, we should improve the editor.
Store the chain of parents in an `ArrayVec` and not as `Option<Box>`. This should help perf and it simplifies the code.
Unfortunately, this causes `Semantics` to become invariant over its lifetime, which necessitates large changes, but the changes from `hir` downwards are mechanical and could use a skim review.
…ons-const-block

fix: Add missing exprs to visiting
…ization

minor: Remove impl of `Predicate::allow_normalization`
…rics

perf/internal: Refactor the hir-ty generics data structures
Example
---
```rust
trait SomeTrait<T> {}

trait Foo<T> {
    fn function()
    where Self: SomeTrait<T>;
}
impl Foo<u32> for Bar {
    fn f$0
}
```

**Before this PR**

```rust
impl Foo<u32> for Bar {
    fn function()
        where Self: SomeTrait<u32> {
        $0
    }
}
```

**After this PR**

```rust
impl Foo<u32> for Bar {
    fn function()
    where Self: SomeTrait<u32>
    {
        $0
    }
}
```
  Resolves two FIXMEs in hir-ty/src/infer/pat.rs's check_array_pat_len.
  Adds an InferenceDiagnostic::MismatchedArrayPatLen variant that
  distinguishes exact-length mismatches (rustc E0527) from rest-pat
  under-length cases (E0528). Renders to "pattern requires N elements
  but array has M" or "pattern requires at least N elements but array
  has M" respectively.

  Tests cover too-few, too-many, rest-too-short, rest-ok, exact-ok,
  and singular-element pluralization.

  Part of rust-lang/rust-analyzer#22140.
prepare fs tests for miri

- reduce iteration counts to get rid of timeouts
- disable one test that relies on spawning processes
…crum

Update ICU4X to 2.2

Needs a data regen.
…reads, r=Mark-Simulacrum

kernel_copy tests: properly join background threads

This helps Miri because when there are threads just hanging in the background, we cannot check for memory leaks.

I think even without Miri this currently leads to 100% CPU load on one core for each of these threads: once the test function returns and `sink` gets dropped, the `read` in the thread will always immediately return `0`, and then we just loop with that forever until the process exits.
resolve: Module-related refactorings

Extracted parts of rust-lang#156362 that don't require splitting `(Local,Extern)ModuleData` into separate data structures.

- Some `expect_local` assertions are added
- Methods that need to exist on all of `Module` and `(Local,Extern)Module` are implemented for `ModuleData`
- Methods that need to exist on `ModuleKind` are moved to `ModuleKind`
- Some unnecessary complicated logic using `graph_root` is simplified
-  `glob_importers` are filled and used only for local modules.
- Some unnecessary logic is skipped for extern modules in `resolve_ident_in_module_non_globs_unadjusted`
- Module construction functions are cleaned up
- `module_to_string` is simplified

r? @nnethercote
…y, r=clubby789

Refuse to push changes with a dirty git client

I've run into the issue more than once where I've fixed an issue in my client but forgotten to commit it one way or another. The verification succeeds because the files on disk are correct even though the files in the commit being pushed are incorrect.

This change checks to see if there are any uncommitted changes in tracked files in the client before running the tidy checks.
…ark-Simulacrum

Update `sysinfo` version to `0.39.0`

Bugfixes, new API and performance improvement. Full changelog is [here](https://github.com/GuillaumeGomez/sysinfo/blob/main/CHANGELOG.md).
…i-obk

remove allows_weak_linkage target spec flag

The flag doesn't actually do anything. I have no idea what it's original purpose was.

It got introduced in rust-lang@59cfe90, but already a few months later in rust-lang@5795098 both of its uses were removed when the entire file `src/librustc_trans/closure.rs` got deleted.

It seems like back in the day we used weak linkage for closures by default and MinGW wasn't happy about that? But not much later the way we compile closures got changed, making the work-around unnecessary. The flag has then persisted unused for 10 years. A couple of Windows/UEFI targets are setting `allows_weak_linkage: false` but I assume that was just cargo-culted.

But to be sure, let's ping the folks listed for the affected targets and other Windows folks:
@dvdhrm @nicholasbishop @Berrysoft @mati865 @thomcc  @tbu- @ChrisDenton
Remove some dead code for dumping MIR for a single DefId

The functions that call `dump_mir_def_ids` are themselves never called with a specific DefId; they always dump MIR for the entire crate.
…mulacrum

Improve doc comments for f32::ceil() and f32::floor()

Previously ::floor() included an example showing behaviour for negative values, but ::ceil() did not. Ensure both have examples of the negative case, for both f32 and f64.

Whilst we're here, tweak the wording slightly so it reads better.
bootstrap: Don't panic on `x install --set build.extended=true`

This was a regression from rust-lang#155732.
The Cargo submodule wasn't checked out, so reading from Cargo.toml didn't work. Return a fake version during dry-runs to avoid unnecessarily checking out submodules.

Fixes rust-lang#156408.
…egers, r=Urgau

Fix unwanted "Available on XX-bit only" in libcore integers

Fixes rust-lang#149786.

The problem came from:

<img width="754" height="734" alt="image" src="https://github.com/user-attachments/assets/c251326f-8640-420d-bc4c-a3246390ea67" />

The `doc_cfg` feature picks the `cfg` as it should. If we don't want it, we simply need to disable the feature on it. With this fix, no more `cfg` annotations:

<img width="860" height="590" alt="image" src="https://github.com/user-attachments/assets/da793590-bf43-4874-94e1-a56809938420" />

r? @Urgau
@rust-bors rust-bors Bot added the rollup A PR which is a rollup label May 11, 2026
@rustbot rustbot added the S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. label May 11, 2026
@JonathanBrouwer
Copy link
Copy Markdown
Contributor Author

@bors r+ rollup=never p=5

@rust-bors
Copy link
Copy Markdown
Contributor

rust-bors Bot commented May 11, 2026

📌 Commit 33670e2 has been approved by JonathanBrouwer

It is now in the queue for this repository.

@rust-bors rust-bors Bot 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 May 11, 2026
@rust-bors

This comment has been minimized.

@rust-bors rust-bors Bot added merged-by-bors This PR was explicitly merged by bors. and removed S-waiting-on-bors Status: Waiting on bors to run and complete tests. Bors will change the label on completion. labels May 11, 2026
@rust-bors
Copy link
Copy Markdown
Contributor

rust-bors Bot commented May 11, 2026

☀️ Test successful - CI
Approved by: JonathanBrouwer
Duration: 3h 45m 27s
Pushing 64a965e to main...

@rust-bors rust-bors Bot merged commit 64a965e into rust-lang:main May 11, 2026
12 checks passed
@github-actions
Copy link
Copy Markdown
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 8afb6a8 (parent) -> 64a965e (this PR)

Test differences

Show 1054 test diffs

Stage 0

  • handlers::add_missing_impl_members::tests::does_not_include_defaulted_assoc_types: [missing] -> pass (J1)
  • handlers::convert_to_guarded_return::tests::convert_let_inside_for_with_else_if: [missing] -> pass (J1)
  • handlers::convert_to_guarded_return::tests::ignore_else_if: pass -> [missing] (J1)
  • handlers::convert_to_guarded_return::tests::ignore_on_else_if: [missing] -> pass (J1)
  • handlers::duplicate_field::tests::duplicate_field_in_enum_variant_pattern: [missing] -> pass (J1)
  • handlers::duplicate_field::tests::no_duplicate_for_unknown_field_falls_through_to_no_such_field: [missing] -> pass (J1)
  • handlers::duplicate_field::tests::no_duplicate_when_each_field_specified_once: [missing] -> pass (J1)
  • handlers::expand_glob_import::tests::expanding_glob_import_on_cycle_import: [missing] -> pass (J1)
  • handlers::expected_array_or_slice_pat::tests::expected_array_or_slice: [missing] -> pass (J1)
  • handlers::generic_default_refers_to_self::tests::plain_self: [missing] -> pass (J1)
  • handlers::introduce_named_type_parameter::tests::replace_impl_default_bounds: [missing] -> pass (J1)
  • handlers::introduce_named_type_parameter::tests::replace_impl_question_bounds: [missing] -> pass (J1)
  • handlers::invalid_lhs_of_assignment::tests::unit_struct_literal: [missing] -> pass (J1)
  • handlers::mismatched_array_pat_len::tests::array_pattern_exact_length_ok: [missing] -> pass (J1)
  • handlers::mismatched_array_pat_len::tests::array_pattern_too_few_elements: [missing] -> pass (J1)
  • handlers::missing_match_arms::tests::no_overloaded_deref_is_not_projection: [missing] -> pass (J1)
  • handlers::missing_unsafe::tests::add_unsafe_block_when_calling_unsafe_intrinsic: pass -> [missing] (J1)
  • handlers::non_exhaustive_record_expr::tests::reports_external_non_exhaustive_struct_literal: [missing] -> pass (J1)
  • handlers::pattern_arg_in_extern_fn::tests::pattern_is_second_arg: [missing] -> pass (J1)
  • handlers::replace_if_let_with_match::tests::test_if_matches_with_match: [missing] -> pass (J1)
  • handlers::type_must_be_known::tests::async_closure_does_not_trigger: [missing] -> pass (J1)
  • handlers::unimplemented_trait::tests::async_closure_does_not_trigger: [missing] -> pass (J1)
  • handlers::union_expr_must_have_exactly_one_field::tests::union_expr_must_have_exactly_one_field: [missing] -> pass (J1)
  • handlers::unused_must_use::tests::no_warning_when_value_used: [missing] -> pass (J1)
  • handlers::unused_must_use::tests::unused_must_use_function_call: [missing] -> pass (J1)
  • handlers::unwrap_block::tests::simple_if_else: pass -> [missing] (J1)
  • handlers::unwrap_block::tests::simple_if_in_for: pass -> [missing] (J1)
  • handlers::unwrap_block::tests::simple_if_single_line: pass -> [missing] (J1)
  • handlers::unwrap_block::tests::simple_loop: pass -> [missing] (J1)
  • handlers::unwrap_branch::tests::simple_if_else: [missing] -> pass (J1)
  • handlers::unwrap_branch::tests::simple_if_else_if_nested_middle: [missing] -> pass (J1)
  • handlers::unwrap_branch::tests::unwrap_block_in_branch_non_standalone: [missing] -> pass (J1)
  • handlers::unwrap_branch::tests::unwrap_block_in_branch_non_tail_expr_only: [missing] -> pass (J1)
  • handlers::unwrap_branch::tests::unwrap_block_in_closure: [missing] -> pass (J1)
  • handlers::unwrap_branch::tests::unwrap_block_in_let_initializers: [missing] -> pass (J1)
  • handlers::unwrap_branch::tests::unwrap_block_labels: [missing] -> pass (J1)
  • handlers::unwrap_branch::tests::unwrap_if_in_let_initializers: [missing] -> pass (J1)
  • handlers::unwrap_branch::tests::unwrap_tail_expr_block: [missing] -> pass (J1)
  • inlay_hints::closure_captures::tests::all_capture_kinds_async_closure: [missing] -> pass (J1)
  • prettify_macro_expansion::tests::test_exprs: [missing] -> pass (J1)
  • rename::tests::rename_constructor_locals: [missing] -> pass (J1)
  • syntax_editor::tests::test_dependent_change_prefers_nearest_changed_ancestor: [missing] -> pass (J1)
  • tests::coercion::async_gen_yield_coerce: [missing] -> pass (J1)
  • tests::expression::regression_21697: [missing] -> pass (J1)
  • tests::runner::err::tuple_expr_empty_expr: [missing] -> pass (J1)
  • tests::runner::ok::deref_pat: [missing] -> pass (J1)
  • tests::simple::async_gen_block_types_inferred: [missing] -> pass (J1)
  • tests::traits::infer_async_gen_closure: [missing] -> pass (J1)

Stage 1

  • ast::edit_in_place::tests::test_increase_indent: pass -> [missing] (J0)
  • expr_store::tests::signatures::extern_block_abi: [missing] -> pass (J0)
  • flycheck::test_flycheck_diagnostic_with_override_command: pass -> ignore (this test tends to stuck, FIXME: investigate that) (J0)
  • handlers::add_missing_impl_members::tests::does_not_include_defaulted_assoc_types: [missing] -> pass (J0)
  • handlers::convert_to_guarded_return::tests::convert_let_inside_for_with_else_if: [missing] -> pass (J0)
  • handlers::duplicate_field::tests::duplicate_field_in_enum_variant_pattern: [missing] -> pass (J0)
  • handlers::duplicate_field::tests::no_duplicate_when_each_field_specified_once: [missing] -> pass (J0)
  • handlers::functional_record_update_on_non_struct::tests::enum_variant_record_update: [missing] -> pass (J0)
  • handlers::functional_record_update_on_non_struct::tests::struct_record_update: [missing] -> pass (J0)
  • handlers::generate_function::tests::generate_method_from_trait_impl_creates_new_inherent_impl: [missing] -> pass (J0)
  • handlers::generic_default_refers_to_self::tests::self_as_generic: [missing] -> pass (J0)
  • handlers::introduce_named_type_parameter::tests::replace_impl_question_bounds: [missing] -> pass (J0)
  • handlers::invalid_lhs_of_assignment::tests::destructuring_compound_assignment: [missing] -> pass (J0)
  • handlers::missing_unsafe::tests::add_unsafe_block_when_calling_unsafe_intrinsic: pass -> [missing] (J0)
  • handlers::missing_unsafe::tests::no_missing_unsafe_diagnostic_with_legacy_safe_intrinsic: pass -> [missing] (J0)
  • handlers::pattern_arg_in_extern_fn::tests::tuple_pattern: [missing] -> pass (J0)
  • handlers::replace_arith_op::tests::replace_arith_with_wrapping_add_assign: [missing] -> pass (J0)
  • handlers::replace_if_let_with_match::tests::test_if_matches_with_match: [missing] -> pass (J0)
  • handlers::unimplemented_trait::tests::async_closure_does_not_trigger: [missing] -> pass (J0)
  • handlers::unimplemented_trait::tests::smoke_test: [missing] -> pass (J0)
  • handlers::union_expr_must_have_exactly_one_field::tests::union_expr_must_have_exactly_one_field: [missing] -> pass (J0)
  • handlers::unused_must_use::tests::no_warning_when_value_assigned: [missing] -> pass (J0)
  • handlers::unused_must_use::tests::no_warning_when_value_used: [missing] -> pass (J0)
  • handlers::unused_must_use::tests::unused_must_use_function_call: [missing] -> pass (J0)
  • handlers::unwrap_block::tests::simple_if_else: pass -> [missing] (J0)
  • handlers::unwrap_block::tests::simple_single_line: pass -> [missing] (J0)
  • handlers::unwrap_block::tests::unwrap_if_in_let_initializers: pass -> [missing] (J0)
  • handlers::unwrap_block::tests::unwrap_match_arm_in_let: pass -> [missing] (J0)
  • handlers::unwrap_block::tests::unwrap_tail_expr_block: pass -> [missing] (J0)
  • handlers::unwrap_branch::tests::simple_for: [missing] -> pass (J0)
  • handlers::unwrap_branch::tests::simple_if: [missing] -> pass (J0)
  • handlers::unwrap_branch::tests::simple_if_else_if_nested_else: [missing] -> pass (J0)
  • handlers::unwrap_branch::tests::simple_if_in_for: [missing] -> pass (J0)
  • handlers::unwrap_branch::tests::simple_single_line: [missing] -> pass (J0)
  • handlers::unwrap_branch::tests::unwrap_block_in_closure: [missing] -> pass (J0)
  • handlers::unwrap_branch::tests::unwrap_block_in_let_initializers: [missing] -> pass (J0)
  • handlers::unwrap_branch::tests::unwrap_match_arm_in_let: [missing] -> pass (J0)
  • handlers::unwrap_branch::tests::unwrap_match_arm_without_block: [missing] -> pass (J0)
  • intern_round_trip: pass -> [missing] (J0)
  • item::tests::builder_deprecated_from_set_deprecated: [missing] -> pass (J0)
  • prettify_macro_expansion::tests::test_curly_indent: [missing] -> pass (J0)
  • prettify_macro_expansion::tests::test_in_macro: [missing] -> pass (J0)
  • rename::tests::test_rename_elided_lifetime_fn_no_generics: [missing] -> pass (J0)
  • rename::tests::test_rename_elided_lifetime_impl_with_generics: [missing] -> pass (J0)
  • rename::tests::test_rename_mut_pattern_with_macro: [missing] -> pass (J0)
  • rename::tests::test_rename_ref_pattern_with_macro: [missing] -> pass (J0)
  • tests::expression::deprecated_variant_of_undeprecated_enum_still_deprecated: [missing] -> pass (J0)
  • tests::simple::async_closure_with_params: [missing] -> pass (J0)
  • tests::simple::async_gen_block_types_inferred: [missing] -> pass (J0)
  • tests::simple::async_gen_fn_types_inferred: [missing] -> pass (J0)
  • tests::simple::gen_fn_types_inferred: [missing] -> pass (J0)
  • tests::traits::infer_async_gen_closure: [missing] -> pass (J0)

(and 256 additional test diffs)

Additionally, 698 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 64a965e9013a9d14e83c4d370af26f6be6bf96fb --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. i686-msvc-2: 1h 37m -> 2h 13m (+36.9%)
  2. pr-check-1: 27m 47s -> 35m 26s (+27.5%)
  3. dist-powerpc64le-linux-musl: 1h 17m -> 1h 36m (+24.7%)
  4. x86_64-msvc-2: 2h 31m -> 1h 56m (-23.1%)
  5. dist-s390x-linux: 1h 13m -> 1h 30m (+23.0%)
  6. aarch64-apple: 2h 57m -> 3h 37m (+22.3%)
  7. dist-x86_64-apple: 1h 49m -> 2h 11m (+19.7%)
  8. dist-apple-various: 1h 41m -> 2h (+18.9%)
  9. x86_64-gnu-llvm-22-2: 1h 34m -> 1h 17m (-17.8%)
  10. dist-loongarch64-musl: 1h 32m -> 1h 48m (+16.8%)
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
Copy Markdown
Collaborator

📌 Perf builds for each rolled up PR:

PR# Message Perf Build Sha
#155946 Refuse to push changes with a dirty git client b44ee1197e803335694554d4c003c877628d9291 (link)
#156147 Update ICU4X to 2.2 ea257dc1721635ec2af6b2e7d21c0c6feecd4b99 (link)
#156282 Update sysinfo version to 0.39.0 f6ec287d7df062ca6ba9fde7bdff612c1376fc76 (link)
#156357 tests: ip*_properties: avoid parsing the IP over and over a… 81d9ceb82d63a5478dc279f95090e94007e6a964 (link)
#156372 remove allows_weak_linkage target spec flag f529336e66e2f58b347cf48b9d871ad3cbe3ccba (link)
#156375 kernel_copy tests: properly join background threads 762ab79a923984d49b020bbb94c73c9c488eb2bd (link)
#156384 Remove some dead code for dumping MIR for a single DefId c072ce901ab903ec85cb06900d389569b7535047 (link)
#156389 prepare fs tests for miri 0091e7b89d00e2e02ba986139e9f5fad1930b045 (link)
#156392 Improve doc comments for f32::ceil() and f32::floor() bf93ee21aa8f4d942f659e6619206ce0f0f7ce4c (link)
#156406 resolve: Module-related refactorings b2acaa77305b0a3a3f8ffdb960d9f6e68583b9a2 (link)
#156411 bootstrap: Don't panic on `x install --set build.extended=t… beab351dbe3cad6a5ff5b45569c01992da10d3df (link)
#156426 Fix unwanted "Available on XX-bit only" in libcore integers b28d7704e4f1cd2fa874574122aa221c3880e85a (link)
#156437 rust-analyzer subtree update b40a16fb773817f31142f65c3c477da750417b64 (link)

previous master: 8afb6a8b1b

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
Copy Markdown
Collaborator

Finished benchmarking commit (64a965e): comparison URL.

Overall result: no relevant changes - no action needed

@rustbot label: -perf-regression

Instruction count

This perf run didn't have relevant results for this metric.

Max RSS (memory usage)

Results (primary 12.0%, secondary 3.2%)

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

mean range count
Regressions ❌
(primary)
12.0% [12.0%, 12.0%] 1
Regressions ❌
(secondary)
3.2% [3.0%, 3.3%] 2
Improvements ✅
(primary)
- - 0
Improvements ✅
(secondary)
- - 0
All ❌✅ (primary) 12.0% [12.0%, 12.0%] 1

Cycles

Results (secondary -0.8%)

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

Binary size

This perf run didn't have relevant results for this metric.

Bootstrap: 497.61s -> 498.063s (0.09%)
Artifact size: 397.26 MiB -> 397.28 MiB (0.01%)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

merged-by-bors This PR was explicitly merged by bors. rollup A PR which is a rollup

Projects

None yet

Development

Successfully merging this pull request may close these issues.