Skip to content

Conversation

fmease
Copy link
Member

@fmease fmease commented Aug 26, 2025

Follow-up to #145747.

Presently, it's unclear to me if it's possible to migrate all variants to dyn lint diagnostics without regressing performance because for some early lints decorate_builtin_lint performs a bit more work (past PR #124417 has shown that eagerly decorating early lints is incredibly heavy and we had to revert back to lazily decorating in #125410). Let's see how this fares once I tackle the more 'risky' variants.

cc @joshtriplett (you can immediately unsubscribe again, I just want to prevent duplicate efforts).

@rustbot rustbot added S-waiting-on-author Status: This is awaiting some action (such as code changes or more information) from the author. T-compiler Relevant to the compiler team, which will review and decide on the PR/issue. labels Aug 26, 2025
@fmease fmease added the rla-silenced Silences rust-log-analyzer postings to the PR it's added on. label Aug 26, 2025
@fmease fmease force-pushed the mv-var-to-dyn-buf-lints branch 3 times, most recently from e37e022 to 37c36c5 Compare August 27, 2025 14:31
@joshtriplett
Copy link
Member

Seems worth a try.

You might consider finishing the set you currently have and doing a perf run.

@joshtriplett
Copy link
Member

@fmease Regarding the potential performance issues, reading the previous PRs I don't think this is likely to hit the same issues. It could potentially regress for other reasons, but this change won't make the decorating any less lazy.

@fmease fmease force-pushed the mv-var-to-dyn-buf-lints branch from 37c36c5 to 5cecd4a Compare September 2, 2025 18:54
@fmease
Copy link
Member Author

fmease commented Sep 2, 2025

@bors try @rust-timer queue

@rust-timer

This comment has been minimized.

@rust-bors

This comment has been minimized.

rust-bors bot added a commit that referenced this pull request Sep 2, 2025
[WIP] Move more early buffered lints to dyn lint diagnostics
@rustbot rustbot added the S-waiting-on-perf Status: Waiting on a perf run to be completed. label Sep 2, 2025
@fmease
Copy link
Member Author

fmease commented Sep 2, 2025

@bors try cancel

@rust-bors
Copy link

rust-bors bot commented Sep 2, 2025

Try build cancelled. Cancelled workflows:

@fmease fmease force-pushed the mv-var-to-dyn-buf-lints branch from 5cecd4a to 6358700 Compare September 2, 2025 19:10
@fmease
Copy link
Member Author

fmease commented Sep 2, 2025

@bors try @rust-timer queue

@rust-timer

This comment has been minimized.

rust-bors bot added a commit that referenced this pull request Sep 2, 2025
[WIP] Move more early buffered lints to dyn lint diagnostics
@rust-bors

This comment has been minimized.

@rust-bors
Copy link

rust-bors bot commented Sep 2, 2025

☀️ Try build successful (CI)
Build commit: 9d79411 (9d794119e470cc679493ce04193550fe54c76727, parent: a2c8b0b92c14b02f0b3f96a0d5296f1090dc286b)

@rust-timer

This comment has been minimized.

@rust-timer
Copy link
Collaborator

Finished benchmarking commit (9d79411): comparison URL.

Overall result: ✅ improvements - no action needed

Benchmarking this pull request means it may be perf-sensitive – we'll automatically label it not fit for rolling up. You can override this, but we strongly advise not to, due to possible changes in compiler perf.

@bors rollup=never
@rustbot label: -S-waiting-on-perf -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)
-0.1% [-0.2%, -0.1%] 14
Improvements ✅
(secondary)
-0.3% [-0.7%, -0.1%] 18
All ❌✅ (primary) -0.1% [-0.2%, -0.1%] 14

Max RSS (memory usage)

Results (primary 1.3%, 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)
1.3% [1.3%, 1.3%] 1
Regressions ❌
(secondary)
1.7% [1.2%, 2.2%] 2
Improvements ✅
(primary)
- - 0
Improvements ✅
(secondary)
-2.0% [-2.1%, -2.0%] 2
All ❌✅ (primary) 1.3% [1.3%, 1.3%] 1

