78 KiB
Changelog
[unreleased]
Bug Fixes
-
(bindings/node) Support
TsSatisfiesExpression
(#7317) (761ef83) -
(bindings/type) Update types of
jsc.experimental
(#7972) (e40fccb) -
(common) Workaround the
Arc
andrkyv
issue (#7321) (577f81e) -
(common) Disable
tracing/release_max_level_info
(#7401) (95291f2) -
(common) Fix logic for excluding
FileName
from source maps (#7900) (aa64955) -
(css/ast) Make
.hash()
ofToken
not recursive (#8151) (8d7894c) -
(css/modules) Don't drop the correct selector (#7450) (d370324)
-
(css/modules) Preserve attr selectors used with
:global
(#7670) (11b4679) -
(css/modules) Aggregate class names when composes is chained. (#7917) (0db25a2)
-
(css/modules) Support composes when using multiple subclass selectors (#7949) (05ca19b)
-
(css/modules) Allow out-of-order class names for
composes
(#8218) (aeb9caf) -
(css/modules) Fix handling of
:global()
selector (#8219) (02cd7c2) -
(es) Init filesystem cache only if plugin exists (#7436) (786cf3a)
-
(es) Resolve
jsc.baseUrl
for.swcrc
specified by--config-file
(#7801) (fe1ca26) -
(es) Fix default value of
jsc.minify.format.comments
(#7853) (64e51d3) -
(es) Enable resolver if
jsc.baseUrl
is specified (#7998) (f374ad9) -
(es/codegen) Emit type arguments for call expressions (#7335) (7e99e5f)
-
(es/codegen) Do not create duplicate source map entry (#7309) (40ba242)
-
(es/codegen) Emit
;
forTsImportEqualsDecl
(#7464) (3935d02) -
(es/codegen) Remove extra spaces in
AssignPatProp
andKeyValuePatProp
(#7488) (064bcf4) -
(es/codegen) Emit type arguments of jsx element names (#7522) (a0da02d)
-
(es/codegen) Fix regression of source maps (#7523) (f27838d)
-
(es/codegen) Don't strip necessary escape characters (#7687) (b45649b)
-
(es/codegen) Add quotes to property names when
ascii_only
istrue
(#7820) (04921f3) -
(es/codegen) Fix placing of comments of yield arguments (#7858) (122d14c)
-
(es/codegen) Emit leading comments for
ExprStmt
(#7916) (2da5895) -
(es/codegen) Use
emitAssertForImportAttributes
(#7936) (dac8888) -
(es/codegen) Fix codegen of unicode surrogates (#7985) (39c680d)
-
(es/codegen) Fix codegen of optional chaining expr with a comment (#8005) (f07bb48)
-
(es/codegen) Fix codegen of type-only imports (#8070) (6f45b46)
-
(es/codegen) Check for trailing comments while emitting an arrow (#8257) (0faa2c4)
-
(es/codegen) Fix codegen of type args of an import type and a type query (#8296) (369fb21)
-
(es/codegen) Wrap quote for length greater than one (#8351) (2cdea3f)
-
(es/compat) Transform curried function call with optional chaining (#7313) (66b5b11)
-
(es/compat) Fix
is_setter
inparameters
pass (#7348) (e0de83e) -
(es/compat) Mark reserved function names private (#7298) (dba78a0)
-
(es/compat) Fix destructuring handling of
block_scoping
(#7425) (66d52ec) -
(es/compat) Fix variable scoping of object rest pass. (#7437) (f3d660f)
-
(es/compat) Make stage 3 decorator pass use correct state for inner classes (#7508) (cc4146c)
-
(es/compat) Fix handling of
this
of optional chaining pass (#7527) (4644d00) -
(es/compat) Visit arrow body from optional chaining pass (#7549) (bc6e950)
-
(es/compat) Visit transformed expression in optional chaining pass (#7614) (c087c82)
-
(es/compat) Visit children of
while
statement in thegenerator
pass (#7624) (d2ac2c1) -
(es/compat) Fix loose mode of the
spread
pass (#7608) (a7daa5b) -
(es/compat) Fix handling of private members in optional chaining pass (#7610) (7ba7b6e)
-
(es/compat) Fix loose mode of the
spread
pass (#7760) (b69ae8f) -
(es/compat) Remove wrong logic for object patterns in
object_rest
(#7788) (3766a7c) -
(es/compat) Apply transforms for explicit resource management (#7881) (3180e68)
-
(es/compat) Make
SwitchCase
handler ofblock-scoping
stateless (#7888) (4b33d41) -
(es/compat) Visit assign expr in generator (#7932) (97068e1)
-
(es/compat) Handle single expression case in static block (#7944) (a80aec4)
-
(es/compat) Handle
PrivateName
inlogical_assignments
(#7958) (28318f0) -
(es/compat) Handle nullish in fn expr scope (#7980) (5050f58)
-
(es/compat) Skip function scope in
block-scoped-fns
pass (#7975) (d91a554) -
(es/compat) Use return statements for method and setter decorator (#8017) (38bc710)
-
(es/compat) Generate
OptCall
forOptCall
for private fields (#8031) (06b6eb9) -
(es/compat) Fix scoping of
explicit-resource-management
(#8044) (96a7a4d) -
(es/compat) Transform default-exported class decorators correctly (#8050) (a751f1c)
-
(es/compat) Use
async
andawait
correctly inblock-scoping
pass (#8056) (8318ea8) -
(es/compat) Handle
__proto__
edge case inshorthand
pass (#8077) (a912937) -
(es/compat) Handle export default decorator only if not empty (#8099) (bf523f5)
-
(es/compat) Don't add pure annotations to dummy spans (#8172) (9ceb57b)
-
(es/compat) Make
block-scoping
pass rename exports correctly (#8175) (b13bc32) -
(es/compat) Use dummy span for blocks in
parameters
(#8202) (c1b255a) -
(es/compat) Handle private names from class properties pass (#8090) (83a5a0c)
-
(es/decorators) Fix a regression about class expressions (#8102) (cb4361f)
-
(es/decorators) Minimize class declarations transformation (#8245) (6992d83)
-
(es/decorators) Resolve enum for
design:returntype
(#8320) (91ef7c9) -
(es/dep-graph) Analyze import type children (#7883) (057bd5f)
-
(es/fixer) Don't change default decls to default expr exports (#7585) (e272545)
-
(es/fixer) Wrap yield expression in await expression (#8357) (ff719f0)
-
(es/helpers) Remove unnecessary parameters in
helper_expr!
macro (#7296) (38dfb91) -
(es/helpers) Override mistake in
_interop_require_wildcard
(#8076) (1346528) -
(es/minifier) Fix remapping of vars upon inlining (#7362) (1dced17)
-
(es/minifier) Mark all function params as potential property mutation (#7409) (5dbbbea)
-
(es/minifier) Prevent inlining vars assigned outside current function scope (#7414) (40d2bf7)
-
(es/minifier) Don't generate generator arrows (#7466) (e506635)
-
(es/minifier) Infect mutation when assigning a property (#7503) (7f9f0b8)
-
(es/minifier) Don't drop assignments to unused top-level variables (#7581) (a685c88)
-
(es/minifier) Add usage to inlined ident eagerly (#7597) (4f866de)
-
(es/minifier) Don't drop unused properties of top-level vars (#7638) (19ba714)
-
(es/minifier) Fix a bug about
eval
of name mangler (#7615) (6be1f70) -
(es/minifier) Do not reuse identifier used for import bindings (#7639) (a65be14)
-
(es/minifier) Only cast global
Infinity
/undefined
/NaN
(#7684) (241c04a) -
(es/minifier) Drop line comments starting with
!
(#7689) (951138c) -
(es/minifier) Abort seq inliner using visitor (#7699) (a26dbce)
-
(es/minifier) Handle synthesized export default expression (#7707) (5ea6f27)
-
(es/minifier) Mark args of
new
s as references (#7743) (3873f58) -
(es/minifier) Abort on
Array.slice
withstart >= end
(#7745) (36ccbec) -
(es/minifier) Abort seq inliner if a same var is defined in outer scope (#7772) (ef8d121)
-
(es/minifier) Do not drop properties used via
this
(#7785) (552d9aa) -
(es/minifier) Preserve
cooked
while compressing template literals (#7773) (05990a9) -
(es/minifier) Abort seq inliner if var is not fn_local or reassigned (#7804) (f8ca366)
-
(es/minifier) Preserve more analysis data upon inlining (#7823) (31de19e)
-
(es/minifier) Don't inline properties if the var is not
fn-local
(#7839) (7fe01e6) -
(es/minifier) Report
is_fn_local
even if var is hoisted (#7876) (87a47bf) -
(es/minifier) Parse a file as a module only if
opts.module
istrue
(#7943) (b87ac64) -
(es/minifier) Handle
ModuleDecl
when transform const modules (#7959) (06ca1fe) -
(es/minifier) Do not inline into a template literal with sequential inliner (#7971) (b3d3a7b)
-
(es/minifier) Check if object shorthand is skippable for seq inliner (#8036) (01391e3)
-
(es/minifier) Don't inline functions if
keep_fnames
is enabled (#8093) (94bb42e) -
(es/minifier) Abort seq inliner if
b
can short-circuit (#8128) (111de26) -
(es/minifier) Abort function inliner if
keep_fnames
istrue
(#8145) (35601e4) -
(es/minifier) Always consider
reassigned
when inlining (#8168) (c26a225) -
(es/minifier) Use
cooked
while converting tpls into strings (#8248) (be748f0) -
(es/minifier) Enable seq inliner for const declarations (#8255) (ebcd825)
-
(es/minifier) Keep class with a static block (#8283) (20fb5ba)
-
(es/minifier) Respect
pure_funcs
for tagged tpls (#8280) (1ccfc07) -
(es/minifier) Make
Finalizer
inline literals (#8285) (73fec94) -
(es/minifier) Remove hack for built-in class names (#8293) (7985e02)
-
(es/minifier) Apply new
SyntaxContext
to inlinedArrow
(#8301) (c18a959) -
(es/minifier) Apply new
SyntaxContext
to inlinedArrow
correctly (#8312) (572ad63) -
(es/minifier) Fix
if_return
bug related toawait
andyield
(#8328) (01e2c7f) -
(es/minifier) Give up terminate merge if in
try
withfinally
(#8342) (ed5a9b3) -
(es/module) Add
"use strict"
while preserving directives (#7537) (f42fdd2) -
(es/module) Skip CJS and AMD transformations for
Script
(#7661) (a2d0408) -
(es/module) Do not determine module name for modules without exports in UMD (#7718) (40136f7)
-
(es/module) Fix handling of continuous assignments in
systemjs
(#7741) (f713f6a) -
(es/module) Use
jsc.baseUrl
while resolving absolute paths (#7775) (5c4bfa6) -
(es/module) Make
jsc.paths
work for a nest.js app (#7852) (d33a973) -
(es/module) Fix logic for exact matches in
jsc.paths
(#7860) (52a1ee7) -
(es/module) Don't resolve as
node_modules
fromTscResolver
(#7866) (11ebae1) -
(es/module) Don't create absolute paths for
jsc.paths
on Windows (#7892) (5fbc251) -
(es/module) Make
jsc.paths
fully resolve TypeScript files (#7901) (c714dd2) -
(es/module) Fix
jsc.paths
for projects using pnpm (#7918) (a86e9f3) -
(es/module) Preserve import specifier if resolving fails (#7955) (be5b02a)
-
(es/module) Sort the exported ESM bindings (#8024) (990ca06)
-
(es/module) Read link if an import is resolved as symlink (#8297) (7dfdc12)
-
(es/modules) Support
jsc.baseUrl
withoutjsc.paths
(#7302) (9c279b8) -
(es/parser) Fix handling of
in
andout
of typescript (#7308) (6f81cb9) -
(es/parser) Fix parsing of
module
identifier (#7400) (1d3f320) -
(es/parser) Fix parsing of
>
in typescript mode (#7407) (57ad722) -
(es/parser) Allow using
package
as a parameter name in interface (#7438) (33a922b) -
(es/parser) Fix parsing of tsx with a type annotation in a conditional expression (#7440) (a37d59a)
-
(es/parser) Fix parsing of generic jsx element name (#7449) (77850dd)
-
(es/parser) Adjust context while parsing type arguments of TypeScript type queries (#7582) (9d5dda1)
-
(es/parser) Re-lex
<<
as two<
-s if required (#7439) (6850372) -
(es/parser) Skip
this
parameters in setter (#8158) (826386f) -
(es/parser) Consider ASI while parsing TypeScript type aliases (#8263) (e589126)
-
(es/parser) Adjust the context for cond expr while parsing JSX (#8261) (0678c3c)
-
(es/parser) Fix parsing of
import type from from
(#8309) (00b8839) -
(es/parser) Report error for exported reserved name (#8313) (feb8a6d)
-
(es/parser) Wrap with
OptChain
acrossTsNonNull
(#8332) (8af6ffb) -
(es/parsing) Fix parsing of
type satisfies = 0;
(#8305) (51042e0) -
(es/preset-env) Don't log
Yield
to the console (#7548) (8cfc4f9) -
(es/proposal) Improve resolving of
design:returntype
(#8303) (fab51e1) -
(es/react) Default to empty string when emitting refresh signature (#7514) (8e933c8)
-
(es/react) Visit children nodes in
jsx-src
pass (#8212) (47733a9) -
(es/react) Make jsx with single spread child static (#8339) (58568fa)
-
(es/renamer) Allow
globalThis
to be shadowed (#8327) (3dd73a3) -
(es/resolver) Resolve the super class before registering a class name (#7550) (1d9f972)
-
(es/resolver) Correctly resolve global value (#7893) (2db10e9)
-
(es/resolver) Ignore qualifiers of
TsImportType
(#8299) (2113bb3) -
(es/transforms) Do not add
PURE
comment toBytePos(0)
(#8207) (c061356) -
(es/typescript) Don't panic of
@jsxFrag null
(#7540) (76aa91f) -
(es/typescript) Fix handling of optional chaining (#7660) (c017874)
-
(es/typescript) Handle
DeclareCollect
correctly (#8008) (9d08b8a) -
(es/typescript) Handle qualified access in assign pat (#8012) (2f01aba)
-
(es/typescript) Rename wrong
unresolved_mark
(#8018) (5817268) -
(es/typescript) Preserve default value of an exported binding in a namespace (#8029) (cf96171)
-
(es/typescript) Support
ts_enum_is_mutable
with const enums (#8171) (02d0613) -
(es/typescript) Preserve const enum for named export (#8208) (abced23)
-
(es/typescript) Handle shebang with jsx pragma (#8318) (c25601d)
-
(es/utils) Fix string evaluation of array literals (#7731) (e8c58cf)
-
(es/utils) Ignore
typeof Id
while preserving side effects (#7763) (d57ac0d) -
(es/utils) Skip var declarator name in
RefRewriter
(#8125) (fb81a36) -
(swc-info) Use correct path while getting local package versions (#7872) (67afaf1)
-
(swc_core) Correctly expose plugin with host (#7427) (558ca40)
-
(testing) Fix path normalization on windows for testing diffs (#7299) (3422923)
-
(xml/codegen) Fix wrong minification of spaces in a self-closing tag (#7595) (769d651)
Documentation
Features
-
(common) Enable bytecheck for missing structs (#7465) (56ac9eb)
-
(es) Add an option to disable builtin transforms (#7873) (71d01ec)
-
(es/ast) Support import attributes proposal (#7868) (4d3fcb8)
-
(es/codegen) Add ability to set indentation string via rust api (#7494) (a343e7c)
-
(es/codegen) Add an option to print
assert
for import attributes (#7914) (ee75756) -
(es/codegen) Respect
ascii_only: false
forStrLit
(#8217) (1a26be2) -
(es/compat) Support
export class
from stage 3 decorator pass (#7363) (9c052db) -
(es/compat) Partially support auto accessors (#7364) (97ec259)
-
(es/compat) Implement auto accessors fully (#7370) (cad18fa)
-
(es/compat) Implement transform for explicit resource management (#7376) (bcd5a1d)
-
(es/compat) Support
pure_getters
foroptional_chaining
(#7933) (c091c5e) -
(es/compat) Implement decorator metadata proposal (#8097) (9c029ef)
-
(es/compat) Skip empty class static blocks (#8138) (e186b80)
-
(es/config) Accept
jsc.experimental.keepImportAssertions
(#7995) (4d777ee) -
(es/minifier) Drop expressions using sequential inliner (#6936) (246300a)
-
(es/minifier) Enable
hoist_props
by default (#7535) (07a8580) -
(es/minifier) Inline constants even if they are exported (#7583) (398e922)
-
(es/minifier) Compress common sub expressions in sequences (#7587) (ff1ad95)
-
(es/minifier) Drop recursively used var declaration (#7649) (04b0f6d)
-
(es/minifier) Evaluate more
toFixed
expressions (#8109) (7da3f52) -
(es/minifier) Inline into the arguments of
new
using seq inliner (#8127) (4f67794) -
(es/minifier) Respect inline level and preserve native names (#8205) (dd805e9)
-
(es/minifier) Support
format.inline_script
(#8252) (f059270) -
(es/module) Add
export_interop_annotation
flag (#7330) (caee073) -
(es/module) Preserve custom
use
directives (#7528) (3e9dd88) -
(es/module) Improve error message about relative
jsc.baseUrl
(#7827) (9099883) -
(es/module) Add an option to make resolver fully resolve
index.js
(#7945) (7e8d72d) -
(es/optimization) Support
default
imports for const modules (#7604) (ac02b84) -
(es/parser) Implement explicit resource management (#7322) (041b491)
-
(es/parser) Disallow tagged tpl in optional chaining (#7515) (6c00a24)
-
(es/parser) Implement
AsRef<str>
forIdentLike
(#8133) (bffe33a) -
(es/preset-env) Update builtin definitions for
core-js
imports (#7715) (b4f3332) -
(es/testing) Support babel-like fixture testing officially (#8190) (e960614)
-
(es/testing) Use
__swc_snapshots__
fortest!
macro (#8191) (0aafa75) -
(es/typescript) Add
ts_enum_is_mutable
to disable enum inlining (#8115) (57b171d) -
(plugin/runner) Enable in-memory precompiled module cache (#7420) (f8fe365)
-
(plugin/runner) Support shared wasix runtime (#7504) (73929fc)
-
(swc-info) Add a CLI to help issue reporting (#7871) (d6952ea)
-
(swc_core) Allow native env plugin to use memory cache (#7390) (e3868a7)
-
(swc_core) Expose plugin proxy to the host env (#7391) (05b4c11)
-
(swc_core) Expose
visit/serde
as serde feature (#7722) (2bc9637) -
(testing) Add
CARGO_TARGET_DIR
and use it from other crates (#7552) (46fb461)
Miscellaneous Tasks
-
(atoms) Evaluate
.into()
inAtomStoreCell
eagerly (#8363) (1e8edb4) -
(css/linter) Document rules require porting (#8352) (55da0bb)
-
(es) Enable tracing spans for release builds (#7379) (166e77c)
-
(es/minifier) Fix script for extracting test cases from next.js app (#8092) (a2d0779)
-
(es/module) Remove
serde(deny_unknown_fields)
(#8163) (5be8e74) -
(es/parser) Scope use of
lexical
to certain features (#7644) (a961090) -
(es/preset-env) Add the repository url to
Cargo.toml
(#7941) (ca22359) -
(es/preset-env) Ignore
tp
in the version of a browser version (#7968) (005ddc5)
Performance
-
(atoms) Update
hstr
to make global APIs fast (#8241) (c01454a) -
(bindings) Enable
share-generics
to reduce binary size (#7482) (d623db4) -
(css/prefixer) Convert macro to a function call to reduce binary size (#7507) (d545df6)
-
(es) Use
&dyn Comments
to reduce binary size (#7489) (2c3ac68) -
(es) Use
&dyn Comments
for jsx and TypeScript (#7490) (abd62bc) -
(es) Delete useless partition and extend in comments (#8214) (67e2c4a)
-
(es/compat) Improve time complexity of
class_properties
(#7786) (76c6258) -
(es/lexer) Remove needless clones of
Rc<RefCell<AtomStore>>
(#8231) (37657b8) -
(es/minifier) Make minifier not overly generic (#7483) (65ce5d1)
-
(es/minifier) Remove needless operations for char freq analysis (#8222) (b745ed7)
-
(es/minifier) Improve
format.inline_script
(#8292) (7d1836d) -
(es/parser) Use smarter lookup table for lexer (#8226) (d4ae44a)
-
(es/typescript) Visit ts import/export only once (#8213) (a00f575)
Refactor
-
(atoms) Remove usage of
js_word!
to dropstring-cache
(#7976) (84cec87) -
(bindings/node) Remove unused
babelify
type (#7625) (73c7769) -
(cli) Make CLI testable/managable with
swc-bump
(#8045) (f717cf2) -
(common) Remove
add_bitflags
and updatebitflags
(#7571) (95ac74e) -
(common) Mark some methods of
Input
unsafe (#7848) (c657324) -
(es) Extract parser/codegen code for
swc::Compiler
(#8030) (a13f5cb) -
(es/ast) Avoid
transmute
in impl ofHash
forNumber
(#7771) (2258274) -
(es/compat) Split
swc_ecma_transforms_compat
(#8110) (affb6fb) -
(es/minifier) Respect
toplevel
andmodule
options (#7671) (9893bd2) -
(es/minifier) Respect top-level when invoking IIFE (#7690) (bf72362)
-
(es/minifier) Remove
mutated
andmutation_by_call_count
(#7890) (8db968a) -
(es/minifier) Move JS options to
swc_ecma_minifier
(#8028) (725f7f5) -
(es/minifier) Decouple
assign_count
fromreassigned
(#8137) (13106e0) -
(es/module) Reimplement some functions of module/typescript (#8063) (3e5b062)
-
(es/parser) Make
stacker
an optional dependency (#7720) (864bdef) -
(es/parser) Do not validate top-level await with target (#7774) (5f97f86)
-
(es/parser) Don't attempt to handle shebangs in
read_token_number_sign
(#7803) (5e7834a) -
(es/parser) Introduce
TokenKind
along withToken
(#8071) (9b9bc51) -
(es/preset-env) Rename parameter to avoid confusion (#8106) (95eb147)
-
(es/types) Extract
@swc/types
as a small, reusable package (#7834) (f713f1b) -
(es/typescript) Reimplement TypeScript pass (#7202) (9c9a538)
-
(plugin/runner) Revise cache, module loading (#7408) (ac5ab60)
-
(plugin/runner) Add attributes to the module bytes (#7419) (c03a74c)
-
(swc_core) Make
common_plugin_transform
agnostic to mode (#7422) (cfdd407)
Testing
-
(es) Add a test for a unreproducible issue (#7656) (c0e4805)
-
(es/compat) Add a test for optional chaining with loose mode (#7726) (216c4f1)
-
(es/modules) Add a test for unreproducible issue (#7655) (7528de1)