Skip to content

Migration of LintDiagnostic - part 5#153152

Merged
rust-bors[bot] merged 8 commits intorust-lang:mainfrom
GuillaumeGomez:migrate-diag
Mar 3, 2026
Merged

Migration of LintDiagnostic - part 5#153152
rust-bors[bot] merged 8 commits intorust-lang:mainfrom
GuillaumeGomez:migrate-diag

Conversation

@GuillaumeGomez
Copy link
Member

@GuillaumeGomez GuillaumeGomez commented Feb 26, 2026

View all comments

Part of #153099.

With this, rust_lint is finally done, although the change of API of decorate_builtin_lint impacted a few other crates, although minimal, still needed to be mentioned.

r? @JonathanBrouwer

@rustbot rustbot added 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-rustdoc Relevant to the rustdoc team, which will review and decide on the PR/issue. labels Feb 26, 2026
@rustbot
Copy link
Collaborator

rustbot commented Feb 26, 2026

JonathanBrouwer is currently at their maximum review capacity.
They may take a while to respond.

@JonathanBrouwer
Copy link
Contributor

@bors try @rust-timer queue

@rust-timer

This comment has been minimized.

@rust-bors

This comment has been minimized.

rust-bors bot pushed a commit that referenced this pull request Feb 26, 2026
Migration of LintDiagnostic - part 5
@rustbot rustbot added the S-waiting-on-perf Status: Waiting on a perf run to be completed. label Feb 26, 2026
@rustbot rustbot 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-review Status: Awaiting review from the assignee but also interested parties. labels Feb 26, 2026
@GuillaumeGomez
Copy link
Member Author

Simplified EmitDiag and removed duplicated code. Keeping the last item for after this PR is merged as it's already big enough.

@rust-log-analyzer

This comment has been minimized.

@rust-bors
Copy link
Contributor

rust-bors bot commented Feb 26, 2026

☀️ Try build successful (CI)
Build commit: 0c55ed2 (0c55ed2450ed4df93bd1cbfbca3f3e31a391a171, parent: 25396cf54981afd1fa5a7406658b45033106a0d3)

@rust-timer

This comment has been minimized.

@rust-timer
Copy link
Collaborator

Finished benchmarking commit (0c55ed2): comparison URL.

Overall result: ❌ regressions - please read the text below

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.

Next Steps: If you can justify the regressions found in this try perf run, please do so in sufficient writing along with @rustbot label: +perf-regression-triaged. If not, please fix the regressions and do another perf run. If its results are neutral or positive, the label will be automatically removed.

@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)
2.3% [0.5%, 3.8%] 13
Improvements ✅
(primary)
- - 0
Improvements ✅
(secondary)
- - 0
All ❌✅ (primary) - - 0

Max RSS (memory usage)

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

Cycles

Results (primary -6.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)
- - 0
Regressions ❌
(secondary)
4.0% [3.7%, 4.7%] 3
Improvements ✅
(primary)
-6.1% [-6.1%, -6.1%] 1
Improvements ✅
(secondary)
-3.0% [-3.0%, -3.0%] 1
All ❌✅ (primary) -6.1% [-6.1%, -6.1%] 1

Binary size

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

Bootstrap: 481.72s -> 480.975s (-0.15%)
Artifact size: 395.60 MiB -> 395.80 MiB (0.05%)

@rustbot rustbot added perf-regression Performance regression. and removed S-waiting-on-perf Status: Waiting on a perf run to be completed. labels Feb 27, 2026
@JonathanBrouwer
Copy link
Contributor

If not too annoying I'd like to see the perf regression fixed as well

@JonathanBrouwer
Copy link
Contributor

JonathanBrouwer commented Mar 2, 2026

@bors r+ rollup=never
I've spent a few hours locally debugging this perf regression, it seems to be caused by decorate_builtin_lint being called if the lint level is Allow, whereas previously it would quick-exit before this already. I think this is hard to prevent, and the regression is small enough (2% on a secondary test that literally does nothing other than emit allowed lints) that it's fine to accept it.

I've added taking a further look at this to the TODO list of the tracking issue, I have some ideas but don't have time right away to try those out

@rust-bors
Copy link
Contributor

rust-bors bot commented Mar 2, 2026

📌 Commit 3bc1950 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-author Status: This is awaiting some action (such as code changes or more information) from the author. labels Mar 2, 2026
@fmease
Copy link
Member

fmease commented Mar 2, 2026

IIUC this PR basically undoes my PR #125410 (its perf vs this PR's perf). It's very intentional that these were decorated lazily.

Why can't the decorating keep happening lazily for decorate_builtin_lint under the new API you're working towards?

@JonathanBrouwer
Copy link
Contributor

JonathanBrouwer commented Mar 2, 2026

That PR's perf had effect on primary benchmarks, while this one only regresses the secondary benchmark, so it's definitely not fully undoing your work.

It's not easy because the new API we're working towards making lint_level take a impl Diagnostic for consistency with errors & warnings, which is harder to properly make lazy. I still think it's possible, one of my ideas is a custom implementation of Diagnostic for BuiltinDiag, but I'd prefer to do that in a separate PR since this one is already on the larger size.