Cycles

Results (primary 2.2%, secondary 3.6%)

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

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

Binary size

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

Bootstrap: 465.026s -> 464.899s (-0.03%)
Artifact size: 388.33 MiB -> 388.40 MiB (0.02%)

@rustbot rustbot removed the S-waiting-on-perf Status: Waiting on a perf run to be completed. label Sep 3, 2025
@bors

This comment was marked as resolved.

@fmease fmease force-pushed the mv-var-to-dyn-buf-lints branch 2 times, most recently from 30e999b to 7d9c1e2 Compare September 14, 2025 04:23
@joshtriplett
Copy link
Member

@fmease This is looking great. It seems worth merging the ones you have so far, to avoid the PR developing conflicts. r=me as soon as it passes CI and you're ready to merge it.

@fmease fmease force-pushed the mv-var-to-dyn-buf-lints branch from 7d9c1e2 to 5e2defc Compare September 14, 2025 09:50
@bors bors added S-waiting-on-author Status: This is awaiting some action (such as code changes or more information) from the author. and removed S-waiting-on-bors Status: Waiting on bors to run and complete tests. Bors will change the label on completion. labels Sep 14, 2025
@fmease fmease added the rla-silenced Silences rust-log-analyzer postings to the PR it's added on. label Sep 14, 2025
@fmease

This comment was marked as resolved.

@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-author Status: This is awaiting some action (such as code changes or more information) from the author. labels Sep 14, 2025
@fmease fmease added S-waiting-on-author Status: This is awaiting some action (such as code changes or more information) from the author. and removed S-waiting-on-bors Status: Waiting on bors to run and complete tests. Bors will change the label on completion. labels Sep 14, 2025
@rust-log-analyzer

This comment was marked as resolved.

@fmease fmease force-pushed the mv-var-to-dyn-buf-lints branch from 5e2defc to ec7ad59 Compare September 14, 2025 10:38
@fmease
Copy link
Member Author

fmease commented Sep 14, 2025

@bors r=joshtriplett

@bors
Copy link
Collaborator

bors commented Sep 14, 2025

📌 Commit ec7ad59 has been approved by joshtriplett

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-author Status: This is awaiting some action (such as code changes or more information) from the author. labels Sep 14, 2025
@fmease fmease removed the rla-silenced Silences rust-log-analyzer postings to the PR it's added on. label Sep 14, 2025
@bors
Copy link
Collaborator

bors commented Sep 14, 2025

⌛ Testing commit ec7ad59 with merge 52618eb...

@bors
Copy link
Collaborator

bors commented Sep 14, 2025

☀️ Test successful - checks-actions
Approved by: joshtriplett
Pushing 52618eb to master...

@bors bors added the merged-by-bors This PR was explicitly merged by bors. label Sep 14, 2025
@bors bors merged commit 52618eb into rust-lang:master Sep 14, 2025
11 checks passed
@rustbot rustbot added this to the 1.92.0 milestone Sep 14, 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 ddaf123 (parent) -> 52618eb (this PR)

Test differences

Show 902 test diffs

