4 ms·
WebAssembly is a nice way to go for such things in future. You provide the interface, their wasm code runs in a sandbox, and your users get to write their plugi
by peutetre 2y ago
WebAssembly is a nice way to go for such things in future. You provide the interface, their wasm code runs in a sandbox, and your users get to write their plugins in whatever language they like.
- deleted 2y ago[deleted]
- unleaded 2y agoThis gets mentioned a lot but has it been used in practice? How would you pass objects and methods etc to the scripting language? Autogenerated C headers?
- brabel 2y agoTo be able to use WASM-compiled languages for embedding you first need a small WASM runtime you can depend on (and things like ref types, GC etc which have been standardized only in the last couple of years). That didn't exist until recently, but now you can use https://github.com/bytecodealliance/wasm-micro-runtime/blob/main/doc/embed_wamr.md https://github.com/bytecodealliance/wasm-micro-runtime/blob/... I am not aware of anyone using this yet, but I hope to see that become common in the next few years.
- peutetre 2y agoThe WebAssembly component model is aimed at having composable components that can call each other. The components can be written in any language, compiled to WebAssembly, and interoperate: https://github.com/WebAssembly/component-model/ https://github.com/WebAssembly/component-model/ Extism is a plugin framework for WebAssembly: https://extism.org/ https://extism.org/ https://github.com/extism/extism https://github.com/extism/extism Postgres and Extism: https://dylibso.com/blog/pg-extism/ https://dylibso.com/blog/pg-extism/ Wasm plugins for Zellij: https://zellij.dev/documentation/plugins https://zellij.dev/documentation/plugins Visual Studio Code can run WebAssembly extensions: https://code.visualstudio.com/blogs/2024/05/08/wasm https://code.visualstudio.com/blogs/2024/05/08/wasm A project to bring WebAssembly plugins to Godot: https://github.com/ashtonmeuser/godot-wasm https://github.com/ashtonmeuser/godot-wasm WasmEdge can be embedded in applications: https://wasmedge.org/docs/embed/overview https://wasmedge.org/docs/embed/overview Wasmer can be embedded in applications: https://blog.wasmer.io/executing-webassembly-in-your-rust-application-d5cd32e8ce46 https://blog.wasmer.io/executing-webassembly-in-your-rust-ap... Wasmtime can be embedded in applications: https://docs.wasmtime.dev/lang.html https://docs.wasmtime.dev/lang.html
- watermelon0 2y agoComplexity of writing and building WASM is a few magnitudes higher than just writing a simple Lua script. It might make sense for building complex plugins, but for simple stuff, Lua still excels, and doesn't require much programming knowledge in many cases.