summaryrefslogtreecommitdiff
path: root/inter/main.go
diff options
context:
space:
mode:
authorPhyscik <mynameisgennadiy@vk.com>2025-12-15 15:26:38 +0500
committerPhyscik <mynameisgennadiy@vk.com>2025-12-15 15:26:38 +0500
commit942d5d8b84f55d71a275a7d6f3446587ab7368a3 (patch)
tree92d5dfa321f0b2b41a2b2cabd1d770c4febc9289 /inter/main.go
Wasm build pipeline
Diffstat (limited to 'inter/main.go')
-rw-r--r--inter/main.go42
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)
+}