crates_v0.141.0
oxc-project/oxccrates_v0.141.0Jul 21, 2026by github-actions[bot]
AI Summary
Core library release featuring breaking changes to AST structures, splitting `MetaProperty` and moving `IdentBuildHasher`. Includes significant React compiler enhancements and minification optimizations.
Key Highlights
- Breaking: `MetaProperty` split into `ImportMeta` and `NewTarget`.
- Breaking: `IdentBuildHasher` moved to `oxc_str` crate.
- React Compiler: Added context notes for strict assignments.
- Minifier: Improved logic for arithmetic folding and unreachable code removal.
Breaking Changes
- Move `IdentBuildHasher` to `oxc_str` crate
- Split `MetaProperty` into `ImportMeta` and `NewTarget`
New Features
- Allocator: Add `Vec::from_raw_parts_in`
- Semantic: Add context notes for strict assignments
- Data structures: Add `implements!` macro
- Data structures: Add `const_str_eq` function
- Semantic: Add context notes for reserved keyword diagnostic
Full Release Notes
### 💥 BREAKING CHANGES - 5293431 str: [**BREAKING**] Move `IdentBuildHasher` to `oxc_str` crate (#24717) (overlookmotel) - 54cc121 ast: [**BREAKING**] Split `MetaProperty` into `ImportMeta` and `NewTarget` (#24557) (camc314) ### 🚀 Features - 87823d0 minifier: Merge combined assign expression in conditional expression (#24707) (sapphi-red) - 03a54c9 minifier: Merge assign expression against member expression in conditional expression (#24706) (sapphi-red) - effd3c8 allocator: Add `Vec::from_raw_parts_in` (#24732) (overlookmotel) - ddacf61 semantic: Add context notes for strict assignments (#24728) (camc314) - 7e9b84a data_structures: Add `implements!` macro (#24721) (overlookmotel) - 39e141b data_structures: Add `const_str_eq` function (#24720) (overlookmotel) - cc3d17f semantic: Add context notes for reserved keyword diagnostic (#24715) (camc314) - 4c71560 parser: More friendly error for spread element in dynamic imports (#24705) (sapphi-red) - 7b045cd minfier: Drop last break from last switch case (#24673) (Armano) - 7d3c178 minifier: Remove unreachable recursive functions (#24125) (Dunqing) - 94f99b3 ast: Allow `NONE` to be passed to AST builder methods where `Option<ArenaVec>` is expected (#24629) (overlookmotel) - 77230c5 ast: Accept arrays for `ArenaVec` params of AST builder methods (#24621) (overlookmotel) - f08b152 allocator: Implement `FromIn` for array to `Vec` conversion (#24620) (overlookmotel) - 2338c13 track-memory-allocations: Track heap deallocs, alloc bytes, and peak growth (#24619) (Boshen) - 7aa4739 syntax,transformer: Move JSX entity decoder to `oxc_syntax` (#24617) (camc314) - 2b097c4 str: Export `Str` as `ArenaStr` (#24604) (overlookmotel) - 3acf4c1 minifier: Expand switch optimiation to remove empty cases (#24520) (Armano) - 129b759 parser: Improve diagnostics for unparenthesized LHS on exponential expr (#24569) (camc314) - 4d0c601 minifier: Fold arithmetic over undefined and null operands (#24485) (Dunqing) - 91541dd minifier: Drop empty switch statements (#24527) (Armano) - d05224d ast_visit: Generate VisitJs visitor that skips TypeScript type-space (#24499) (Boshen) - 3d22307 parser: Add `ParseOptions::enable_ident_hashes` (#24491) (Boshen) ### 🐛 Bug Fixes - 61e02bf minifier: Avoid reordering this before super (#24755) (Dunqing) - 79e6d77 minifier: Preserve RegExp feature detection (#24712) (Dunqing) - 47ddedf semantic: Allow arguments in ambient declarations (#24758) (camc314) - 9f3e300 react_compiler: Preserve aliasing diagnostic locations (#24757) (Boshen) - 4b81f4d react_compiler: Honor default suppressions (#24747) (Boshen) - 6cc4a34 codegen: Wrap negative BigInt literal base of `**` in parentheses (#23621) (Jerry Zhao) - d85276c minifier: Avoid incorrect logical assignment transformation when base object may be mutated (#24718) (sapphi-red) - 99b1dc4 isolated-declarations: Separate static accessors (#24716) (camc314) - 76ec104 semantic: Resolve import-equals namespaces (#22696) (camc314) - 0ffa88e str: Enable `hashbrown` feature `inline-more` (#24719) (overlookmotel) - 0e9b460 isolated-declarations: Normalize accessor keys (#24690) (Cameron) - 64c2241 minifier: Align class heritage removal with assumptions (#24533) (Dunqing) - 48b59f4 parser: Span ambient generator diagnostics (#24711) (camc314) - e750a82 ecmascript: Fix false negative for may_have_side_effects on dynamic property access (#24709) (sapphi-red) - f145d73 minifier: Guard reordered identifier reads (#24698) (Dunqing) - a2ef382 isolated-declarations: Reject `window.Symbol` as global symbol reference (#24689) (camc314) - b1bcf72 minifier: Invalidate facts for redeclared bindings (#24658) (Dunqing) - 921b834 minifier: Don't treat a conditionally-assigned var as write-once (#24650) (Dunqing) - 061af1f minifier: Avoid stale pure function summaries (#24636) (Dunqing) - 40c2f43 allocator: `Vec::from_array_in` do not allocate zero-length array (#24628) (overlookmotel) - 70994ae codegen: Preserve comments before expression operands (#24510) (Dunqing) - 7b4baff parser: Reject new import member access (#23459) (camc314) - 128b385 minifier: Clippy warning with no-debug-assertions (#24547) (camc314) - 8421feb parser: Use first `as` span for imported name (#24537) (leaysgur) - c517aa0 parser: Reject invalid accessor assertions (#24504) (camc314) ### ⚡ Performance - 3fe5c87 react_compiler: Transform reactive blocks in place (#24703) (Boshen) - 2e24c7e allocator: Speed up `CloneIn` for `Vec` and `Box<[T]>` (#24733) (overlookmotel) - 884d9eb parser: Pre-size cover-grammar assignment target buffers (#24683) (Boshen) - d3f07a0 diagnostics: Box OxcDiagnosticInner to reduce binary size (#24665) (Boshen) - bcc9de0 parser: Defer diagnostic creation until parse exit (#24663) (Boshen) - c35d8ab allocator: Mark `ReplaceWith` panic path cold (#24515) (camc314) - ba65790 semantic, allocator: Branchless `clone_in` for semantic IDs (#24564) (overlookmotel) - 747feec parser: Build AST nodes with the AST builder instead of cloning (#24540) (Boshen) - ba35a0d react_compiler: Use IndexVec for dense id-keyed maps (#24549) (Boshen) - b685062 react_compiler: Keep small hot-path collections inline (#24514) (Marius Schulz) - a149e95 transformer: Outline rare expression exits (#24512) (camc314) - 7808a6e react_compiler: Make aliasing effects cheap to intern and clone (#24506) (Marius Schulz) - 3a36f2a react_compiler: Store AbstractValue reasons as a u16 bitmask (#24480) (Boshen) - 1c96753 react_compiler: Use FxHashMap for the lookup-only aliasing node map (#24490) (Boshen) ### 📚 Documentation - cef20b5 napi/parser: Remove erroneous comment (#24730) (overlookmotel)