Linux 版 Rust 陷入困境,緊張局勢和分歧已初顯端倪 

Rust 在 Linux 上的問題

看起來今年不會是 Linux 之年,因為儘管去年最後一個季度看起來 Linux 和桌面將在 2025 年起飛,但事情並不總是像表面看起來的那樣。

而且僅僅幾天 克里斯多福‧赫爾維格 (Christoph Hellwig),一位傑出的人物 維護 Linux 核心中的關鍵子系統,如 DMA、KVM、Slab Allocator 和 PowerPC,已明確表示拒絕支援補丁 促進發展 Rust 中的控制器。

克里斯多福‧赫爾維格 提到有問題的補丁 他們建議在 DMA 子系統函數周圍添加包裝器,以允許用 Rust 編寫的驅動程式使用它。然而,他認為,這種策略程式碼維護複雜,並且必須保留 C 介面的清晰度,防止抽象擴展,從而避免與內核其餘部分的整合。

專案中混合使用語言的問題

根據 Hellwig 的說法, 主要問題是 Rust 程式碼的集成 產生依賴項,迫使 C 子系統開發人員考慮他們的修改對 Rust 綁定程式碼的影響。這 這意味著對結構的任何調整 或 C 中的內部函數 可能需要對 Rust 的程式碼進行並行修改, 這使得這種局面難以長期維持。

為了避免這種情況,Hellwig 建議 Rust 中的控制器直接訪問 使用 C 中的本機 DMA API,而不是採用他們認為會影響核心可維護性的額外包裝器。

就他們而言 提出補丁的開發人員辯稱,他們會負責維護 Rust 程式碼,為此,我們將連結組織在一個特定的子目錄 (rust/kernel/dma.rs) 中。然而, 赫爾維格否決了這些提議,並警告他不需要承擔責任。 將其他語言的程式碼整合到核心子系統中。

此外,他強烈建議,如果要將核心轉變為多種語言的混合體,則應該從 Rust 的驅動程式開始,而不是在基礎領域強加這種複雜性。

爭議愈演愈烈 當 NVIDIA 的 TPM、VFIO 和 Infiniband 維護者 Jason Gunthorpe 等人物分享了記憶體子系統變更的範例時,儘管從 C 程式碼的角度來看這些變更是正確的, 嘗試編譯支援 Rust 的核心時產生了問題。 這些事件清楚地表明,C 和 Rust 之間的綁定可能會引入額外的依賴關係,從而導致協調開發變得困難。

值得一提的是 討論並不限於技術方面。 Hector Martin 建議解決方案可能是直接透過 Linus Torvalds 採用鏈接,避免 DMA 子系統維護者的干預。然而,這種方法可能會破壞核心開發的傳統層次結構。

赫克託也指出了他認為有害的行為, 甚至提到,Hellwig 將 Rust 比作“癌性腫瘤”,這導致他感到沮喪,並最終決定辭去 ARM/Apple 平台主線內核維護者一職。儘管他辭職,但該平台仍將繼續得到 Sven Peter 的支持,他承諾將繼續維護該平台。

就其本身而言, Linus Torvalds的 加入了對話, 強調發展進程 核心雖然不完美, 正在發揮作用,技術討論應該集中於補丁而不會受到外界壓力或社交網路騷擾的影響。對托瓦茲來說,方法應該是純粹技術性的,將個人爭端放在一邊。

Christoph Hellwig 拒絕將 Rust 包裝器合併到 DMA 子系統中,凸顯了 Linux 核心開發人員之間的緊張關係。雖然有些人將 Rust 視為創建新專案的強大工具,但其他人擔心整合多種語言可能會妨礙可維護性和程式碼庫一致性。

情況仍有爭議 並可能對內核中 Rust 的支援未來產生重大影響。無論如何,很明顯的是,Linux 開發社群繼續面臨複雜的挑戰,必須仔細衡量技術決策,以確保專案的長期可持續性。


新增為首選來源