Firefox 148 預設關閉 asm.js 最佳化:SpiderMonkey 正式告別這段 13 年歷史
Mozilla SpiderMonkey Blog · 2026-05-20
Mozilla 在 Firefox 148 預設停用 asm.js 特化最佳化路徑,並計劃在未來版本完全移除相關程式碼。asm.js 自 2013 年 Firefox 22 問世至今已走過 13 年,取代它的 WebAssembly 在 SpiderMonkey 的實作已「遠比 asm.js 編譯器先進」。
背景:asm.js 解決了什麼問題
asm.js 是 JavaScript 的嚴格型別子集,設計目標是讓 JS 引擎能在執行期偵測到符合規範的程式碼後,直接編譯為機器碼。核心設計原則是「無需新 API 或沙箱」——它完全符合 JS 規範,舊引擎把它當作一般 JS 執行,新引擎走快速路徑。
asm.js 是 Mozilla 回應 Google NaCl/PNaCl 的方案:不引入新格式或新安全模型,而是在現有 Web 標準範疇內達到接近原生的效能。Epic Citadel 遊戲 Demo 在四天內完成 Web 移植,成為當時 Web 平台效能的重要里程碑。asm.js 於 Firefox 22(2013 年)正式上線。
移除原因
WebAssembly 於 Firefox 52(約 2017 年)上線後,提供更快的解碼速度、更小的二進制體積,以及 asm.js 無法支援的執行緒(SharedArrayBuffer)、SIMD、尾呼叫最佳化等能力。Emscripten 等工具鏈早已預設輸出 WebAssembly,幾乎沒有現代應用程式仍在使用原生 asm.js 格式。
SpiderMonkey 維護 asm.js 特化路徑帶來持續工程成本,同時增加 VM 攻擊面,卻幾乎零邊際收益。WebAssembly 的管線「遠比 asm.js 編譯器先進」,這是官方移除的直接技術理由。
對現有程式碼的影響
移除最佳化路徑後,asm.js 程式碼不會中斷執行——退回到一般 JIT 編譯路徑繼續運作。Mozilla 建議仍維護 asm.js 來源的開發者使用 Emscripten 重新編譯為 WebAssembly,以獲得更快的執行速度與更小的傳輸體積。完全移除的版本號尚未公布。
Google I/O 2026 AI 優先搜尋策略對開放 Web 生態的結構性衝擊
tante.cc · 2026-05-20(HN 討論串登上前三)
Google I/O 2026 發表的 AI 優先搜尋方向在技術社群引發廣泛討論。Hacker News 相關討論串迅速衝上首頁,核心問題是:當搜尋引擎的回答不再以連結為主要輸出,原本依賴搜尋流量的開放 Web 內容生產者將面臨什麼。
原本的問題
Google 長期以來的搜尋架構以索引外部頁面、分發流量為基礎,形成「網站提供內容,Google 提供發現性」的互惠關係。AI Overview(舊稱 SGE)改變了這個平衡:直接在搜尋結果頁合成答案,使用者不再需要點擊出去。Google I/O 2026 的公告顯示這個方向進一步加速,搜尋從「索引工具」轉向「對話式代理」。
結構性影響
tante 的分析指出幾個層次的問題。首先是內容再生產的激勵斷裂:如果流量不再到達原始網站,投資高品質內容的誘因消失,Google 的 AI 系統最終也將失去可供訓練與參考的原始資料。其次是平台依存的加深:網站可見性不再來自開放的超連結圖,而是取決於是否被 Google AI 採納為可信來源——這是一種新形式的守門人機制。
技術面的核心矛盾在於:WebFetch 抓取外部頁面以訓練或回答問題,卻不傳遞使用者流量。現有的 robots.txt 機制是為傳統爬蟲設計的,無法表達「允許索引但要求流量分發」這樣的授權條件。反制手段(付費牆、反抓取措施)都會降低內容的公眾可及性,製造另一種代價。
討論中的技術提案
- 類似
llms.txt的機器可讀 AI 抓取授權標頭 - 訂閱制內容的 AI 引用授權協定
- 去中心化搜尋索引(Common Crawl 延伸)的替代路線
這些提案都處於早期討論階段,尚無業界標準。Web 平台的流量生態能否在 AI 搜尋主導的環境中找到新的平衡點,是 2026 年 Web 工程社群最密切關注的開放問題之一。
原始來源:tante.cc