WASM Is the New CGI
WASM vs CGI / “New CGI” Claim
- Many see the headline as misleading: CGI is “one process per request, stateless by default,” whereas WASM is a portable bytecode for a VM.
- Defenders argue the analogy is about the model, not the CGI protocol: snapshotting and resuming WASM modules can give “fresh per-request processes” without high startup costs, akin to “CGI without the downsides” and “serverless without cold starts.”
- Critics say this ignores long‑standing techniques for sharing state across requests and conflates execution model (CGI/serverless) with implementation tech (WASM, micro‑VMs).
WASM vs JVM, CLR, Flash, Applets, etc.
- Some argue WASM is “just another bytecode,” reinventing the JVM/CLR/Flash era.
- Counterpoints:
- Ubiquity: virtually every modern browser ships a WASM runtime by default.
- Openness and multi‑vendor standardization vs earlier proprietary plugins.
- Design for near‑native performance, linear memory, simple verified bytecode, and small surface area.
- Easier compilation for C/C++/Rust and other non‑GC languages.
- Others note JVM/.NET also verify bytecode and supported many languages; they see WASM as mostly a slimmer, better‑modularized redo.
Security and Sandbox Model
- Broad agreement that WASM is safer than old plugins mainly because:
- It runs inside the browser sandbox with limited capabilities.
- Memory and control flow are constrained and easily validated.
- Access to OS/host APIs is explicitly granted by the host (capability model).
- Caveats:
- Bugs inside a WASM module (e.g., C++ buffer overflows) still exist; they’re just contained.
- Browser/WASM sandbox escapes still occur, though they are rare and heavily scrutinized.
Serverless, Local‑First, and Architecture Trends
- Some predict server‑side WASM will power future “serverless” platforms: lightweight isolation, fast cold starts, potentially even bare‑metal runtimes.
- Others favor “local‑first” apps (heavy client logic, server mainly for sync) and see serverless as mostly a cloud‑billing strategy.
- Disagreement on feasibility of local‑first for complex, centralized, or highly collaborative systems.
Developer Experience, Performance, and Practical Use
- Enthusiasts:
- Reuse existing native code in the browser or in plugins.
- Predictable performance vs JS engine heuristics.
- Potential evergreen server runtimes decoupled from specific language versions.
- Skeptics:
- Extra complexity vs just using JS or plain server‑rendered code.
- Large WASM blobs, worse battery life on mobile, and tricky debugging and linking.
- Tooling and component model still feel immature; DOM access requires JS or bindings.
Meta: Cycles and “Inner Platform Effect”
- Several comments frame WASM and serverless as part of recurring cycles:
- Fat vs thin clients, CGI → app servers → serverless, plugins → JS → WASM.
- Concern that complex WASM platforms risk re‑implementing OS‑like stacks “poorly” on top of existing systems.