Skip to content

Optimize nonstandard_macro_braces by 99.9683% [1.1b -> 351K]#16808

Open
blyxyas wants to merge 1 commit intorust-lang:masterfrom
blyxyas:perf-nonstandard_macro_braces
Open

Optimize nonstandard_macro_braces by 99.9683% [1.1b -> 351K]#16808
blyxyas wants to merge 1 commit intorust-lang:masterfrom
blyxyas:perf-nonstandard_macro_braces

Conversation

@blyxyas
Copy link
Copy Markdown
Member

@blyxyas blyxyas commented Apr 4, 2026

I know that we shouldn't move lints to pre-expansion, but nonstandard_macro_braces was taking up almost a 25% of the Clippy-exclusive runtime in wasmi-0.35.0, and moving it to pre-expansion lets us not bother as much with expansion data.


Previously, we had to get expansion data via outer_expn_data, which does atomic operations, SessionGlobals operations (so, locking threads), and was generally a very bumpy way of doing things. For example in wasmi we were calling scoped_tls::ScopedKey<rustc_span::SessionGlobals>::with<<rustc_span::hygiene::HygieneData>::with<rustc_span::hygiene::ExpnData, <rustc_span::hygiene::SyntaxContext>::outer_expn_data::{closure#0}>::{closure#0}, rustc_span::hygiene::ExpnData> 5,879,804 times. Thus locking the thread 11,759,608 times.


So personally I think that moving this lint to pre-expansion is worth.

changelog:[nonstandard_macro_braces]: Optimize by 99.97%

@blyxyas blyxyas added the G-performance-project Goal: For issues and PRs related to the Clippy Performance Project label Apr 4, 2026
@rustbot rustbot added the S-waiting-on-review Status: Awaiting review from the assignee but also interested parties label Apr 4, 2026
@rustbot
Copy link
Copy Markdown
Collaborator

rustbot commented Apr 4, 2026

r? @dswij

rustbot has assigned @dswij.
They will have a look at your PR within the next two weeks and either review your PR or reassign to another reviewer.

Use r? to explicitly pick a reviewer

Why was this reviewer chosen?

The reviewer was selected based on:

  • Owners of files modified in this PR: 7 candidates
  • 7 candidates expanded to 7 candidates
  • Random selection from Jarcho, dswij, llogiq, samueltardieu

@github-actions
Copy link
Copy Markdown

github-actions bot commented Apr 4, 2026

Lintcheck changes for efddb12

Lint Added Removed Changed
clippy::nonstandard_macro_braces 0 2 1

This comment will be updated if you push new changes

@blyxyas
Copy link
Copy Markdown
Member Author

blyxyas commented Apr 4, 2026

I didn't notice those lintcheck differences, I'll fix them

("writeln", ('(', ')')),
("format", ('(', ')')),
("format_args", ('(', ')')),
("vec", ('[', ']')),
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

1.95 will stabilize 3 macros, those should also be added here

  • assert_matches!: (
  • debug_assert_matches!: (
  • cfg_select: {

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

Labels

G-performance-project Goal: For issues and PRs related to the Clippy Performance Project S-waiting-on-review Status: Awaiting review from the assignee but also interested parties

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants