✦ wago

Canonical Wago documentation

Wago facts

A static, citable answer sheet for Wago’s release state, native targets, execution model, concurrency, limits, WASI, and WebAssembly support.

Last synchronized: Wago source: 7d8c58aa454a

What is Wago?

Wago is a WebAssembly engine implemented in Go. It decodes, validates, compiles, instantiates, and executes modules itself; it is not a Go wrapper around a C or C++ runtime.

Implementation
Pure Go; no cgo in the engine.
Execution model
Single-pass native compiler for amd64 and arm64. Wago does not ship an interpreter tier.
Release state
Pre-v0.1 development with nightly and canary artifacts; public stable installation is not yet claimed. There is no stable v1 API promise.

Evidence: README · feature matrix

Native runtime targets

TargetStatusPrimary evidence
linux/amd64supported native runtime CInative CI matrix
linux/arm64supported native runtime CInative CI matrix
darwin/arm64supported native runtime CInative CI matrix
darwin/amd64compiler-only portable compiler/encoder checks; native JIT ABI is not claimednative CI matrix
windows/*planned no native runtime target claimedfeature matrix

“Supported” here means the native runtime, API tests, guard-page path, and corpus correctness run in CI. It does not mean every Go target is a native Wago runtime.

Concurrency contract

Object or operationContractEvidence
RuntimeConcurrent compile, instantiate, and execute on distinct modules/instances is race-tested.race-tested concurrency port
Compiled moduleCompile once and instantiate many. The public docs do not yet make a blanket goroutine-safety promise for every method.README
InstanceDo not make concurrent calls on one instance. Call and result buffers are instance-owned.public API source
Separate instancesConcurrent goroutines may call separate instances, but native Wasm activations are currently serialized by one process-wide lock.native execution serialization · race-tested concurrency port
Memory viewMemory.Bytes() is a borrowed zero-copy view valid only while the memory and owner remain open. Callers must synchronize it against close and guest mutation.borrowed memory-view contract
Host importsNested same-instance Wasm reentry is tested, but a complete public reentrancy contract is not yet documented.README

Resource limits and interruption

ControlStatusEvidence
Declared linear memorysupported Runtime and policy limits cap declared memory.README
Declared table entriespartial Policy limits check each table’s initial/minimum size, not a complete growth ceiling.resource policy enforcement
Execution deadlinesupported Context cancellation and deadlines interrupt amd64/arm64 native execution at safepoints.public API source · feature matrix
Policy MaxInvokeDurationnot-published The field is reserved and not enforced; callers must use a context deadline.resource policy enforcement
Aggregate live-instance memorynot-published No runtime-wide accounting contract is documented at this source commit.README

WASI

WASI is outside Wago core. External plugin integration exists, but this source audit did not establish a function-by-function plugin support matrix, so this page does not claim complete Preview 1 or Preview 2 coverage.

See the WASI plugin listing and README.

WebAssembly proposals

Wago’s Release 2 validation and execution gates are green. Proposal status below comes from the generated feature tracker; “planned” is not partial support.

ProposalStatusEvidence
i32 / i64 integer opspassfeature matrix
f32 / f64 opspassfeature matrix
f32 / f64 ceil / floor / trunc / nearest / copysignpassfeature matrix
Conversions + reinterpretpassfeature matrix
Float→int trunc NaN/overflow trapspassfeature matrix
Control flow: block / loop / if / else / br / br_if / br_table / returnpassfeature matrix
call / call_indirectpassfeature matrix
select, drop, nop, unreachablepassfeature matrix
Localspassfeature matrix
Globalspassfeature matrix
Linear memory load/storepassfeature matrix
memory.size / memory.growpassfeature matrix
Active data segmentspassfeature matrix
Tables + active element segmentspassfeature matrix
Function imports / exportspassfeature matrix
Memory / table / global imports & exportspassfeature matrix
start functionpassfeature matrix
Sign-extension opspassfeature matrix
Non-trapping float→intpassfeature matrix
Multi-valuepassfeature matrix
Reference typespassfeature matrix
Bulk memorypassfeature matrix
Fixed-width SIMDpassfeature matrix
Tail callsplannedfeature matrix
Extended const expressionspassfeature matrix
Typed function referencesplannedfeature matrix
Memory64plannedfeature matrix
Multiple memoriesplannedfeature matrix
Garbage collectionplannedfeature matrix
Exception handlingplannedfeature matrix
Relaxed SIMDplannedfeature matrix
Branch hintingpassfeature matrix
Custom annotations (text)plannedfeature matrix
JS string builtinsplannedfeature matrix
Threads & atomicsplannedfeature matrix
JS Promise integrationplannedfeature matrix
Web Content Security Policyplannedfeature matrix
ESM integrationplannedfeature matrix
Wide arithmeticplannedfeature matrix
Stack switchingplannedfeature matrix
Compact import sectionplannedfeature matrix
Custom page sizesplannedfeature matrix
Custom descriptors & JS interopplannedfeature matrix
Relaxed dead-code validationplannedfeature matrix
Numeric values in WAT dataplannedfeature matrix
Extended name sectionplannedfeature matrix
Rounding variantsplannedfeature matrix
Compilation hintsplannedfeature matrix
JS primitive builtinsplannedfeature matrix
Relaxed atomicsplannedfeature matrix
Type importsplannedfeature matrix
Component modelplannedfeature matrix
C / C++ embedding APIplannedfeature matrix
Flexible vectorsplannedfeature matrix
Memory controlplannedfeature matrix
Reference-typed stringsplannedfeature matrix
Profilesplannedfeature matrix
Shared-everything threadsplannedfeature matrix
Frozen valuesplannedfeature matrix
Half precision (FP16)plannedfeature matrix
More array constructorsplannedfeature matrix
JIT interfaceplannedfeature matrix
Multibyte array accessplannedfeature matrix
Type reflection (JS API)plannedfeature matrix
JS text-encoding builtinsplannedfeature matrix

Precompiled artifacts

Wago can serialize and load .wago compiled modules. The codec is versioned, but a stable cross-release artifact compatibility policy and cache-keyed CLI product are not yet published.

Evidence: README · public API source

Machine-readable source

facts.json is the canonical structured form of this page. Benchmark rows live in project.json; verification and proposal rollups live in stats.json.