{"repo":"knqyf263/go-plugin","free":true,"listed":false,"github":"https://github.com/knqyf263/go-plugin","clone":"git clone https://github.com/knqyf263/go-plugin.git","description":"Go Plugin System over WebAssembly","language":"Go","stars":730,"topics":["go","golang","plugin","plugins","protobuf3","protocol-buffers"],"license":"MIT","category":"api-integrations-sdks","readme_excerpt":"Go Plugin System over WebAssembly go-plugin is a Go (golang) plugin system over WebAssembly (abbreviated Wasm). As a plugin is compiled to Wasm, it can be size-efficient, memory-safe, sandboxed and portable. The plugin system auto-generates Go SDK for plugins from [Protocol Buffers][protobuf] files. While it is powered by Wasm, plugin authors/users don't have to be aware of the Wasm specification since the raw Wasm APIs are capsulated by the SDK. It uses the same definition as gRPC, but go-plugin communicates with plugins in memory, not over RPC. It is inspired by [hashicorp/go-plugin][hashicorp-go-plugin]. Features The Go plugin system supports a number of features: Auto-generated Go interfaces: The plugin system generates Go code for hosts and plugins from Protocol Buffers files like gRPC. It is easy to learn how to use go-plugin for protobuf/gRPC users. Plugins are Go interface implementations: Raw Wasm APIs are hidden so that user can write and consume plugins naturally. To a plugin author: you just implement an interface as if it were going to run in the same process. For a plugin user: you just use and call functions on an interface as if it were in the same process. This plugin system handles the communication in between. Safe: Wasm describes a memory-safe, sandboxed execution environment. Plugins cannot access filesystem and network unless hosts allow those operations. Even 3rd-party plugins can be executed safely. Plugins can't crash the host process as it is sandbox","default_branch":null,"files":null,"tree":[],"storefront":"/r/knqyf263","claimed":false,"request_supported":{"post":"https://gitbuyer.com/r/knqyf263/go-plugin/request-supported","requests":0},"note":"indexed from public GitHub; nothing is for sale on this page. Clone it from GitHub. Paid listings live at /search."}