diff options
| author | Physcik <mynameisgennadiy@vk.com> | 2025-12-15 15:26:38 +0500 |
|---|---|---|
| committer | Physcik <mynameisgennadiy@vk.com> | 2025-12-15 15:26:38 +0500 |
| commit | 942d5d8b84f55d71a275a7d6f3446587ab7368a3 (patch) | |
| tree | 92d5dfa321f0b2b41a2b2cabd1d770c4febc9289 /inter/main.go | |
Wasm build pipeline
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) +} |
