swiftwasm / swift

WebAssembly support for the Swift programming language
https://swiftwasm.org
1.28k stars 28 forks source link

Roadmap: Component Model Support #5549

Open kateinoigakukun opened 11 months ago

kateinoigakukun commented 11 months ago

Component Model would be one of the most significant ecosystem changes in WebAssembly: https://bytecodealliance.org/articles/webassembly-the-updated-roadmap-for-developers

Here is a list of topics to utilize Component Model in SwiftWasm:

  1. Support -emit-library with Reactor model Currently, we only support -emit-executable, so .wasm binary always have main even though it's compiled with -mexec-model=reactor. We should allow linking .wasm without main entrypoint as a self-contained component. (Note that it does not mean we should support dynamic linking)
  2. We can adopt WASI Preview 2, based on Component Model, using adapters: wasi_snapshot_preview1.wasm
  3. Thanks to C interop, we can already export and import things using Component Model compatible tools using wit-bindgen's C code generator. If we can add Swift code generator to the wit-bindgen, it would be much easier to utilize the Component Model in Swift world.

Links

https://bytecodealliance.org/articles/component-model-tooling-compatibility

aehlke commented 7 months ago

Do you know if C++ interop is coming as well? I ask because of the Xcode/SPM C++ interop added recently; thanks

kateinoigakukun commented 7 months ago

@aehlke C++ interop will be shipped as a part of 5.9 corresponding release soon :)