...
1 package main
2
3 import (
4 "context"
5 _ "embed"
6 "fmt"
7 "log"
8 "os"
9 "strconv"
10
11 "github.com/tetratelabs/wazero"
12 "github.com/tetratelabs/wazero/imports/assemblyscript"
13 )
14
15
16
17
18 var asWasm []byte
19
20
21
22
23
24 func main() {
25
26 ctx := context.Background()
27
28
29 r := wazero.NewRuntime(ctx)
30 defer r.Close(ctx)
31
32
33
34 _, err := assemblyscript.Instantiate(ctx, r)
35 if err != nil {
36 log.Panicln(err)
37 }
38
39
40
41
42 mod, err := r.InstantiateWithConfig(ctx, asWasm,
43
44 wazero.NewModuleConfig().WithStdout(os.Stdout).WithStderr(os.Stderr))
45 if err != nil {
46 log.Panicln(err)
47 }
48
49
50 helloWorld := mod.ExportedFunction("hello_world")
51 goodbyeWorld := mod.ExportedFunction("goodbye_world")
52
53
54 numStr := os.Args[1]
55 num, err := strconv.Atoi(numStr)
56 if err != nil {
57 log.Panicln(err)
58 }
59
60
61
62 results, err := helloWorld.Call(ctx, uint64(num))
63 if err != nil {
64 log.Panicln(err)
65 }
66 fmt.Printf("hello_world returned: %v", results[0])
67
68
69
70 if _, err = goodbyeWorld.Call(ctx); err == nil {
71 log.Panicln("goodbye_world did not fail")
72 }
73 }
74
View as plain text