# wazero — the zero dependency WebAssembly runtime for Go developers

# wazero

wazero is a WebAssembly runtime written in Go. It complies with the WebAssembly Core Specification (W3C 1.0 and 2.0). Its headline property is being the "zero dependency" runtime for Go: it has no dependencies beyond the Go standard library and `golang.org/x/sys`, and it does not require CGO. Because there is no CGO, projects that embed wazero keep Go's easy cross-compilation — you can build for any target Go supports without a C toolchain.

The point of wazero is to let a Go program run code written in other languages (compiled to WebAssembly) safely inside the Go process, using Wasm as a sandbox and portable execution format.

## Execution modes

wazero ships two engines:

- **Interpreter** — platform-agnostic, works on every target Go can compile to (including riscv64). More portable, slower.
- **Compiler** — the default. Performs ahead-of-time (AOT) compilation of a Wasm module into native machine code during `Runtime.CompileModule`, typically 10x+ faster than the interpreter. Currently supports amd64 and arm64.

Both engines pass the WebAssembly Core specification test suites on their supported platforms. Tested on Linux, macOS, Windows, and BSD variants.

## API stability

wazero reached 1.0 in March 2023 and follows semantic versioning, so the public API is stable across the 1.x line. The project supports the two most recent Go versions, matching Go's official support policy.

## Usage

```bash
go get github.com/tetratelabs/wazero@latest
```

(The canonical import path historically is `github.com/tetratelabs/wazero`; the repo is mirrored/hosted under the `wazero/wazero` GitHub organization.)

## Repo facts

- Repo: https://github.com/wazero/wazero
- Stars: ~6.3k
- License: Apache-2.0
- Primary language: Go (~98.7%)
- ~1,971 commits, 35 releases at time of fetch
- wazero is a registered trademark of Tetrate.io, Inc.
