Rust-based platform for the Web
Go to file
강동윤 eebf14fbef
Allow stable rust (#118)
This pr introduces some cargo features. For `swc_common` and `swc_ecma_ast`, it introduces a feature flag `fold`.
`Fold` and `Visit` traits exist only if the feature is enabled.

For `swc_ecma_parser`, flag called `verify` is added. When disabled, we skip checking of validity of some expressions.

e.g. `{foo = bar}`

Verification is disabled by default it requires nightly compiler
2019-01-17 23:17:16 +09:00
.cargo Allow stable rust (#118) 2019-01-17 23:17:16 +09:00
.vscode Performance & Node binding (#84) 2018-12-21 16:54:36 +09:00
atoms Reduce binary size (#116) 2019-01-10 18:23:25 +09:00
common Allow stable rust (#118) 2019-01-17 23:17:16 +09:00
ecmascript Allow stable rust (#118) 2019-01-17 23:17:16 +09:00
macros Allow stable rust (#118) 2019-01-17 23:17:16 +09:00
scripts ECMAScript parser (#1) 2018-01-12 16:53:06 +09:00
src Reduce binary size (#116) 2019-01-10 18:23:25 +09:00
testing Allow stable rust (#118) 2019-01-17 23:17:16 +09:00
.gitignore More transcompilers (#49) 2018-11-14 19:40:46 +09:00
.gitmodules inline benchmark files and remove submodule 2018-12-22 18:35:44 +09:00
.rustfmt.toml Performance & Node binding (#84) 2018-12-21 16:54:36 +09:00
.travis.yml Typescript & parser for decorators 2019-01-07 19:43:47 +09:00
ARCHITECTURE.md Fix link to reference files 2018-12-25 14:18:54 -08:00
bors.toml Add bors to prevent misktake. 2018-01-14 14:44:32 +09:00
Cargo.toml Move config from libswc to node-swc 2019-01-09 18:40:14 +09:00
CONTRIBUTING.md Add CONTRIBUTING.md and ARCHITECTURE.md 2018-12-04 15:11:50 +09:00
LICENSE-APACHE initial commit 2017-12-22 22:07:03 +09:00
LICENSE-MIT initial commit 2017-12-22 22:07:03 +09:00
README.md implement es3::reserved_word (#103) 2018-12-30 12:56:04 +09:00
rust-toolchain Ecmascript codegen (#40) 2018-10-25 13:17:05 +09:00

speedy web compiler

Build Status codecov


Make the web (development) faster.

swc is rust port of babel and closure compiler.

Installation

Currently this requires nightly version of rust.

npm i -D swc

or

yarn add --dev swc

Features

Parsers

  • es2019
  • jsx
  • typescript

Transforms

New generation javascript to old-days javascript.

  • es3

    • member-expression-literals
    • property-literals
    • reserved-words
  • es5

    • property-mutators
  • es2015

    • arrow-functions
    • block-scoped-functions
    • block-scoping
      • Note: this might be buggy (at this time)
    • classes
    • computed-properties
    • destructuring
    • duplicate-keys
    • for-of
    • function-name
    • instanceof
    • literals
    • new-target
    • object-super
    • parameters
    • shorthand-properties
    • spread
    • sticky regex (y flag)
    • template-literals
      • invalid escape sequences inside tagged template literals. (aka es2018)
    • typeof-symbol
    • unicode-regex
  • es2016

    • exponentiation-operator
  • es2017

    • async-to-generator
  • es2018

    • async-generator-functions
    • dotall-regex
    • object-rest-spread
      • Using symbol as a key
    • optional-catch-binding
    • unicode-property-regex
  • react

    • jsx

Performance

The lower bound of the speedup compared to babel is 16. The benchmarks were run on Macbook pro, dual core, 2.3GHz Intel Core i5, 16 GB ram

performance
swc (ffi) 1,086 ops/sec ±0.77% (84 runs sampled)
swc-optimize (ffi) 1,060 ops/sec ±0.63% (87 runs sampled)
swc (ffi, simd) 1,295 ops/sec ±0.87% (89 runs sampled)
swc-optimize (ffi, simd) 1,270 ops/sec ±0.24% (89 runs sampled)
babel 65.72 ops/sec ±6.45% (62 runs sampled)

Contributing

See CONTRIBUTING.md. You may also find the architecture documentation useful (ARCHITECTURE.md).

License

swc is primarily distributed under the terms of both the MIT license and the Apache License (Version 2.0).

See LICENSE-APACHE and LICENSE-MIT for details.