Appearance
Fix module, import, export, and call errors
Separate decoding, validation, linking, and invocation. The first boundary that fails tells you where to look next.
Decode or validation failure
Separate validation from execution:
sh
wago validate fib.wasmCommon causes are malformed bytes, a disabled proposal, a module built for a different WebAssembly feature profile, or a feature unavailable on the selected platform. Wago enables its supported Core 3 feature set by default.
Select Core 2 compatibility when the producer or deployment requires that narrower profile:
sh
wago run --core 2 --invoke fib fib.wasm 20Do not use feature flags to force malformed Wasm through.
Missing import
sh
wago module imports fib.wasm
wago module capabilities fib.wasmAn unresolved import means the module needs another plugin scope, an uninstalled plugin, an application host function, or a corrected name and signature.
For a local project:
sh
wago init --run
wago add github.com/wago-org/wasi
wago plugin listFor the Go API:
go
imports := wago.NewImports()
imports.HostFunc("host", "log", logFunc)
instance, err := runtime.Instantiate(ctx, module, wago.WithImports(imports))Missing export
Command modules normally export _start. Select a library function explicitly:
sh
wago run --invoke missing fib.wasm 20A source-language function name does not necessarily survive compilation as a Wasm export.
Rejected arguments
Wago follows the Wasm signature. This fails before guest code because nope is not an i32:
sh
wago run --invoke fib fib.wasm nopeUse a value that matches the signature:
sh
wago run --invoke fib fib.wasm 30:i32In Go, use matching typed values:
go
out, err := inst.InvokeValues(ctx, "add", wago.ValueI32(20), wago.ValueI32(22))