Linus談Linux內核將引入Rust:以防此事搞砸了我又發脾氣先給大家道個歉
這幾天,由Linux 基金會主辦的2022 開源峰會如約而至。Linux 之父Linus Torvalds 也出席了會議。一個小插曲是,一張現場傳來的他本人的照片讓不少網友和粉絲感嘆:Linus 真的老了!
不過,53 歲的Linus 在和老朋友Cardano 基金會的首席開源官進行的一番暢談中卻表示,自己仍然充滿了乾勁。同時,他還透露了一個大驚喜:
下一個版本的Linux 內核主線,可能就會合併用Rust 語言提交的PR 分支了。
對Linux 的熱情30 年未減
Linux 誕生於1991 年,現在已經有31 年曆史。
作為全球三大操作系統之一,Linux 已經成為雲、邊緣技術、嵌入式和物聯網等技術不可或缺的支撐基礎。
作為最大的開源操作系統,Linux 由開源社區的貢獻者維護,每6-10 週(也就是1-2 個月)發布一個新的內核版本。當然,這其中大部分更新都是由Linus 本人發布的。
2005 年的時候,Linus 發明了Git,讓包括Linux 在內的開源項目的開髮變得更加有效率。
從此開始,在過去的至少15 年裡,Linux 內核的開發流程和發布規律一樣一直保持著相對不變的節奏。
Linus 稱,看起來維護Linux 這一工作很平淡、枯燥甚至無聊,但我想這正是大家所需要的。因為一個穩定的更新流程可以讓使用者們感到安心。
事實上,Linus 認為,他最開心的是,Linux 這個項目儘管已經有30 多個年頭,仍沒有變得死氣沉沉。
(原話:we’re not a dead project。)
他說,Linux 身上仍然會湧現出讓我感到驚訝和欣喜的新事物,其中還不乏創新。因此,這讓他對Linux 仍然充滿了乾勁。
下一個內核版本可能支持Rust
自2016 年以來,Rust 每年都被Stack Overflow 開發者調查評為“最受歡迎的編程語言” 。
許多人也開始呼籲在Linux 內核中增加Rust 語言的支持,由此還誕生了一個叫做“Rust for Linux”的組織。
出現這一現象最主要的原因是用Rust 編寫會帶來更高的計算內存資源利用率,以及更安全。
比如在2019 年召開的Linux Security Summit 安全峰會上,有人就提出用Rust 就可以通過其type system 和borrow checker 提供的API,來避免掉Android 和Ubuntu 中2/3 的內存安全問題。
那麼,Rust 有沒有可能成為Linux 內核中除C 之外的第二種官方語言呢?會上,Linus 也談到了這個問題。
比較驚喜的是,他表示,大家都以為我們一直在規避風險,但其實我們一定會把它加進來的,也許就從下一個版本開始!
也就是說,官方終於決定把擁抱Rust,把Rust for Linux 的PR 合併到Linux 內核的主線了。此舉贏得了現場觀眾陣陣掌聲,Linus 用了好大功夫才平息住大家的興奮。
要知道,此前光是Rust 的支持補丁就已發佈到第七版了。
不過,Linus 緊接著也提醒道,目前只會以非常有限的方式來嘗試。畢竟25 年前想換C++ 進行一些內核補丁操作時就失敗了。
(意思用Rust 重寫2500 萬行C 代碼肯定是不可能的咯。)
接著有趣的一幕出現了。Linus 稱自己其實是很願意相信參與每一個參與Linux 維護的開發者的,但前提是他們沒有把事情搞砸。
一旦搞砸,Linus 表示大家都懂得,自己會“口出不遜”。但自己又意識到這樣很不禮貌,只好事後再道歉。
Linus 不好意思地說,這種情況已經不是一回兩回了,“所以現在,請允許我先給寫Rust 的這幫程序員道個歉。”(手動狗頭)
壓力現在來到了Rust 這邊。
“開源永遠不能保證100% 安全”
最後,話題轉到了開源安全上。
最近,Linux 基金會的OpenSSF(開源安全基金會)就透露,他們將支出1.5 億美元用於對開源軟件的安全防護。對此,Linus 稱,任何開源項目包括Linux 內核在內,都不能奢望做到100% 安全和100% 無bug。
“bug 不出現在硬件就會出現在軟件,不出現在你的程序就會出現在別人的程序。” (手動狗頭)
“唯一的辦法就是建立多層防護(layers of security)。”
他進一步解釋稱,Linux 內核只是整個應用程序堆棧的一層。在內核內部,進程的不同部分已經已經具備多層安全性。對於負責構建整個堆棧的開發人員來說,最重要的是對堆棧中的任一層出現安全漏洞時應該怎麼處理都有一個概念。
還有一件事
目前Linux 內核最新版本為5.19,Linus 口中的下一個版本叫5.20 還是6.0 也引起了很多網友的討論。
多數人認為該叫6.0 了——
不僅是因為這一版終於可能會合併Rust 這一重大更新,另一點別忘了,Linux 的版本號向來不愛往“大數”堆,比如此前3.19 版本結束後就直接跳到了4.0~
你覺得呢?
參考鏈接: