mirror of
https://github.com/oxc-project/oxc.git
synced 2026-09-14 19:36:11 +08:00
b6f1458dec
### 💥 BREAKING CHANGES -a33788east: [**BREAKING**] Group class heritage into `ClassHeritage` (#25360) (camc314) -5c5cdcdast: [**BREAKING**] Narrow `TSInterfaceHeritage::expression` to TSTypeName (#24360) (camc314) -6be314fast: [**BREAKING**] Remove duplicated `VariableDeclarator::kind` (#25319) (camc314) -44fd320ast: [**BREAKING**] Split TS external modules & Namespace Declarations (#25284) (camc314) ### 🚀 Features -9a37c41napi: Restructure React transform options (#25326) (Boshen) -b3c1b30allocator: Add `ArenaVec::push_mut` (#25338) (overlookmotel) ### 🐛 Bug Fixes -bbd6ed3codegen: Wrap string literal in parens after directives (#25435) (overlookmotel) -d07a293codegen: Preserve cast parentheses in conditional tests (#25115) (camc314) -8b7d441codegen: Preserve satisfies parentheses before bitwise operators (#25113) (camc314) -e0fb2d7minifier: Avoid unsafe return removal in labeled blocks (#25406) (Armano) -c49f4ceparser: Preserve terminal license comments (#25400) (camc314) -9d19ab3transform_react: Downgrade nonfatal compiler diagnostics (#25418) (Boshen) -937825creact_compiler: Disable exhaustive memo validation by default (#25417) (Boshen) -12937b3parser: Reject comma expressions in class fields (#25385) (Cameron) -7d8a9b5react_compiler: Preserve hook spans for React Refresh (#25393) (Boshen) -9e93ba6parser: Reset auto-accessor initializer context (#25384) (camc314) -cc2e28dparser: Reject trailing tokens in `Parser::parse_expression` (#25371) (camc314) -697c629minifier: Preserve Annex B labeled-function bindings in implicit-return rewrite (#25349) (Armano) -4d723caparser: Report TS1035 for quoted module names (#25305) (camc314) -0c9b980semantic: Report module declaration diagnostics (#25285) (camc314) -2a1058anapi: Omit parser header from WASI declarations (#25254) (camc314) ### ⚡ Performance -dd1430bsemantic: Avoid allocation in class overload check (#25440) (camc314) -e420816parser: Optimize trailing comma tracking (#25376) (camc314) -6529d1aminifier: Short-circuit scope check when alternate already determines result (#25318) (Armano) ### 📚 Documentation -fe111eballocator: Improve doc comments for `Arena` methods (#24922) (overlookmotel)
Oxc CFG
Control Flow Graph construction and analysis for JavaScript and TypeScript.
Overview
This crate provides data structures and algorithms for building and analyzing Control Flow Graphs (CFGs) from AST nodes. CFGs are essential for advanced static analysis, optimization, and understanding program flow.
Key Features
- CFG construction: Build control flow graphs from AST nodes
- Block-based representation: Organizes code into basic blocks
- Graph analysis: Traverse and analyze control flow patterns
- DOT export: Visualize CFGs using Graphviz dot format
- Visitor integration: Works with oxc visitor patterns
Architecture
Basic Blocks
The CFG organizes code into basic blocks - sequences of instructions with:
- Single entry point (first instruction)
- Single exit point (last instruction)
- No internal branches or jumps
Graph Structure
- Nodes: Basic blocks containing instructions
- Edges: Control flow between blocks (conditional, unconditional, exception)
- Entry/Exit: Special blocks for function entry and exit points
Analysis Applications
- Dead code elimination: Find unreachable blocks
- Data flow analysis: Track variable usage across control paths
- Loop detection: Identify back edges and loop structures
- Path analysis: Enumerate possible execution paths
The CFG integrates with semantic analysis to provide comprehensive program understanding.