and good execution require more. Coding for WebAssembly is not easy, even in your favorite language! WebAssembly is not the only way to do extensibility or fast startup 6 "WebAssembly aims to execute at native speed", but your mileage will vary WebAssembly is not a "write once, run anywhere" panacea
of its specs are around browser use. Features are acceptable if used by at least two browsers. Its virtual stack machine and bytecode formats are used outside the browser. 8
with instructions similar to real hardware. Common hardware are register machines, not stack machines, and their assembly code is architecture specific. 9
• Wasm is bytecode, not a package or image format • WebAssembly is a compile target for a possibly constrained language • WebAssembly has no standard library programming WebAssembly is different
via shared memory, globals and functions 11 • no capabilities besides number crunching, more more is often needed • WASI are function imports for I/O, time, random numbers, ENV, etc • When acting like an entrypoint, it is using WASI WebAssembly is a coprocessor
bias. Ex field instructions • Other languages share object model, GC, stdlib • W3C Working Group • Dominates the browser • Hardware bias. Ex SIMD instructions • Other languages bring their own object model, GC, stlib Virtual Stack Machines
can cause outages • hit the ground running • deep integration • testable • low latency, can handle partitions • experts only Remote APIs (Webhooks, gRPC, OpenAPI, etc.)
without custom builds • alternative to DSLs and custom builds to manipulate HTTP • istio (go) configures and distribute proxy-plugins • envoy is the wasm runtime (v8 c++) • ABI is proxy-wasm 17 HTTP Proxy Extension envoyproxy.io v8.dev github.com/proxy-wasm/spec
others. 18 • kubewarden validates incoming k8s requests with wasm • controller (go) integrates with k8s and configures • policy evaluation rust+wasmtime. • ABI is based on waPC k8s dynamic admission controller kubewarden.io wasmtime.dev wapc.io
is more constrained than a natural language. What do you do about it? • How do you plan to distribute or sign wasm? • Do you know what’s happening inside the Wasm? 22
relevantly 24 • Mesh already uses wasm, so you can practice • Many projects use an SDK approach to enable success • WebAssembly has a vibrant Spec and OSS ecosystem Closing thoughts