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.