Rust-based platform for the Web
Go to file
renovate[bot] 3597b0f53d
Some checks are pending
CI / Cargo fmt (push) Waiting to run
CI / Cargo clippy (push) Waiting to run
CI / Check license of dependencies (push) Waiting to run
CI / Check (macos-latest) (push) Waiting to run
CI / Check (ubuntu-latest) (push) Waiting to run
CI / Check (windows-latest) (push) Waiting to run
CI / Test wasm (binding_core_wasm) (push) Waiting to run
CI / Test wasm (binding_minifier_wasm) (push) Waiting to run
CI / Test wasm (binding_typescript_wasm) (push) Waiting to run
CI / List crates (push) Waiting to run
CI / Test - ${{ matrix.settings.crate }} - ${{ matrix.settings.os }} (push) Blocked by required conditions
CI / Test node bindings - ${{ matrix.os }} (macos-latest) (push) Waiting to run
CI / Test node bindings - ${{ matrix.os }} (windows-latest) (push) Waiting to run
CI / Test with @swc/cli (push) Waiting to run
CI / Miri (better_scoped_tls) (push) Waiting to run
CI / Miri (string_enum) (push) Waiting to run
CI / Miri (swc) (push) Waiting to run
CI / Miri (swc_bundler) (push) Waiting to run
CI / Done (push) Blocked by required conditions
Benchmark / Bench everything (push) Waiting to run
Publish crates (auto) / Publish cargo crates (push) Waiting to run
chore(deps): update cargo (patch) (#9607)
This PR contains the following updates:

| Package | Type | Update | Change |
|---|---|---|---|
| [futures](https://rust-lang.github.io/futures-rs)
([source](https://redirect.github.com/rust-lang/futures-rs)) |
workspace.dependencies | patch | `0.3.30` -> `0.3.31` |
| [js-sys](https://rustwasm.github.io/wasm-bindgen/)
([source](https://redirect.github.com/rustwasm/wasm-bindgen/tree/HEAD/crates/js-sys))
| workspace.dependencies | patch | `0.3.70` -> `0.3.72` |
| [pathdiff](https://redirect.github.com/Manishearth/pathdiff) |
workspace.dependencies | patch | `0.2.1` -> `0.2.2` |
| [triomphe](https://redirect.github.com/Manishearth/triomphe) |
workspace.dependencies | patch | `0.1.13` -> `0.1.14` |
| [wasm-bindgen](https://rustwasm.github.io/)
([source](https://redirect.github.com/rustwasm/wasm-bindgen)) |
dependencies | patch | `0.2.93` -> `0.2.95` |
| [wasm-bindgen](https://rustwasm.github.io/)
([source](https://redirect.github.com/rustwasm/wasm-bindgen)) |
workspace.dependencies | patch | `0.2.93` -> `0.2.95` |
| [wasm-bindgen-futures](https://rustwasm.github.io/wasm-bindgen/)
([source](https://redirect.github.com/rustwasm/wasm-bindgen/tree/HEAD/crates/futures))
| workspace.dependencies | patch | `0.4.43` -> `0.4.45` |

---

### Release Notes

<details>
<summary>rust-lang/futures-rs (futures)</summary>

###
[`v0.3.31`](https://redirect.github.com/rust-lang/futures-rs/blob/HEAD/CHANGELOG.md#0331---2024-10-05)

[Compare
Source](https://redirect.github.com/rust-lang/futures-rs/compare/0.3.30...0.3.31)

- Fix use after free of task in `FuturesUnordered` when dropped future
panics
([#&#8203;2886](https://redirect.github.com/rust-lang/futures-rs/issues/2886))
- Fix soundness bug in `task::waker_ref`
([#&#8203;2830](https://redirect.github.com/rust-lang/futures-rs/issues/2830))
This is a breaking change but allowed because it is soundness bug fix.
- Fix bugs in `AsyncBufRead::read_line` and `AsyncBufReadExt::lines`
([#&#8203;2884](https://redirect.github.com/rust-lang/futures-rs/issues/2884))
- Fix parsing issue in `select!`/`select_biased!`
([#&#8203;2832](https://redirect.github.com/rust-lang/futures-rs/issues/2832))
This is technically a breaking change as it will now reject a very odd
undocumented syntax that was previously accidentally accepted.
- Work around issue due to upstream `Waker::will_wake` change
([#&#8203;2865](https://redirect.github.com/rust-lang/futures-rs/issues/2865))
- Add `stream::Iter::{get_ref,get_mut,into_inner}`
([#&#8203;2875](https://redirect.github.com/rust-lang/futures-rs/issues/2875))
- Add `future::AlwaysReady`
([#&#8203;2825](https://redirect.github.com/rust-lang/futures-rs/issues/2825))
- Relax trait bound on non-constructor methods of
`io::{BufReader,BufWriter}`
([#&#8203;2848](https://redirect.github.com/rust-lang/futures-rs/issues/2848))

</details>

<details>
<summary>Manishearth/triomphe (triomphe)</summary>

###
[`v0.1.14`](https://redirect.github.com/Manishearth/triomphe/compare/v0.1.13...v0.1.14)

[Compare
Source](https://redirect.github.com/Manishearth/triomphe/compare/v0.1.13...v0.1.14)

</details>

<details>
<summary>rustwasm/wasm-bindgen (wasm-bindgen)</summary>

###
[`v0.2.95`](https://redirect.github.com/rustwasm/wasm-bindgen/blob/HEAD/CHANGELOG.md#0295)

[Compare
Source](https://redirect.github.com/rustwasm/wasm-bindgen/compare/0.2.94...0.2.95)

Released 2024-10-10

##### Added

-   Added support for implicit discriminants in enums.

[#&#8203;4152](https://redirect.github.com/rustwasm/wasm-bindgen/pull/4152)

-   Added support for `Self` in complex type expressions in methods.

[#&#8203;4155](https://redirect.github.com/rustwasm/wasm-bindgen/pull/4155)

##### Changed

-   String enums are no longer generate TypeScript types.

[#&#8203;4174](https://redirect.github.com/rustwasm/wasm-bindgen/pull/4174)

##### Fixed

- Fixed generated setters from WebIDL interface attributes binding to
wrong JS method names.

[#&#8203;4170](https://redirect.github.com/rustwasm/wasm-bindgen/pull/4170)

- Fix string enums showing up in JS documentation and TypeScript
bindings without corresponding types.

[#&#8203;4175](https://redirect.github.com/rustwasm/wasm-bindgen/pull/4175)

***

###
[`v0.2.94`](https://redirect.github.com/rustwasm/wasm-bindgen/blob/HEAD/CHANGELOG.md#0294-YANKED)

[Compare
Source](https://redirect.github.com/rustwasm/wasm-bindgen/compare/0.2.93...0.2.94)

Released 2024-10-09

##### Added

-   Added support for the WebAssembly `Tail Call` proposal.

[#&#8203;4111](https://redirect.github.com/rustwasm/wasm-bindgen/pull/4111)

- Add bindings for
`RTCPeerConnection.setConfiguration(RTCConfiguration)` method.

[#&#8203;4105](https://redirect.github.com/rustwasm/wasm-bindgen/pull/4105)

-   Add bindings to `RTCRtpTransceiverDirection.stopped`.

[#&#8203;4102](https://redirect.github.com/rustwasm/wasm-bindgen/pull/4102)

- Added experimental support for `Symbol.dispose` via
`WASM_BINDGEN_EXPERIMENTAL_SYMBOL_DISPOSE`.

[#&#8203;4118](https://redirect.github.com/rustwasm/wasm-bindgen/pull/4118)

- Added bindings for the draft [WebRTC Encoded
Transform](https://www.w3.org/TR/webrtc-encoded-transform) spec.

[#&#8203;4125](https://redirect.github.com/rustwasm/wasm-bindgen/pull/4125)

-   Added `Debug` implementation to `JsError`.

[#&#8203;4136](https://redirect.github.com/rustwasm/wasm-bindgen/pull/4136)

- Added support for `js_name` and `skip_typescript` attributes for
string enums.

[#&#8203;4147](https://redirect.github.com/rustwasm/wasm-bindgen/pull/4147)

- Added `unsupported` crate to `wasm_bindgen_test(unsupported = test)`
as a way of running tests on non-Wasm targets as well.

[#&#8203;4150](https://redirect.github.com/rustwasm/wasm-bindgen/pull/4150)

- Added additional bindings for methods taking buffer view types (e.g.
`&[u8]`) with corresponding JS types (e.g. `Uint8Array`).

[#&#8203;4156](https://redirect.github.com/rustwasm/wasm-bindgen/pull/4156)

- Added additional bindings for setters from WebIDL interface attributes
with applicaple parameter types of just `JsValue`.

[#&#8203;4156](https://redirect.github.com/rustwasm/wasm-bindgen/pull/4156)

##### Changed

- Implicitly enable reference type and multivalue transformations if the
module already makes use of the corresponding target features.

[#&#8203;4133](https://redirect.github.com/rustwasm/wasm-bindgen/pull/4133)

-   Updated Gamepad API.

[#&#8203;4134](https://redirect.github.com/rustwasm/wasm-bindgen/pull/4134)

-   Deprecated `Gamepad::display_id` and `GamepadHapticActuator::type_`.

[#&#8203;4134](https://redirect.github.com/rustwasm/wasm-bindgen/pull/4134)

- Removed `GamepadAxisMoveEvent`, `GamepadAxisMoveEventInit`,
`GamepadButtonEvent`, `GamepadButtonEventInit` and `GamepadServiceTest`,
which were seemingly never implemented by any JS environment.

[#&#8203;4134](https://redirect.github.com/rustwasm/wasm-bindgen/pull/4134)

- Changed `TextDecoder.decode()` `input` parameter type from `&mut [u8]`
to `&[u8]`.

[#&#8203;4141](https://redirect.github.com/rustwasm/wasm-bindgen/pull/4141)

-   Updated the WebGPU API to the current draft as of 2024-10-07.

[#&#8203;4145](https://redirect.github.com/rustwasm/wasm-bindgen/pull/4145)

- Deprecated generated setters from WebIDL interface attribute taking
`JsValue` in favor of newer bindings with specific parameter types.

[#&#8203;4156](https://redirect.github.com/rustwasm/wasm-bindgen/pull/4156)

##### Fixed

- Fixed linked modules emitting snippet files when not using
`--split-linked-modules`.

[#&#8203;4066](https://redirect.github.com/rustwasm/wasm-bindgen/pull/4066)

- Fixed incorrect deprecation warning when passing no parameter into
`default()` (`init()`) or `initSync()`.

[#&#8203;4074](https://redirect.github.com/rustwasm/wasm-bindgen/pull/4074)

- Fixed many proc-macro generated `impl` blocks missing
`#[automatically_derived]`, affecting test coverage.

[#&#8203;4078](https://redirect.github.com/rustwasm/wasm-bindgen/pull/4078)

- Fixed negative `BigInt` values being incorrectly formatted with two
minus signs.

[#&#8203;4082](https://redirect.github.com/rustwasm/wasm-bindgen/pull/4082)

[#&#8203;4088](https://redirect.github.com/rustwasm/wasm-bindgen/pull/4088)

- Fixed emitted `package.json` structure to correctly specify its
dependencies

[#&#8203;4091](https://redirect.github.com/rustwasm/wasm-bindgen/pull/4091)

- Fixed returning `Option<Enum>` now correctly has the `| undefined`
type in TS bindings.

[#&#8203;4137](https://redirect.github.com/rustwasm/wasm-bindgen/pull/4137)

-   Fixed enum variant name collisions with object prototype fields.

[#&#8203;4137](https://redirect.github.com/rustwasm/wasm-bindgen/pull/4137)

- Fixed multiline doc comment alignment and remove empty ones entirely.

[#&#8203;4135](https://redirect.github.com/rustwasm/wasm-bindgen/pull/4135)

- Fixed `experimental-nodejs-module` target when used with
`#[wasm_bindgen(start)]`.

[#&#8203;4093](https://redirect.github.com/rustwasm/wasm-bindgen/pull/4093)

-   Fixed error when importing very large JS files.

[#&#8203;4146](https://redirect.github.com/rustwasm/wasm-bindgen/pull/4146)

-   Specify `"type": "module"` when deploying to nodejs-module

[#&#8203;4092](https://redirect.github.com/rustwasm/wasm-bindgen/pull/4092)

-   Fixed string enums not generating TypeScript types.

[#&#8203;4147](https://redirect.github.com/rustwasm/wasm-bindgen/pull/4147)

- Bindings that take buffer view types (e.g. `&[u8]`) as parameters will
now correctly return a `Result` when they might not support a backing
`SharedArrayBuffer`. This only applies to new and unstable APIs, which
won't cause a breaking in the API.

[#&#8203;4156](https://redirect.github.com/rustwasm/wasm-bindgen/pull/4156)

***

</details>

---

### Configuration

📅 **Schedule**: Branch creation - At any time (no schedule defined),
Automerge - At any time (no schedule defined).

🚦 **Automerge**: Enabled.

♻ **Rebasing**: Whenever PR is behind base branch, or you tick the
rebase/retry checkbox.

👻 **Immortal**: This PR will be recreated if closed unmerged. Get
[config
help](https://redirect.github.com/renovatebot/renovate/discussions) if
that's undesired.

---

- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box

---

This PR was generated by [Mend Renovate](https://mend.io/renovate/).
View the [repository job
log](https://developer.mend.io/github/swc-project/swc).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzOC45Ny4wIiwidXBkYXRlZEluVmVyIjoiMzguMTIwLjEiLCJ0YXJnZXRCcmFuY2giOiJtYWluIiwibGFiZWxzIjpbXX0=-->

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-10-29 23:20:24 +09:00
.cargo chore(ci): Integrate changeset (#9284) 2024-07-19 18:44:43 +09:00
.changeset fix(es/generator): Fix code generation for break in nested while (#9684) 2024-10-29 22:21:11 +09:00
.github chore(ci): Remove miri ci for swc_ecma_codegen and swc_ecma_minifier (#9664) 2024-10-22 14:03:20 +09:00
.husky fix(es): Remove wrong debug assertion (#4445) 2022-04-26 14:16:38 +00:00
.vscode feat(allocator): Implement default mode (#9242) 2024-07-15 18:53:09 +09:00
bindings chore(deps): update cargo (patch) (#9607) 2024-10-29 23:20:24 +09:00
crates fix(es/generator): Fix code generation for break in nested while (#9684) 2024-10-29 22:21:11 +09:00
docs/adr feat(visit): Add path-aware variants (#5073) 2022-07-05 04:38:27 +00:00
packages perf(visit): Introduce Pass API and adjust visitor APIs for it (#9680) 2024-10-29 11:25:16 +09:00
rules refactor(common): Drop SyntaxContext from AST nodes (#9175) 2024-07-12 13:13:20 +09:00
scripts chore(ci): Fix publish-npm-package action (#9461) 2024-08-20 14:54:07 +09:00
tools chore: Publish crates with swc_core v1.0.0 2024-10-12 16:20:07 +09:00
xtask chore(xtask): Make reducing version of swc_core easier (#9406) 2024-08-09 14:52:10 +09:00
.gitattributes feat(html): Prepare processing system (#4358) 2022-04-22 20:20:47 +09:00
.gitignore perf(es/codegen): Optimize using swc_allocator (#9294) 2024-07-20 03:05:08 +09:00
.gitmodules test(es/decorators): Add tests written by evanw (#8967) 2024-05-23 14:18:32 +09:00
.kodiak.toml chore: Make kodiak auto-approve PRs by @kdy1 2024-01-04 04:46:43 +09:00
.mocha.setup.js chore(repo): Configure prettier (#4523) 2022-05-04 14:25:28 +00:00
.mocharc.js chore(repo): Configure prettier (#4523) 2022-05-04 14:25:28 +00:00
.prettierignore refactor(es/helpers): Move packages for monorepo (#7833) 2023-08-18 04:25:37 +00:00
.prettierrc chore(repo): Configure prettier (#4523) 2022-05-04 14:25:28 +00:00
.rustfmt.toml feat(wasm): Expose async facade interfaces (#5352) 2022-08-01 03:00:28 +00:00
.taplo.toml chore: Update toml formatting (#5368) 2022-08-03 03:07:28 +00:00
.yarnrc.yml chore: Use static .yarnrc 2024-05-29 00:35:29 +09:00
ARCHITECTURE.md doc(contributing): Remove enum_kind from ARCHITECTURE.md (#8666) 2024-02-27 03:53:03 +00:00
Cargo.lock chore(deps): update cargo (patch) (#9607) 2024-10-29 23:20:24 +09:00
Cargo.toml chore(atoms): Update hstr (#9612) 2024-10-04 04:47:10 +00:00
CHANGELOG.md chore: Publish crates with swc_core v3.0.0 2024-10-29 11:30:46 +09:00
cliff.toml chore: Fix git-cliff config 2024-10-01 17:32:16 +09:00
clippy.toml perf(allocator): Drop scoped_tls (#9240) 2024-07-15 14:25:58 +09:00
CONTRIBUTING.md doc(contributing): Document changeset (#9667) 2024-10-23 10:30:43 +09:00
cspell.json feat(css/ast): Make AST intuitive (#6606) 2022-12-09 02:27:19 +00:00
deny.toml build(plugin): Update wasmer to v4.2.5 (#8624) 2024-02-10 03:40:55 +00:00
knope.toml chore(ci): Integrate changeset (#9284) 2024-07-19 18:44:43 +09:00
LICENSE chore: Mention swc in the license (#9417) 2024-08-11 19:31:43 +09:00
MAINTENANCE.md chore: Update cargo-mono (#9323) 2024-07-24 10:59:32 +09:00
package.json chore(deps): update dependency swc-plugin-coverage-instrument to ^0.0.25 (#9676) 2024-10-24 15:11:16 +00:00
README.md perf(allocator): Drop scoped_tls (#9240) 2024-07-15 14:25:58 +09:00
renovate.json fix(common): Use SourceMap::adjust_mappings in correct order (#9447) 2024-08-19 11:37:02 +09:00
rust-toolchain build: Update rustc to nightly-2024-10-07 (#9624) 2024-10-08 15:01:14 +09:00
sgconfig.yml refactor(es/ast): Improve type definitions of patterns (#8532) 2024-02-05 15:32:52 +09:00
tests.yml chore(ci): Use dynamic matrix for cargo-test action (#9233) 2024-07-14 13:19:15 +09:00
yarn.lock chore(deps): update dependency swc-plugin-coverage-instrument to ^0.0.25 (#9676) 2024-10-24 15:11:16 +00:00

swc

Make the web (development) faster.

downloads (@swc/core) downloads (3rd party)

undefined GitHub release (latest SemVer)

GitHub code size in bytes node-current (scoped)

Discord

SWC (stands for Speedy Web Compiler) is a super-fast TypeScript / JavaScript compiler written in Rust. It's a library for Rust and JavaScript at the same time. If you are using SWC from Rust, see rustdoc and for most users, your entry point for using the library will be parser.

Also, SWC tries to ensure that

If you select the latest version of each crates, it will work

for rust users.

MSRV of crates is currently 1.73.

To update all SWC crates you use, you can run curl https://raw.githubusercontent.com/swc-project/swc/main/scripts/update-all-swc-crates.sh | bash -s. This script will update all dependencies to the latest version and run cargo build to ensure that everything works. Note that you need

  • jq
  • cargo upgrade

command to run the script.


If you are using SWC from JavaScript, please refer to docs on the website.

Documentation

Check out the documentation in the website.

Features

Please see comparison with babel.

Performance

Please see benchmark results on the website.

Supporting swc

Sponsors

SWC is a community-driven project, and is maintained by a group of volunteers. If you'd like to help support the future of the project, please consider:

Contributing

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

License

SWC is primarily distributed under the terms of the Apache License (Version 2.0).

See LICENSE for details.