mirror of
https://github.com/oxc-project/oxc.git
synced 2026-09-14 19:36:11 +08:00
60fa13878c
### 💥 BREAKING CHANGES -66744f0parser: [**BREAKING**] Rename `panicked` to `fatal_error` in `ParserReturn` (#26382) (overlookmotel) -2c9a947parser: [**BREAKING**] Reduce `MAX_LEN` to 256 bytes below `u32::MAX` (#26352) (overlookmotel) ### 🚀 Features -32bdc5ballocator: Construct `ArenaHashSet` with any `Default` hasher (#26372) (Dunqing) -a17de58minifier: Process of return/throw in non last position and fix async * inlining (#26214) (Armano) -bfb4c57parser: Distinguish unapplied no-side-effects comments (#26120) (碳苯 Carbon) -1d9b9d3ast: Add `GetNodeId` trait (#26145) (camc314) ### 🐛 Bug Fixes -b156333codegen: Order accessibility before abstract on accessors (#26392) (camc314) -116c8b8transformer/class-properties: Keep private methods in class-expression scope (#26308) (Changsu Seong) -1400a0fparser: Require a string source after `export ... from` (#26389) (camc314) -2da73b7codegen: Print matching quoted import names as identifiers (#26386) (camc314) -0a81d29codegen: Preserve private-in left operand precedence (#26383) (camc314) -9a02337parser: Correctly round large nondecimal literals (#26379) (camc314) -3d95477transformer: Gate async-only rewrites by owning transform (#26326) (Dunqing) -f45a9eetransformer: Limit arguments capture to lowered async functions (#26317) (Dunqing) -789969ftransformer: Gate this capture by owning async transform (#26227) (Dunqing) -affeb14minifier: Mangle class private members in Node API (#26118) (碳苯 Carbon) -8b35abdsemantic: Detect duplicate private class elements (#26361) (camc314) -457ed57semantic: Reject await and yield in rest parameter defaults (#26359) (camc314) -4b89c7bsemantic: Reject jumps across arrow functions (#26357) (camc314) -c966acaparser: Do not omit `<` token opening type argument list (#26328) (overlookmotel) -f07dca5ast_visit: Add the trimmed prefix length to translation table offsets (#26173) (Bharadwaj Pendyala) -3ab9bd1parser: Do not re-lex template substitution tail after fatal error (#26230) (overlookmotel) -07851b9parser: Fix debug assert failure when lexer error with tokens enabled (#26229) (overlookmotel) -00dea7aallocator: Gate `Allocator::data_end_ptr` behind fixed_size feature (#26248) (camc314) -853ffabecmascript: Avoid `charAt` panic on 32-bit (#26244) (camc314) -34feccbruntime: Remove stale regenerator exports (#26243) (camc314) ### ⚡ Performance -34a242eminifier: Use `Ident` for property mangler (#26334) (sapphi-red) -5303f5cminifier: Unify merging of last expression into target sequence (#26264) (Armano) -2ca7d29minifier: Consume nodes in minimize_statements in reverse order (#26258) (Armano) -d2354b4mangler: Use `Ident` for variable names to keep (#26333) (sapphi-red) -5b3e335minifier: Use `Ident` instead of `Str` in `KeepVar` (#26332) (sapphi-red) -51366fbminifier: Use `IdentHashSet` in `PrivateMemberUsageStack` (#26331) (sapphi-red) -d19c42aminifier: Merge nested if stmt in place instead of creating dummies (#26351) (Armano) -356def6parser: Shrink annotation comment ranges (#26356) (overlookmotel) -a5be474parser: Shave instruction off `parse_jsx_element_name` (#26355) (overlookmotel) -9780663parser: Remove fatal error guard from `parse_jsx_element_name` (#26354) (overlookmotel) -766e12fparser: Remove `token` field from `LexerCheckpoint` (#26350) (overlookmotel) ### 📚 Documentation -d4b4e61transformer: Document ES2015 target floor (#26378) (Dunqing) -67dd054ast_visit: Correct out-of-date comments on `Utf8ToUtf16` converter (#26285) (overlookmotel) -a8ed2a7minifier: Fix stale validation instructions (#26251) (camc314)
Oxc AST Macros
Procedural macros for generating AST-related code and ensuring memory layout consistency.
Overview
This crate provides procedural macros that generate boilerplate code for AST nodes, ensuring consistent memory layout and providing derived traits automatically.
Key Features
#[ast]attribute: Marks types as AST nodes and generates required traits- Memory layout control: Ensures
#[repr(C)]for predictable memory layout - Trait derivation: Automatically derives common traits like
Debug,Clone, etc. - Code generation: Reduces boilerplate and ensures consistency across AST types
What the #[ast] Macro Does
- Adds
#[repr(C)]: Ensures predictable memory layout across platforms - Marker for tooling: Identifies types as AST nodes for code generation tools
- Trait derivation: Automatically implements common traits
- Consistency: Ensures all AST nodes follow the same patterns
Architecture
This macro system enables:
- Maintainable AST: Reduces boilerplate across hundreds of AST types
- Consistent layout: Critical for performance and correctness
- Tool integration: Allows
oxc_ast_toolsto generate visitor code - Type safety: Ensures all AST nodes have required traits
The macros are designed to be transparent and generate minimal, efficient code.