Structured guides for learning WASM, WAT, runtime behavior, browser integration, and security.
What WebAssembly is, why it exists, where it fits, and when not to use it.
introvmjavascriptstableRuntimeRuntime And VM ConceptsValidation, compilation, instantiation, interpreter/baseline/JIT paths, and why predictable types matter.
runtimejitvalidationllvmstableStart HereWASM Compared With Flash And PluginsHow WebAssembly differs from Flash, ActionScript, Shockwave, and NPAPI plugin models.
securityhistorypluginsstableCompilationLanguages That Compile To WebAssemblySource languages, compiler frontends, IRs, backends, WAT, binaries, imports, and glue.
ccpprustgostableBinaryBinary Format And Module StructureMagic bytes, version, sections, opcodes, LEB128, and byte-level inspection.
binarysectionsleb128opcodesstableSecuritySigning, Integrity, And EncryptionCode signing, SRI, hashes, trusted origins, and what browsers actually validate.
securityintegritysigningstableRuntimeBlob, ArrayBuffer, Fetch, And StreamingHow to load WASM from fetch, streaming APIs, ArrayBuffer, Uint8Array, Blob, upload, or generated bytes.
fetchblobarraybufferstreamingstableRuntimeLinear MemoryPages, growth, typed array views, JS sharing, strings, pointers, bounds checks, and W^X safety.
memorysecuritystringspointersstableRuntimeWASM Written In WASMInterpreters, self-hosting, bytecode in memory, host compilation, and why this is not raw memory execution.
interpreterself-hostingmemorystableRuntimeTables, Dynamic Dispatch, And Referencesfuncref, externref, call_indirect, virtual tables, imported/exported tables, and safety.
tablefuncrefexternrefcall_indirectstableRuntimeModules, Instances, Imports, And ExportsThe difference between compiled module code and running instance state.
moduleinstanceimportsexportsstableRuntimeGlobals And String ConstantsMutable/immutable globals, JS Global objects, numeric globals, imported string constants, and string passing.
globalsstringsbuiltinsexperimentalRuntimeRuntime Interaction And InspectionInspect memory, tables, globals, exports, mutate state, call functions, and observe traps.
runtimeinspectordebuggingstableRuntimeESM-Style WASM LoadingLoading WebAssembly modules with module-like semantics and feature-detected demos.
esmmodulesloadingexperimentalRuntimeWASM With Web APIsCanvas, WebGL, WebGPU, DOM, BOM, audio, camera, files, workers, service workers, and WASI.
webglwebgpudomworkersstableCompilationEmscripten And JavaScript GlueWhy generated JS glue exists and how C/C++ libraries map onto web APIs.
emscriptengluesdlopenglstableWATWAT And S-ExpressionsText format, nested and flat forms, Lisp-like syntax, binary mapping, and why WAT is useful.
wats-expressionslispbinarystableWATStack Machine ModelOperand stack, value types, blocks, loops, branches, calls, and stack effects.
stacki32i64f32stableWATFunction SyntaxNames, indices, params, results, locals, local.get/set/tee, exports, and imports.
functionslocalsexportsstableWATTypes And Function TypesReusable signatures, type indices, params/results, typed references, and proposal support.
typessignaturesgcstableWATFunction CallsDirect calls, indirect calls, imported callbacks, JavaScript exports, dispatch tables, and globals.
callcall_indirectimportstablesstableWATImportsImporting functions, memory, tables, globals, host functions, and env namespaces.
importsenvhoststableWATMemory In WATDeclaring/importing/exporting memory, loads/stores, data, fill/copy/init/drop, memory64, and custom page warnings.
memorywatmemory64multimemorystableWATMemory And JavaScriptWebAssembly.Memory, ArrayBuffer, SharedArrayBuffer, typed views, imported/exported memory, and shared state.
memoryjavascriptsharedarraybufferstableWATHigher-Order ConceptsState machines, pure functions, data flow, compiler IR, deterministic execution, and runtime state.
functionalstateirstableWATString Examples And Base64 ScaffoldUTF-8, TextEncoder/TextDecoder, pointer/length passing, and a base64 decoder scaffold with altchars.
stringsutf8base64scaffoldRuntimeThreadsShared memory, SharedArrayBuffer, workers, shared workers, headers, notifications, and browser support.
threadsworkerssharedarraybuffercoopexperimentalJavaScript APIJavaScript WebAssembly NamespaceWebAssembly is a namespace with static methods and constructor interfaces, not a class to instantiate.
javascriptnamespaceapistableJavaScript APIWebAssembly.ModuleCompiled module representation, imports, exports, storage, caching, and sharing.
modulejavascriptstableJavaScript APIWebAssembly.GlobalMutable/immutable globals, JS-created globals, imports, exports, and numeric limitations.
globaljavascriptstableJavaScript APIWebAssembly.InstanceInstance creation, exports, imports, running state, calls, and inspection.
instancejavascriptstableJavaScript APIWebAssembly.MemoryCreate, read, write, grow, share, and use memory without a WASM module.
memoryjavascriptstableJavaScript APIWebAssembly.TableTables, funcref, externref, get/set/grow, and dispatch safety.
tablejavascriptstableJavaScript APIExceptions And TagsException/tag interfaces, thrown errors, tag data, retries, and support caveats.
exceptionstagsproposalexperimentalJavaScript APICompile, Link, And Runtime ErrorsCompileError, LinkError, RuntimeError, validation errors, import errors, memory errors, traps, and type mismatches.
errorstrapsdebuggingstableBinary FormatReading WebAssembly OpcodesWhat opcodes are, how WAT maps to binary bytes, prefixed opcode spaces, LEB128 immediates, and why some WAT forms have no opcode.
opcodesbinaryleb128encodingstable