sapphi-red
86b6219d26
feat(mangler): use characters in the order of their likely frequency ( #8771 )
...
Just noticed that we can use a static list here. I think this has no downsides. To have better compression, we can actually count the characters, but I guess there won't be much difference normally.
2025-01-29 02:20:44 +00:00
oxc-bot
2fb08b9e9c
release(crates): v0.48.1 ( #8738 )
...
## [0.48.1] - 2025-01-26
### Features
- b7f13e6 ast: Implement utf8 to utf16 span converter (#8687 ) (Boshen)
- 6589c3b mangler: Reuse variable names (#8562 ) (翠 / green)
- 29bd215 minifier: Minimize `Infinity.toString(radix)` to `'Infinity'`
(#8732 ) (Boshen)
- e0117db minifier: Replace `const` with `let` for non-exported
read-only variables (#8733 ) (sapphi-red)
- 9e32f55 minifier: Evaluate `Math.sqrt` and `Math.cbrt` (#8731 )
(sapphi-red)
- 360d49e minifier: Replace `Math.pow` with `**` (#8730 ) (sapphi-red)
- 2e9a560 minifier: `NaN.toString(radix)` is always `NaN` (#8727 )
(Boshen)
- cbe0e82 minifier: Minimize `foo(...[])` -> `foo()` (#8726 ) (Boshen)
- e9fb5fe minifier: Dce pure expressions such as `new Map()` (#8725 )
(Boshen)
### Bug Fixes
- 0944758 codegen: Remove parens from `new (import(''), function() {})`
(#8707 ) (Boshen)
- 33de70a mangler: Handle cases where a var is declared in a block scope
(#8706 ) (翠 / green)
- d982cdb minifier: `Unknown.fromCharCode` should not be treated as
`String.fromCharCode` (#8709 ) (sapphi-red)
- e7ab96c transformer/jsx: Incorrect `isStaticChildren` argument for
`Fragment` with multiple children (#8713 ) (Dunqing)
- 3e509e1 transformer/typescript: Enum merging when same name declared
in outer scope (#8691 ) (branchseer)
### Performance
- dc0b0f2 manger: Remove useless `tmp_bindings` (#8735 ) (Dunqing)
- e472ced mangler: Optimize handling of collecting lived scope ids
(#8724 ) (Dunqing)
- 8587965 minifier: Normalize `undefined` to `void 0` before everything
else (#8699 ) (Boshen)
### Refactor
- 58002e2 ecmascript: Remove the lifetime annotation on
`MayHaveSideEffects` (#8717 ) (Boshen)
- 10e5920 linter: Move finishing default diagnostic message to
`GraphicalReporter` (#8683 ) (Sysix)
- 52a37d0 mangler: Simplify initialization of `slots` (#8734 ) (Dunqing)
- 6bc906c minifier: Allow mutating arguments in methods called from
`try_fold_known_string_methods` (#8729 ) (sapphi-red)
- bf8be23 minifier: Use `Ctx` (#8716 ) (Boshen)
- 0af0267 minifier: Side effect detection needs symbols resolution
(#8715 ) (Boshen)
- 32e0e47 minifier: Clean up `Normalize` (#8700 ) (Boshen)
- c792068 semantic: Simplify `ScopeTree::iter_bindings` (#8723 )
(Dunqing)
### Testing
- 03229c5 minifier: Fix broken tests (#8722 ) (Boshen)
Co-authored-by: Boshen <1430279+Boshen@users.noreply.github.com>
2025-01-26 22:20:13 +08:00
翠 / green
6589c3bbb3
feat(mangler): reuse variable names ( #8562 )
...
Changed the mangler to reuse variable names where possible.
This will reduce the code size as shorter variable names can be used in
more places. But requires global information and limits parallelism in a
single file and requires more memory.
---------
Co-authored-by: Boshen <boshenc@gmail.com>
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
2025-01-25 14:00:24 +08:00
oxc-bot
8a72b8ecc7
release(crates): v0.48.0 ( #8686 )
...
## [0.48.0] - 2025-01-24
- 54d0fac span: [**BREAKING**] Remove `PartialEq` impl for `&Atom`
(#8642 ) (overlookmotel)
### Features
- 2a2ad53 allocator: Add `Allocator::capacity` and `used_bytes` methods
(#8621 ) (overlookmotel)
- 6801c81 allocator: Add `Allocator::new` and `with_capacity` methods
(#8620 ) (overlookmotel)
- 99607d3 codegen: Print comments in `TSTypeLiteral` (#8679 ) (Boshen)
- 4ae568e linter: Add DiagnosticResult to the Reporters for receiving a
sub part result (#8666 ) (Alexander S.)
- 343690e minifier: Replace `Number.*_SAFE_INTEGER`/`Number.EPSILON`
(#8682 ) (sapphi-red)
- 0c5bb30 minifier: Replace
`Number.POSITIVE_INFINITY`/`Number.NEGATIVE_INFINITY`/`Number.NaN`
(#8681 ) (sapphi-red)
- 835b258 minifier: Compress `typeof foo === 'object' && foo !== null`
to `typeof foo == 'object' && !!foo` (#8638 ) (sapphi-red)
- 2bcbed2 minifier: Compress `(a = b) === null || a === undefined` to
`(a = b) == null` (#8637 ) (sapphi-red)
### Bug Fixes
- 40316af linter: Fix github `endColumn` output (#8647 ) (Alexander S.)
- 883d25b minifier: Keep esm in dce (#8677 ) (Boshen)
- 878ce10 minifier: `void 0` equals to `undefined` (#8673 ) (Boshen)
- ba201a6 minifier: Remove "non esbuild optimizations" which is
incorrect (#8668 ) (Boshen)
- 8c8b5fa minifier: Avoid minifing `String(a)` into `"" + a` for symbols
(#8612 ) (翠 / green)
- 4ff6e85 minifier: Remove expression statement `void 0` (#8602 )
(Boshen)
- 93d643e minifier: Keep side effects when folding const conditional
exprs (#8591 ) (camc314)
- 178c232 parser: Parse `intrinsic` TS keyword (#8627 ) (Kevin Deng 三咲智子)
- 48717ab parser: Parse `true` as `TSLiteralType` (#8626 ) (Kevin Deng
三咲智子)
- d1c5dc4 semantic: Fix const assertions in `UnresolvedReferencesStack`
(#8653 ) (overlookmotel)
### Performance
- 787aaad allocator: Make `String` non-drop (#8617 ) (overlookmotel)
- d966e0a codegen: Do not check for comments if turned off (#8598 )
(Boshen)
- 3fa87ff lexer: Peak 2 bytes after `!` (#8662 ) (Boshen)
- 9953ac7 minifier: Add `LatePeepholeOptimizations` (#8651 ) (Boshen)
- 00dc63f minifier: Only substitute typed array constructor once (#8649 )
(Boshen)
- 3e19e4e minifier: Remove the useless empty statement removal code in
statement fusion (#8646 ) (Boshen)
- 5b3c412 minifier: Only run optimizations on local changes (#8644 )
(Boshen)
### Documentation
- c1d243b allocator: Improve docs for `Allocator` (#8623 )
(overlookmotel)
- 01a5e5d allocator: Improve docs for `HashMap` (#8616 ) (overlookmotel)
- 87568a1 allocator: Reformat docs (#8615 ) (overlookmotel)
- 3be0392 lexer: Fix doc comment (#8664 ) (overlookmotel)
- 5029547 semantic: Fix and reformat doc comments (#8652 )
(overlookmotel)
### Refactor
- ae8db53 allocator: Move `Allocator` into own module (#8656 )
(overlookmotel)
- 0f85bc6 allocator: Reduce repeat code to prevent `Drop` types in arena
(#8655 ) (overlookmotel)
- de76eb1 allocator: Reorder `Box` methods (#8654 ) (overlookmotel)
- 997859c ast: Align `#[estree(via)]` behavior (#8599 ) (sapphi-red)
- db863a3 codegen: Use `Stack` for `binary_expr_stack` (#8663 ) (Boshen)
- 8cce69a codegen: Remove `match_member_expression` (#8597 ) (Boshen)
- a3dc4c3 crates: Clean up snapshot files (#8680 ) (Boshen)
- e66da9f isolated_declarations, linter, minifier, prettier, semantic,
transformer: Remove unnecessary `ref` / `ref mut` syntax (#8643 )
(overlookmotel)
- 23b49a6 linter: Use `cow_to_ascii_lowercase` instead
`cow_to_lowercase` (#8678 ) (Boshen)
- ce2b9da minifier: Remove `wrap_to_avoid_ambiguous_else` (#8676 )
(Boshen)
- 75a579b minifier: Clean up
`has_no_side_effect_for_evaluation_same_target` (#8675 ) (Boshen)
- 1bb2539 minifier: Move more code into `minimize_conditions` local loop
(#8671 ) (Boshen)
- 13e4a45 minifier: Move conditional assignment to `minimize_conditions`
(#8669 ) (Boshen)
- ae895d8 minifier: Use `NonEmptyStack` for function stack (#8661 )
(Boshen)
- 3802d28 minifier: Clean up `try_minimize_conditional` (#8660 ) (Boshen)
- dcc1f2b minifier: Rename `ast_passes` to `peephole` (#8635 ) (Boshen)
- 52458de minifier: Remove unused code and traits (#8632 ) (Boshen)
- 6f95cd5 minifier: Remove all the unnecessary fake ast passes (#8618 )
(Boshen)
- 712cae0 minifier: Run the compressor on all test cases (#8604 )
(Boshen)
- 864b8ef parser: Shorten code (#8640 ) (overlookmotel)
- b8d9a51 span: Deal only in owned `Atom`s (#8641 ) (overlookmotel)
- 20f52b1 span: Remove unnecessary lifetimes on `Atom` impls (#8639 )
(overlookmotel)
- ac4f98e span: Derive `Copy` on `Atom` (#8596 ) (branchseer)
- a730f99 transformer: Move `create_prototype_member` to utils module
(#8657 ) (Dunqing)
- 61d96fd transformer/class-properties: Correct comments (#8636 )
(overlookmotel)
### Testing
- 39dbd2d codegen: Fix snapshot file (#8685 ) (Boshen)
- d9f5e7f minifier: Enable passed esbuild tests (Boshen)
Co-authored-by: Boshen <1430279+Boshen@users.noreply.github.com>
2025-01-24 12:09:37 +08:00
oxc-bot
8f5be07ed6
release(crates): v0.47.1 ( #8593 )
...
## [0.47.1] - 2025-01-19
### Features
- ee8ee55 napi/parser: Add `.hasChanged()` to `MagicString` (#8586 )
(Boshen)
- 1bef911 napi/parser: Add source map API (#8584 ) (Boshen)
### Bug Fixes
- 7b219a9 minifier: Fix dce shadowed undefined (#8582 ) (Boshen)
- 7421a52 transformer/typescript: Correctly resolve references to
non-constant enum members (#8543 ) (branchseer)
Co-authored-by: Boshen <1430279+Boshen@users.noreply.github.com>
2025-01-19 09:44:29 +08:00
Boshen
ee8ee55cda
feat(napi/parser): add .hasChanged() to MagicString ( #8586 )
2025-01-18 15:29:17 +00:00
Boshen
1bef911e59
feat(napi/parser): add source map API ( #8584 )
2025-01-18 23:06:42 +08:00
oxc-bot
d3fd7a9741
release(crates): v0.47.0 ( #8580 )
...
## [0.47.0] - 2025-01-18
- fae4cd2 allocator: [**BREAKING**] Remove `Vec::into_string` (#8571 )
(overlookmotel)
- 95bc0d7 allocator: [**BREAKING**] `Allocator` do not deref to
`bumpalo::Bump` (#8569 ) (overlookmotel)
- 19d3677 ast: [**BREAKING**] Always return
`Array<ImportDeclarationSpecifier>` for `ImportDeclaration.specifiers`
(#8560 ) (sapphi-red)
- 4ce6329 semantic: [**BREAKING**] Ensure program outlives semantic
(#8455 ) (Valentinas Janeiko)
- 7066d1c ast, span, syntax, regular_expression: [**BREAKING**] Remove
`ContentHash` (#8512 ) (overlookmotel)
### Features
- bf4e5e1 allocator: Add `HashMap` (#8553 ) (overlookmotel)
- a6d71f8 ast: Add `AstKind::ty` method (#8521 ) (overlookmotel)
- 4d4e805 minifier: Collapse if stmt with empty consequent (#8577 )
(camc314)
- 991a22f minifier: Fold `Array::concat` into literal (#8442 )
(sapphi-red)
- 3dc2d8b minifier: Fold string concat chaining (#8441 ) (sapphi-red)
- a4ae450 minifier: Fold array concat chaining (#8440 ) (sapphi-red)
- 7cc81ef minifier: Fold invalid typeof comparisons (#8550 ) (camc314)
- 927f43f minifier: Improve `.charCodeAt(arg)` when arg is valid (#8534 )
(Boshen)
- 06f14d5 minifier: Remove empty class static block `class Foo { static
{} }` (#8525 ) (Boshen)
- 1860411 minifier: Remove last redundant return statement (#8523 )
(Boshen)
- c479a58 napi/parser: Expose dynamic import expressions (#8540 )
(Boshen)
- 2f0314e npm/oxc-minify: Npm package and publish script (#8579 )
(Boshen)
- f413bb5 transformer/optional-chaining: Change parent scope for
expression when it wrapped with an arrow function (#8511 ) (Dunqing)
### Bug Fixes
- e87c001 allocator: Statically prevent memory leaks in allocator
(#8570 ) (overlookmotel)
- 855c839 codegen: Shorthand assignment target identifier consider
mangled names (#8536 ) (Boshen)
- 65c596d minifer: Keep idents if not in scope when minimizing array
exprs (#8551 ) (camc314)
- f57aac2 minifier: Incorrect folding of expr in bool ctx (#8542 )
(camc314)
- 946ad76 minifier: `(-Infinity).toString()` -> `'-Infinity'` (#8535 )
(Boshen)
- b1d0186 minifier: Do not fold `!!void b` (#8533 ) (Boshen)
- 53adde5 minifier: `x['-2147483648']` -> `x[-2147483648]` (#8528 )
(Boshen)
- 405b73d minifier: Do not change `delete undefined` to `delete void 0`
(#8527 ) (Boshen)
- 92e44cb minifier: Do not remove `undefined` in `var x = undefined`
(#8526 ) (Boshen)
- 209e313 minifier: `class C { ['-1']() {} }` cannot be minifized
(#8516 ) (Boshen)
- 6585463 minifier: Always keep the last value of sequence expression
(#8490 ) (Boshen)
- b552f5c transformer: `wrap_in_arrow_function_iife` take span of input
`Expression` (#8547 ) (overlookmotel)
- 9963533 transformer/arrow-functions: Visit arguments to `super()` call
(#8494 ) (overlookmotel)
- 06ccb51 transformer/async-to-generator: Move parameters to the inner
generator function when they could throw errors (#8500 ) (Dunqing)
- 356f0c1 transformer/class-properties: Handle nested `super()` calls
(#8506 ) (overlookmotel)
- a048337 transformer/class-static-blocks: Static block converted to
IIFE use span of original block (#8549 ) (overlookmotel)
### Performance
- 76ea52b allocator: Inline `Box` methods (#8572 ) (overlookmotel)
- 93df57f allocator: `#[inline(always)]` methods of `Vec` which just
delegate to `allocator_api2` (#8567 ) (overlookmotel)
- 5a28d68 allocator: `#[inline(always)]` methods of `HashMap` which just
delegate to `hashbrown` (#8565 ) (overlookmotel)
- d17021c mangler: Optimize `base54` function (#8557 ) (overlookmotel)
- 6b52d7a mangler: Use a single allocation space for temporary vecs
(#8495 ) (Boshen)
- 30a869e semantic: Use `oxc_allocator::HashMap` in `ScopeTree` (#8554 )
(overlookmotel)
- 63eb298 span: Compare `Span`s as single `u64`s (#8300 ) (overlookmotel)
- a43560c span: Hash `Span` as a single `u64` (#8299 ) (overlookmotel)
- 3fff7d2 span: Align `Span` same as `usize` (#8298 ) (overlookmotel)
- 53ef263 transformer/arrow-functions: Bail out of visiting early when
inserting `_this = this` after `super()` (#8482 ) (overlookmotel)
### Documentation
- fa1a6d5 allocator: Update docs for `Vec` (#8555 ) (overlookmotel)
### Refactor
- ac05134 allocator: `String` type (#8568 ) (overlookmotel)
- 68fab81 allocator: Rename inner `Vec` type (#8566 ) (overlookmotel)
- fcbca32 ast: Rename `#[estree(with)]` to `#[estree(via)]` (#8564 )
(overlookmotel)
- 007e8c0 ast, regular_expression: Shorten `ContentEq` implementations
(#8519 ) (overlookmotel)
- b4c87e2 linter: Move DiagnosticsReporters to oxlint (#8454 ) (Alexander
S.)
- 8f57929 minifier: Merge `try_compress_type_of_equal_string` into
`try_minimize_binary` (#8561 ) (sapphi-red)
- 2857ae1 parser: Refactor visitor in regexp example (#8524 )
(overlookmotel)
- b5ed58e span: All methods take owned `Span` (#8297 ) (overlookmotel)
- 712633f transformer: `wrap_statements_in_arrow_function_iife` utility
function (#8548 ) (overlookmotel)
- 5206c6a transformer: Rename `wrap_in_arrow_function_iife` (#8546 )
(overlookmotel)
- 61077ca transformer: `wrap_arrow_function_iife` receive an owned
`Expression` (#8545 ) (overlookmotel)
- 6820d24 transformer: Move `wrap_arrow_function_iife` to root utils
module (#8529 ) (Dunqing)
- 52bd0b1 transformer: Move common utils functions to the root module
(#8513 ) (Dunqing)
- c30654a transformer/arrow-function: Wrapping arrow function iife by
using `wrap_arrow_function_iife` (#8530 ) (Dunqing)
- 2bc5175 transformer/arrow-functions: Rename method (#8481 )
(overlookmotel)
- 72f425f transformer/class-properties: Fix lint warning in release mode
(#8539 ) (overlookmotel)
- 7e61b23 transformer/typescript: Shorten code (#8504 ) (overlookmotel)
- 04bc259 traverse: Remove unnecessary `#[allow]` (#8518 )
(overlookmotel)
- a368726 traverse: Harden soundness of `Traverse` and document safety
invariants better (#8507 ) (overlookmotel)
### Testing
- e0f5d6c minifier: Update esbuild test (Boshen)
- 629c417 minifier: Port esbuild minification tests (#8497 ) (Boshen)
Co-authored-by: Boshen <1430279+Boshen@users.noreply.github.com>
2025-01-18 14:26:20 +08:00
Boshen
c479a58718
feat(napi/parser): expose dynamic import expressions ( #8540 )
...
closes #8369
2025-01-16 22:25:22 +08:00
Boshen
9ec4e24eb7
test(napi/minify): fix more broken tests
2025-01-16 16:09:23 +08:00
Boshen
0acbef356a
test(napi/minify): fix matching of arrays
2025-01-16 15:34:20 +08:00
Boshen
855c8395cf
fix(codegen): shorthand assignment target identifier consider mangled names ( #8536 )
2025-01-16 07:26:07 +00:00
Boshen
c63c8b924d
test(napi/minify): add runtime test ( #8501 )
2025-01-15 21:13:00 +08:00
Boshen
aa9d7e47ea
build(napi): napi build --no-dts-cache ( #8499 )
2025-01-15 07:02:29 +00:00
oxc-bot
3e05055783
release(crates): v0.46.0 ( #8487 )
...
## [0.46.0] - 2025-01-14
- 7eb6ccd ast: [**BREAKING**] Remove unused and not useful `ContentHash`
(#8483 ) (Boshen)
### Features
- 8accfef minifier: Minify `var x; void x` -> `void 0` (#8466 ) (Boshen)
- 870a583 minifier: Fold `false['toString']` (#8447 ) (Boshen)
- 4ad695d napi/minify: Implement napi (#8478 ) (Boshen)
- 9d550aa span: Add `Atom::r#static` (#8479 ) (_Kerman)
### Bug Fixes
- 4071878 isolated-declarations: Retain `declare` declarations when they
are exported (#8477 ) (Dunqing)
- 7ee7634 isolated-declarations: Import statement disappears when import
binding is referenced in nested `typeof` (#8476 ) (Dunqing)
- 7252cb0 isolated-declarations: Unexpected error when global `Symbol`
as property key (#8475 ) (Dunqing)
- 4c6675c minifier: Do not convert while to fors in DCE (#8484 ) (Boshen)
- 1d6e84d minifier: Fix incorrect `null.toString()` and `1n.toString()`
(#8464 ) (Boshen)
- 25d4bf9 minifier: Remove usage of empty spans (#8462 ) (Boshen)
- dd64340 minifier: Keep `return undefined` in async generator function
(#8439 ) (Boshen)
- c444de8 transformer/arrow-functions: Transform `this` and `super`
incorrectly in async arrow function (#8435 ) (Dunqing)
- 270245f transformer/typescript: Correct the semantic for
TSImportEqualsDeclaration transformation (#8463 ) (Dunqing)
- 2a400d6 transformer/typescript: Retain TSImportEqualsDeclaration when
it is exported (Dunqing)
- ab694b0 transformer/typescript: Retain `TSImportEqualsDeclaration` in
`namespace` when its binding has been referenced or
`onlyRemoveTypeImports` is true (#8458 ) (Dunqing)
### Performance
- 7a8200c mangler: Allocate base54 name without heap allocation (#8472 )
(Boshen)
- 31dac22 mangler: Allocate data in arena (#8471 ) (Boshen)
- 8fc238a minifier: Merge `Normalize` and `RemoveSyntax` pass (#8467 )
(Boshen)
- 372eb09 minifier: Preallocate mangler's semantic data (#8451 ) (Boshen)
### Refactor
- 6e64eef codegen: Remove `match_expression!` (#8450 ) (Boshen)
- de5b288 span: Rename `Atom::new_const` method (#8480 ) (overlookmotel)
- c83ce5c transformer/typescript: Improve transforming namespace (#8459 )
(Dunqing)
Co-authored-by: Boshen <1430279+Boshen@users.noreply.github.com>
2025-01-14 19:40:44 +08:00
Boshen
4ad695dcfb
feat(napi/minify): implement napi ( #8478 )
2025-01-14 08:55:55 +00:00
oxc-bot
01722f34ff
release(crates): v0.45.0 ( #8434 )
...
## [0.45.0] - 2025-01-11
- 7f69561 ast: [**BREAKING**] `oxc_ast` do not export `BigUint` (#8428 )
(overlookmotel)
- d8b27af ast: [**BREAKING**] No unneccesary trailing underscores on
`AstBuilder` method names (#8283 ) (overlookmotel)
- 5106088 ast: [**BREAKING**] Remove `FromIn<Expression> for Statement`
(#8280 ) (overlookmotel)
### Features
- 6c7acac allocator: Implement `IntoIterator` for `&mut Vec` (#8389 )
(overlookmotel)
- 3212bcd ast_tools: Ignore `raw` field of `NumericLiteral` and
`StringLiteral` in `ContentEq` (#8417 ) (Boshen)
- ad146bb codegen: Print real newline when `\n` is inside template
literals (#8178 ) (Boshen)
- 41ddf60 minfier: Add `CompressOptions::target` (#8179 ) (Boshen)
- d56020b minifier: Drop `0` from `new Int8Array(0)` and other
TypedArrays (#8431 ) (sapphi-red)
- f935d94 minifier: Remove `new` from NativeErrors / `AggregateError`
(#8430 ) (sapphi-red)
- dab7a51 minifier: Minimize not `!(x === undefined)` -> `x !==
undefined` (#8429 ) (Boshen)
- 0e7bab8 minifier: Remove `if(false){}` in a single pass (#8421 )
(Boshen)
- 5b5b844 minifier: Fold `ambiguous if else` (#8415 ) (Boshen)
- 438a6e7 minifier: Minimize conditions in boolean context (#8381 )
(Boshen)
- 793cb43 minifier: `a != null ? a : b` -> `a ?? b` (#8352 ) (camc314)
- 814da55 minifier: Compress `x = x || 1` to `x ||= 1` (#8368 )
(sapphi-red)
- a596821 minifier: Compress `a.b = a.b + c` to `a.b += c` (#8367 )
(sapphi-red)
- 579eb60 minifier: Compress `a.b || (a.b = c)` to `a.b ||= c` (#8366 )
(sapphi-red)
- f367a16 minifier: Port esbuild conditional expr minification (#8351 )
(camc314)
- 8d52cd0 minifier: Merge assign expression in conditional expression
(#8345 ) (sapphi-red)
- a69d15f minifier: Compress `new Array(2)` -> `[,,]` (#8344 )
(sapphi-red)
- 819c475 minifier: Compress `new Array(7n)` -> `[7n]` (#8343 )
(sapphi-red)
- e085d66 minifier: Remove empty IIFE (#8340 ) (Boshen)
- 2c2e483 minifier: Fold object spread `({ ...null })` -> `({})` (#8339 )
(Boshen)
- 6220e05 minifier: Remove empty if statment `if (test) {}` -> `test`
(#8336 ) (Boshen)
- a76dfae minifier: Remove label statement with empty body (#8333 )
(Boshen)
- e88a6bd minifier: Minimize `!0 + null !== 1` -> `!0 + null != 1`
(#8332 ) (Boshen)
- ec88c68 minifier: Compress `a || (a = b)` to `a ||= b` (#8315 )
(sapphi-red)
- e6fe84d minifier: Compress `a = a + b` to `a += b` (#8314 )
(sapphi-red)
- 9ea4e31 minifier: Remove `new` from `new Error`/`new Function`/`new
RegExp` (#8313 ) (sapphi-red)
- 051fbb6 minifier: Minimize `x["0"]` -> x[0] (#8316 ) (Boshen)
- a542013 minifier: Minimize `do{}while(true)` -> `do;while(true)`
(#8311 ) (Boshen)
- e3ff81e minifier: Minimize `(x = 1) === 1` -> `(x = 1) == 1` (#8310 )
(Boshen)
- 4b68cc0 minifier: Minimize empty `try` statement (#8309 ) (Boshen)
- 922c514 minifier: Fold `.toString()` (#8308 ) (Boshen)
- 66a2443 minifier: Minify sequence expressions (#8305 ) (camc314)
- af65c36 minifier: Minimize double negated binary expressions (#8304 )
(camc314)
- 76c778b minifier: Remove logical nots when arg is a delete expression
(#8303 ) (camc314)
- 5ed439b minifier: Minify typeof in binary expressions (#8302 )
(camc314)
- 6afc590 minifier: Compress typeof addition string (#8301 ) (camc314)
- ecc789f minifier: Fold `if(x >> y == 0){}` -> `if(!(x >> y)){}`
(#8277 ) (Boshen)
- 0e3b79a minifier: Fold `String()` -> `''`, `Number()` -> `false`
(#8274 ) (Boshen)
- c9cf593 minifier: Compress property key `{[1]: _}` -> {1: _} (#8272 )
(Boshen)
- b92b2ab minifier: Fold `BigInt(1n)` -> `1n` (#8270 ) (Boshen)
- a4df387 minifier: Compress loose equals undefined (#8268 ) (camc314)
- f000596 minifier: Minify call expressionsto `Number` (#8267 ) (camc314)
- 092aeaf minifier: Flatten spread args in call expressions (#8266 )
(camc314)
- 04ec38d minifier: Remove unused arrow function expressions (#8262 )
(camc314)
- e446c15 minifier: Improve minimizing unary not expressions (#8261 )
(camc314)
- 7f19211 minifier: Minimize unary expression statements (#8256 )
(camc314)
- cec63e2 minifier: `{}` evals to `f64::NaN` (Boshen)
- 4d8a08d minifier: Improve constant evaluation (#8252 ) (Boshen)
- e84f267 minifier: Compress more property keys (#8253 ) (Boshen)
- d1224f9 minifier: Improve minimizing conditional expressions (#8251 )
(camc314)
- 65f46f5 minifier: Constant fold `String.fromCharCode` (#8248 ) (Boshen)
- bd8d677 minifier: Minimize `~undefined`, `~null`, `~true`, `~false`
(#8247 ) (Boshen)
- f73dc9e minifier: Constant fold `'x'.toString()` and `true.toString()`
(#8246 ) (Boshen)
- fd5af73 minifier: Minimize `Number` constructor (#8245 ) (Boshen)
- 2f52f33 minifier: Minsize `!!!foo ? bar : baz` -> `foo ? baz : bar`
(#8244 ) (Boshen)
- ccdc039 minifier: Always put literals on the rhs of equal op `1==x` =>
`x==1` (#8240 ) (Boshen)
- 39353b2 minifier: Improve minimizing conditionals (#8238 ) (Cameron)
- c90fc16 minifier: Restore conditional minification and fix edge case
(#8235 ) (camc314)
- 6c8ee9f minifier: Remove last redundant `return` statement (#8234 )
(Boshen)
- 51f4792 minifier: Minimize `foo ? foo : bar` and `foo ? bar : foo`
(#8229 ) (Boshen)
- 6e2ec17 minifier: Statement fusion switch cases; improved minimize
exit poitns (#8228 ) (Boshen)
- 574a242 minifier: Minimize all variants of `typeof x == 'undefined'`
(#8227 ) (Boshen)
- 2041477 minifier: Fold `if(x)return;y` -> `if(!x)y` (#8226 ) (Boshen)
- 9c1afa4 minifier: Optional catch binding when catch param is unused
(#8221 ) (Boshen)
- 4a29845 minifier: Add `ConvertToDottedProperties` (#8212 ) (Boshen)
- 2786dea minifier: Add `RemoveUnusedCode` (#8210 ) (Boshen)
- cd274ee minifier: Minimize logical exprs (#8209 ) (Cameron)
- 4ae15df minifier: Imprve more conditional expr minification with
boolean lit (#8208 ) (camc314)
- 3202b4f minifier: Imprve conditional expr minification with boolean
lit (#8207 ) (camc314)
- 3b45011 minifier: Handle conditional expr with boolean lit (#8206 )
(camc314)
- 4c2059a minifier: Reverse negated conditional exprs (#8205 ) (camc314)
- 4804933 minifier: Add `MinimizeExitPoints` and ExploitAssigns`
boilerplate (#8203 ) (Boshen)
- bf266e1 minifier: Try collapse conditional to logical or expr (#8197 )
(Cameron)
- 06e1780 minifier: Improve `StatementFusion` (#8194 ) (Boshen)
- 42e211a minifier: Only constant fold numbers when result is smaller
(#8092 ) (Boshen)
- d0de560 minifier: Change `NaN` to `f64::NAN` (#8191 ) (Boshen)
- cef8eb8 minifier: Change `foo?.['bar']` to `foo?.bar` (#8176 ) (翠 /
green)
- 8149e34 minifier: Optional catch binding when es target >= es2019
(#8180 ) (Boshen)
- fc43ec5 minifier: Fold `string.length` / `array.length` (#8172 )
(sapphi-red)
- 29dc0dc minifier: Change `foo['bar']` -> foo.bar (#8169 ) (Boshen)
- 3c5718d minifier: Fold `typeof foo == undefined` into `foo ==
undefined` when possible (#8160 ) (翠 / green)
- f3a36e1 minifier: Fold `typeof foo != "undefined"` into `typeof foo <
"u"` (#8159 ) (翠 / green)
- 37c9959 minifier: Normalize `Infinity` into `f64::Infinity` (#8148 )
(Boshen)
- 8fb71f5 minifier: Minify string `PropertyKey` (#8147 ) (Boshen)
- 6615e1e minifier: Constant fold `instanceof` (#8142 ) (翠 / green)
- 2b2a373 minifier: Minimize `a + 'b' + 'c'` -> `a + 'bc'` (#8137 )
(Boshen)
- 213364a minifier: Minimize `if (x) if (y) z` -> `if (x && y) z`
(#8136 ) (Boshen)
- 6b51e6d minifier: Minimize `if(foo) bar else baz` -> `foo ? bar : baz`
(#8133 ) (Boshen)
- f615bfa minifier: Minimize `if (x) return; return 1` -> `return x ?
void 0 : 1` (#8130 ) (Boshen)
- f0b1ee5 minifier: Minimize `if(!x) foo()` -> `x || foo()` (#8122 )
(Boshen)
- f8200a8 minifier: Minimize `if(foo) bar` -> `foo && bar` (#8121 )
(Boshen)
- 72d9967 minifier: Add `Normalize` ast pass (#8120 ) (Boshen)
- fef0b25 minifier: Collapse `var` into for loop initializer (#8119 )
(Boshen)
- 2331ea8 minifier: `typeof foo === 'number'` => `typeof foo ==
'number'` (#8112 ) (Boshen)
- ad9a0a9 mininifier: Minimize variants of `a instanceof b == true`
(#8241 ) (Boshen)
- 2da4365 parser: Missing initializer in destructuring declaration
inside for loop head (#8222 ) (Boshen)
- 55744fd semantic: Allow getting mutable reference to symbols table
(#8189 ) (Max Stoumen)
- 0592a8b transformer/class-properties: Transform private in expression
(#8202 ) (Dunqing)
- ad77ad5 transformer/class-properties: Transform static/instance
accessor methods (#8132 ) (Dunqing)
- e405f79 transformer/class-properties: Transform static private method
invoking (#8117 ) (Dunqing)
- 3303e99 transformer/class-properties: Insert statements after
statement of class expression (#8116 ) (Dunqing)
- 0cc71cf transformer/class-properties: Transform super expressions and
identifiers that refers to class binding in private method (#8106 )
(Dunqing)
- 58ed832 transformer/class-properties: Transform private field
expression which invokes private method (#8102 ) (Dunqing)
- f14567a transformer/class-properties: Transform callee which invokes
private method (#8100 ) (Dunqing)
- 13349ef transformer/class-properties: Transform private methods
(#8099 ) (Dunqing)
### Bug Fixes
- eb25bc0 allocator: Fix lifetimes on `IntoIterator` for `Vec` (#8388 )
(overlookmotel)
- 97a7992 ast: Fix `ContentEq` and `ContentHash` impls for literal types
(#8426 ) (overlookmotel)
- a1752a0 codegen: Fix incorrect minified `return 1n` output (#8374 )
(Boshen)
- 5a648bc codegen: Fix white space issue with do statements (#8348 )
(Boshen)
- b6d16f4 codegen: Print parenthesis on negative bigint lit when
neccessary (#8258 ) (camc314)
- 8ed9766 codegen: Source map builder panicked because it attempted to
subtract with overflow in `search_original_line_and_column` (#8185 )
(Dunqing)
- ad61e70 codegen: Print if else without block with proper indentation
(#8135 ) (Boshen)
- 74572de ecmascript: Incorrect `to_int_32` value for Infinity (#8144 )
(翠 / green)
- e1f8ea4 lexer: `Source` is not `Clone` (#8294 ) (overlookmotel)
- 5c63414 mangler: Keep exported symbols for `top_level: true` (#7927 )
(翠 / green)
- 3c93549 minifier: Dce if statement should keep side effects and vars
(#8433 ) (Boshen)
- 52f88c0 minifier: Rotate associative operators to make it more
idempotent (#8424 ) (camc314)
- a80460c minifier: Correctly set `self.changed` when minimizing if
stmts (#8420 ) (camc314)
- d4ca8d4 minifier: `!!x` is not idempotent in `RemoveDeadCode` (#8419 )
(Boshen)
- 357b61d minifier: Do not minify `Object.defineProperty` in sequence
expressions (#8416 ) (Boshen)
- 0efc845 minifier: `+0n` produces `TypeError` (#8410 ) (Boshen)
- 7ce6a7c minifier: `a in b` has error throwing side effect (#8406 )
(Boshen)
- 2f3a9dc minifier: Cannot transform property key `#constructor` (#8405 )
(Boshen)
- c0a3dda minifier: `instanceof` has error throwing side effect (#8378 )
(Boshen)
- 5516f7f minifier: Do not fold object comparisons (#8375 ) (Boshen)
- cb098c7 minifier: Computed property key `prototype` cannot be changed
(#8373 ) (Boshen)
- 82ee77e minifier: Do not remove shadowned `undefined` in return
statement (#8371 ) (Boshen)
- f87da16 minifier: Do not fold literals in `-0 != +0` (#8278 ) (Boshen)
- 62a2644 minifier: Handle arrow fn expressions correctly in
`is_in_boolean_context` (#8260 ) (camc314)
- d2f8eaa minifier: Fix panic in `peephole_minimize_conditions` (#8242 )
(Boshen)
- a698def minifier: Fix incorrect return value for `(x ? true : y)`
(#8233 ) (Boshen)
- 05be1fc minifier: Remove incorrect fold
`Expression::AssignmentExpression` (#8211 ) (Boshen)
- 56b7f13 minifier: Do not constant fold `0 instanceof F` (#8199 )
(Boshen)
- 75d5f17 minifier: Minify string `PropertyKey` (#8177 ) (sapphi-red)
- f88acb3 parser: Allow line breaks between `const` and `enum` (#8193 )
(branchseer)
- 79a8fc6 semantic: Report error for super property appearing in
function body (#8376 ) (Dunqing)
- 79af100 semantic: Reference flags not correctly resolved when after an
export stmt (#8134 ) (camc314)
- 3eaff2a transformer: Ensure last expression statement in arrow
function expression is wrapped in return (#8192 ) (Dunqing)
- 3feac27 transformer/arrow-functions: Outer `super()` in nested class
(#8382 ) (Dunqing)
- 335065d transformer/arrow-functions: Do not transform super that
inside nested non-async method (#8335 ) (Dunqing)
- e4d66e4 transformer/arrow-functions: Store `super_methods` on a
`Stack` to fix nested async methods (#8331 ) (Dunqing)
- 775a289 transformer/arrow-functions: `_this = this` should be inserted
after super call expression (#8024 ) (Dunqing)
- ac72adb transformer/private-methods: Fix panic if instance private
accessor in class (#8362 ) (overlookmotel)
- f1f129b transformer/private-methods: Create brand binding `var` in
hoist scope (#8361 ) (overlookmotel)
- ab61425 transformer/private-methods: No temp var for class when unused
private methods (#8360 ) (overlookmotel)
- 9a03bd2 transformer/typescript: Remove type-only `import =` when
`only_remove_type_imports` is true (#8275 ) (Dunqing)
- 0df1866 transformer/typescript: Create `Reference` for `require`
(#8355 ) (overlookmotel)
- 78d7c97 transformer/typescript: Create `Reference` for `Infinity`
(#8354 ) (overlookmotel)
- 2e7207f transformer/typescript: Should strip import specifiers type
with `only_remove_type_imports` (#8141 ) (underfin)
### Performance
- 07edf74 transformer/arrow-function: Stop traversal at function as
super() can't appear in a nested function (#8383 ) (Dunqing)
- 62e3f7e transformer/arrow-functions: Reduce size of inlined visitor
(#8322 ) (overlookmotel)
- aebe0ea transformer/arrow-functions: Use `NonEmptyStack` instead of
`Stack` (#8318 ) (overlookmotel)
### Documentation
- c8e4843 ast: Fix doc comment (#8286 ) (overlookmotel)
- e0a09ab data_structures: Improve docs for stack types (#8356 )
(overlookmotel)
- aaa009d minifier: Clarify assumptions for compressor (#8404 ) (翠 /
green)
- 05cba5b transformer/private-methods: Amend comments (#8398 )
(overlookmotel)
### Refactor
- b29655f ast: Rearrange impls for literal types in same order as they
are defined (#8425 ) (overlookmotel)
- 0db2a22 ast: `AstBuilder` enum builder methods use `alloc_*` methods
(#8281 ) (overlookmotel)
- aea9551 ast: Simplify `get_identifier_reference` of `TSType` and
`TSTypeName` (#8273 ) (Dunqing)
- 9c1844a data_structures: Remove `NonNull` shim (#8423 ) (overlookmotel)
- 1835687 ecmascript: Remove unnecessary `use` statement (#8284 )
(overlookmotel)
- 64bfdfe lexer: Tighten safety of lexer by always including lifetime on
`SourcePosition` (#8293 ) (overlookmotel)
- 0344e98 lexer: Make `handle_byte` a method of `Lexer` (#8291 )
(overlookmotel)
- fabf116 lexer: Replace `#[allow]` with `#[expect]` (#8289 )
(overlookmotel)
- 0462edb lexer: Rename function param (#8288 ) (overlookmotel)
- fb2acd8 minifier: Change minimize conditionals into a loop (#8413 )
(Boshen)
- baaec60 minifier: Remove the buggy `??` transform (#8411 ) (Boshen)
- 1c4658d minifier: Change ast passes order, `!in_fixed_loop` happen
last (#8380 ) (Boshen)
- 09f0f48 minifier: Remove the buggy `minimize_exit_points`
implementation (#8349 ) (Boshen)
- 9a5c66a minifier: Clean up (#8346 ) (Boshen)
- 98f2b1c minifier: Clean up `peephole_substitute_alternate_syntax`
(#8327 ) (Boshen)
- fc662b7 minifier: Handle big int values later (#8324 ) (Boshen)
- d16e598 minifier: Clean up `peephole_replace_known_methods` (#8306 )
(Boshen)
- b8d26ea minifier: Move optional catch param to
peephole_substitute_alternate_syntax (#8282 ) (Boshen)
- 0845162 minifier: Clean up `ReplaceKnownMethods` (Boshen)
- 7c7f5d7 minifier: Clean up `peephole_fold_constants` (Boshen)
- bf0fbce minifier: Improve constant fold numbers (#8239 ) (Boshen)
- 62f8fba minifier: Move all conditional minification logic to
minimze_conditions (#8231 ) (camc314)
- cfb51f2 minifier: Fuse ast passes (#8184 ) (Boshen)
- bf9cafe minifier: Clean up `peephole_substitute_alternate_syntax` a
little bit (Boshen)
- 75264ed minifier: Clean up `try_optimize_block` (#8139 ) (Boshen)
- c22062b minifier: Cleanup peephole_minimize_conditions (#8114 )
(Boshen)
- e594c39 minifier: Clean up `peephole_substitute_alternate_syntax.rs`
(#8111 ) (Boshen)
- 0903501 semantic: Check super usage based on scope (#8377 ) (Dunqing)
- 109b8fc transformer: Elide lifetimes where possible (#8285 )
(overlookmotel)
- fb389f7 transformer/arrow-function: Create a new ident instead of
clone (#8338 ) (Dunqing)
- dddbd29 transformer/arrow-functions: Reorder assertions (#8386 )
(overlookmotel)
- ce6c445 transformer/arrow-functions: Add TODO comments (#8328 )
(overlookmotel)
- 73d0025 transformer/arrow-functions: Reduce repeated code (#8323 )
(overlookmotel)
- 3dd08e9 transformer/arrow-functions: Do not inline non-trivial visitor
method (#8321 ) (overlookmotel)
- ea9cefb transformer/arrow-functions: Reorder visitor methods (#8320 )
(overlookmotel)
- 37199a4 transformer/arrow-functions: Rename lifetime (#8319 )
(overlookmotel)
- 57e9dcf transformer/arrow-functions: Shorten `AstBuilder` call (#8317 )
(overlookmotel)
- a5e3528 transformer/async-to-generator: Pass `TraverseCtx` to function
not `AstBuilder` (#8279 ) (overlookmotel)
- e7c89ba transformer/class-properties: TODO comments (#8392 )
(overlookmotel)
- 6790d1d transformer/class-properties: Simplify determining if class is
declaration (#8357 ) (overlookmotel)
- c786a13 transformer/class-properties: Share
`replace_class_name_with_temp_var` in class_properties (#8105 ) (Dunqing)
- f54f48e transformer/class-properties: Remove all `*_if_super` methods
in `static_block_and_prop_init` (#8104 ) (Dunqing)
- d82fb52 transformer/class-properties: Move `supers` to
`super_converter` (#8103 ) (Dunqing)
- 3dad85e transformer/private-methods: Remove unnecessary clone (#8400 )
(overlookmotel)
- aa5e65f transformer/private-methods: Simplify finding parent statement
of class expression (#8364 ) (overlookmotel)
- c786fd1 transformer/private-methods: TODO comments (#8363 )
(overlookmotel)
### Styling
- 4d2888d lexer: Reorder imports (#8290 ) (overlookmotel)
- e81f34f span: Reformat code (#8296 ) (overlookmotel)
- 45e2402 transformer/private-methods: Move comments (#8399 )
(overlookmotel)
- 0a1ffc0 transformer/private-methods: Rename var (#8397 )
(overlookmotel)
### Testing
- 16dcdaf lexer: Assert size of `Token` in 32-bit WASM (#8292 )
(overlookmotel)
- 3149fe0 minifier: Add anonymous function test case for logical
expression to logical assignment compression (#8347 ) (sapphi-red)
- 91b42de minifier: Enable some passing tests (#8250 ) (camc314)
- 1fa5341 minifier: Port tests from ConvertToDottedPropertiesTest
(#8175 ) (sapphi-red)
Co-authored-by: Boshen <1430279+Boshen@users.noreply.github.com>
2025-01-11 22:34:31 +08:00
Dunqing
9a03bd23b9
fix(transformer/typescript): remove type-only import = when only_remove_type_imports is true ( #8275 )
...
close: https://github.com/oxc-project/oxc/issues/8230
close: https://github.com/rolldown/rolldown/issues/3287
Related PR in Babel: https://github.com/oxc-project/oxc/issues/8230
I have compared our output with TypeScript, and it is the same as `TypeScript`, Babel's implementation currently hasn't removed imports referenced by type-only `TSImportEqualsDeclaration`
2025-01-11 08:42:51 +00:00
Boshen
0e14bd8cab
chore(napi/parser): publish oxc_parser_napi
...
closes #8118
2025-01-03 18:13:12 +08:00
Dunqing
e5ee38fdf1
chore(transformer): enable class-properties plugin ( #7750 )
...
Done!
2024-12-31 12:30:58 +00:00
oxc-bot
5a1311e76c
release(crates): v0.44.0 ( #8110 )
...
## [0.44.0] - 2024-12-25
- ad2a620 ast: [**BREAKING**] Add missing
`AssignmentTargetProperty::computed` (#8097 ) (Boshen)
### Features
- c2daa20 ast: Add `Expression::into_inner_expression` (#8048 )
(overlookmotel)
- 618b6aa codege: Minify whitespace in object getter / setter (#8080 )
(Boshen)
- 4727667 codegen: Minify arrow expr `(x) => y` -> `x => y` (#8078 )
(Boshen)
- 0562830 codegen: Minify string with backtick when needed (#8095 )
(Boshen)
- 6237c05 codegen: Minify more whitespace (#8089 ) (Boshen)
- 6355b7c codegen: Minify `export { 's' as 's' }` -> `export { 's' }`
(#8093 ) (Boshen)
- fccfda9 codegen: Minify `class{static[computed]}` (#8088 ) (Boshen)
- f873139 codegen: Minify `for (_ of [])` -> `for(_ of[])` (#8086 )
(Boshen)
- 8b8cbcd codegen: Minify `case "foo"` -> `case"foo"` (#8085 ) (Boshen)
- 414c118 codegen: Minify `yield "s"` -> `yield"s"` (#8084 ) (Boshen)
- f8f067b codegen: Minify class method `async*fn(){}` (#8083 ) (Boshen)
- 1d5ae81 codegen: Minify `const [foo] = bar` -> `const[foo]=bar`
(#8079 ) (Boshen)
- e3f78fb codegen: `new Foo()` -> `new Foo` when minify (#8077 ) (Boshen)
- d84d60a codegen: Minify numbers with large exponents (#8074 ) (Boshen)
- 373279b codegen: Balance string quotes when minify whitespace (#8072 )
(Boshen)
- 5397fe9 minifier: Constant fold `undefined?.bar` -> `undefined`
(#8075 ) (Boshen)
- 1932f1e minifier: Fold `foo === undefined || foo === null` (#8063 ) (翠
/ green)
- 11c4bd8 span: Implement source type `{file basename}.d.{extension}.ts`
(#8109 ) (Boshen)
- be4feb4 syntax: Add `SymbolId::new` method (#8041 ) (overlookmotel)
- e632a7b transformer: Remove typescript symbols after transform (#8069 )
(Boshen)
### Bug Fixes
- bdc241d codegen: Disallow template literals in object property key
(#8108 ) (Boshen)
- 728ed20 codegen: Print `yield * ident` correctly (Boshen)
- b605baa minifier: Constant fold strings with tab char (#8096 ) (Boshen)
- de82492 parser: Report syntax errors for missing constructor
implementations (#8081 ) (camc314)
- 55d6eb9 parser: Disallow type parameters on class constructors (#8071 )
(injuly)
- be2c60d parser: Parse `import source from from 'mod'` (#8056 ) (Boshen)
- 708e9cf semantic: Report errors for missing class method impls (#8082 )
(camc314)
- 3057686 transformer/class-properties: Unwrap parenthesised expressions
(#8049 ) (overlookmotel)
- e67cd05 transformer/class-properties: Correctly resolve private fields
pointing to private accessors (#8047 ) (overlookmotel)
- 6b08c6e transformer/class-properties: Correctly resolve private fields
pointing to private methods (#8042 ) (overlookmotel)
- 274f117 transformer/nullish-coalescing: Use correct scope id for
binding (#8053 ) (camc314)
### Performance
- 78d2e83 sourcemap: Improve perf of `search_original_line_and_column`
(#7926 ) (Cameron)
### Refactor
- 7110c7b codegen: Add `print_quoted_utf16` and `print_unquoted_utf16`
methods (#8107 ) (Boshen)
- 8b54d89 minifier: Remove parens must happen on enter (#8060 ) (Boshen)
- 7cb84f3 minifier: Only minify on ast node exit (#8059 ) (Boshen)
- 77d845a minifier: Fuse DCE AST passes (#8058 ) (Boshen)
- 6123f5e minifier: Fold statements on exit (#8057 ) (Boshen)
- cbd5169 transformer/class-properties: Do not recreate private field if
not transforming it (#8044 ) (overlookmotel)
- 98e8a72 transformer/class-properties: Do not take mut ref when immut
ref will do (#8040 ) (overlookmotel)
Co-authored-by: Boshen <1430279+Boshen@users.noreply.github.com>
2024-12-25 21:03:09 +08:00
underfin
f79e9ad91e
feat(napi/parser): add crate-type: "lib" ( #8067 )
...
The rolldown need export it to instead of `rollup/parseAst`, ref
https://rollupjs.org/javascript-api/#accessing-the-parser
2024-12-23 14:47:19 +08:00
oxc-bot
d69de3629d
release(crates): v0.43.0 ( #8054 )
...
## [0.43.0] - 2024-12-21
- de4c772 traverse: [**BREAKING**] Rename `Ancestor::is_via_*` methods
to `is_parent_of_*` (#8031 ) (overlookmotel)
- ed75e42 semantic: [**BREAKING**] Make SymbolTable fields `pub(crate)`
instead of `pub` (#7999 ) (Boshen)
### Features
- 75b775c allocator: `Vec<u8>::into_string` (#8017 ) (overlookmotel)
- 8547e02 ast: Implement `allocator_api2` for `Allocator` (#8043 )
(Boshen)
- 63a95e4 ast: Add `AstBulder::move_property_key` (#7998 )
(overlookmotel)
- 897a1a8 transformer/class-properties: Exit faster from super
replacement visitor (#8028 ) (overlookmotel)
- 3ea4109 transformer/class-properties: Transform super update
expressions within static prop initializer (#7997 ) (Dunqing)
- cc57db3 transformer/class-properties: Transform super assignment
expressions within static prop initializer (#7991 ) (Dunqing)
- 6b6444b traverse: Record current block scope (#8007 ) (overlookmotel)
### Bug Fixes
- 043252d transformer/class-properties: Replace `this` and class name in
static blocks (#8035 ) (overlookmotel)
- 273795d transformer/class-properties: Run other transforms on static
properties, static blocks, and computed keys (#7982 ) (overlookmotel)
### Performance
- c0dd3f8 ast: `move_expression` and `move_statement` produce dummy with
no span (#7995 ) (overlookmotel)
- 862838f codegen: Remove useless to_owned (#8014 ) (Dunqing)
- 2736657 semantic: Allocate `UnresolvedReferences` in allocator (#8046 )
(Boshen)
- 2e8872c semantic: Allocate child scope in allocator (#8045 ) (Boshen)
- 414e828 semantic: Allocate symbol data in Allocator (#8012 ) (Boshen)
- 7aebed0 semantic: Allocate `Bindings` in allocator (#8021 ) (Boshen)
- 0f9308f transformer/react-refresh: Reduce allocations (#8018 )
(overlookmotel)
- 0deb9e6 transformer/react-refresh: Reserve capacity in hook key string
(#8016 ) (overlookmotel)
- 7b70347 transformer/react-refresh: Avoid allocating string in each
hook call (#8013 ) (Dunqing)
### Documentation
- df5c341 ast: Improve docs for `AstBuilder::move_*` methods (#7994 )
(overlookmotel)
### Refactor
- f1adf9f semantic: `ScopeTree::rename_binding` remove old binding first
(#8020 ) (overlookmotel)
- 02f968d semantic: Change `Bindings` to a plain `FxHashMap` (#8019 )
(Boshen)
- e7476a1 semantic: Remove `serialize` (#8015 ) (Boshen)
- 1cf7b83 semantic: Simplify handling namespace stack (#7987 ) (Dunqing)
- 48cb52b semantic: Remove resetting `current_reference_flags` in visit
functions (#7986 ) (Dunqing)
- 3250a47 semantic: Remove unused current_symbol_flags (#7985 ) (Dunqing)
- efe96ec semantic: Use `Stack` for function stack node ids (#7984 )
(Dunqing)
- ac097e9 transformer/class-properties: Rename file (#8036 )
(overlookmotel)
- 059a5dd transformer/class-properties: Do not pass `ScopeId` into
`insert_instance_inits` (#8001 ) (overlookmotel)
- 0a38eea transformer/class-properties: Use `temp_var_name_base` to
generate temp var names for `super` transform (#8004 ) (overlookmotel)
- d1b7181 transformer/class-properties: Rename var (#8006 )
(overlookmotel)
- 5a23d72 transformer/class-properties: Remove outdated comment (#8000 )
(overlookmotel)
- b3a5f3e transformer/class-properties: Mark
`transform_assignment_expression_if_super_member_assignment_target` as
inline (#7993 ) (Dunqing)
### Testing
- bcb33c0 semantic: Add a test for catch parameters reference (#7988 )
(Dunqing)
Co-authored-by: Boshen <1430279+Boshen@users.noreply.github.com>
2024-12-21 15:07:21 +08:00
oxc-bot
3631eed975
release(crates): v0.42.0 ( #7983 )
...
## [0.42.0] - 2024-12-18
- 84b75a0 semantic: [**BREAKING**] Remove `ScopeFlags::Modifiers`
(#7935 ) (overlookmotel)
- c071494 semantic: [**BREAKING**] Remove `SymbolTable::rename` method
(#7868 ) (overlookmotel)
### Features
- 8b7c5ae ast: Add `AstBuilder::atom_from_cow` (#7974 ) (overlookmotel)
- 46e2e27 data_structures: Implement `Default` for `NonEmptyStack`
(#7946 ) (overlookmotel)
- db9e93b mangler: Mangle top level variables (#7907 ) (翠 / green)
- 075bd16 minifier: Fold bitwise operation (#7908 ) (翠 / green)
- c16a851 napi/transform: Add `jsx: 'preserve'` option (#7965 ) (Boshen)
- 81eedb1 parser: 'readonly' type modifier is only permitted on array
and tuple literal types. (#7880 ) (Boshen)
- b9322c6 semantic: Re-export all flags and ID types (#7886 )
(overlookmotel)
- c30a982 span: Add `impl From<ArenaString> for Atom` (#7973 )
(overlookmotel)
- 02b653c transformer/class-properties: Do not create temp var for
template literal computed key (#7919 ) (overlookmotel)
- feac02e transformer/class-properties: Only rename symbols if necessary
(#7896 ) (overlookmotel)
- 6bc530d transformer/class-properties: Transform super call expression
that is inside static prop initializer (#7831 ) (Dunqing)
- 53e2bc0 traverse: Add `TraverseScoping::rename_symbol` method (#7871 )
(overlookmotel)
### Bug Fixes
- 3659e6d cfg: Include export default code in CFG instructions (#7862 )
(Jan Olaf Martin)
- 850dd43 codegen: Missing `,` when generating type parameters with jsx
(#7929 ) (Dunqing)
- 4799471 minfier: Bigint bitwise operation only works with bigint
(#7937 ) (Boshen)
- de8a86e minifier: Incorrect minification in `try_fold_left_child_op`
(#7949 ) (翠 / green)
- 9a30910 oxc_transformer: Inject_global_variables should considering
string imported name (#7768 ) (IWANABETHATGUY)
- 111dc52 parser: Include export token in spans of
TSNamespaceExportDeclaration (#7963 ) (branchseer)
- 14c51ff semantic: Remove inherting `ScopeFlags::Modifier` from parent
scope (#7932 ) (Dunqing)
- 596aead semantic: Reset references flags when resolved (#7923 )
(Dunqing)
- 4924073 semantic: `ScopeTree::rename_binding` preserve order of
bindings (#7870 ) (overlookmotel)
- bb38065 transformer/class-properties: Do not transform `super.prop` in
nested method within static prop initializer (#7978 ) (overlookmotel)
- e76fbb0 transformer/class-properties: Fix symbol clashes in instance
prop initializers (#7872 ) (overlookmotel)
- c0576fa transformer/class-properties: Use UID for `args` in created
class constructor (#7866 ) (overlookmotel)
- d660d8d transformer/optional-chaining: Do not create unused reference
when `noDocumentAll` assumption (#7847 ) (overlookmotel)
- 4920c6a transformer/optional-chaining: Avoid creating a useless
reference when `noDocumentAll` is true (#7832 ) (Dunqing)
### Performance
- a5f04a7 ast: Faster `Comment::is_jsdoc` (#7905 ) (overlookmotel)
- 4b24335 codegen: Improve printing of statement comments (#7857 )
(Boshen)
- 71a40a2 codegen: Guard comment printing comments when there are no
comments (#7856 ) (Boshen)
- b31f123 transformer/class-properties: Do not re-generate same method
key (#7915 ) (overlookmotel)
- 8ca8fce transformer/class-properties: Reduce work updating scopes when
transforming static prop initializers (#7904 ) (overlookmotel)
- 80d0b3e transformer/class-properties: Fast path for instance prop
initializer scope re-parenting (#7901 ) (overlookmotel)
- 38aafa2 transformer/class-properties: Reduce size of
`transform_call_expression_for_super_member_expr` (#7859 )
(overlookmotel)
### Documentation
- e49de81 ast: Document `Expression::is_*` methods (#7853 )
(overlookmotel)
- 10a86b9 transformer: Fix comments (#7925 ) (overlookmotel)
- f4cb5d3 transformer: Clarify comment (#7918 ) (overlookmotel)
- 41a1456 transformer/class-properties: Correct doc comments (#7966 )
(overlookmotel)
- 18441af transformer/class-properties: Remove oudated todo for
assignment expression (#7955 ) (Dunqing)
- 1317c00 transformer/class-properties: Clarify doc comments (#7914 )
(overlookmotel)
- 9989b58 transformer/class-properties: Re-order file list in doc
comment (#7911 ) (overlookmotel)
- 7390048 transformer/class-properties: Reformat doc comment (#7909 )
(overlookmotel)
### Refactor
- beb982a ast: Use exhaustive match for `Argument` to
`ArrayExpressionElement` conversion (#7848 ) (overlookmotel)
- 3858221 global: Sort imports (#7883 ) (overlookmotel)
- 1314c97 minifier: Expose dce as an API instead of an option (#7957 )
(Boshen)
- 6551dfe semantic: Pass `&str` instead of `Cow` (#7972 ) (overlookmotel)
- b8d2bd2 semantic: Move determining references flags for export
specifier to `visit_export_named_declaration` (#7924 ) (Dunqing)
- 98d7946 semantic: Import flags and ID types from `oxc_syntax` (#7887 )
(overlookmotel)
- 1cf8f8f semantic: `SymbolTable::set_name` return old name (#7869 )
(overlookmotel)
- 5d42df8 semantic: Use `Expression::is_super` (#7851 ) (overlookmotel)
- 8cf9766 semantic, syntax, wasm: Remove `#![allow(non_snake_case)]`
(#7863 ) (overlookmotel)
- d59bbae transformer: Remove unneeded lint `#[allow]` (#7971 )
(overlookmotel)
- 2c94236 transformer: Improve encapsulation of transforms (#7888 )
(overlookmotel)
- 34091b2 transformer: Use `Expression::is_super` (#7852 )
(overlookmotel)
- d4d7bc0 transformer/async-to-generator: Avoid allocating unnecessary
`Atom`s (#7975 ) (overlookmotel)
- 2e5ffd3 transformer/class-properties: Store `temp_var_is_created` on
`ClassBindings` (#7981 ) (overlookmotel)
- 27cc6da transformer/class-properties: Store `is_declaration` only on
`ClassDetails` (#7980 ) (overlookmotel)
- ee282f8 transformer/class-properties: Remove `move_expression`s
(#7979 ) (overlookmotel)
- 94b376a transformer/class-properties: Simplify logic for when to
create temp binding (#7977 ) (overlookmotel)
- ff9d1b3 transformer/class-properties: Comments about shorter output
(#7976 ) (overlookmotel)
- 6fc40f0 transformer/class-properties: Pass `BoundIdentifier`s by
reference (#7968 ) (overlookmotel)
- 69eeeea transformer/class-properties: Methods take `&self` where
possible (#7967 ) (overlookmotel)
- 98340bb transformer/class-properties: Use stack of `ClassDetails`
(#7947 ) (overlookmotel)
- 088dd48 transformer/class-properties: Shorten code (#7913 )
(overlookmotel)
- 544ffbf transformer/class-properties: Split up code into multiple
files (#7912 ) (overlookmotel)
- dcaf674 transformer/class-properties: Rename file (#7910 )
(overlookmotel)
- 6243980 transformer/class-properties: Instance prop inits visitor use
`Visit` (#7867 ) (overlookmotel)
- eb47d43 transformer/class-properties: Re-use existing `Vec` (#7854 )
(overlookmotel)
- 1380b7b transformer/class-properties: Reduce visibility of method
(#7858 ) (overlookmotel)
- 0f5e078 transformer/class-properties: Rename `*_owner` to `owned_*`
(#7855 ) (Dunqing)
- 4ea90d4 transformer/react-refresh: Calculate signature key once
(#7970 ) (Dunqing)
- 15b9bff transformer/typescript: Reuse `Atom` (#7969 ) (overlookmotel)
### Styling
- fb897f6 data_structures: Add line break (#7882 ) (overlookmotel)
- 7fb9d47 rust: `cargo +nightly fmt` (#7877 ) (Boshen)
### Testing
- 523d48c transformer: Move named test to exports folder (#7922 )
(Dunqing)
- e766051 transformer: Skip test which uses filesystem under miri
(#7874 ) (overlookmotel)
- f39e65e transformer: Prevent lint error when running miri (#7873 )
(overlookmotel)
Co-authored-by: Dunqing <29533304+Dunqing@users.noreply.github.com>
2024-12-18 11:48:12 +08:00
Boshen
c16a85176d
feat(napi/transform): add jsx: 'preserve' option ( #7965 )
...
closes #7958
2024-12-17 13:49:51 +00:00
翠 / green
db9e93b554
feat(mangler): mangle top level variables ( #7907 )
...
Adds `top_level` option which is similar to [terser's `toplevel`
option](https://terser.org/docs/cli-usage/#cli-mangle-options ).
---------
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
2024-12-15 21:31:41 +08:00
overlookmotel
3858221f45
refactor(global): sort imports ( #7883 )
...
Pure refactor. Re-order imports for clarity:
1. `std`
2. External crates
3. `oxc_*` crates
4. Current crate `use crate::...`
5. Super `use super::...`
6. Local modules
This order is from "furthest away" to "closest". This makes it clearer to see what is coming from where.
`cargo +nightly fmt` (#7877 ) did a lot of the work, but unfortunately `rustfmt` does not have an option to (a) put workspace crates in a separate block from external crates and (b) move `mod` statements to after `use` statements.
2024-12-14 15:07:21 +00:00
Boshen
7fb9d47460
style(rust): cargo +nightly fmt ( #7877 )
2024-12-14 06:03:31 +00:00
oxc-bot
1428527da6
release(crates): v0.41.0 ( #7846 )
...
## [0.41.0] - 2024-12-13
- fb325dc ast: [**BREAKING**] `span` field must be the first element
(#7821 ) (Boshen)
- 96a26d3 ast: [**BREAKING**] Rename `is_strict` methods to
`has_use_strict_directive` (#7783 ) (overlookmotel)
### Features
- 8991f33 ast: Add `visit_span` to `Visit` and `VisitMut` (#7816 )
(overlookmotel)
- f7900ab ast: Add `ArrowFunctionExpression::has_use_strict_directive`
method (#7784 ) (overlookmotel)
- e727ae9 transformer/class-properties: Transform super member
expressions that are inside static prop initializer (#7815 ) (Dunqing)
### Bug Fixes
- 7610dc1 parser: Parse `import source from 'mod'` (#7833 ) (Boshen)
- 9479e2b semantic: Missing references when `export {}` references a
type-only binding and a normal (#7812 ) (Yunfei He)
- 7a83230 semantic: Missing reference when `export default` references a
type alias binding (#7813 ) (Dunqing)
- 4a3bca8 semantic: Fix identifying strict mode arrow functions (#7785 )
(overlookmotel)
- 5b7e1ad transformer: Remove span of define value (#7811 ) (Hiroshi
Ogawa)
- 14896cb transformer/class-properties: Create temp vars in correct
scope (#7824 ) (overlookmotel)
- 25bb6da transformer/class-properties: Fix `ScopeId`s in instance prop
initializers (#7823 ) (overlookmotel)
- 65b109a transformer/class-properties: No `raw` for generated
`StringLiteral` (#7825 ) (overlookmotel)
- 2964a61 transformer/class-properties: Unwrap failed when private field
expression doesn't contain optional expression in `ChainExpression`
(#7798 ) (Dunqing)
- 6fa6785 transformer/class-properties: Panic when the callee or member
is `ParenthesisExpression` or TS-syntax expressions. (#7795 ) (Dunqing)
- bb22c67 transformer/class-properties: Fix `ScopeId`s in static prop
initializers (#7791 ) (overlookmotel)
- caa57f1 transformer/class-properties: Fix scope flags in static prop
initializers (#7786 ) (overlookmotel)
### Performance
- 4448b63 codegen: Faster writing indentation (#7820 ) (overlookmotel)
- afaaffa codegen: Fast path for `options.print_comments()` (#7806 )
(Boshen)
### Refactor
- 0f367e5 semantic: Improve the logic of resolving references to be
cleaner (#7829 ) (Dunqing)
- 5710950 semantic: Move export-related reference flags logic to visit
functions (#7828 ) (Dunqing)
- b290ebd transformer: Handle `<CWD>` in test runner (#7799 ) (Dunqing)
- e70deb9 transformer/class-properties: Locate instance props insertion
location in separate step (#7819 ) (overlookmotel)
- afc5f1e transformer/class-properties: De-deduplicate code (#7805 )
(overlookmotel)
- 47a91d2 transformer/class-properties: Shorten code (#7804 )
(overlookmotel)
- 54ef2b9 transformer/class-properties: Rename
`debug_assert_expr_is_not_parenthesis_or_typescript_syntax` (#7803 )
(overlookmotel)
- 3cdc47c transformer/class-properties: `#[inline(always)]` on
`assert_expr_neither_parenthesis_nor_typescript_syntax` (#7802 )
(overlookmotel)
### Testing
- d72c888 transformer/replace-global-defines: Remove panicking test
(#7838 ) (overlookmotel)
Co-authored-by: Boshen <1430279+Boshen@users.noreply.github.com>
2024-12-13 21:25:13 +08:00
renovate[bot]
358d375bbd
chore(deps): update rust crates ( #7787 )
2024-12-12 22:45:45 +08:00
oxc-bot
bd572c609b
release(crates): v0.40.1 ( #7781 )
...
## [0.40.1] - 2024-12-10
### Bug Fixes
- 18d0ce3 napi: Rename `Error` to `OxcError` to avoid name collision
(#7780 ) (Boshen)
Co-authored-by: Boshen <1430279+Boshen@users.noreply.github.com>
2024-12-11 00:35:34 +08:00
Boshen
18d0ce3c06
fix(napi): rename Error to OxcError to avoid name collision ( #7780 )
2024-12-11 00:30:07 +08:00
oxc-bot
6768f7ded2
release(crates): v0.40.0 ( #7775 )
2024-12-10 23:04:43 +08:00
Boshen
9157a0ed0f
feat(napi/parser): add getUtf16ByteOffset API; update README ( #7772 )
2024-12-10 14:15:39 +00:00
Boshen
f3cfa7f3dd
feat(napi/parser): add get_line_column_number API ( #7765 )
2024-12-10 12:49:11 +00:00
Boshen
4bd3d103d3
feat(napi/parser): introduce experimental MagicString ( #7529 )
...
Hold magic string instance on the Rust side for utf8 string manipulation.
2024-12-10 08:33:47 +00:00
Boshen
2803aec521
feat(napi/transform): return helpers information ( #7737 )
...
closes #7599
2024-12-09 14:07:40 +00:00
Boshen
c254a5b12c
test(napi/transform): use the expect API instead of assert ( #7739 )
2024-12-09 09:28:01 +00:00
Boshen
48b1e4ad32
refactor(napi/parser): enable serialize feature for oxc_ast only ( #7728 )
2024-12-08 15:38:57 +00:00
Boshen
c98457db5c
feat(napi/transformer): add runtime helper mode ( #7727 )
...
part of #7599
2024-12-08 15:29:55 +00:00
Boshen
85eec3c82e
feat(napi/transform,napi/parser): return structured error object ( #7724 )
...
closes #7261
2024-12-08 14:11:56 +00:00
Boshen
00fea9285b
feat(napi/parser): expose span positions of import.meta ( #7677 )
2024-12-05 11:03:52 +00:00
Kevin Deng 三咲智子
245d7d922c
fix(oxc_transformer): alias es2015 to es6 ( #7673 )
...
Supported in
[esbuild](https://esbuild.github.io/try/#dAAwLjI0LjAALS10YXJnZXQ9ZXM2ADEqKjI )
2024-12-05 16:26:05 +08:00
Boshen
1de2842f8e
feat(napi/parser): return EcmaScriptModule::hasModuleSyntax ( #7647 )
2024-12-04 13:00:47 +00:00
oxc-bot
fee2143f4c
release(crates): v0.39.0 ( #7643 )
2024-12-04 19:43:22 +08:00
Boshen
771c698a81
feat(oxc): remove oxc_napi crate ( #7634 )
...
napi has a limitation, it cannot feature gate type exposure.
closes #7623
2024-12-04 10:07:32 +08:00
Boshen
b4f3812c4a
refactor(oxc_napi): remove source_map - moved to its crate ( #7614 )
2024-12-03 14:42:34 +00:00
Boshen
bd977cf742
feat(oxc): add oxc_napi crate ( #7612 )
2024-12-03 14:02:47 +00:00
Boshen
40792b4440
feat(napi/parser): change parse API to accept mandatory filename and optional lang ( #7605 )
2024-12-03 12:09:48 +00:00
Boshen
7c62a33a06
feat(napi/parser): return esm info ( #7602 )
...
The parser now returns import / export statement information, which can be used for parser plugins.
2024-12-03 11:21:54 +00:00