Saying Goodbye to Asm.js

· coding systems web · Source ↗

TLDR

  • Firefox 148 disables SpiderMonkey’s asm.js optimizations by default; full removal planned, with WebAssembly as the successor.

Key Takeaways

  • asm.js shipped in Firefox 22 (2013) as a statically-typed JS subset letting SpiderMonkey compile C/C++ to near-native speed without a separate sandbox.
  • It enabled Unity, Unreal Engine, and Figma-era C++ codebases to run in browsers; Epic Citadel was ported in four days.
  • asm.js code still runs via the regular JIT in Firefox 148+, nothing breaks, but recompiling to WebAssembly yields faster execution and smaller binaries.
  • OdinMonkey (the asm.js compiler) is being retired; BaldrMonkey and RabaldrMonkey now handle WebAssembly optimization and baseline compilation.
  • Maintenance cost and VM attack surface were the stated reasons for removal now that WebAssembly usage dominates.

Hacker News Comment Review

  • Commenters broadly credit asm.js as the proof-of-concept that made WebAssembly politically and technically viable; without it, browser vendors may never have aligned on WASM.
  • Frustration surfaced around the WASM ecosystem’s slow maturity: limited direct Web API access from WASM and painful Emscripten ABI churn make legacy asm.js codebases hard to migrate cleanly.
  • The Gary Bernhardt “Birth and Death of JavaScript” talk was repeatedly cited as a cultural touchstone; commenters noted how much of its satire became literal engineering reality.

Notable Comments

  • @rudi-c: Confirms Figma’s original C++ codebase used asm.js to validate browser viability before paying customers existed; switching to WASM later cut load time by eliminating JS parsing overhead.
  • @sehugg: Flags a practical gap: no asm.js-to-WASM transpiler exists, and recompiling legacy code with old Emscripten versions is actively painful.

Original | Discuss on HN