mirror of
https://github.com/astral-sh/ruff.git
synced 2025-10-01 06:11:43 +00:00

## Summary This PR fixes the performance degradation introduced in https://github.com/astral-sh/ruff/pull/6345. Instead of using the generic `Nodes` structs, we now use separate `Statement` and `Expression` structs. Importantly, we can avoid tracking a bunch of state for expressions that we need for parents: we don't need to track reference-to-ID pointers (we just have no use-case for this -- I'd actually like to remove this from statements too, but we need it for branch detection right now), we don't need to track depth, etc. In my testing, this entirely removes the regression on all-rules, and gets us down to 2ms slower on the default rules (as a crude hyperfine benchmark, so this is within margin of error IMO). No behavioral changes.
22 lines
372 B
Rust
22 lines
372 B
Rust
pub mod analyze;
|
|
mod binding;
|
|
mod context;
|
|
mod definition;
|
|
mod expressions;
|
|
mod globals;
|
|
mod model;
|
|
mod reference;
|
|
mod scope;
|
|
mod star_import;
|
|
mod statements;
|
|
|
|
pub use binding::*;
|
|
pub use context::*;
|
|
pub use definition::*;
|
|
pub use expressions::*;
|
|
pub use globals::*;
|
|
pub use model::*;
|
|
pub use reference::*;
|
|
pub use scope::*;
|
|
pub use star_import::*;
|
|
pub use statements::*;
|