Rust-based platform for the Web
Go to file
강동윤 4ff6d4ed4a
Performance & Node binding (#84)
swc_common:
 - update rustc-ap crates to v313

swc_ecma_ast:
 - use bool instead of Option<Span>


swc_ecma_parser:
 - remove LexerInput
 - use uncons_while
 - assert only on debug mode
 - use Visit instead of Fold while verifying
 - replace debug! with trace!
 - disable logging while benchmarking
 - drop slog

swc_ecma_transforms:
 - classes: fold Decl instead of Stmt

swc:
 - add nodejs binding
2018-12-21 16:54:36 +09:00
.cargo Make it thread safe 2018-11-17 17:02:34 +09:00
.vscode Performance & Node binding (#84) 2018-12-21 16:54:36 +09:00
atoms More works (#66) 2018-11-18 14:00:07 +09:00
common Performance & Node binding (#84) 2018-12-21 16:54:36 +09:00
ecmascript Performance & Node binding (#84) 2018-12-21 16:54:36 +09:00
ffi Performance & Node binding (#84) 2018-12-21 16:54:36 +09:00
macros Performance & Node binding (#84) 2018-12-21 16:54:36 +09:00
scripts ECMAScript parser (#1) 2018-01-12 16:53:06 +09:00
src Performance & Node binding (#84) 2018-12-21 16:54:36 +09:00
testing Performance & Node binding (#84) 2018-12-21 16:54:36 +09:00
.gitignore More transcompilers (#49) 2018-11-14 19:40:46 +09:00
.gitmodules Performance & Node binding (#84) 2018-12-21 16:54:36 +09:00
.rustfmt.toml Performance & Node binding (#84) 2018-12-21 16:54:36 +09:00
.travis.yml Es2015 (#80) 2018-11-28 12:24:08 +09:00
ARCHITECTURE.md Add CONTRIBUTING.md and ARCHITECTURE.md 2018-12-04 15:11:50 +09:00
bors.toml Add bors to prevent misktake. 2018-01-14 14:44:32 +09:00
Cargo.toml Performance & Node binding (#84) 2018-12-21 16:54:36 +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 Performance & Node binding (#84) 2018-12-21 16:54:36 +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 -SD @swc-project/swc

or

yarn add --dev @swc-project/swc

Features

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
      • getter / setter
    • 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
    • optional-catch-binding
    • unicode-property-regex

Performance

The benchmarks were run on Macbook pro, dual core, 2.3GHz Intel Core i5, 16 GB

performance
swc (ffi) 1,086 ops/sec ±0.77% (84 runs sampled)
swc-optimize (ffi) 1,060 ops/sec ±0.63% (87 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.