makspll / bevy_mod_scripting

Bevy Scripting Plugin
Apache License 2.0
390 stars 31 forks source link

Consider adding a WebAssembly interpreter as a host #119

Open Sorseg opened 4 months ago

Sorseg commented 4 months ago

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:

Does this sound like a good idea to explore? Thank you for developing this!

makspll commented 4 months ago

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.