Open kwonoj opened 2 years ago
- [ ] Wasm32-wasi plugin support story: likely this is upstream (browser / node) runtime issue.
Does this "story" refer to https://github.com/WebAssembly/component-model ?
Does this "story" refer to WebAssembly/component-model ?
No. It's about executing wasm plugin itself - when the runtime (wasmer) runs in wasm-host, it does not embed own runtime but tries to borrow host's runtime to execute wasm binary instead. So unlike native swc binary, it'll run via node.js / browser's wasm runtime. Currently we recommend to build plugin with wasi, and expose some system access (like filesystem) so to run those correctly host runtime need full support for wasi.
@kwonoj Is there any update?
Describe the feature
The stories around supporting plugins in SWC (https://github.com/swc-project/swc/discussions/3540) did not cover wasm host version of the SWC, namely
@swc/wasm
and@swc/wasm-web
. Currently, wasm host version of SWC lacks of any kind of plugin support including existing JS based one. This issue tracks to support plugins universally across any runtime we support, including wasm host version.The scope of plugin support is limited to the new, experimental plugin written in wasm. I do not have conclusions if it's technically possible to support JS written plugin or not but in either case we do not aim to support it in here.
Plugin support in wasm host have working proof of concept at https://github.com/kwonoj/swc/tree/feat-plugin-js-wasm-host nowhere close to ready to be included in core. There are lots of problems need to be solved separately, however it proves main concept of let internal webassembly runtime we use can
borrow
host runtime's webassembly compiler if it runs on the supported platform. Notably, this means web brower & node.js.These are known subtasks to achieve initial working experimental support.
PluginTransformTracker
: Somehow accessing guest memory ref fails only with PluginTransformTracker's init logic, works fine with raw poc code. : https://github.com/wasmerio/wasmer/issues/2816wasmer
andwasmer/js
selectivelyBabel plugin or link to the feature description
https://github.com/swc-project/swc/discussions/3540
Additional context
No response