I like perf just as much as you, and I do want to fix this, just don't think the perf regression is bad enough that it has to be done now

@rustbot
Copy link
Collaborator

rustbot commented Mar 2, 2026

This PR was rebased onto a different main commit. Here's a range-diff highlighting what actually changed.

Rebasing is a normal part of keeping PRs up to date, so no action is needed—this note is just to help reviewers.

@JonathanBrouwer
Copy link
Contributor

^ Rebased to solve merge conflicts

@JonathanBrouwer
Copy link
Contributor

@bors try cancel
@bors try

@rust-bors
Copy link
Contributor

rust-bors bot commented Mar 2, 2026

Try build cancelled. Cancelled workflows:

@rust-bors

This comment has been minimized.

rust-bors bot pushed a commit that referenced this pull request Mar 2, 2026
Migration of LintDiagnostic - part 5
Copy link
Member Author

@GuillaumeGomez GuillaumeGomez left a comment

Choose a reason for hiding this comment

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

Github doesn't allow to approve your own PR but your changes look good to me, thanks!

View changes since this review

@rust-bors
Copy link
Contributor

rust-bors bot commented Mar 3, 2026

☀️ Try build successful (CI)
Build commit: e2bd8b9 (e2bd8b9142745e8d99284919273adec4edb2d3a9, parent: 8ddf4ef064fb702fed0f3d239ec8d0bac607484e)

@rust-timer

This comment has been minimized.

@rust-timer
Copy link
Collaborator

Finished benchmarking commit (e2bd8b9): comparison URL.

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

Max RSS (memory usage)

Results (primary 1.9%, secondary -0.1%)

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

mean range count
Regressions ❌
(primary)
2.5% [1.7%, 3.4%] 4
Regressions ❌
(secondary)
3.2% [3.2%, 3.2%] 1
Improvements ✅
(primary)
-0.7% [-0.7%, -0.7%] 1
Improvements ✅
(secondary)
-1.8% [-2.3%, -1.2%] 2
All ❌✅ (primary) 1.9% [-0.7%, 3.4%] 5

Cycles

Results (secondary 4.9%)

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)
4.9% [3.4%, 6.4%] 2
Improvements ✅
(primary)
- - 0
Improvements ✅
(secondary)
- - 0
All ❌✅ (primary) - - 0

Binary size

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

Bootstrap: 480.113s -> 479.022s (-0.23%)
Artifact size: 396.96 MiB -> 394.98 MiB (-0.50%)

@rustbot rustbot removed S-waiting-on-perf Status: Waiting on a perf run to be completed. perf-regression Performance regression. labels Mar 3, 2026
@JonathanBrouwer
Copy link
Contributor

@bors r+ rollup

@rust-bors
Copy link
Contributor

rust-bors bot commented Mar 3, 2026

📌 Commit 8a824ee 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-author Status: This is awaiting some action (such as code changes or more information) from the author. labels Mar 3, 2026
rust-bors bot pushed a commit that referenced this pull request Mar 3, 2026
…uwer

Rollup of 12 pull requests

Successful merges:

 - #152941 (prefer actual ABI-controling fields over target.abi when making ABI decisions)
 - #153227 (Don’t report missing fields in struct exprs with syntax errors.)
 - #153265 (Clarified doc comments + added tests confirming current behavior for intersperse/intersperse_with)
 - #152966 (Migrate 11 tests from tests/ui/issues to specific directories)
 - #153003 (rustdoc: make `--emit` and `--out-dir` mimic rustc)
 - #153034 (Remove unhelpful hint from trivial bound errors)
 - #153152 (Migration of LintDiagnostic - part 5)
 - #153177 (disable the ptr_fragment_in_final test on s390x)
 - #153221 (Add release notes for 1.94.0)
 - #153279 (feat: Provide an '.item_kind()' method on ItemEnum)
 - #153297 (Update the name of the Hermit operating system)
 - #153309 (Cleanup of c-variadic link test)
@rust-bors rust-bors bot merged commit 4a56a45 into rust-lang:main Mar 3, 2026
12 checks passed
@rustbot rustbot added this to the 1.96.0 milestone Mar 3, 2026
rust-timer added a commit that referenced this pull request Mar 3, 2026
Rollup merge of #153152 - GuillaumeGomez:migrate-diag, r=JonathanBrouwer

Migration of LintDiagnostic - part 5

Part of #153099.

With this, `rust_lint` is finally done, although the change of API of `decorate_builtin_lint` impacted a few other crates, although minimal, still needed to be mentioned.

r? @JonathanBrouwer
@fmease
Copy link
Member

fmease commented Mar 3, 2026

Thanks a bunch for addressing the perf regression, @JonathanBrouwer 🙏❤️

@GuillaumeGomez GuillaumeGomez deleted the migrate-diag branch March 3, 2026 13:34
@GuillaumeGomez GuillaumeGomez changed the title Migration of LintDiagnostic - part 5 Migration of LintDiagnostic - part 5 Mar 3, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

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. T-rustdoc Relevant to the rustdoc 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