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 ESTree
ESTree compatibility layer for serialization and interoperability.
Overview
This crate provides compatibility with the ESTree AST specification, primarily for serialization purposes. It enables oxc AST nodes to be serialized to and from JSON in ESTree format, facilitating interoperability with other JavaScript tools.
Key Features
- ESTree compatibility: Convert oxc AST to/from standard ESTree format
- Serialization support: JSON serialization/deserialization via serde
- Tool interoperability: Enable integration with ESTree-based tools
- Optional feature: Only enabled when
serializefeature is active
Usage
Architecture
ESTree Specification
ESTree is a community standard for representing JavaScript AST nodes. This crate ensures oxc's AST can be represented in this standard format while maintaining compatibility with the broader JavaScript tooling ecosystem.
Design Principles
- Compatibility: Full compatibility with ESTree specification
- Optional overhead: Only included when serialization is needed
- Type safety: Maintains Rust's type safety during conversion
- Performance: Efficient serialization with minimal overhead
Use Cases
- IDE integration: Language servers communicating via JSON
- Tool interoperability: Working with Babel, ESLint, and other ESTree tools
- Data exchange: Transferring AST data between different systems
- Debugging: Human-readable AST representation
When the serialize feature is disabled, this crate provides only a placeholder trait to support derive macros without overhead.