通过 WebAssembly 使用 Go 插件系统
go-plugin 是一个基于 WebAssembly (缩写为 WASM) 的 Go (golang) 插件系统。作为一个插件被编译为 WASM,它可以实现节省空间、内存安全、沙箱化和可移植性。插件系统会自动从 [Protocol Buffers][protobuf] 文件中生成 Go SDK 供插件使用。虽然它基于 WASM,但插件作者/使用者无需了解 WASM 规范,因为原始 WASM API 由 SDK 封装。**自动生成的 Go 接口:**插件系统从 Protocol Buffers 文件(如 gRPC)中生成主机和插件的 Go 代码。对于 protobuf/gRPC 用户来说,学习如何使用 go-plugin 非常容易。
安全:WASM 描述了一个内存安全、沙箱化的执行环境。除非主机允许这些操作,否则插件无法访问文件系统和网络。即使是第三方插件也可以安全地执行。插件无法导致主机进程崩溃,因为它被沙箱化了。
双向通信: WASM 允许嵌入主机函数。由于 WASM 限制了某些功能(例如网络访问),以保障安全性,插件可以调用主机明确嵌入的函数,以扩展功能。
暂无开放 Issues,或尚未同步最近议题。