Skip to content

NodeJSからGolangでWebAssemblyビルドした関数を呼び出すサンプル

License

Notifications You must be signed in to change notification settings

code-raisan/Go-WASM-NodeJS

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Go-WASM NodeJS

NodeJSからGolangでWebAssemblyビルドした関数を呼び出すサンプルになります。

About

Rustみたいに素直ではないGolangのWebAssemblyをなんとかしようとして、結局TSに移植する過程で負けたコードです。

デッドロックとかデッドロックとかデッドロックとかデッドロックとかに随分と時間を吸われてなんとか動くまでになったものです。

NodeJSから jiro4989/ojosama を動作させるためにせっかくだしWebAssemblyで動かしたら速度改善も望めて JSとの親和性も高くなるんじゃねと思い作っていたので中身の動作は、jiro4989/ojosama となります

wasm_exec_node.jswasm_exec.jsは公式が提供しているものを使用しています。

またwasm_exec.jsはGoのWebAssemblyが特殊なためそのために必要となるものです。SDK的な何かだと思ってます(多分違うけど)

Run

Go 1.18.3を使用してビルドしています

NodeJS v16.14.2を使用して実行します

1. main.go をWASMでビルドします

# 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.jswasm_exec.jsは公式がBSDで提供してるんでまあって感じで

自由に使ってください(使い道あるか知らないけど、あったらスターください....)

About

NodeJSからGolangでWebAssemblyビルドした関数を呼び出すサンプル

Topics

Resources

License

Stars

Watchers

Forks