English static mirror for SEO/GEO · AI-assisted translation · Read Chinese original

WebAssembly 3.0 Deep-Dive Report: Real-World Adoption Is Far Below the Hype

Forum topic · ✨步子哥 · 2026-08-06

Summary

This in-depth Chinese tech forum report audits the WebAssembly 3.0 standard (announced complete by the W3C Wasm CG/WG on 2025-09-17) against specification text, engine source code, and exclusive Chrome telemetry data pulled from the Chrome Platform Status API (data through 2026-08-04). Its central claim: Wasm 3.0 is technically solid—typed function references and WasmGC are the most important foundational work since MVP—but its real-world presence is orders of magnitude smaller than commonly believed. Key findings: Wasm is instantiated in only 0.0613% of Chrome page loads (the widely cited 5.5% figure is off by ~90x); Memory64 usage sits at 0.00000146% and declined after default enablement; the new exnref exception handling runs on roughly 1/28,900 as many pages as the legacy scheme (median basis); and V8's 64-bit memory caps at 128 TB (32-bit page numbers internally), 16 GiB via JS-API—far below the spec's 16 EiB validation limit. The report also documents inconsistencies between two official documents on what 3.0 contains, the absence of any standalone wasm-core-3 document or errata, engine support gaps (table64 still WIP), and evidence that WasmGC usage likely traces to a single large deployment (strong inference: Google's J2CL stack).

Overview

This is a translated, structured digest of a detailed Chinese-language investigation into WebAssembly 3.0, combining specification forensics, engine source-code review, and original Chrome UseCounter telemetry (13 full time series pulled 2026-08-06, data through 2026-08-04).

One-line conclusion: WebAssembly 3.0 is technically honest and solidly engineered, but its real-world footprint is roughly two orders of magnitude smaller than nearly everyone assumes.

Key points

Version semantics and documentation inconsistencies

  • Wasm 3.0 was declared complete as a "live standard" on 2025-09-17; claims of a "2026-06-13" release are false. There is no standalone wasm-core-3 document—the 3.0 content lives in a Candidate Standard still short-named wasm-core-2 (rendered 2026-07-28). Wasm 3.0 will never be a W3C Recommendation due to the "evergreen" model.
  • Two official documents disagree on what 3.0 contains: the proposals tracker lists 11 features; the core spec change history lists 10, with three mismatches (Branch Hinting and JS String Builtins absent from the core change history; Profiles included despite being Phase 1—and uniquely lacking a proposal footnote). No errata exist; fixes roll into the main branch, so no citable frozen version exists.
  • Adoption reality (Chrome UseCounter)

  • WebAssemblyInstantiation: 0.0613% of page loads. The widely circulated "5.5% of Chrome pages use Wasm" is off by ~90x; the "41% of sites" claim is baseless.
  • Memory64: 0.00000146%—usage *dropped* to 18% of its flag-era peak after Chrome enabled it by default. asm.js (2013) outruns it 1670x the same day.
  • New exnref exception handling (3.0) vs legacy EH: ~28,900x gap on 30-day medians; ~99.9965% of Wasm exception handling in the wild still runs the legacy scheme. Kotlin/Wasm officially requires "legacy exception handling."
  • Multi-memory: 0.0012% of Wasm pages; engine limits differ 1000x (V8: 100,000; SpiderMonkey/JSC: 100).
  • Claimed usage "explosions" (e.g., "3809x YoY" for Relaxed SIMD) are single-day step jumps from single-source deployments, not adoption curves—median-basis growth for exnref is only 4.2x and multi-memory 1.4x.
  • WasmGC, TypedFuncRef, and JS String Builtins show near-identical values, peak days (2026-06-09), and simultaneous halving—strong inference (not proven) that one large deployment, likely Google's J2CL-compiled Sheets/Docs, accounts for most WasmGC usage.
  • The non-standardized Custom Descriptors (Stage 3) reached 0.0051% in eight months from zero—4.5x faster than WasmGC took three years—showing slow 3.0 uptake reflects lack of demand, not insufficient time.
  • Technical substance of 3.0

  • Typed function references ((ref $sig), call_ref, iso-recursive subtyping) are the genuine foundation enabling WasmGC—at the cost of sharply higher verifier complexity.
  • WasmGC is not "a GC added to Wasm"; structs/arrays are allocated on the host GC heap. This prevents interior pointers, gives no GC-policy control, and cannot express Java-style interface dispatch (forcing Binaryen's J2CL-specific optimization pass).
  • Memory64's six-layer gap: spec validation limit 16 EiB → SpiderMonkey/JSC declaration cap ~8 PiB → V8 architectural ceiling 128 TB (wasm-limits.h: "the number of pages is still a 32-bit number for now") → JS-API growth cap 16 GiB → V8 practical 16 GiB (2 GiB on 32-bit hosts, identical to memory32—pure negative on 32-bit devices). Proposal co-chair Ben Visness: "The only reason to use Memory64 is if you actually need more than 4GB... We still don't even have a way to release memory back to the operating system." table64 remains WIP in V8/Firefox.
  • Deterministic Profile elegantly pins relaxed-SIMD instructions to fixed semantics (institutionalized determinism for blockchains/replay), but only Wasmtime implements it and no real-world case studies exist—"beautiful design, zero deployment."
  • Not in 3.0: Threads (Phase 4), Stack Switching (Phase 3), JSPI, Component Model, Shared-Everything Threads (Phase 1), Custom Descriptors (Stage 3).
  • Engine support

  • Full-3.0 thresholds (per Scala.js): Chrome 137, Firefox 134, Safari 26 (year-based), Node.js 25—far above first-support versions (WasmGC shipped in Chrome 119, 18 major versions earlier). "Safari 145" does not exist.

Methodology discipline

The report enforces: first-source numbers only; 30-day medians for counters below 0.001%; last 3 days of series treated as unsettled; bucket_id verified against Chrome's own property_name fields (five mislabeled counters corrected); YoY claims checked for ±7-day step jumps.

> Bottom line: 3.0's type-system work is the most important foundation since MVP, but "standard completion" and real-world impact remain decoupled—engine shipping precedes standard ratification by years, and adoption follows deployment by major vendors, not standardization.

Tags

#webassembly#wasm-3-0#chromium-telemetry#wasmgc#memory64#exception-handling#standards#browser-engines

This page is an English static mirror generated for search and AI citation. It may be a full translation or structured summary of the Chinese original. Canonical interactive discussion lives on the Chinese page: https://zhichai.net/topic/178603046