-
-
Notifications
You must be signed in to change notification settings - Fork 3k
Closed
Labels
A-pluginArea: Plugin systemArea: Plugin systemC-enhancementCategory: ImprovementsCategory: ImprovementsR-wontfixNot planned: Won't fixNot planned: Won't fix
Description
Basically load .wasm
files.
Capabilities:
- provide new commands,
- hook on events,
- call helix commands,
- access UI stuff…?
At first we could use a basic toml config file or CLI to feed .wasm files to the editor.
A way to configure permissions on a plugin basis could be investigated to use the sandboxing capabilities coming with WASM.
Example with wasmtime
:
$ wasmtime --dir=. --dir=/tmp demo.wasm [args…]
I think the biggest challenge is to get well-defined interfaces down but let's not fear to break it during early stages.
Later we could investigate embedding a wasm-based scripting language such as Grain or AssemblyScript.
Here are some references:
- [2020/04 (as of writting)] ActuallyUsingWasm, a good introduction to wasm and WASI + comparison between
wasmtime
andwasmer
- [2020/12 (as of writting)] WASI tutorial: WASI tutorial for wasmtime
- [2019/03] Standardizing WASI: A system interface to run WebAssembly outside the web: good article explaining WASI purpose.
- [2019/11] Announcing the Bytecode Alliance: Building a secure by default, composable future for WebAssembly: on the isolation system it provides
- [2021/06] How to make plugins system with Rust and WebAssembly
- zellij has a WASI-based plugins system (doc)
I'm willing to experiment soon
kellytk, apppppppple, mbStavola, AlvinThorn008, weirongxu and 60 morekellytk, AlvinThorn008, wackbyte, adsick, NNBnh and 24 moregoyalyashpal
Metadata
Metadata
Assignees
Labels
A-pluginArea: Plugin systemArea: Plugin systemC-enhancementCategory: ImprovementsCategory: ImprovementsR-wontfixNot planned: Won't fixNot planned: Won't fix