diff options
Diffstat (limited to 'inter/main.go')
| -rw-r--r-- | inter/main.go | 42 |
1 files changed, 42 insertions, 0 deletions
diff --git a/inter/main.go b/inter/main.go new file mode 100644 index 0000000..e0dd0a7 --- /dev/null +++ b/inter/main.go @@ -0,0 +1,42 @@ +package main + +import ( + "context" + "fmt" + "os" + + "github.com/tetratelabs/wazero" + "github.com/tetratelabs/wazero/imports/wasi_snapshot_preview1" +) + +const wasmLocation = "../hello.wasm" + +func main() { + var ctx = context.Background() + + var runtime = wazero.NewRuntime(ctx) + defer runtime.Close(ctx) + + wasi_snapshot_preview1.MustInstantiate(ctx, runtime) + + var wasm, wasmErr = LoadWasm() + if wasmErr != nil { + panic(fmt.Sprintf("Failed to load WASM module: %s", wasmErr.Error())) + } + + var mod, modErr = runtime.Instantiate(ctx, wasm) + if modErr != nil { + panic(fmt.Sprintf("Failed to instantiate WASM module: %s", modErr.Error())) + } + + var add = mod.ExportedFunction("Add") + var result, callErr = add.Call(ctx, 25, 25) + if callErr != nil { + panic(fmt.Sprintf("Failed to call WASM finction: %s", callErr.Error())) + } + fmt.Printf("Addition result: %v\n", result[0]) +} + +func LoadWasm() ([]byte, error) { + return os.ReadFile(wasmLocation) +} |
