Consider adding a WebAssembly interpreter as a host
Opened this issue · 1 comments
Adding a WebAssembly interpreter, that supports the component model, for example the reference implementation wasmtime as a script host will allow using a bunch of languages for scripting (currently JavaScript, Python, Go) and quickly compiled and hot-reloaded rust.
WASM interface definition format also looks like a good fit to describe the scraped bevy API.
Downsides are:
- the wasmtime dependency is quite large (45 seconds of compilation in an empty project from scratch on my ryzen 9 machine)
- put it behind a feature flag or
- seek for an alternative leaner implementation
- the wasm component model, that includes the WIT seems to still being stabilized
Does this sound like a good idea to explore?
Thank you for developing this!
Hey @Sorseg!
Web assembly is definitely something I am interested in experimenting with. I haven't considered the idea of interpreting it!
I think this is definitely the approach I see as most compatible with this lib. Only issue I see is think we'd need to wait for the rust wasm interpreter to support the component model, but please correct me if I am wrong.
I am not familiar enough with WASM to tell if an effective script API would be plausible within vanilla WASM.
I would also wait for the Trait system overhaul PR #112 to merge (should be a few weeks) before developing this as it will make any sort of new integrations a million times simpler.