Go-WASM NodeJS
NodeJSからGolangでWebAssemblyビルドした関数を呼び出すサンプルになります。
About
Rustみたいに素直ではないGolangのWebAssemblyをなんとかしようとして、結局TSに移植する過程で負けたコードです。
デッドロックとかデッドロックとかデッドロックとかデッドロックとかに随分と時間を吸われてなんとか動くまでになったものです。
NodeJSから jiro4989/ojosama を動作させるためにせっかくだしWebAssemblyで動かしたら速度改善も望めて JSとの親和性も高くなるんじゃねと思い作っていたので中身の動作は、jiro4989/ojosama となります
wasm_exec_node.js
とwasm_exec.js
は公式が提供しているものを使用しています。
またwasm_exec.js
はGoのWebAssemblyが特殊なためそのために必要となるものです。SDK的な何かだと思ってます(多分違うけど)
Run
Go 1.18.3を使用してビルドしています
NodeJS v16.14.2を使用して実行します
main.go
をWASMでビルドします
1. # Windows (Power Shell 7.x)
$env:GOOS="js"
$env:GOARCH="wasm"
go build -o main.wasm .
# Linux
GOOS=js
GOARCH=wasm
go build -o main.wasm *.go
2. 実行
node ./wasm_exec_node.js ./main.wasm
# Result
[LOG] WebAssembly Initialized
[LOG] Converting
RESULT: おハーブですわ!
License
ライセンスの所在はいまいちわからないので、すべて自分で書いたmain.go
はMITライセンスにしておきます。
jiro4989/ojosama は読み込んでるだけだからここに書く必要があるのかはよくわからないが、jiro4989/ojosamaのライセンスに従います。
wasm_exec_node.js
とwasm_exec.js
は公式がBSDで提供してるんでまあって感じで
自由に使ってください(使い道あるか知らないけど、あったらスターください....)