Stage 0

  • errors::autodiff::verify_builtin_macros_autodiff_mode_activity_29: pass -> [missing] (J1)
  • errors::metavar_exprs::verify_expand_mve_unrecognized_expr_42: [missing] -> pass (J1)
  • errors::verify_ast_passes_abi_x86_interrupt_69: pass -> [missing] (J1)
  • errors::verify_ast_passes_fieldless_union_46: [missing] -> pass (J1)
  • errors::verify_ast_passes_missing_unsafe_on_extern_lint_45: [missing] -> pass (J1)
  • errors::verify_ast_passes_negative_bound_not_supported_56: pass -> [missing] (J1)
  • errors::verify_ast_passes_precise_capturing_duplicated_62: [missing] -> pass (J1)
  • errors::verify_builtin_macros_alloc_error_must_be_fn_13: [missing] -> pass (J1)
  • errors::verify_builtin_macros_alloc_must_statics_29: [missing] -> pass (J1)
  • errors::verify_builtin_macros_asm_no_matched_argument_name_75: [missing] -> pass (J1)
  • errors::verify_builtin_macros_asm_pure_no_output_64: pass -> [missing] (J1)
  • errors::verify_builtin_macros_asm_unsupported_option_73: pass -> [missing] (J1)
  • errors::verify_builtin_macros_assert_missing_comma_16: [missing] -> pass (J1)
  • errors::verify_builtin_macros_bench_sig_23: pass -> [missing] (J1)
  • errors::verify_builtin_macros_cfg_accessible_has_args_15: pass -> [missing] (J1)
  • errors::verify_builtin_macros_cfg_accessible_unspecified_path_17: [missing] -> pass (J1)
  • errors::verify_builtin_macros_concat_bytes_bad_repeat_43: [missing] -> pass (J1)
  • errors::verify_builtin_macros_concat_bytestr_18: pass -> [missing] (J1)
  • errors::verify_builtin_macros_derive_path_args_list_46: [missing] -> pass (J1)
  • errors::verify_builtin_macros_env_not_defined_52: pass -> [missing] (J1)
  • errors::verify_builtin_macros_export_macro_rules_25: [missing] -> pass (J1)
  • errors::verify_builtin_macros_format_no_arg_named_62: [missing] -> pass (J1)
  • errors::verify_builtin_macros_format_positional_after_named_56: pass -> [missing] (J1)
  • errors::verify_builtin_macros_format_unused_arg_63: [missing] -> pass (J1)
  • errors::verify_builtin_macros_source_uitls_expected_item_86: [missing] -> pass (J1)
  • errors::verify_builtin_macros_tests_not_support_40: pass -> [missing] (J1)
  • errors::verify_expand_glob_delegation_outside_impls_35: [missing] -> pass (J1)
  • errors::verify_expand_invalid_cfg_no_predicate_13: pass -> [missing] (J1)
  • errors::verify_expand_invalid_cfg_no_predicate_17: [missing] -> pass (J1)
  • errors::verify_expand_invalid_cfg_predicate_literal_15: pass -> [missing] (J1)
  • errors::verify_expand_invalid_fragment_specifier_32: [missing] -> pass (J1)
  • errors::verify_expand_meta_var_dif_seq_matchers_4: pass -> [missing] (J1)
  • errors::verify_expand_proc_macro_derive_tokens_24: pass -> [missing] (J1)
  • errors::verify_resolve_arguments_macro_use_not_allowed_40: pass -> [missing] (J1)
  • errors::verify_resolve_attributes_starting_with_rustc_are_reserved_51: pass -> [missing] (J1)
  • errors::verify_resolve_cannot_be_reexported_private_30: pass -> [missing] (J1)
  • errors::verify_resolve_cannot_use_through_an_import_54: [missing] -> pass (J1)
  • errors::verify_resolve_imported_crate_23: pass -> [missing] (J1)
  • errors::verify_resolve_is_private_49: pass -> [missing] (J1)
  • errors::verify_resolve_macro_expanded_macro_exports_accessed_by_absolute_paths_24: [missing] -> pass (J1)
  • errors::verify_resolve_name_reserved_in_attribute_namespace_53: pass -> [missing] (J1)
  • errors::verify_resolve_proc_macro_derive_resolution_fallback_23: [missing] -> pass (J1)
  • errors::verify_resolve_static_lifetime_is_reserved_49: [missing] -> pass (J1)
  • errors::verify_resolve_tool_only_accepts_identifiers_58: [missing] -> pass (J1)
  • errors::verify_resolve_unused_label_63: [missing] -> pass (J1)
  • lints::verify_lint_associated_const_elided_lifetime_121: [missing] -> pass (J1)
  • lints::verify_lint_duplicate_macro_attribute_118: pass -> [missing] (J1)
  • lints::verify_lint_macro_rule_never_used_113: pass -> [missing] (J1)
  • lints::verify_lint_metavariable_still_repeating_120: pass -> [missing] (J1)
  • lints::verify_lint_out_of_scope_macro_calls_123: [missing] -> pass (J1)
  • lints::verify_lint_proc_macro_derive_resolution_fallback_126: pass -> [missing] (J1)
  • lints::verify_lint_unused_label_110: pass -> [missing] (J1)
  • lints::verify_lint_unused_macro_definition_112: pass -> [missing] (J1)

