Linux之父表示對Rust語言感興趣但當前尚未達到可以大力推薦的時候
作為C語言開發的代表作,Linux內核也在越來越多地引入Rust語言。近日,ZDNet就與Linus Torvalds和Greg Kroah-Hartman等人展開了類似的討論。早在去年的Linux Plumbers會議上,開發者們就認真思考瞭如何將Rust語音用於新的Linux內聯代碼,且當前市面上已有不少Rust產品。
早些時候,亞馬遜雲服務(AWS)推出了面向容器的Bottlerocket Linux,其中就包含了大量的Rust 元素。至於Rust 為何如此流行,主要是因為它能夠用於編寫更安全的軟件。
AWS 產品經理Samartha Chandrashekar 表示:Rust 有助於確保線程安全、避免與內存相關的錯誤,從而堵上潛在的緩衝區溢出型安全漏洞。
作為Mozilla 的主管,Sylvestre Ledru 也在夜間兼職Debian Linux 的開發,目前已使用LLVM 編譯了基礎結構、Clang C 語言前端和工具基礎結構,並將Rustutil 版本的Coreutils 移植到了Linux 平台。
Coreutils 是GNU Shell 的核心實用程序,Sylvestre Ledru 藉此啟動了Linux、並運行了深受歡迎的Debian 軟件包。雖然距離生產部署還有很長一段路要走,但它最終還是有望取代GNU Coreutils 。
2019 年的時候,Alex Gaynor 和Geoffrey Thomas 在Linux 安全峰會上表示,約有2/3 的Linux 內核漏洞源於內存安全性問題。
從理論上來講,Rust 可帶來本質上更安全的應用程序接口(API),以全面規避此類情況的出現。
不過Linux 開發者Nelson Elhage 還是在Linux Plumber 會議的總結詞中強調,他們並非提議通過Rust 來徹底重寫Linux 內核,而是專注於向新一代編程世界邁進。
Rust 的三大潛在應用,包括了對Linux 內核中現有API 的使用、體系結構支持、以及處理Rust 和C 語言之間的應用程序二進制接口(ABI)的兼容性。
在向Linus Torvalds 提問對這一切都有怎樣的看法時,他表示正在耐心等待和保持密切觀察:
我對Rust 項目很感興趣,但當前似乎主要由Rust 的愛好者所推動,因此我決定靜觀其變,看它最終能夠在實踐中發揮怎樣的作用。
就個人而言,目前應該還不是推舉Rust 語言的最佳時機。不過考慮到該語言所承諾的一些優勢(雖然不一定能完全兌現)、以及能夠規避一些安全問題,我還是願意接受它的。
如果分個輕重緩急,Linus Torvalds 認為Rust 的首要目標應該放在驅動程序的改進上。
即便顯得有些枯燥,大家還是可以在這裡找到許多不同的潛在目標,且內核的這些部分都是相對較小且彼此獨立的。
針對驅動程序的任何初步試驗都僅停留在體系結構層面,而許多驅動程序僅與特定的幾個目標體系結構有關,所以Rust 支持代碼的重要性也沒有那麼高。
Kroah-Hartman 對這一觀點表示同意,因為驅動程序只是內核源代碼依賴樹上最末端的葉子。此外Linus Torvalds 提到了內核與用戶空間項目的不同:
許多人抱怨在用戶空間這塊使用Rust 並不是一個好兆頭,但這裡其實和內核項目有很大的不同。
由於我們使用了許多非常奇怪的頭文件,其在某些方面確實更加困難,你也可以將之稱作C 語言的一個邊界。
但在其它方面,Rust 開發或許可以做到更加輕鬆。這點主要得益於內核的相對獨立,所以並不需要依賴於其它項目的最終二進製文件。
在Kroah-Hartman 看來,一切都歸結為“如何將用C 語言編寫的內核核心架構和生存期規則之間的交互”映射到Rust 結構和生存期規則中,以便基於Rust 語言開發的驅動程序能夠被順利推行。
至於Rust 語言在Linux 平台上的後續發展,還請耐心留意未來幾年裡的更多項目。