Tinygo Wasm
Несколько заметок, как я заводил сборку 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 ./