Stage 1

  • errors::autodiff::verify_builtin_macros_autodiff_number_activities_28: pass -> [missing] (J0)
  • errors::metavar_exprs::verify_expand_mve_missing_paren_36: pass -> [missing] (J0)
  • errors::verify_ast_passes_const_and_c_variadic_51: pass -> [missing] (J0)
  • errors::verify_ast_passes_extern_without_abi_sugg_63: pass -> [missing] (J0)
  • errors::verify_ast_passes_negative_bound_not_supported_56: pass -> [missing] (J0)
  • errors::verify_ast_passes_precise_capturing_duplicated_62: [missing] -> pass (J0)
  • errors::verify_ast_passes_where_clause_after_type_alias_46: pass -> [missing] (J0)
  • errors::verify_builtin_macros_alloc_must_statics_24: pass -> [missing] (J0)
  • errors::verify_builtin_macros_alloc_must_statics_29: [missing] -> pass (J0)
  • errors::verify_builtin_macros_asm_mayunwind_71: pass -> [missing] (J0)
  • errors::verify_builtin_macros_asm_opt_already_provided_72: pass -> [missing] (J0)
  • errors::verify_builtin_macros_asm_unsupported_clobber_abi_74: pass -> [missing] (J0)
  • errors::verify_builtin_macros_bench_sig_23: pass -> [missing] (J0)
  • errors::verify_builtin_macros_cfg_select_no_matches_90: [missing] -> pass (J0)
  • errors::verify_builtin_macros_concat_bytes_bad_repeat_43: [missing] -> pass (J0)
  • errors::verify_builtin_macros_concat_bytestr_23: [missing] -> pass (J0)
  • errors::verify_builtin_macros_derive_macro_call_53: [missing] -> pass (J0)
  • errors::verify_builtin_macros_expected_comma_in_list_77: pass -> [missing] (J0)
  • errors::verify_builtin_macros_expected_other_89: [missing] -> pass (J0)
  • errors::verify_builtin_macros_format_unused_arg_58: pass -> [missing] (J0)
  • errors::verify_builtin_macros_requires_cfg_pattern_6: pass -> [missing] (J0)
  • errors::verify_builtin_macros_source_uitls_expected_item_81: pass -> [missing] (J0)
  • errors::verify_builtin_macros_test_bad_fn_65: [missing] -> pass (J0)
  • errors::verify_builtin_macros_test_case_non_item_59: pass -> [missing] (J0)
  • errors::verify_builtin_macros_test_runner_nargs_76: pass -> [missing] (J0)
  • errors::verify_builtin_macros_tests_not_support_45: [missing] -> pass (J0)
  • errors::verify_builtin_macros_trace_macros_22: pass -> [missing] (J0)
  • errors::verify_expand_collapse_debuginfo_illegal_10: [missing] -> pass (J0)
  • errors::verify_expand_crate_name_in_cfg_attr_31: pass -> [missing] (J0)
  • errors::verify_expand_incomplete_parse_22: [missing] -> pass (J0)
  • errors::verify_expand_module_circular_20: pass -> [missing] (J0)
  • errors::verify_expand_recursion_limit_reached_10: pass -> [missing] (J0)
  • errors::verify_expand_remove_expr_not_supported_15: [missing] -> pass (J0)
  • errors::verify_expand_remove_node_not_supported_19: pass -> [missing] (J0)
  • errors::verify_expand_wrong_fragment_kind_16: pass -> [missing] (J0)
  • errors::verify_resolve_anonymous_lifetime_non_gat_report_error_44: pass -> [missing] (J0)
  • errors::verify_resolve_lending_iterator_report_error_43: pass -> [missing] (J0)
  • errors::verify_resolve_name_reserved_in_attribute_namespace_53: pass -> [missing] (J0)
  • errors::verify_resolve_unnamed_crate_root_import_43: [missing] -> pass (J0)
  • lints::verify_lint_ambiguous_glob_reexport_141: pass -> [missing] (J0)
  • lints::verify_lint_avoid_att_syntax_115: pass -> [missing] (J0)
  • lints::verify_lint_ill_formed_attribute_input_125: pass -> [missing] (J0)
  • lints::verify_lint_macro_rule_never_used_113: pass -> [missing] (J0)
  • lints::verify_lint_named_argument_used_positionally_116: [missing] -> pass (J0)
  • lints::verify_lint_private_extern_crate_reexport_107: [missing] -> pass (J0)
  • lints::verify_lint_reserved_multihash_126: [missing] -> pass (J0)
  • lints::verify_lint_unused_doc_comment_128: pass -> [missing] (J0)

