Tinygo Wasm

· 1 мин. чтения
Оглавление

Несколько заметок, как я заводил сборку go кода под wasm.

Установка tinygo руками

Можно поставить через brew, но я не ищу лёгкий путей.

cd $(mktemp -d)
curl -L -O https://github.com/tinygo-org/tinygo/releases/....tar.gz
tar xf tinygo0.39.0.darwin-arm64.tar.gz
sudo mv tinygo /usr/local

Добавить tinygo ручка в path.

~/.zprofile

...
# --tinygo
export PATH=$PATH:/usr/local/tinygo/bin
...

Однако

% GOOS=js GOARCH=wasm tinygo build -o wasm.tinygo.wasm ./main.go
error: could not find wasm-opt, set the WASMOPT environment variable to override

Упс, какой wasm-opt?

;tldr

curl -L -O https://github.com/WebAssembly/binaryen/releases/download/version_125/binaryen-version_125-arm64-macos.tar.gz
tar xf binaryen-version_125-arm64-macos.tar.gz
sudo mv binaryen-version_125 /usr/local/binaryen

Ну и PATH поправить:

...
# --tinygo
export PATH=$PATH:/usr/local/tinygo/bin
# -- binarien - нужено для tinygo
export PATH=$PATH:/usr/local/binaryen/bin
...

wasm_exec.js - взять из tinygo

В примерах wasm-а хоть и указано что wasm_exec.js отличается от обычного, гошного. Но я как-то не сразу понял.

cp /usr/local/tinygo/targets/wasm_exec.js ./