swc_ecma_minifier:
- Enable some sequential merging if `collapse_vars` is set.
- Enable sequential merging for top level items.
- `if_return`: Don't inject `void` if it's not exact function body. (#2072)
- `sequences`: Add some condition for aborting. (#2078)
swc_ecma_utils:
- Add `collect_decls`.
- Add `collect_decls_with_ctxt`.
swc_ecma_transforms_optimization:
- `inline_globals`: Don't replace if a binding exists. (#1294)
swc_ecma_parser:
- Fix panic from span assertion. (#2040)
swc_ecma_transforms_compat:
- Fix handling of `await for`. (#1918)
swc_ecma_transforms_base:
- Allow using decorator metadata even if `reflect-metadata` is not imported. (#1362)
swc_ecma_minifier:
- Test mangler using execution test suite.
- `mangler`: Preserve `arguments`.
- `mangler`: Handle shorthand. (#2051)
- `mangler`: Handle object pattern properties.
- `precompress`: Don't drop function declarations if the variable with same name is in different scope. (#2011)
swc_ecma_minifier:
- Remove useless `0` in sequence expressions.
- `analyzer`: Don't treat fn decl as fn expr.
- `sequences`: Use sequence expressions in front of `b`.
- `if_return`: Drop else token within same pass. (#2044)
- Fix counting logic for `pass`. (#2044)
- `analyzer`: Fix `ref_count`.
- `hygiene`: Implement `visit_prop_name`.
- `ignore_return_value`: Property access to function parameters may have side effects.
- `inline`: Treat `!0` as literal.
- Remove some dead codes if `unused` is enabled.
swc_ecma_utils:
- Fix `may_have_side_effects`.
swc_ecma_transforms_base:
- `resolver`: Handle constructor properties correctly. (#2021)
swc_ecma_transforms_compat:
- `block_scoping`: Handle arrows in loops. (#2027)
- `block_scoping`: Handle nested for loops with function between them. (#2027)
- `regenerator`: Handle rhs of `||` correctly. (#2024)
swc:
- Add a test for #1734. (#1734)
swc_ecma_minifier:
- Introduce `bundle` mode, which can be used to parallelize processing of bundled files.
- Add a function analyzer that checks if the function references something from the outer scope.
- Split out parellsizable passes.
- Split `optimzer` into pure / non-pure.
- Run pure optimizations in parallel.
swc_common:
- Add `Span.has_mark`.
swc_ecma_codegen:
- Emit `1e3` for `1000`.
- Optimize output. (#1986)
swc_ecma_minifier:
- name mangler: Don't use keywords as an id.
- `properties`: Optimize member expression with string properties.
- `inline`: Inline some function expressions even if it's not fn-local.
- `analyzer`: Track reassignment correctly.
- `analyzer`: Track fn-local correctly.
- `sequences`: Inject `void` if required.
- `inline`: Inline function declarations correctly.
- `sequences`: Merge expressions into test of if statements.
- `sequences`: Reduce calls to an assigned variable.
- Use `Marks` instead of `&dyn Comments`.
swc_ecma_transforms_optimization:
- `expr_simplifier`: Fix infinite loops.
node/swc:
- Ensure that `.transform` performs minification. (#1989)
- Parser and lexer for lastest ecma spec https://tc39.github.io/ecma262
- Lexer is currently very inefficient
- Use https://github.com/tc39/test262-parser-tests/ for testing.
- Implement proc-macro based ast folder and assert_eq_ignore_span! based on it.
- Some utilities for proc macro at /macros/common