💥 BREAKING CHANGES
- cf8296f ecmascript: [BREAKING] Fold surrogate strings with JSStr constants (#27098) (Dunqing)
🚀 Features
🐛 Bug Fixes
- f4dac9e semantic: Separate hoisted vars from block type bindings (#27936) (limadog9)
- 9ec6617 minifier: Keep brackets on negative and non-finite numeric keys (#27855) (Yunus Ozen)
- 520a26e minifier: Keep the default in shorthand assignment targets (#28183) (waltu)
- def47b8 react-compiler: Keep manual memoization as written when its dependencies can't be honoured (#28101) (Dunqing)
- 704d8cf transformer_plugins: Keep the bare inject when references to it remain (#26965) (Bharadwaj Pendyala)
- 6d7b372 minifier: Handle sequence exprs when folding if to expr statement (#27939) (Armano)
- e3eca41 runtime: Align async iterator throw with Babel (#28059) (camc314)
- af0258d parser: Parse source imports named type (#28062) (camc314)
- 83633a7 parser: Parse escaped class field names after initializers (#28061) (camc314)
- 90c58ac parser: Parse postfix updates of sloppy
letidentifiers (#28060) (camc314) - 0e2934f codegen: Preserve default import names in source maps (#28058) (camc314)
- 09bdb80 minifier: Allow argument rewrite with with leading var assignments (#28056) (Armano)
- ebcdcd9 minifier: Preserve rest destructuring side effects (#27981) (camc314)
- 5c84098 semantic,linter: Report names with lone surrogates in enum and lint checks (#27991) (Dunqing)
- bd70a9b ecmascript: Use ECMAScript whitespace when folding
parseFloat/parseInt/trim(#27719) (Dunqing) - 4c0fa90 minifier,linter: Keep
deleteof constant members and later JSX keys (#27990) (Dunqing)
⚡ Performance
- 3493ce3 minifier: Reuse is_error_constructor and simplify substitute_global_new_expression (#28149) (Armano)
- a22c9f2 parser: Move annotation comment handling out of hot paths (#28139) (camc314)
- 1ed93af data_structures: Copy short strings without a memcpy call (#27953) (leaysgur)