Servo 瀏覽器開發團隊於 2026 年 11 月 5 日發布了 Servo 0.7.0 版本,該版本涵蓋了 9 月份合併的 527 次程式碼提交。此次更新引入了多項新的 Web 平台功能與 DOM API,並對開發者工具、安全性及效能進行了顯著改進。
**新功能與 Web 平台支援:** * **CSS 與樣式:** 新增了 `:checked` 偽類、`user-select` 屬性、`<progress>` 元素、CSS 類型算術(typed arithmetic)、`alpha()` CSS 函數以及 `font-width` 屬性。此外,升級了 `stylo` 依賴項,提升了對 `contrast-color()`、`color-mix()` 等多種 CSS 屬性的相容性。 * **DOM API:** 新增了包括 `CSSRule` 和 `CSSStyleDeclaration` 上的 `parentRule`、`HTMLHtmlElement` 上的 `version`、`Selection` 上的 `getComposedRanges()` 和 `direction`、`CSSStyleSheet` 上的 `baseURL`、CSS 與文字模組(modules)、Canvas 上下文屬性獲取、`Content-Language` 標頭支援、`Document` 上的 `dir` 屬性、多個 SVG 元素類別、WebCrypto 的 `MLKEM768-X25519` 演算法、Canvas 上的 `roundRect()` 方法、效能計時相關屬性以及字幕處理 API。 * **開發者工具:** 控制台現在會預先評估 JS 輸入,以提供更快的反饋速度。未處理的 Promise 拒絕錯誤現在會報告到 JS 控制台,有助於縮小 Web 相容性問題的範圍。
**安全性與相容性改進:** * **安全更新:** 升級至 SpiderMonkey v153.3 和 mozangle v0.7,修復了上游報告的安全漏洞。 * **實際網站相容性:** `egui.rs` 示範頁面在啟用 `--pref dom._webegpu_enabled` 後可正常運作;一款 Candy Crush 遊戲現在可以遊玩。團隊鼓勵用戶回報其他網站的執行狀況。
**進行中的工作(Work in Progress):** * **無障礙存取性:** 無障礙樹(需啟用 `--pref accessibility_enabled`)現在會報告行內元素的幾何邊界,並在響應 DOM 變更時減少工作量。`display: none` 的元素會被標記為隱藏。 * **WebGL2:** 對 WebGL2 實作(需啟用 `--pref dom_webgl2_enabled`)進行了大量的一致性改進。 * **編輯器支援:** 對於依賴 `contenteditable` 的所見即所得(WYSIWYG)編輯器,當存在 `--pref dom_exec_command_enabled` 時,鍵盤輸入已連接,使得許多編輯器變得可用。 * **字幕功能:** 影片元素的字幕功能正在進展中,文字軌道現在會觸發 `enter`、`exit` 和 `cuechange` 事件,並能正確獲取和管理字幕線索(cues)。WebVTT 解析現在可以從錯誤中恢復。 * **其他 API:** Sanitizer API 接受 `javascriptURLs` 屬性;IndexedDB 改進包括處理重複索引名稱的錯誤以及實現游標操作;Web Animations API 實現了 `getTimeline()` 和 `setTimeline()` 方法。
**嵌入端 API 變更:** * 新增了來自無障礙工具的動作轉發 API (`Servo::forward_accessibility_action`) 和清除會話歷史的 API (`WebView::clear_session_history`)。 * 移除了 `WebView::set_throttled` API,節流現在在 WebView 隱藏時自動發生,顯示時停止。 * 移除了 `WebViewDelegate::notify_focus_changed` 及相關的 `focus`/`blur` 方法,嵌入端必須改為調用 `WebView::set_focused`。 * `webgl` 功能已加入 `default_web_features`,若不想支援 WebGL 需禁用預設功能。 * 多進程模式現在透過 Cargo 功能 `multprocess` 在編譯時啟用;禁用預設功能可移除該支援以減少約 2MB 的二進位檔案大小。 * 新增了兩個用於調整垃圾回收器行為的偏好設定 (`js_mem_gc_malloc_threshold_base_mb` 和 `js_mem_gc_urgent_threshold_mb`),有助於記憶體受限設備。 * Android 上的 JVM 相容性目標提升至 11。
**用戶與開發者體驗:** * 現在可以從 Windows 主機交叉編譯 OpenHarmony 建置。 * 按下 Control+A (或 macOS 上的 Command+A) 現在會選取文件中的所有內容。 * 密碼輸入框內的文字不再允許複製。 * 嵌入端來源的 JS(如開發者工具控制台)即使在禁用腳本的沙箱或 CSP 文件中也會始終執行。
**效能與穩定性:** * **效能優化:** 通過移除不必要的記憶體分配、預先分配向量空間、在單進程模式下避免 IPC、減少與 GC 的互動、優化選擇修改、事件分發、字體度量計算及視窗框架索引來提升速度。 * **記憶體管理:** 通過重用緩衝區、清除頁面特定數據、壓縮資料結構和共享緩衝區來降低常見情況下的記憶體使用量。修復了涉及 `<audio>` 和 `<video>` 元素的記憶體洩漏。 * **系統優化:** 在 Linux 上啟用了執行緒親和性提升,可能在某些 CPU 架構上改善效能。正在努力靜態防止可能導致無法回收的 GC 循環和記憶體洩漏的問題。 * **錯誤修復:** 修復了 WebRTC、`execCommand()`、`<video>`、`<iframe>`、`SharedWorker`、`about:memory` 等多處的崩潰(panics)問題。修復了 `about:crash` 頁面觸發的矛盾崩潰。JS 控制台在拋出原始值作為異常時不再掛起。多進程模式下關閉時不再掛起。
**其他 Web 平台改進:** * CSS 圖片現在會延遲 `load` 事件,使視覺渲染行為更一致。 * 互動式選擇現在可以跨越 Shadow DOM 樹,具有一致的高度和位置,並新增了複製和全選的右鍵選單項目。基於圖片的內容在選擇時會顯示。 * `Window.open()` 尊重阻止彈出視窗的沙箱標記。 * `LargestContentfulPaint` 現在報告圖片內容的載入時間,忽略跨域框架和不可見文字。 * 對文本輸入框調用 `select()` 現在會聚焦該控件。 * WebDriver 伺服器現在自動化權限設置,並減少點擊和鍵盤操作的延遲。
**貢獻者與贊助:** * 感謝多位新貢獻者的首次合併請求。 * Servo 專案目前每月收到 8,144 美元(較 8 月增長 1%)的定期捐款,用於覆蓋 CI、基準測試伺服器、Outreachy 實習生及維護者工作成本。
尚待確認:原文提到 'Candy Crush' 遊戲現在可遊玩,但未具體說明是哪一款或哪個版本的 Candy Crush。
尚待確認:原文提到 'egui.rs demo now works as expected',但未詳細說明之前的失敗狀態或具體的視覺差異。
尚待確認:社群評論中提到的 'ban AI contributions'(禁止 AI 貢獻)在提供的原始來源文字中沒有明確的政策聲明或細節支持,僅作為社群觀點呈現。
社群觀察
社群討論集中在 Servo 的可用性與未來發展: * **預編譯版本的好處:** 用戶 `caminanteblanco` 指出,Servo 提供廣泛的預編譯發布版本非常有用,這使得在 Android 等平台上日常使用成為可能。 * **對開源貢獻者的讚賞:** 用戶 `ericyd` 表示,看到一大群人主要免費地為一個熱情項目工作令人欣慰,這讓人對人類內在驅動的韌性感到樂觀。 * **UI 與可用性建議:** 用戶 `moderation` 認為 Servo 的進展令人印象深刻,但為了更實用,需要進行 UI 潤飾。例如,需要鍵盤快捷鍵來聚焦位址欄,以使其更適合日常驅動使用。 * **AI 貢獻爭議:** 用戶 `domenkozar` 對 Servo 禁止 AI 貢獻感到遺憾,認為這是一個錯過的機會,本可以借此實現巨大飛躍。 * **支持願景:** 用戶 `Weryj` 表達了希望 Servo 成功的意願。




