crates_v0.140.0

oxc-project/oxccrates_v0.140.0Jul 14, 2026by github-actions[bot]

AI Summary

Core library release focusing on the React compiler and minifier. Introduces De Morgan's law optimization, memory tracking, and improvements to constant enum recording.

Key Highlights

  • React Compiler: Implemented `enableEmitHookGuards` codegen.
  • Minifier: Applied De Morgan's law to negated comparison chains.
  • Minifier: Drop write-only property assignments to unused bindings.
  • Features: Added `likely` and `unlikely` functions.

New Features

  • Minifier: Extract sequence expression from expressions
  • Minifier: Remove unreachable code after terminating statements
  • Data structures: Add `likely` and `unlikely` functions
  • React Compiler: Implement enableEmitHookGuards codegen
  • Minifier: Apply De Morgan's law to negated comparison chains

Full Release Notes

### 🚀 Features

- 5b20828 minifier: Extract sequence expression from expressions (#22003) (Armano)
- 616bfa2 minifier: Remove unreachable code after terminating statements (#24441) (Dunqing)
- ddab89a data_structures: Add `likely` and `unlikely` functions (#24368) (overlookmotel)
- a3a39f9 react_compiler: Implement enableEmitHookGuards codegen (#24329) (Boshen)
- b79eef7 minifier: Apply De Morgan's law to negated comparison chains in jump guards and loop tests (#24279) (Dunqing)
- 34ff7b4 minifier: Drop write-only property assignments to unused local bindings by default (#24112) (Dunqing)
- 1b829d8 semantic: Record const enums in EnumData (#24268) (Dunqing)
- ba0944c semantic: Add `Scoping::set_symbol_span` (#24221) (camc314)

### 🐛 Bug Fixes

- edf781d minifier: Keep reads of never-assigned uninitialized bindings (#24452) (Dunqing)
- 7d33363 minifier: Preserve guaranteed throws from class heritage evaluation (#24349) (Dunqing)
- 058a62f semantic: Track ambient contexts in `SemanticBuilder` (#24327) (camc314)
- 721eb0b transformer/decorator: Scope accessor class binding (#24330) (camc314)
- 1ebdce3 semantic: Allow reserved keywords in ambient declaration types (#24325) (camc314)
- 460176a track-memory-allocations: Exclude arena chunks from Sys allocs (#24292) (Dunqing)
- af4922b transformer: Clear lowered namespace redeclarations (#24300) (camc314)
- ffd2765 semantic: Mark declared computed `MethodDefinition`s as type references (#24296) (camc314)
- f17514b isolated-declarations: Emit const readonly fields as types (#24288) (camc314)
- 40f769d minifier: Make `__proto__` write tracking execution-order independent (#24280) (Dunqing)
- 6371fed transformer: Remove stale enum member bindings (#24272) (camc314)
- f05dfab transformer: Correct symbol flags for lowered namespaces (#24271) (Dunqing)
- 84eeb55 transformer: Correct symbol flags for lowered enums (#24269) (Dunqing)
- c3057da transformer: Preserve generated class binding spans (#24220) (camc314)
- 8260096 transformer: Correct span for lowered namespace symbol (#24222) (camc314)
- 42d00d3 semantic: Mark declared class heritage as type references (#24237) (camc314)
- 588d997 semantic: Mark TS `PropertyDefinition`s computed fields as type references (#24233) (camc314)
- 9b95632 semantic: Mark computed method keys in `TSMethodSignature`s as type references (#24232) (camc314)

### ⚡ Performance

- 48911ec react_compiler: Use FxHashSet for membership-only block sets (#24486) (Boshen)
- 1e3e626 react_compiler: Reduce allocations in reactive-places and mutation-aliasing passes (#24476) (Boshen)
- e86e0d8 react_compiler: Avoid copying the aliasing fixpoint's abstract state (#24117) (Marius Schulz)
- 5b26643 transformer_plugins: Dispatch global defines by trailing name (#23666) (Boshen)
- dce0f29 react_compiler: Replace all compiled functions in a single AST walk (#24403) (Boshen)
- f85f0d8 ast: Delegate inherited enum variants in clone_in and estree derives (#23555) (Boshen)
- 3ff0234 allocator: Remove `unwrap` from `ReplaceWith` (#24365) (overlookmotel)
- ab22e80 transformer: Fix Rust 1.97 performance regression (#24354) (camc314)
- b47585c parser: Use `ReplaceWith` instead of `TakeIn` (#24018) (overlookmotel)
- b227a06 minifier: Use `ReplaceWith` instead of `TakeIn` (#24017) (overlookmotel)