改進 Firefox 中 Wayland 支援的路線圖

Martin Stransky 是 Fedora 和 RHEL 的 Firefox 軟體包維護者,他正在將 Firefox 移植到 Wayland,他發表了一份報告,回顧了在基於 Wayland 協議的環境中運行的 Firefox 的最新進展。

在即將發布的 Firefox 版本中,計劃透過剪貼簿和處理彈出視窗解決 Wayland 建置中觀察到的問題。 由於 X11 和 Wayland 中的實作方法存在差異,這些功能無法立即實現。 在第一種情況下,由於 Wayland 剪貼簿非同步運作而出現了困難,這需要創建一個單獨的層來抽象化對 Wayland 剪貼簿的存取。 指定的圖層將被加入到 Firefox 93 中,並在 Firefox 94 中預設為啟用。

關於彈出對話框,主要的困難是 Wayland 要求彈出視窗具有嚴格的層次結構,即父窗口可以建立帶有彈出窗口的子窗口,但從該窗口啟動的下一個彈出窗口必須綁定到原始子窗口,形成一個鏈。 在 Firefox 中,每個視窗都可以產生多個不形成層次結構的彈出視窗。 問題是,當使用 Wayland 時,關閉其中一個彈出視窗需要用其他彈出視窗重建整個視窗鏈,儘管存在多個開啟的彈出視窗並不罕見,因為選單和彈出視窗是以以下形式實現的:彈出工具提示、附加對話方塊、權限請求等。 Wayland 和 GTK 的缺陷也使情況變得更加複雜,因此微小的變化可能會導致各種回歸。 不過,Wayland 處理彈出視窗的程式碼已經調試完畢,計劃包含在 Firefox 94 中。

其他與 Wayland 相關的改進包括在不同 DPI 螢幕上為 Firefox 添加了 93 個縮放更改,這消除了在多顯示器配置中將視窗移動到螢幕邊緣時的閃爍。 Firefox 95 計畫解決使用拖放介面時出現的問題,例如,將檔案從外部來源複製到本機檔案以及行動標籤時。

隨著 Firefox 96 的發布,Wayland 的 Firefox 移植計劃將在功能上與 X11 版本保持一致,至少在 Fedora 的 GNOME 環境中運行時是如此。 此後,開發人員的注意力將轉向磨練 GPU 進程在 Wayland 環境中的工作,其中包含與圖形適配器互動的程式碼,並保護主瀏覽器進程在驅動程式故障時不會崩潰。 GPU 進程還計劃包括使用 VAAPI 進行視訊解碼的程式碼,該程式碼目前在內容處理進程中運行。

此外,我們還可以注意到,其中包含了嚴格的網站隔離模式,該模式是 Fission 專案的一部分,針對 Firefox 穩定分支的一小部分使用者。 與目前使用的跨可用進程池(預設為8 個)的任意分佈選項卡處理相反,隔離行模式將每個站點的處理放置在其自己的單獨進程中,不是按選項卡分隔,而是按域(公共後綴)分隔。 ),它允許額外隔離外部腳本和 iframe 區塊的內容。 啟用 Fission 模式是透過 about:config 或 about:preferences#experimental 頁面上的「fission.autostart=true」變數控制的。

嚴格隔離模式有助於防止側通道攻擊,例如與Spectre 漏洞相關的側通道攻擊,還可以減少記憶體碎片,更有效地將記憶體返回給作業系統,最大限度地減少垃圾收集和密集計算對其他進程中頁面的影響,以及提高不同CPU核心之間的負載分配效率並提高穩定性(處理iframe的進程崩潰不會影響主站點和其他選項卡)。

使用嚴格隔離模式時出現的已知問題包括,開啟大量選項卡時記憶體和文件描述符消耗明顯增加,以及某些附加元件工作中斷、iframe 內容消失等。列印和呼叫截圖記錄功能,降低iframe快取文檔的效率,當崩潰後恢復會話時遺失已完成但未提交的表單內容。

Firefox 中的其他變更包括完成向 Fluent 本地化系統的遷移、對高對比度模式的改進、在 about:processes 中添加一鍵記錄進程效能設定檔的功能,以及刪除返回舊版本的設定Firefox 89之前使用的開啟新標籤頁的樣式。

來源: opennet.ru

添加評論