概要
- 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コミュニティによる 継続的な進化 への期待