Skip to content

Conversation

@Zalathar
Copy link
Member

Successful merges:

r? @ghost

Create a similar rollup

calebzulawski and others added 30 commits January 18, 2025 15:37
The `#[must_use]` attribute has no effect when applied to methods in
trait implementations.
Remove usize/isize impls from
- `loongarch64.rs`
- `wasm32.rs`
- `x86.rs`
Remove usize/isize `From` impls for vendor vector types
Add const to `as_mut_array`, `copy_to_slice`
Update examples to remove features that have been stabilized
Update nightly toolchain and `Cargo.lock`, fix examples broken by stabilized features
loongarch64: Use unified data types for SIMD intrinsics
…imd-2026-01-28, r=folkertdev

Portable SIMD subtree update

cc @folkertdev @programmerjake
Tweak E0599 to consolidate unsatisfied trait bound messages

Fixes rust-lang#114430
r? @estebank
fix(parser): Disallow CR in frontmatter

T-lang came back on the stabilization PR (rust-lang#148051) asking for CR to be disallowed
to leave room for all stray CRs to be rejected in the future.
At that point, the test can remain but the implementation can be
removed.

If that plan does not go through, we'll need to re-evaluate
- whether this is more lint-like and should defer to the calling tool
  that is managing the frontmatter
- how much Rust should treat the frontmatter as Rust and apply the same
  grammar restrictions of "no stray CR" (like raw string literals)

Part of rust-lang#136889
…, r=Kivooeo

add foregin type tests for issue 64458

add tests/ui/rfcs/rfc-1861-extern-types/comparison.rs

close rust-lang#64458
Cleanup of `#[derive(Diagnostic)]` attribute parsers

This PR does a lot of refactoring on the implementation of `#[derive(Diagnostic)]`. It should have no observable effect other than error messages for incorrect usage of the attributes. In general, I think the error messages got better.

This PR can be reviewed commit by commit, each commit passes the tests.
- [Convert parse_nested_meta to parse_args_with for #[diagnostic]](rust-lang@9e61014)
  Start parsing `#[diagnostic]` using `syn`'s `parse_args_with` function instead of `parse_nested_meta`. This improves error messages and prepares for the new syntax needed for rust-lang#151366 which cannot be parsed using `parse_args_with`.
- [Convert parse_nested_meta to parse_args_with for #[subdiagnostic]](rust-lang@5d21a21)
  Same as above but for `#[subdiagnostic]`
- [Remove unused no_span option](rust-lang@0bf3f5d)
  Removes the `no_span` option of `#[suggestion]`, which there were no tests for and which seems to have been unused. If needed again in the future, this can be re-added pretty easily, but I find that unlikely.
- [Remove HasFieldMap trait in favour of passing FieldMap directly](rust-lang@2e8347a)
  Removes the `HasFieldMap` trait, because I don't really see the point of having a trait "has a field map" if we can just pass the fieldmap itself instead.

r? @Kivooeo
(Thanks for reviewing my PRs so far :3)
@rust-bors rust-bors bot added the rollup A PR which is a rollup label Jan 29, 2026
@rustbot rustbot added A-translation Area: Translation infrastructure, and migrating existing diagnostics to SessionDiagnostic S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. 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. labels Jan 29, 2026
@Zalathar
Copy link
Member Author

Rollup of everything not in #151809.

@bors r+ rollup=never p=5

@rust-bors
Copy link
Contributor

rust-bors bot commented Jan 29, 2026

📌 Commit 617288e has been approved by Zalathar

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 Jan 29, 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 Jan 29, 2026
@rust-bors
Copy link
Contributor

rust-bors bot commented Jan 29, 2026

☀️ Test successful - CI
Approved by: Zalathar
Duration: 3h 49m 26s
Pushing 370143f to main...

@rust-bors rust-bors bot merged commit 370143f into rust-lang:main Jan 29, 2026
12 checks passed
@rustbot rustbot added this to the 1.95.0 milestone Jan 29, 2026
@rust-timer
Copy link
Collaborator

📌 Perf builds for each rolled up PR:

PR# Message Perf Build Sha
#149823 fix(parser): Disallow CR in frontmatter 91e3b8c28830fd8098490764516e5ddedfd8db94 (link)
#151475 add foregin type tests for issue 64458 89ae7e759aaa05728bbb2d25ec142e61790a8a5b (link)
#151488 Tweak E0599 to consolidate unsatisfied trait bound messages 12cc71670d24df2bf9446d9925cd56ff0d4fed06 (link)
#151657 Cleanup of #[derive(Diagnostic)] attribute parsers 85f6a43aece64b63c6351eebfbb70cab35345fb9 (link)
#151775 Portable SIMD subtree update 0a89cd16e0605d97aea4c96c95909a2ab698cb3a (link)

previous master: 80b898258d

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

@github-actions
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 80b8982 (parent) -> 370143f (this PR)

Test differences

Show 929 test diffs

Stage 0

  • errors::verify_parse_array_index_offset_of_172: [missing] -> pass (J2)
  • errors::verify_parse_asm_expected_string_literal_187: [missing] -> pass (J2)
  • errors::verify_parse_asm_non_abi_185: pass -> [missing] (J2)
  • errors::verify_parse_asm_requires_template_182: pass -> [missing] (J2)
  • errors::verify_parse_asm_requires_template_183: [missing] -> pass (J2)
  • errors::verify_parse_asm_underscore_input_181: [missing] -> pass (J2)
  • errors::verify_parse_assignment_else_not_allowed_48: [missing] -> pass (J2)
  • errors::verify_parse_associated_static_item_not_allowed_90: pass -> [missing] (J2)
  • errors::verify_parse_async_move_block_in_2015_74: pass -> [missing] (J2)
  • errors::verify_parse_async_move_order_incorrect_62: pass -> [missing] (J2)
  • errors::verify_parse_attr_after_generic_146: pass -> [missing] (J2)
  • errors::verify_parse_attr_without_generics_147: pass -> [missing] (J2)
  • errors::verify_parse_attribute_on_generic_arg_58: [missing] -> pass (J2)
  • errors::verify_parse_attribute_on_param_type_55: pass -> [missing] (J2)
  • errors::verify_parse_attribute_on_param_type_56: [missing] -> pass (J2)
  • errors::verify_parse_binder_before_modifiers_177: [missing] -> pass (J2)
  • errors::verify_parse_bounds_not_allowed_on_trait_aliases_88: [missing] -> pass (J2)
  • errors::verify_parse_box_not_pat_164: [missing] -> pass (J2)
  • errors::verify_parse_colon_as_semi_73: pass -> [missing] (J2)
  • errors::verify_parse_colon_as_semi_74: [missing] -> pass (J2)
  • errors::verify_parse_doc_comment_on_param_type_54: pass -> [missing] (J2)
  • errors::verify_parse_dot_dot_dot_for_remaining_fields_131: pass -> [missing] (J2)
  • errors::verify_parse_dot_dot_dot_range_to_pattern_not_allowed_128: [missing] -> pass (J2)
  • errors::verify_parse_double_colon_in_bound_65: [missing] -> pass (J2)
  • errors::verify_parse_dyn_after_mut_138: pass -> [missing] (J2)
  • errors::verify_parse_enum_struct_mutually_exclusive_94: pass -> [missing] (J2)
  • errors::verify_parse_expected_binding_left_of_at_123: [missing] -> pass (J2)
  • errors::verify_parse_expected_comma_after_pattern_field_133: [missing] -> pass (J2)
  • errors::verify_parse_expected_trait_in_trait_impl_found_type_86: [missing] -> pass (J2)
  • errors::verify_parse_fn_pointer_cannot_be_const_140: [missing] -> pass (J2)
  • errors::verify_parse_incorrect_visibility_restriction_46: pass -> [missing] (J2)
  • errors::verify_parse_invalid_literal_suffix_on_tuple_index_43: pass -> [missing] (J2)
  • errors::verify_parse_invalid_literal_suffix_on_tuple_index_44: [missing] -> pass (J2)
  • errors::verify_parse_keyword_label_112: [missing] -> pass (J2)
  • errors::verify_parse_kw_bad_case_167: [missing] -> pass (J2)
  • errors::verify_parse_let_chain_pre_2024_77: [missing] -> pass (J2)
  • errors::verify_parse_lifetime_after_mut_138: [missing] -> pass (J2)
  • errors::verify_parse_lifetime_in_eq_constraint_150: pass -> [missing] (J2)
  • errors::verify_parse_missing_const_type_94: [missing] -> pass (J2)
  • errors::verify_parse_missing_fn_params_82: [missing] -> pass (J2)
  • errors::verify_parse_missing_for_in_trait_impl_85: [missing] -> pass (J2)
  • errors::verify_parse_missing_plus_in_bounds_166: [missing] -> pass (J2)
  • errors::verify_parse_modifier_lifetime_151: pass -> [missing] (J2)
  • errors::verify_parse_multiple_where_clauses_103: pass -> [missing] (J2)
  • errors::verify_parse_mut_on_non_ident_pattern_125: pass -> [missing] (J2)
  • errors::verify_parse_nested_adt_163: [missing] -> pass (J2)
  • errors::verify_parse_nonterminal_expected_ident_107: [missing] -> pass (J2)
  • errors::verify_parse_repeated_mut_in_pattern_126: pass -> [missing] (J2)
  • errors::verify_parse_single_colon_import_path_156: pass -> [missing] (J2)
  • errors::verify_parse_static_with_generics_169: pass -> [missing] (J2)
  • errors::verify_parse_suffixed_literal_in_attribute_52: pass -> [missing] (J2)
  • errors::verify_parse_too_many_hashes_117: pass -> [missing] (J2)
  • errors::verify_parse_too_many_hashes_118: [missing] -> pass (J2)
  • errors::verify_parse_unexpected_vert_vert_in_pattern_120: [missing] -> pass (J2)
  • errors::verify_parse_unknown_builtin_construct_167: pass -> [missing] (J2)
  • errors::verify_parse_varargs_without_pattern_188: pass -> [missing] (J2)
  • errors::verify_parse_where_generics_149: [missing] -> pass (J2)

Stage 1

  • errors::verify_parse_array_index_offset_of_171: pass -> [missing] (J1)
  • errors::verify_parse_asm_expected_comma_183: pass -> [missing] (J1)
  • errors::verify_parse_asm_non_abi_185: pass -> [missing] (J1)
  • errors::verify_parse_asm_underscore_input_180: pass -> [missing] (J1)
  • errors::verify_parse_asm_unsupported_operand_179: pass -> [missing] (J1)
  • errors::verify_parse_async_impl_173: pass -> [missing] (J1)
  • errors::verify_parse_attribute_on_empty_type_58: pass -> [missing] (J1)
  • errors::verify_parse_attribute_on_generic_arg_58: [missing] -> pass (J1)
  • errors::verify_parse_bad_item_kind_158: [missing] -> pass (J1)
  • errors::verify_parse_binder_and_polarity_177: pass -> [missing] (J1)
  • errors::verify_parse_delegation_non_trait_impl_reuse_190: [missing] -> pass (J1)
  • errors::verify_parse_doc_comment_on_param_type_54: pass -> [missing] (J1)
  • errors::verify_parse_dot_dot_dot_range_to_pattern_not_allowed_127: pass -> [missing] (J1)
  • errors::verify_parse_expect_label_found_ident_153: pass -> [missing] (J1)
  • errors::verify_parse_expected_builtin_ident_168: pass -> [missing] (J1)
  • errors::verify_parse_expected_builtin_ident_169: [missing] -> pass (J1)
  • errors::verify_parse_expected_statement_after_outer_attr_48: pass -> [missing] (J1)
  • errors::verify_parse_expected_statement_after_outer_attr_49: [missing] -> pass (J1)
  • errors::verify_parse_fn_pointer_cannot_be_const_139: pass -> [missing] (J1)
  • errors::verify_parse_incorrect_visibility_restriction_47: [missing] -> pass (J1)
  • errors::verify_parse_invalid_digit_literal_114: pass -> [missing] (J1)
  • errors::verify_parse_invalid_path_sep_in_fn_definition_82: pass -> [missing] (J1)
  • errors::verify_parse_lifetime_after_mut_137: pass -> [missing] (J1)
  • errors::verify_parse_lifetime_after_mut_138: [missing] -> pass (J1)
  • errors::verify_parse_macro_rules_visibility_160: pass -> [missing] (J1)
  • errors::verify_parse_missing_plus_in_bounds_165: pass -> [missing] (J1)
  • errors::verify_parse_multiple_where_clauses_104: [missing] -> pass (J1)
  • errors::verify_parse_mut_on_non_ident_pattern_125: pass -> [missing] (J1)
  • errors::verify_parse_nonterminal_expected_item_keyword_104: pass -> [missing] (J1)
  • errors::verify_parse_nonterminal_expected_lifetime_108: [missing] -> pass (J1)
  • errors::verify_parse_path_found_c_variadic_params_69: pass -> [missing] (J1)
  • errors::verify_parse_path_found_named_params_69: [missing] -> pass (J1)
  • errors::verify_parse_pattern_method_param_without_body_59: pass -> [missing] (J1)
  • errors::verify_parse_repeated_mut_in_pattern_127: [missing] -> pass (J1)
  • errors::verify_parse_self_argument_pointer_78: [missing] -> pass (J1)
  • errors::verify_parse_static_with_generics_169: pass -> [missing] (J1)
  • errors::verify_parse_struct_literal_placeholder_path_190: pass -> [missing] (J1)
  • errors::verify_parse_unexpected_const_in_generic_param_61: pass -> [missing] (J1)
  • errors::verify_parse_unexpected_token_after_struct_name_found_reserved_keyword_98: [missing] -> pass (J1)
  • errors::verify_parse_unexpected_vert_vert_before_function_parameter_118: pass -> [missing] (J1)
  • errors::verify_parse_unexpected_vert_vert_in_pattern_119: pass -> [missing] (J1)
  • errors::verify_parse_unexpected_vert_vert_in_pattern_120: [missing] -> pass (J1)

Stage 2

  • [ui] tests/ui/rfcs/rfc-1861-extern-types/comparison.rs: [missing] -> ignore (only executed when the release channel is nightly) (J0)

(and 513 additional test diffs)

Additionally, 316 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 370143facfb348ad3b29749c0393402d76b280c3 --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. pr-check-1: 1465.2s -> 2105.6s (+43.7%)
  2. aarch64-apple: 9338.9s -> 13347.9s (+42.9%)
  3. x86_64-gnu-tools: 3301.4s -> 3845.4s (+16.5%)
  4. dist-apple-various: 3935.3s -> 3297.4s (-16.2%)
  5. i686-gnu-2: 5277.9s -> 6111.7s (+15.8%)
  6. dist-aarch64-apple: 8628.6s -> 9913.1s (+14.9%)
  7. dist-x86_64-apple: 9110.8s -> 7774.2s (-14.7%)
  8. x86_64-rust-for-linux: 2690.8s -> 3073.2s (+14.2%)
  9. x86_64-gnu-miri: 4367.2s -> 4975.5s (+13.9%)
  10. x86_64-msvc-ext1: 8396.5s -> 7287.5s (-13.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

Finished benchmarking commit (370143f): 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.3% [0.3%, 0.3%] 2
Regressions ❌
(secondary)
0.5% [0.5%, 0.5%] 1
Improvements ✅
(primary)
-0.3% [-0.7%, -0.2%] 9
Improvements ✅
(secondary)
-0.4% [-0.7%, -0.1%] 22
All ❌✅ (primary) -0.2% [-0.7%, 0.3%] 11

Max RSS (memory usage)

Results (primary -2.1%, secondary 1.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)
3.0% [1.1%, 4.9%] 2
Improvements ✅
(primary)
-2.1% [-2.1%, -2.1%] 1
Improvements ✅
(secondary)
-0.9% [-0.9%, -0.9%] 1
All ❌✅ (primary) -2.1% [-2.1%, -2.1%] 1

Cycles

Results (primary 9.3%, secondary -3.3%)

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

mean range count
Regressions ❌
(primary)
9.3% [2.5%, 16.4%] 11
Regressions ❌
(secondary)
- - 0
Improvements ✅
(primary)
- - 0
Improvements ✅
(secondary)
-3.3% [-3.3%, -3.3%] 1
All ❌✅ (primary) 9.3% [2.5%, 16.4%] 11

Binary size

Results (primary -0.1%, secondary -0.2%)

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.1% [-0.2%, -0.0%] 7
Improvements ✅
(secondary)
-0.2% [-0.3%, -0.0%] 11
All ❌✅ (primary) -0.1% [-0.2%, -0.0%] 7

Bootstrap: 475.963s -> 474.117s (-0.39%)
Artifact size: 397.82 MiB -> 397.79 MiB (-0.01%)

@rustbot rustbot added the perf-regression Performance regression. label Jan 29, 2026
@nnethercote
Copy link
Contributor

Some perf improvement for doc builds. Let's try:

@rust-timer build 0a89cd1

@rust-timer

This comment has been minimized.

@rust-timer
Copy link
Collaborator

Finished benchmarking commit (0a89cd1): comparison URL.

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

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.3% [0.3%, 0.3%] 2
Regressions ❌
(secondary)
- - 0
Improvements ✅
(primary)
-0.3% [-0.7%, -0.2%] 9
Improvements ✅
(secondary)
-0.5% [-0.7%, -0.1%] 19
All ❌✅ (primary) -0.2% [-0.7%, 0.3%] 11

Max RSS (memory usage)

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

Cycles

Results (secondary 0.0%)

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.5% [6.5%, 6.5%] 1
Improvements ✅
(primary)
- - 0
Improvements ✅
(secondary)
-3.2% [-3.4%, -3.0%] 2
All ❌✅ (primary) - - 0

Binary size

Results (primary -0.1%, secondary -0.2%)

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.1% [-0.2%, -0.0%] 7
Improvements ✅
(secondary)
-0.2% [-0.3%, -0.0%] 11
All ❌✅ (primary) -0.1% [-0.2%, -0.0%] 7

Bootstrap: 475.963s -> 475.148s (-0.17%)
Artifact size: 397.82 MiB -> 397.82 MiB (0.00%)

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

Labels

A-translation Area: Translation infrastructure, and migrating existing diagnostics to SessionDiagnostic merged-by-bors This PR was explicitly merged by bors. perf-regression Performance regression. rollup A PR which is a rollup 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.

Projects

None yet

Development

Successfully merging this pull request may close these issues.