framework • Zipkin, OpenTelemetry - observability / tracing • Coraza - Web Application Firewall • wazero - Pure Go WebAssembly runtime http://github.com/anuraaga Drink a new type of craft beer
So is Java • No semantics ◦ No operations on structs • Some hardware bias ◦ SIMD instructions Common hardware are register machines, not stack machines
• WebAssembly is a web standard ◦ Biggest contributors are Google, Mozilla, Fastly ◦ Much tooling focuses on integrating wasm and browser • Language runtimes can allow running outside the browser ◦ Go: wazero, Rust: wasmtime, JS: V8, etc ◦ Tooling still immature for integrating wasm and host process
programming language ◦ C++, Rust mature, Go, Javascript less mature • Sandboxed execution model ◦ No access to host memory, syscalls without explicitly exposing through ABI • No structure, standard library, etc ◦ Compile the entire language into binary Compile existing binary for loading in web (not as fast as native but maybe enough) Allow extending apps in a safe way (or only way, e.g. Go)
Sandbox with well defined interface to pass Bad: • Languages are immature • Overall developer experience is poor Ugly: • Writing an ABI for polyglot is really hard
two separately compiled executables • Generally refers to code executing in the same process ◦ IPC is the interface between different processes on a single machine ◦ RPC is the interface between different processes (often) on different machines