在過去的幾個月裡 Linux 開發者一直在爭論 的可能性 允許使用 Rust 語言 為內核編寫新的設備驅動程序。
去年,Linux 內核開發人員 他們似乎就此事達成了一致, Rust 支持者引用的工作表明,Android 和 Ubuntu 中大約三分之二的內核漏洞與內存安全問題有關。
在此聲明之後,Linux 內核的軟件工程師、主要創建者和開發人員 Linus Torvalds 在接受采訪時表示,關於該主題的討論遠比在 Google 上發布關於該語言的冗長帖子重要得多。
當被問及使用 Rust 的建議時,他表示,“這裡的解決方案很簡單:只需使用 C++ 而不是 Rust。”
之後 XNUMX月,首次支持上線e 允許將 Rust 驅動程序放置在 Linux-Next 樹中,以便在它們最終包含在主內核中之前進行進一步測試。
緊隨其後的是在內核郵件列表上重新發布的關於 Linux 內核的 Rust 代碼透視圖的“評論請求”。
米格爾·奧赫達Linux 內核開發人員在 Linux 內核郵件列表上發起了征求意見 (RFC) 提案。
郵件列表帖子概述了參與將 Rust 代碼添加到內核中的開發人員的信念,以及提高內存安全性等好處。
“最近幾周和幾個月,你們中的一些人已經註意到,正在認真嘗試將第二種語言引入內核。 Miguel Ojeja 說:“我們終於到了,RFC 為 Linux 內核添加了 Rust 支持。” “我們知道在內核中引入一種新語言會帶來巨大的成本和風險,”他補充道。
Rust for Linux 項目團隊 從 Rust beta 編譯器轉移到使用穩定版本,每次發布新版本時都會遷移。
“我們要感謝 Rust 在這些選項上與我們合作,以便內核可以使用它們,”Miguel 說。
更新編譯器時,團隊 能夠從列表中刪除一些不穩定的功能: const_fn_transmute、const_panic、const_unreachable_unchecked、core_panic 和 try_reserve。
除此之外,要強調的是 添加了一些模塊化選項 更多分配以禁用一些不必要的功能:no_rc 和 no_sync。
上游,為了讓內核用例得到很好的支持,或者更準確地說是內核需要的“混合”選項,上游核心還添加了 no_fp_fmt_parse。
另一方面,Rust 為 Rust 和 Clippy 編譯器啟用了一系列額外的診斷。 與 C 的一個區別是 Rust 診斷在代碼中更容易禁用,在一般情況下更嚴格。
還 已實施抽象和驅動程序更新. 該團隊為流鎖、電源管理回調、io 內存(readX/writeX)、irq 芯片和高級流管理器、gpio 芯片(包括 irq 芯片)、外設、amba 外設和驅動程序添加了抽象。
的支持 控制器通過獨立於總線的基礎設施得到增強, 可撤銷對象、可撤銷互斥體、高效位迭代器、更好的恐慌診斷和簡化的指針包裝器。 此外,它還改進和簡化了 Ref 對象(與 refcount_t 兼容)並替換了所有 Rust 實例。
並且已經實施並作為 RFC 補丁提供了 gpio PL061 設備的新驅動程序。
最後應該注意的是 Rust 支持仍被認為是實驗性的。 但是, 支持足夠好,內核開發人員開始工作 在 Rust 抽像中編寫子系統和控制器以及其他模塊。 當前系列剛剛到達 Linux-next,因此本週將進行第一次運行。