Linus將不顧反對合並Rust程式碼?!核心維護者無奈強調:不能讓“癌症”擴散!

整理 | 燕珊 
背景:自從 2022 年 Rust 程式碼首次被合併到 Linux 核心中,圍繞它的爭議就不斷升溫。Rust 因其在記憶體安全方面的優勢而備受推崇,也被各國政府和安全專家認為能夠有效減少由於記憶體安全漏洞導致的高危安全問題。
近段時間以來,圍繞在 Linux 核心中引入 Rust 語言的討論愈演愈烈。
本週,一直以來對 Rust 持質疑態度的 Linux 核心關鍵維護者 Christoph Hellwig 在 Linux 核心郵件列表上的一條討論執行緒中無奈披露,Linus Torvalds 私下說過,他絕對會不顧維護者的反對,合併 Rust 程式碼。
Hellwig 直言:“所以從現在開始,作為一名 Linux 開發者或維護者,你想接受 Rust 也好,不想接受也罷,都必須去面對它。
與此同時,Linux 核心核心開發者 Greg Kroah-Hartman(下稱 Greg K-H) 也再次呼籲社群接納那些願意貢獻 Rust 程式碼以改進核心的開發者。他本週三在郵件中寫道:“沒錯,混合語言的程式碼庫確實很棘手,也很難維護,但我們是核心開發者啊。我們維護和強化 Linux 的時間比任何人最初的預期都要長。”
Greg K-H 進一步表示,“我們把開發模式打磨成了精細運轉的工程奇蹟,創造了前所未有的成果。”“再新增一種新語言不應該成為問題。 相比之下,我們過去克服過更棘手的挑戰,現在更不應該讓專案在未來 20 多年繼續成功的道路上退縮。面對新的好想法,我們必須繼續前進,並歡迎那些願意一起真正投入工作、幫助我們共同成功的人。”
Hellwig 和 Greg K-H 發表這些內容的背景,源於上個月在社群中的多輪激烈爭論。
當時 Rust for Linux(R4L)專案提交了一則補丁,允許使用 Rust 編寫的裝置驅動去呼叫主要用 C 語言編寫的核心的核心 DMA API,卻遭到 Linux 核心維護者 Christoph Hellwig 的質疑。Hellwig 將維護多語言程式碼庫比作“癌症”,強調自己無意承擔維護 Rust 裝置驅動程式碼的負擔。緊隨其後的爭論引發了時任 Asahi Linux 專案負責人的 Hector Martin 的不滿。他要求 Linus Torvalds 表態,是否會將這個補丁合入核心。
最終, Linus 並沒有給出補丁去留的明確裁定,而是批評 Martin 在社交媒體上就此事“作秀”,併為 Linux 社群的治理模式辯護。Hector Martin 稱,這成為“壓倒他的最後一根稻草”。隨後,Martin 辭去了 Linux 維護者一職,並離開了 Asahi Linux 專案,不再負責 Linux 核心 Apple Silicon 程式碼的上游維護工作。
多語言混編“像癌症”蔓延
在最新的郵件中,Hellwig 再次表達了對在同一個程式碼庫中混合使用 Rust 和 C 的擔憂。他警告稱,如果在沒有明確政策和廣泛討論的前提下就把 Rust 程式碼大規模合併到核心的各個子系統裡,會令後續維護者疲於奔命。這種“多語言混編”也會影響對舊程式碼的全域性性改進。
“我曾在混合語言的程式碼庫上工作過,那簡直是我的噩夢:因為各種原因,會把部分程式碼從語言 A 重寫成語言 B,然後又因為原因 Z 再轉回 A,這種折騰不斷。而這還沒算上 Linux 社群平時常見的內鬥紛爭。”
Hellwig 強調,C 和 Rust 之間存在巨大語義鴻溝,給核心基礎元件做互操作需要大量的“膠水”或繫結層。一旦繫結(bindings)分散到各個子系統,就像“癌症”一樣隨處擴散,最終造成對核心基礎設施的重複改寫與無法預期的複雜度。
為安撫核心開發者社群,目前 Rust for Linux 專案和 Linux 核心維護工作的貢獻者 Miguel Ojeda 釋出了所謂的 “Rust kernel policy”(Rust 核心策略),但並未將其納入核心程式碼庫。
Rust kernel policy:https://rust-for-linux.com/rust-kernel-policy
Hellwig 質疑,這個文件只發布在網路上,而非放入核心程式碼樹中,“所以我並不覺得這份‘政策’文件有什麼實際價值。”“就我個人而言,我對 Rust 語言本身沒問題,也能用它。我也很希望看到核心能更安全。但是,在一個無法控制的多語言程式碼庫裡工作,幾乎可以肯定會讓我把業餘時間花在別的事情上。我聽到有些人也在小聲嘀咕類似的想法,只是大家沒我這麼直白而已。”
因此,Hellwig 強調,如果真正想解決記憶體安全問題,就應該在現有 C 程式碼上做更多防護、審查與修復, 而不是把希望全部寄託在換語言上。他還提到,社群已經在做“編譯器強制同步檢查”或“整數溢位檢查”等工作,但推進並不順利,因為部分開發者或維護者對這類改動都尚有牴觸,何況是引入另一種語言。
總之,Hellwig 認為,現在的現狀是:Linus 想做什麼就可以強行做什麼(這畢竟是他的專案),但他覺得 Linus 需要把這些事情說清楚——包括對貢獻者的期望等等,都要講得非常明白。
讓 C 更好的最佳化工作不會停止
在 Hellwig 披露 Linus 態度的同時,另一位“重量級”核心維護者 Greg K-H 卻持截然不同的觀點。一直以來,Greg K-H 都傾向於支援引入 Rust ,本週他在郵件中也再次討論了關於 Rust 和記憶體安全的爭議。
我們遇到的大多數(按數量而不是質量或嚴重程度來算)漏洞,都是源於 C 中那些愚蠢的小角落,而這些問題在 Rust 中完全不存在,”他寫道。
“比如簡單的記憶體越界寫入(並不是說 Rust 能捕捉所有類似問題)、錯誤處理路徑的清理、忘記檢查錯誤返回值,以及使用已釋放的資源等。這些正是我想在核心中引入 Rust 的原因:這些問題會直接消失,讓開發者和維護者能夠把更多時間投入到真正的錯誤上(比如邏輯問題、競爭條件等)。”
Greg K-H 進一步表示,他同樣 支援讓 C 程式碼變得更健壯,這方面的工作並不會停止。“但是對於新的程式碼和驅動來說,用 Rust 編寫可以杜絕(或大大減少)這些型別的錯誤,這對我們所有人來說都是好事,我們為什麼不這麼做呢?”
“C++ 在未來十年也無法為我們提供這方面的幫助,而且根據最近 C++ 語言委員會的討論來看,如果你希望程式碼庫能長期維持可維護性,那麼最好儘快放棄 C++ 。”
當然,他也承認 Rust 並不是銀彈,不會魔法般地解決所有問題。但他堅信這會有所幫助。
維護者倦怠與開源生態的挑戰
兩週前辭去了核心維護者一職的 Hector Martin 認為,為了生存,Linux 需要主要利益相關方的支援,但 Linus 的“放任”態度讓子系統維護者可以阻撓並濫用其他貢獻者,打擊社群士氣卻毫無後果。他舉了一個例子:Rust for Linux 維護者、微軟軟體工程師 Wedson Almeida Filho 曾於今年 8 月辭職(離開 R4L),這在社群內廣受關注。
確實,Linus 本人也曾在與貢獻者互動時顯得言辭尖銳。比如去年,他曾對谷歌的一名開發者說:“你的程式碼就是垃圾(your code IS GARBAGE)。” 和 Martin 的情況類似,這也引發了開源社群“維護者倦怠”的討論。
開源社群的“維護者倦怠”(burnout)已是老生常談。原因包括高強度的義務勞動、激烈的人身攻擊、缺乏對志願者工作的認可,以及超負荷的工作量等。Rust 語言工程師 Jynn Nelson 去年也曾指出,“因為倦怠而離開 Rust 專案的人數之多令人震驚,而仍處在倦怠邊緣的人數也同樣驚人。”
Sonatype 聯合創始人兼 CTO Brian Fox 近期接受技術媒體 The Register 採訪時表示,“開源軟體的開發者正以驚人的速度出現倦怠,這對軟體供應鏈安全構成威脅。……那些被遺棄或維護不善的舊軟體會留下巨大的安全漏洞。”
“我們最近釋出的《軟體供應鏈現狀》報告發現,自 2020 年以來,開源專案更新頻率陷入停滯或下降,這表明這些非營利性的維護者正面臨倦怠或資源短缺,”他說,“到 2024 年,將有超過 30 萬個專案的釋出節奏放緩或停滯。”
Fox 認為,一個健康的軟體生態系統需要一個運轉良好的社群,而這需要資金來支援。“為專案維護者提供薪酬並僱傭更多開發者是一個好的開始;考慮到很多專案是由非營利基金會維護的,下游的主要使用者也應該聯合起來提供資金支援這些開源專案。”
當然,資金並非一切。Martin 稱,他曾試圖透過限制自己對核心上游維護的投入來避免倦怠。但去年,他經歷了一系列個人挑戰,其中包括“不得不應對各類騷擾者和跟蹤者,他們對我和我的家人進行騷擾和攻擊(並且仍在繼續)。”
Martin 還表示,他之所以決定離開 Asahi Linux 和 Linux 核心社群,部分原因是感到自己被“背叛”:
“在(Linus 對我批評)之後的幾天裡,我得知一些核心和相關 Linux 圈子裡的人一直在對我玩弄兩面派手段,他們表面上對我和 Asahi Linux 表現出支援,私底下卻對我心生牴觸,並在背後煽動牴觸情緒,”他說,“這一切都發生在完全沒有任何人私下寫郵件或以其它方式向我透露任何資訊的情況下。我還聽說,其中有一位在多個 Asahi Linux 生存所必需的專案中都身居高位的成員,竟然站在曾經直接傷害和騷擾我的人那邊,並繼續支援他們。”
參考連結:
https://www.theregister.com/2025/02/21/linux_c_rust_debate_continues/
https://www.theregister.com/2025/02/11/rust_for_linux_project_support/?td=keepreading
https://lore.kernel.org/rust-for-linux/2025021954-flaccid-pucker-f7d9@gregkh/
https://lore.kernel.org/rust-for-linux/[email protected]/
宣告:本文為 InfoQ 整理,不代表平臺觀點,未經許可禁止轉載。
今日好文推薦
十天後,第一個明星 AI 硬體將變成電子垃圾
發論文親自上?創業十多年,DeepSeek 梁文鋒的“技術男”屬性從沒改變
20萬卡吞金獸Grok 3炸裂登場,卡帕西大神親測:效能超過DeepSeek R1!網友:算力翻數倍,效能提升不到10%?!
馬斯克被“打臉”?150歲老人領社保,竟是程式設計師小將不懂COBOL惹的禍?
 直播預告
2 月 11 日至 2 月 27 日,AI 前線影片號將聯合霍太穩影片號帶來 DeepSeek 系列直播,解析 DeepSeek 爆火背後的技術突破、商業化路徑與行業影響。從 純強化學習復現 o1 能力到算力控制,從創新文化到 AI 競爭格局,每場直播都深度解析一個關鍵問題。
📅歡迎掃碼二維碼預約直播,一同探索 DeepSeek 如何引領 AI 領域的創新與未來!

相關文章