Skip to main content

Changelog: swc v1.2.61

· 2 min read

Bugfixes#

parser: Long numeric literals (#1803, #1806)#

swc now can handle very long numeric literals like

00000020000000000000000000000000;

or

0.00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002225073858507201;

logical assignments (#1788)#

swc now transpiles

a ||= b;

and

a ??= b;

properly.

escapes in jsx properties (#1782)#

There was a bug which make using unicode chracters in jsx properties hard.

preset-env: Nullish assignments (#1812)#

Because some browsers support nullish coaelscing operator while not supporting nullish assignments, I patched swc to transpile assignments to assignment with nullish coaelscing operator.

Line terminators in literals (#1754)#

EcmaScript allows some strange chracters to be used in a string literal. Previously swc didn't allow it, but it's now fixed by @tmpfs.

optimizer: Side effects of while (#1825)#

Previsously the dead branch remover of swc was to aggressive and could break codes like

while ((p(), 1)) {}while ((await something.foo, 1)) {}

This is now fixed.

parser: Undefined unicode codepoints (#1813)#

For rust-side users of swc, the code below made program error with arithmetic overlfow.

\u{cccccccccsccccccQcXt[uc(~).const[uctor().const[uctor())tbr())

Platform support#

old linux (#1809)#

swc now uses older version of glibc to support old linux environments.

Done by @Brooooooklyn