github.com/tetratelabs/wazero@v1.7.3-0.20240513003603-48f702e154b5/examples/basic/README.md (about) 1 ## Basic example 2 3 This example shows how to extend a Go application with an addition function 4 defined in WebAssembly. 5 6 ```bash 7 $ go run add.go 7 9 8 7 + 9 = 16 9 ``` 10 11 ### Compilation 12 13 wazero is a WebAssembly runtime, embedded in your host application. To run 14 WebAssembly functions, you need access to a WebAssembly Binary (Wasm), 15 typically a `%.wasm` file. 16 17 [add.wasm](testdata/add.wasm) was compiled from [add.go](testdata/add.go) with 18 [TinyGo][1], as it is the most common way to compile Go source to Wasm. Here's 19 the minimal command to build a `%.wasm` binary. 20 21 ```bash 22 cd testdata; tinygo build -o add.wasm -target=wasi add.go 23 ``` 24 25 ### Notes 26 27 * Many other languages compile to (target) Wasm including AssemblyScript, C, 28 C++, Rust, and Zig! 29 * The embedding application is often called the "host" in WebAssembly. 30 * The Wasm binary is often called the "guest" in WebAssembly. Sometimes they 31 need [imports](../../imports) to implement features such as console output. 32 TinyGo's `wasi` target, requires [WASI][2] imports. 33 34 [1]: https://wazero.io/languages/tinygo 35 [2]: https://wazero.io/specs/#wasi