// the find
wasmerio/wasmer-go
🐹🕸️ WebAssembly runtime for Go
wasmer-go is a Go binding for the Wasmer WebAssembly runtime, letting you embed and execute Wasm modules inside Go applications. It wraps the Wasmer C API via cgo, so you get near-native execution speed with proper sandboxing. The audience is Go developers who want to run untrusted or plugin-style code without spinning up a subprocess.
The API closely mirrors the WebAssembly spec (Engine, Store, Module, Instance), which means less mental translation if you've read the Wasm spec or used wasmtime in another language. Precompiled shared libraries are bundled for Linux amd64/arm64 and macOS amd64, so most users don't need a Rust toolchain to get started. The examples directory is structured as a proper tutorial sequence rather than a dumped pile of snippets — memory, globals, WASI, error handling each get their own file. WASI support is included and the README honestly explains the Go-compiler/WASI compatibility problem instead of hiding it.
The last commit was February 2025 and Darwin aarch64 (Apple Silicon) and Windows are still marked as in-progress — meaning if you're developing on an M-series Mac you're either cross-compiling or building Wasmer yourself from source. The cgo dependency is a real cost: pure-Go Wasm runtimes like wazero exist and don't drag in a shared library or break cross-compilation. Error handling in the quick-start code silently discards errors with `_`, which will confuse anyone who copies it verbatim. There's no obvious path for upgrading the bundled Wasmer version without rebuilding the whole Rust crate yourself.