2018-11-23 13:52:46 +03:00
|
|
|
# speedy web compiler
|
2018-01-13 14:42:52 +03:00
|
|
|
|
2018-01-14 13:04:32 +03:00
|
|
|
[![Build Status](https://travis-ci.org/swc-project/swc.svg?branch=master)](https://travis-ci.org/swc-project/swc)
|
|
|
|
[![codecov](https://codecov.io/gh/swc-project/swc/branch/master/graph/badge.svg)](https://codecov.io/gh/swc-project/swc)
|
2018-01-13 14:42:52 +03:00
|
|
|
|
|
|
|
-----
|
|
|
|
|
|
|
|
Make the web (development) faster.
|
2018-11-10 11:44:35 +03:00
|
|
|
|
2018-11-10 13:00:26 +03:00
|
|
|
swc is rust port of [babel][] and [closure compiler][].
|
|
|
|
|
2018-11-10 11:44:35 +03:00
|
|
|
|
|
|
|
# Installation
|
|
|
|
|
2018-12-21 10:54:36 +03:00
|
|
|
Currently this requires nightly version of [rust][].
|
2018-11-10 11:44:35 +03:00
|
|
|
|
|
|
|
```sh
|
2018-12-22 11:19:16 +03:00
|
|
|
npm i -D swc
|
2018-12-21 10:54:36 +03:00
|
|
|
```
|
|
|
|
or
|
|
|
|
```sh
|
2018-12-22 08:08:18 +03:00
|
|
|
yarn add --dev swc
|
2018-11-10 11:44:35 +03:00
|
|
|
```
|
|
|
|
|
2018-11-15 07:29:44 +03:00
|
|
|
# Features
|
|
|
|
|
2018-12-30 05:57:27 +03:00
|
|
|
## Parsers
|
|
|
|
- [x] es2019
|
|
|
|
- [x] jsx
|
|
|
|
- [ ] typescript
|
|
|
|
|
2018-11-15 07:29:44 +03:00
|
|
|
## Transforms
|
|
|
|
New generation javascript to old-days javascript.
|
|
|
|
|
|
|
|
- es3
|
2018-11-18 08:00:07 +03:00
|
|
|
- [x] member-expression-literals
|
|
|
|
- [x] property-literals
|
2018-12-30 06:56:04 +03:00
|
|
|
- [x] reserved-words
|
2018-11-18 08:00:07 +03:00
|
|
|
|
|
|
|
- es5
|
|
|
|
- [ ] property-mutators
|
2018-11-15 07:29:44 +03:00
|
|
|
|
|
|
|
- es2015
|
2018-11-21 12:59:17 +03:00
|
|
|
- [x] arrow-functions
|
2018-11-25 05:31:48 +03:00
|
|
|
- [x] block-scoped-functions
|
2018-11-23 13:22:07 +03:00
|
|
|
- [x] block-scoping
|
|
|
|
- Note: this might be buggy (at this time)
|
2018-11-15 07:29:44 +03:00
|
|
|
- [x] classes
|
2018-11-28 06:26:19 +03:00
|
|
|
- [x] computed-properties
|
|
|
|
- [x] destructuring
|
|
|
|
- [x] duplicate-keys
|
2018-12-21 15:39:42 +03:00
|
|
|
- [x] for-of
|
2018-11-21 12:59:17 +03:00
|
|
|
- [x] function-name
|
2018-11-18 08:00:07 +03:00
|
|
|
- [x] instanceof
|
2018-11-28 06:26:19 +03:00
|
|
|
- [x] literals
|
2018-11-21 12:59:17 +03:00
|
|
|
- [x] new-target
|
2018-11-17 04:02:40 +03:00
|
|
|
- [ ] object-super
|
2018-11-28 06:26:19 +03:00
|
|
|
- [x] parameters
|
2018-11-17 04:02:40 +03:00
|
|
|
- [x] shorthand-properties
|
|
|
|
- [x] spread
|
2018-11-15 07:29:44 +03:00
|
|
|
- [x] sticky regex (`y` flag)
|
2018-11-21 12:59:17 +03:00
|
|
|
- [x] template-literals
|
2018-11-25 05:31:48 +03:00
|
|
|
- [ ] invalid escape sequences inside tagged template literals. (aka es2018)
|
2018-11-18 08:00:07 +03:00
|
|
|
- [x] typeof-symbol
|
2018-11-17 04:02:40 +03:00
|
|
|
- [ ] unicode-regex
|
2018-11-15 07:29:44 +03:00
|
|
|
|
|
|
|
- es2016
|
2018-11-18 08:00:07 +03:00
|
|
|
- [x] exponentiation-operator
|
2018-11-15 07:29:44 +03:00
|
|
|
|
2018-11-17 04:02:40 +03:00
|
|
|
- es2017
|
2018-12-24 04:58:40 +03:00
|
|
|
- [x] async-to-generator
|
2018-11-17 04:02:40 +03:00
|
|
|
|
|
|
|
- es2018
|
|
|
|
- [ ] async-generator-functions
|
|
|
|
- [ ] dotall-regex
|
2018-12-26 11:09:48 +03:00
|
|
|
- [x] object-rest-spread
|
|
|
|
- [ ] Using symbol as a key
|
2018-11-17 04:02:40 +03:00
|
|
|
- [ ] optional-catch-binding
|
|
|
|
- [ ] unicode-property-regex
|
2018-12-30 05:57:27 +03:00
|
|
|
|
|
|
|
- react
|
|
|
|
- [x] jsx
|
2018-11-15 07:29:44 +03:00
|
|
|
|
2018-12-21 10:54:36 +03:00
|
|
|
# Performance
|
2018-11-10 11:44:35 +03:00
|
|
|
|
2018-12-28 19:12:41 +03:00
|
|
|
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
|
2018-12-21 10:58:44 +03:00
|
|
|
|
2018-12-21 15:39:42 +03:00
|
|
|
| | 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) |
|
2018-11-10 11:44:35 +03:00
|
|
|
|
|
|
|
|
2018-11-17 10:38:23 +03:00
|
|
|
## Contributing
|
|
|
|
|
|
|
|
See [CONTRIBUTING.md](CONTRIBUTING.md). You may also find the architecture
|
|
|
|
documentation useful ([ARCHITECTURE.md](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.
|
2018-11-10 11:44:35 +03:00
|
|
|
|
|
|
|
|
|
|
|
|
2018-11-10 13:00:26 +03:00
|
|
|
[babel]:https://github.com/babel/babel
|
|
|
|
[closure compiler]:https://github.com/google/closure-compiler
|
2018-11-10 11:44:35 +03:00
|
|
|
[rust]:https://www.rust-lang.org
|