(and 790 additional test diffs)

Additionally, 12 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 52618eb338609df44978b0ca4451ab7941fd1c7a --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-aarch64-apple: 5989.9s -> 6900.7s (15.2%)
  2. dist-x86_64-windows-gnullvm: 4664.6s -> 5285.5s (13.3%)
  3. x86_64-gnu-llvm-19: 2726.1s -> 2396.9s (-12.1%)
  4. x86_64-gnu-tools: 3735.5s -> 3299.0s (-11.7%)
  5. dist-apple-various: 3748.7s -> 4144.4s (10.6%)
  6. aarch64-gnu: 6839.9s -> 6177.1s (-9.7%)
  7. x86_64-msvc-2: 7451.5s -> 6761.2s (-9.3%)
  8. armhf-gnu: 4769.3s -> 5186.0s (8.7%)
  9. dist-ohos-x86_64: 4290.0s -> 4661.6s (8.7%)
  10. dist-powerpc-linux: 4973.2s -> 5401.0s (8.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.

@rust-timer
Copy link
Collaborator

Finished benchmarking commit (52618eb): comparison URL.

Overall result: ❌ regressions - 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.2% [0.2%, 0.2%] 1
Improvements ✅
(primary)
- - 0
Improvements ✅
(secondary)
- - 0
All ❌✅ (primary) - - 0

Max RSS (memory usage)

Results (primary -0.9%, secondary 0.5%)

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.2% [2.2%, 2.2%] 1
Improvements ✅
(primary)
-0.9% [-0.9%, -0.9%] 1
Improvements ✅
(secondary)
-1.2% [-1.2%, -1.2%] 1
All ❌✅ (primary) -0.9% [-0.9%, -0.9%] 1

Cycles

Results (primary -2.3%, secondary -4.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)
- - 0
Improvements ✅
(primary)
-2.3% [-2.3%, -2.3%] 1
Improvements ✅
(secondary)
-4.0% [-4.0%, -4.0%] 1
All ❌✅ (primary) -2.3% [-2.3%, -2.3%] 1

Binary size

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

Bootstrap: 473.077s -> 474.182s (0.23%)
Artifact size: 390.10 MiB -> 390.15 MiB (0.01%)

@fmease fmease deleted the mv-var-to-dyn-buf-lints branch September 14, 2025 16:59
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. S-waiting-on-bors Status: Waiting on bors to run and complete tests. Bors will change the label on completion. T-compiler Relevant to the compiler team, which will review and decide on the PR/issue.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

6 participants