世界を動かす技術を、日本語で。

Asm.jsとのお別れ

2026年5月20日原文(spidermonkey.dev)

概要

  • Firefox 148以降、 SpiderMonkeyのasm.js最適化 がデフォルトで無効化
  • asm.jsコード自体は 通常のJavaScriptエンジン で引き続き動作
  • WebAssembly への再コンパイル推奨、パフォーマンス向上
  • asm.jsの歴史と WebAssembly誕生 への影響
  • asm.jsコンパイラOdinMonkeyの役割終了と新体制

Firefoxにおけるasm.js最適化の終了

  • Firefox 148 以降、SpiderMonkeyの asm.js最適化機能 がデフォルトで無効化
  • asm.jsコードは 通常のJITコンパイラ で実行、動作に支障なし
  • asm.jsは JavaScriptの厳格なサブセット、特別な環境不要
  • WebAssembly への再コンパイルで 高速化・バイナリ縮小 が可能
  • asm.js最適化コードは将来的に 完全削除予定

asm.jsの歴史と功績

  • asm.jsは Mozilla による NaCl/PNaClへの回答 として誕生
  • 厳格で静的型付けされたJavaScriptサブセットの採用
  • ネイティブコード並みの速度 でWeb上での実行を実現
  • 2013年Firefox 22 で実装、UnityやUnrealなどの C/C++コード資産のWeb移植 を促進
    • 例: Epic Citadelデモ がわずか4日でWeb移植
  • asm.jsの成功が WebAssemblyの開発・実現 に繋がる
  • asm.jsなしでは WebAssemblyの誕生はなかった という評価

なぜ今、無効化なのか

  • WebAssemblyの普及 により、asm.js利用はほぼ移行済み
  • 並行サポートは 保守コスト増加セキュリティリスク の要因
  • asm.jsを利用中の開発者には WebAssemblyへの移行 を強く推奨
  • WebAssemblyパイプラインは asm.jsより高性能・高効率

OdinMonkeyからBaldrMonkeyへ

  • asm.jsコンパイラ OdinMonkey の役割終了(Ragnarök)
  • Twilight of OdinMonkey」としてバグトラッキング
  • OdinMonkeyの後継として BaldrMonkey (WebAssembly最適化コンパイラ)が誕生
    • RabaldrMonkey (WebAssemblyベースラインコンパイラ)とともに新体制
  • OdinMonkeyの 13年間の貢献 に感謝と惜別
  • 北欧神話になぞらえた 新時代の幕開け

今後の推奨対応

  • asm.jsコンテンツ提供者は WebAssemblyへの再コンパイル を検討
  • 高速化・バイナリ縮小・保守性向上 のメリット
  • Mozillaコミュニティによる 継続的な進化 への期待

Hackerたちの意見

俺の計画、ランタイムでjsコード生成してアルゴリズムを速くするってやつがダメになった。wasmでやるのはもっと大変だな。

まだAssemblyScriptがあるの?要件を満たすかもしれないけど、俺が勘違いしてるか、機能を理解してないかも。 https://www.assemblyscript.org/

ブラウザで動かすための小さくて速いWATコンパイラがいくつかあるよ。

まだ動くよ。asm.jsは結局普通のJavaScriptコードだからね。ただ、asm.js用のカスタムパイプラインほど速くはパース/実行できないだけ。俺の予想だと、本当に大きなアプリじゃない限り、あんまり違いは感じないと思う。

asm.jsのサブセットを試してみて、どんな感じか見てみて。特別なasm.jsサポートがブラウザに無くても、Emscriptenの出力パフォーマンスは意外と良かったのを覚えてるよ。

実行時にwasmコードを生成するのは結構簡単だよ(有効なasm.jsコードを生成するよりも簡単だと思う)。テスト用にちょっとしたライブラリがあって、これが多くを処理してくれるんだ: https://searchfox.org/firefox-main/source/js/src/jit-test/li...

asm.jsは終わった!WebAssembly万歳!

正直言うと、数年前にWASMの登場でasm.jsは廃止されたと思ってた。

Gary BernhardtのJavaScriptに関するトークを見たのは忘れられない。[0] それがasm.jsとの出会いで、ブラウザでコードをコンパイルするためのラビリンスに入るきっかけだった。12年経った今、彼のフィクションがどれだけ現実になったか、驚きだよ。[0] https://www.destroyallsoftware.com/talks/the-birth-and-death...

AIの台頭がなければ、WASMが全ての言語のためのマシンレベルのコンパイルターゲットとして実現していた可能性もあるね。ゲイリーが予測した以上に、AIの登場は見えてなかったんだ。

ついにasm.jsの死が来たのか?予言のタイムラインから離れていってるな。 https://www.destroyallsoftware.com/talks/the-birth-and-death... (これにまだ出会ったことがない人には、ぜひ見てほしい。間違いなく、史上最高のテックトークだと思う。)

この技術の終焉で、予言の糸が断たれた。セーブデータを復元して運命の織りを取り戻すか、作り出した運命の世界に留まるか。

Hacker Newsで議論の続きを見る