Chromium 項目將支持使用 Rust 庫

鉻

, Chromium 項目將支持在 Chromium 中使用第三方 C++ Rust 庫

谷歌最近宣布,Chromium 專案背後的團隊正在努力將生產環境的Rust 工具鏈添加到其建置系統中。

對於那些還不知道 Rust 的人,他們應該記住它,因為這種由 Mozilla 開發的專門用於編寫瀏覽器的編程語言已經開始滲透並被許多重要項目所接受,其中之一就是Rust 內核。Linux。

這將使我們能夠在明年將 Rust 代碼包含在 Chrome 二進製文件中。 目標是從小處著手,並明確期望哪些圖書館準備就緒後會被考慮。

因此,Chromium 最終也開始開發這項技術也就不足為奇了。對Google而言,在 Chromium 中引入 Rust 將實現其目標,即提供一種更便捷、更安全的方式來達成“二元法則”,即加速開發並提升 Chrome 的安全性。此外,它還能透過消除記憶體錯誤和降低程式碼中的 bug 密度來提升安全性。

我們知道 C++ 和 Rust 可以很好地協同工作,這要歸功於 cxx、autocxx bindgen、cbindgen、diplomat 和(實驗性的)crubit 等工具。 但是,也有局限性。 我們可以預期這些限制的形式會隨著時間的推移隨著新的或改進的工具而改變,但這裡的決定和描述是基於當前的技術狀態。

此舉旨在防止Chrome 程式碼庫中出現記憶體錯誤。兩年前的統計數據顯示,Chromium 中 70% 的嚴重安全問題都是由記憶體錯誤引起的。

使用注重安全記憶體管理並提供自動記憶體管理的 Rust 語言,可以降低因存取已釋放的記憶體區域和緩衝區溢位等問題而導致的漏洞風險。

將 Rust 引入 Chromium 的目標是提供一種更簡單(無 IPC)和更安全(通常 C++ 不太複雜,沒有沙盒內存安全漏洞)的方式來滿足二元法則,以加快開發速度(編寫更少的代碼) ,更少的設計文檔,更少的安全補丁)和提高 Chrome 的安全性(更多代碼行,內存中沒有安全漏洞,代碼漏洞密度更低)。 此外,該公司有信心我們可以使用第三方 Rust 庫來實現這一目標。

2022 年初,Chromium 團隊已經對 Rust 進行了試驗,幾個月後,他們得出結論:對於需要與現有程式碼協同工作的複雜非同步程式碼任務,該語言最初並不適合取代 C++。

因此,Chromium 中 Rust 的使用計劃初期顯然會受到限制。一方面,互通性將僅實現單向轉換:從 C++ 到 Rust。另一方面,初期僅允許使用第三方函式庫。這些函式庫作為獨立元件運行,與 Chromium 的內部元件無關。這些函式庫必須為其特定任務提供簡潔的 API。 Chromium 團隊隨後將對這些庫進行審核。

最後值得一提的是,Chromium 在添加對 Rust 的支援後,從明年開始,Rust 程式碼就可以移植到 Chrome 二進位檔案中。這項決定主要是出於安全考量:Rust 在記憶體寫入方面比 C++ 更安全,它禁止了諸如讀取未寫入的變數、存取超出陣列限制的值、解引用空指標或無效指標以及使用失效迭代器等潛在有害行為。

如果您有興趣了解更多信息,可以點擊以下連結查看詳情。


在 Google 中將其新增為首選來源