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 NAPI
Node.js Native API bindings for oxc tools.
Overview
This crate provides Node.js bindings for oxc tools, enabling JavaScript/TypeScript applications to use oxc's high-performance parsing, linting, and transformation capabilities through native Node.js modules.
Key Features
- Native performance: Direct access to oxc's Rust implementation
- UTF-16 compatibility: Automatic span conversion for JavaScript strings
- Error handling: Proper JavaScript error propagation
- Comment preservation: Maintains comments during processing
- Type safety: TypeScript definitions for all APIs
Architecture
UTF-8 to UTF-16 Conversion
JavaScript uses UTF-16 string encoding, while Rust uses UTF-8. This crate handles the conversion:
- Span conversion: Updates all source positions to UTF-16 offsets
- Comment handling: Preserves comment positions during conversion
- Error mapping: Ensures error positions are correct in JavaScript
Node.js Integration
The bindings are designed for:
- npm packages: Used by
@oxc-project/npm packages - Build tools: Integration with Webpack, Vite, and other bundlers
- Editor support: Language server and editor extension features
- CLI tools: Command-line interfaces for Node.js environments
Error Handling
Provides JavaScript-friendly error handling:
- OxcError: Rust errors converted to JavaScript exceptions
- Diagnostic integration: Rich error messages with source context
- Stack traces: Proper error propagation to JavaScript
Performance Considerations
- Zero-copy: Minimizes data copying between Rust and JavaScript
- Efficient conversion: Optimized UTF-8 to UTF-16 conversion
- Memory management: Proper cleanup of Rust resources
- Async support: Non-blocking operations where appropriate
This crate enables the broader JavaScript ecosystem to benefit from oxc's performance while maintaining familiar JavaScript APIs.