[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"article-spidermonkey-retiring-asmjs-firefox-148-en":3,"article-related-spidermonkey-retiring-asmjs-firefox-148-en":30,"series-tools-31d56ff6-2ea2-4c8d-b7be-fea1bb11405d":83},{"id":4,"slug":5,"title":6,"content":7,"summary":8,"source":9,"source_url":10,"author":11,"image_url":12,"cover_image":12,"category":13,"language":14,"translated_content":11,"related_article_id":15,"keywords":16,"key_takeaways":22,"views":26,"created_at":27,"published_at":28,"topic_cluster_id":29},"31d56ff6-2ea2-4c8d-b7be-fea1bb11405d","spidermonkey-retiring-asmjs-firefox-148-en","SpiderMonkey is retiring asm.js in Firefox 148","\u003Cp data-speakable=\"summary\">Firefox 148 disables asm.js optimizations by default, and SpiderMonkey will remove the code later.\u003C\u002Fp>\u003Cp>Mozilla’s \u003Ca href=\"https:\u002F\u002Fspidermonkey.dev\u002Fblog\u002F2026\u002F05\u002F20\u002Fsaying-goodbye-to-asmjs.html\" target=\"_blank\" rel=\"noopener\">SpiderMonkey team\u003C\u002Fa> says the browser’s asm.js path is now off by default in \u003Ca href=\"https:\u002F\u002Fwww.mozilla.org\u002Ffirefox\u002F148.0\u002Freleasenotes\u002F\" target=\"_blank\" rel=\"noopener\">Firefox 148\u003C\u002Fa>, and the engine will drop the code in a future release. That matters because asm.js once helped web apps run near native speed, but the same workloads have largely moved to \u003Ca href=\"https:\u002F\u002Fwebassembly.org\u002F\" target=\"_blank\" rel=\"noopener\">WebAssembly\u003C\u002Fa>.\u003C\u002Fp>\u003Ctable>\u003Cthead>\u003Ctr>\u003Cth>Fact\u003C\u002Fth>\u003Cth>Value\u003C\u002Fth>\u003C\u002Ftr>\u003C\u002Fthead>\u003Ctbody>\u003Ctr>\u003Ctd>Firefox version that disables asm.js optimizations by default\u003C\u002Ftd>\u003Ctd>148\u003C\u002Ftd>\u003C\u002Ftr>\u003Ctr>\u003Ctd>Year asm.js shipped in Firefox\u003C\u002Ftd>\u003Ctd>2013\u003C\u002Ftd>\u003C\u002Ftr>\u003Ctr>\u003Ctd>Firefox version that shipped WebAssembly\u003C\u002Ftd>\u003Ctd>52\u003C\u002Ftd>\u003C\u002Ftr>\u003Ctr>\u003Ctd>Blog date\u003C\u002Ftd>\u003Ctd>May 20, 2026\u003C\u002Ftd>\u003C\u002Ftr>\u003C\u002Ftbody>\u003C\u002Ftable>\u003Ch2>What Mozilla is turning off\u003C\u002Fh2>\u003Cp>asm.js is not disappearing from the web overnight. It is a strict subset of JavaScript, so code that depends on it still runs through SpiderMonkey’s normal JIT path. What is going away is the special optimization pipeline that used to detect asm.js and compile it differently.\u003C\u002Fp>\n\u003Cfigure class=\"my-6\">\u003Cimg src=\"https:\u002F\u002Fxxdpdyhzhpamafnrdkyq.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Fcovers\u002Finline-1779505559907-s2rf.png\" alt=\"SpiderMonkey is retiring asm.js in Firefox 148\" class=\"rounded-xl w-full\" loading=\"lazy\" \u002F>\u003C\u002Ffigure>\n\u003Cp>That distinction matters for site owners. If you have old asm.js code, Firefox will still execute it. You just lose the extra engine work that once made it faster. Mozilla is making a practical cleanup call here: keep supporting the old path, or remove a code path that now duplicates work WebAssembly already handles better.\u003C\u002Fp>\u003Cul>\u003Cli>asm.js optimizations: disabled by default in Firefox 148\u003C\u002Fli>\u003Cli>asm.js code execution: still works as plain JavaScript\u003C\u002Fli>\u003Cli>Future plan: remove the dedicated asm.js code entirely\u003C\u002Fli>\u003Cli>Recommended migration target: WebAssembly\u003C\u002Fli>\u003C\u002Ful>\u003Ch2>Why asm.js mattered in the first place\u003C\u002Fh2>\u003Cp>To understand this move, you have to remember what web performance looked like in the early 2010s. Mozilla built asm.js as a response to \u003Ca href=\"https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FNative_Client\" target=\"_blank\" rel=\"noopener\">NaCl\u003C\u002Fa> and \u003Ca href=\"https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FPortable_Native_Client\" target=\"_blank\" rel=\"noopener\">PNaCl\u003C\u002Fa>, both of which tried to answer a simple question: how can the web run code at native speed?\u003C\u002Fp>\u003Cp>asm.js took a strict, statically typed slice of JavaScript and let the engine recognize it quickly. That let developers ship heavy C and C++ applications without leaving the browser. \u003Ca href=\"https:\u002F\u002Funity.com\u002F\" target=\"_blank\" rel=\"noopener\">Unity\u003C\u002Fa> and \u003Ca href=\"https:\u002F\u002Fwww.unrealengine.com\u002F\" target=\"_blank\" rel=\"noopener\">Unreal Engine\u003C\u002Fa> both used it, and Mozilla says the \u003Ca href=\"https:\u002F\u002Fwww.ea.com\u002Fgames\u002Fea-studios\u002Fcriterion-games\" target=\"_blank\" rel=\"noopener\">Epic Citadel\u003C\u002Fa> demo moved to the web in just four days.\u003C\u002Fp>\u003Cblockquote>“asm.js shipped in Firefox 22 back in 2013 and was a success.” — Ryan Hunt, SpiderMonkey\u003C\u002Fblockquote>\u003Cp>That quote gets at the real story. asm.js was never the end goal; it was the bridge. It proved that browsers could execute serious workloads with web technologies alone, without a separate runtime, IPC layer, or a special \u003Ca href=\"\u002Ftag\u002Fapi\">API\u003C\u002Fa> surface.\u003C\u002Fp>\u003Ch2>How WebAssembly changed the equation\u003C\u002Fh2>\u003Cp>WebAssembly arrived later and took the same basic promise much further. Mozilla says asm.js opened the door to WebAssembly, which shipped in Firefox 52. Once wasm became the standard path for compiled code on the web, the old asm.js compiler started to look like maintenance debt.\u003C\u002Fp>\n\u003Cfigure class=\"my-6\">\u003Cimg src=\"https:\u002F\u002Fxxdpdyhzhpamafnrdkyq.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Fcovers\u002Finline-1779505554328-94b5.png\" alt=\"SpiderMonkey is retiring asm.js in Firefox 148\" class=\"rounded-xl w-full\" loading=\"lazy\" \u002F>\u003C\u002Ffigure>\n\u003Cp>SpiderMonkey is also being blunt about the tradeoff. Keeping the asm.js path alive costs engineering time and adds attack surface inside the VM. If most real-world asm.js content has already migrated, the browser gets little back from preserving a second specialized compiler.\u003C\u002Fp>\u003Cul>\u003Cli>asm.js in Firefox: shipped with Firefox 22\u003C\u002Fli>\u003Cli>WebAssembly in Firefox: shipped with Firefox 52\u003C\u002Fli>\u003Cli>Firefox 148: asm.js optimizations off by default\u003C\u002Fli>\u003Cli>SpiderMonkey’s recommendation: recompile to WebAssembly\u003C\u002Fli>\u003C\u002Ful>\u003Ch2>What developers should do next\u003C\u002Fh2>\u003Cp>If you still ship asm.js, Mozilla’s advice is simple: move to WebAssembly. The team says the wasm pipeline is more advanced than the asm.js pipeline ever was, and the payoff is practical rather than theoretical. You should get faster execution and smaller binaries.\u003C\u002Fp>\u003Cp>That last part matters for real products. Faster startup helps on mobile, smaller payloads help on slow connections, and wasm tooling has matured enough that keeping legacy asm.js around usually makes less sense than porting. If you are maintaining a codebase built for the old pipeline, this is a good moment to measure the cost of staying put.\u003C\u002Fp>\u003Cp>For teams already on WebAssembly, this is mostly a cleanup story. For teams still on asm.js, it is a warning that the browser is no longer investing in that path. The code still runs, but the special treatment is gone, and the removal clock has already started.\u003C\u002Fp>\u003Ch2>Mozilla is closing one chapter and keeping the lesson\u003C\u002Fh2>\u003Cp>SpiderMonkey is retiring asm.js because WebAssembly won, not because the old idea failed. asm.js proved that the browser could host serious compiled workloads, and that proof helped make wasm possible.\u003C\u002Fp>\u003Cp>The practical question now is simple: if your app still depends on asm.js, how long do you want to wait before recompiling? Mozilla has already answered on its side, and Firefox 148 makes that answer visible to everyone using the browser today.\u003C\u002Fp>","Firefox 148 disables asm.js optimizations by default as SpiderMonkey shifts old workloads to WebAssembly and plans to remove the code.","spidermonkey.dev","https:\u002F\u002Fspidermonkey.dev\u002Fblog\u002F2026\u002F05\u002F20\u002Fsaying-goodbye-to-asmjs.html",null,"https:\u002F\u002Fxxdpdyhzhpamafnrdkyq.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Fcovers\u002Finline-1779505559907-s2rf.png","tools","en","5b2cd70c-920f-4d62-bda2-a482b5e069f8",[17,18,19,20,21],"Firefox 148","asm.js","SpiderMonkey","WebAssembly","Mozilla",[23,24,25],"Firefox 148 disables asm.js optimizations by default, but asm.js code still runs as JavaScript.","Mozilla plans to remove the dedicated asm.js code path because WebAssembly has largely replaced it.","Teams still shipping asm.js should recompile to WebAssembly for better performance and smaller binaries.",1,"2026-05-23T03:05:33.612214+00:00","2026-05-23T03:05:33.604+00:00","54f432d2-d0d3-43eb-9cd1-25bab860e9c4",{"tags":31,"relatedLang":42,"relatedPosts":46},[32,34,36,38,40],{"name":18,"slug":33},"asmjs",{"name":19,"slug":35},"spidermonkey",{"name":20,"slug":37},"webassembly",{"name":21,"slug":39},"mozilla",{"name":17,"slug":41},"firefox-148",{"id":15,"slug":43,"title":44,"language":45},"spidermonkey-retiring-asmjs-firefox-148-zh","Firefox 148 開始收掉 asm.js","zh",[47,53,59,65,71,77],{"id":48,"slug":49,"title":50,"cover_image":51,"image_url":51,"created_at":52,"category":13},"1e0d71a2-19ae-44f4-970b-d27f77ad5a8a","nvidia-lg-ai-collaboration-playbook-en","Nvidia and LG turn AI plans into a playbook","https:\u002F\u002Fxxdpdyhzhpamafnrdkyq.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Fcovers\u002Finline-1781056992194-i3tx.png","2026-06-10T02:02:46.922181+00:00",{"id":54,"slug":55,"title":56,"cover_image":57,"image_url":57,"created_at":58,"category":13},"9db77f6f-0d31-4686-86d9-16eb9615633d","ollama-best-free-ai-path-2026-en","Ollama is the best free AI path in 2026 for real work","https:\u002F\u002Fxxdpdyhzhpamafnrdkyq.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Fcovers\u002Finline-1781056075632-qzpq.png","2026-06-10T01:47:25.10989+00:00",{"id":60,"slug":61,"title":62,"cover_image":63,"image_url":63,"created_at":64,"category":13},"c12c0470-eb29-4e44-872d-c133a84a1bc8","awesome-production-ml-turns-chaos-into-stack-en","This MLOps list turns chaos into a stack","https:\u002F\u002Fxxdpdyhzhpamafnrdkyq.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Fcovers\u002Finline-1781055237524-86fa.png","2026-06-10T01:33:15.495884+00:00",{"id":66,"slug":67,"title":68,"cover_image":69,"image_url":69,"created_at":70,"category":13},"58924f21-83f4-405d-8d9a-4af334e9d030","bentoml-turns-model-serving-into-python-apis-en","BentoML turns model serving into Python APIs","https:\u002F\u002Fxxdpdyhzhpamafnrdkyq.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Fcovers\u002Finline-1781054304942-bxxs.png","2026-06-10T01:17:56.721066+00:00",{"id":72,"slug":73,"title":74,"cover_image":75,"image_url":75,"created_at":76,"category":13},"aa96e422-2b01-4480-b4ce-a646be8e0993","magenta-realtime-2-score-inside-daw-en","Magenta RealTime 2 lets you score in the DAW","https:\u002F\u002Fxxdpdyhzhpamafnrdkyq.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Fcovers\u002Finline-1781046208039-ksdz.png","2026-06-09T23:02:56.428086+00:00",{"id":78,"slug":79,"title":80,"cover_image":81,"image_url":81,"created_at":82,"category":13},"c79bca38-50b2-4d80-9a48-7f4d1afd051a","open-source-ai-tools-beat-claude-paid-tiers-en","Open-source AI tools beat Claude’s paid tiers on value","https:\u002F\u002Fxxdpdyhzhpamafnrdkyq.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Fcovers\u002Finline-1781045269190-a1ow.png","2026-06-09T22:47:20.7972+00:00",[84,89,94,99,104,109,114,119,124,129],{"id":85,"slug":86,"title":87,"created_at":88},"8008f1a9-7a00-4bad-88c9-3eedc9c6b4b1","surepath-ai-mcp-policy-controls-en","SurePath AI's New MCP Policy Controls Enhance AI Security","2026-03-26T01:26:52.222015+00:00",{"id":90,"slug":91,"title":92,"created_at":93},"27e39a8f-b65d-4f7b-a875-859e2b210156","mcp-standard-ai-tools-2026-en","MCP Standard in 2026: Integrating AI Tools","2026-03-26T01:27:43.127519+00:00",{"id":95,"slug":96,"title":97,"created_at":98},"165f9a19-c92d-46ba-b3f0-7125f662921d","rag-2026-transforming-enterprise-ai-en","How RAG in 2026 is Transforming Enterprise AI","2026-03-26T01:28:11.485236+00:00",{"id":100,"slug":101,"title":102,"created_at":103},"6a2a8e6e-b956-49d8-be12-cc47bdc132b2","mastering-ai-prompts-2026-guide-en","Mastering AI Prompts: A 2026 Guide for Developers","2026-03-26T01:29:07.835148+00:00",{"id":105,"slug":106,"title":107,"created_at":108},"3ab2c67e-4664-4c67-a013-687a2f605814","garry-tan-open-sources-claude-code-toolkit-en","Garry Tan Open-Sources a Claude Code Toolkit","2026-03-26T08:26:20.245934+00:00",{"id":110,"slug":111,"title":112,"created_at":113},"66a7cbf8-7e76-41d4-9bbf-eaca9761bf69","github-ai-projects-to-watch-in-2026-en","20 GitHub AI Projects to Watch in 2026","2026-03-26T08:28:09.752027+00:00",{"id":115,"slug":116,"title":117,"created_at":118},"9f332fda-eace-448a-a292-2283951eee71","practical-github-guide-learning-ml-2026-en","A Practical GitHub Guide to Learning ML in 2026","2026-03-27T01:16:50.125678+00:00",{"id":120,"slug":121,"title":122,"created_at":123},"1b1f637d-0f4d-42bd-974b-07b53829144d","aiml-2026-student-ai-ml-lab-repo-review-en","AIML-2026 Is a Bare-Bones Student Lab Repo","2026-03-27T01:21:51.661231+00:00",{"id":125,"slug":126,"title":127,"created_at":128},"6d1bf3f6-e191-4d30-b55b-8a0722fa6afe","ai-trending-github-repos-and-research-feeds-en","AI Trending Tracks Repos and Research Feeds","2026-03-27T01:31:35.709532+00:00",{"id":130,"slug":131,"title":132,"created_at":133},"010539a1-4c3a-4bd3-937a-26616422ee0d","awesome-ai-for-science-research-tools-map-en","Awesome AI for Science Is Becoming a Real Research Map","2026-03-27T01:46:50.89513+00:00"]