Mozilla將在Firefox 85提供更完整的Apple Silicon晶片支援,而WebRender之前因為會觸發Big Sur中的繪圖驅動程式臭蟲,因此在Firefox 84版本禁用,但這個問題現在已經解決,因此在Firefox 85也會重新開啟WebRender,另外,Firefox也針對Apple Silicon的異構計算架構進行最佳化,使其更能利用不同特性核心的優勢。

去年底Apple發布一系列搭載M1晶片的Mac產品,M1是以Arm為基礎,由Apple自家設計的晶片,而這些新Mac的效能表現,讓使用者充滿驚喜,即便Apple提供了模擬器解決方案,但不少應用程式開始原生支援M1晶片,在瀏覽器市場扮演重要角色的Firefox也不例外,早在Apple真正釋出搭載M1晶片的Mac之前,開發團隊就開始評估Firefox支援Apple Silicon的可行性,以及支援的方法。

在Firefox支援Arm並不是一件全新且困難的工作,因為過去Firefox就已經在不同平臺,包括Android和Linux之都支援64位元Arm,因此開發團隊重新檢視原本就支援64位元Arm的Firefox程式碼、相依項目和第三方建置系統等,確認這些部分都可以正確處理新Mac架構。

需要修改的程式碼,包括處理低階呼叫慣例,以及JavaScript、C++和Rust間的介面,而且因為Firefox非常依賴Rust程式碼,需要Rust編譯器來建置瀏覽器,因此他們不只更新編譯器,還有所有相依的套件,而且尤為困難的是牽涉SIMD的支援,Mozilla提到,這很難讓舊版本Firefox,在支援Apple Silicon的同時,又不影響到其他平臺。

Firefox採用了通用二元檔案(Universal Binary)的方式來支援M1 Mac,同一個安裝檔案可以同時用於英特爾以及Arm的Mac,雖然這樣會讓安裝檔案的大小明顯增加,但是卻可以避免用戶下載錯版本,下載頁面和本地化基礎設施也不需要變動,而且這也僅會影響初始版本的安裝,在更新之後就可以獲得容量較小的新版本,因此權衡優缺點下,Mozilla最終還是採用通用二元檔的方法。

在所有Firefox開源的部分都移植到64位元Arm之後,另一個需要處理的問題是數位版權管理(Digital rights management,DRM)內容的支援,包括Netflix、Disney+和Amazon Prime,都要求使用閉源DRM軟體解碼影片。由於閉源DRM軟體對於支援Apple Silicon的不確定性,Mozilla最後將DRM視訊解碼器以單獨程序執行,並在用戶的系統中以沙盒執行這些專有的程式碼。

發布新版安裝程式也遭遇到了問題,當舊版Firefox自動下載並更新支援新架構Mac的Firefox,Firefox仍會持續以模擬器運作,這是因為在Apple Silicon上,任何在英特爾X64模擬器下執行的應用程式,另一個程序也會以模擬器執行,因此沒有原生支援Apple Silicon的Firefox 83,即便自動更新到Firefox 84之後,系統不會自動啟動新的原生二位元檔案,必須要等到應用程式重新啟動。

2020年12月15日Mozilla正式發布原生支援Apple Silicon的Firefox 84,Mozilla提到,雖然他們從很多報告看到,模擬器Rosetta對效能的影響很小,應用程式都還是能以原生效能70%到80%執行,但是當他們測試原生Firefox版本,還是對效能感到訝異,許多重要效能指標都翻倍之外,啟動速度更是快了2.5倍。

不過,因為穩定性的考量,部分功能並沒有在第一個支援Apple Silicon的Firefox 84上啟用,包括因為WebRender在支援Apple Silicon的第一個Big Sur版本,會觸發繪圖驅動程式臭蟲,而這個問題現在已經解決,因此在Firefox 85上將會重新啟用,另外,在Firefox 85預計也會採用新的編譯器Ion。

Mozilla表示,Apple Silicon是第一個異構設計的桌面電腦晶片,因此他們還在更改大部分多核心執行序和執行緒池架構,將效能要求不高的工作,放到高效率核心(Efficiency Core)上,把高效能核心(Performance Core)留給重要的工作。另外,Mozilla還要清理和更新舊版macOS繪圖API的用法,解決因為舊版API不支援深色模式,可能導致畫面顏色異常的問題。

熱門新聞

Advertisement