Linux 因納入 Rust 而引發緊張局勢

Rust 在 Linux 上的問題

過去幾個月 爭論愈演愈烈 似乎僅限於簡單的分歧,目前正升級至危急水平 在 Linux 開發者社群中。 一開始是爭吵 將 Rust 引入內核 造成了深刻的緊張和分歧 有些人認為這種語言是一種創新的解決方案,而另一方面,有些人擔心這種語言的採用會使傳統上同質的程式碼庫變得複雜和分裂。

當第一次提出整合 Linux 上的 Rust, 許多開發人員都很興奮。 經過 Linus Torvalds 的廣泛審查和接受,該語言被納入版本 內核 6.1。 然而,最初的一些評論當時被視為“簡單意見”,但現在被視為警告信號。

我提到的那些評論 他們提到了某些“習俗” 可以這麼說,基本上 他們提到可能會有一些抵抗 開發人員引入新語言後,可能會造成 Linux 開發團隊的「分裂」。

在前幾天 我們在部落格上分享了討論和問題 Linux 開發小組中出現了一些問題,包括 克里斯多福‧赫爾維格 他表示拒絕支援促進 Rust 驅動程式開發的補丁。

此後不久, 又說話了 現在他分享了他的想法 關於合併 Rust 包裝器 在Linux核心的DMA子系統中。赫爾維格 批評該項目提出的規則 Rust for Linux,認為除非它們被社群共識採納並在官方核心文件中正式化,否則它們是無用的。

地獄威格 指出這些規則 錯誤地 p允許維護者單方面決定是否合併程式碼 Rust 在其子系統中,在一次私人談話中,Linus Torvalds 明確表示他致力於接受 Rust 代碼進入核心,無論提出任何反對意見。

地獄威格 使用了一個驚人的比喻, 將 Rust 包裝器比作“癌性腫瘤”,它會擴散到所有子系統,導致不受控制的碎片化。 對他來說,核心正在進化 單一實體 對於多種語言編寫的項目,沒有明確的指導方針 何時使用哪一個,這會導致不斷地將程式碼從一種語言重寫為另一種語言。 Hellwig 認為,這種情況大大增加了系統的維護和一致性的複雜性。

此外,Hellwig 質疑將 Rust 引入內核的目的。 如果要解決與低階記憶體管理相關的安全性問題,第一步應該是更新現有程式碼。因為維修人員甚至不願意實施基本的檢查,例如檢查整數溢位。

認為忽略簡單安全規則的核心與遵循嚴格規則的核心之間的差距可以彌合似乎是不切實際的。

另一方面,如果目標是簡化驅動程式開發,那麼引入一種新語言只會增加那些已經負擔維護核心基礎設施的人的工作量。

另一方面,支持在核心中採用 Rust 的人指出,用 Rust 編寫新程式碼具有已知的潛在優勢:顯著降低記憶體錯誤、競爭條件和某些邏輯錯誤的風險。

還有人認為,這些保證 該語言將允許維護人員更有效地審查和重構模組,利用高級抽象來促進新控制器和模組的創建。此外,使用現代語言可以吸引新的開發人員加入該項目,而 Rust 的工具(例如公共 API 的強制性文件要求)可以幫助提高程式碼品質和安全性的標準。

簡而言之關於將 Rust 納入 Linux 核心的爭論 反映了深刻的緊張 在系統現代化和安全性的需求與程式碼庫複雜化和碎片化的風險之間。雖然有些人將 Rust 視為長期存在的安全和維護問題的解決方案,但其他人,例如 Hellwig,警告說,如果沒有明確的共識,多種語言的混合可能會導致像核心這樣重要的專案陷入難以管理的混亂。

來源: https://lore.kernel.org


新增為首選來源