Josh Triplett,基於Intel的公司 並且是Crates.io開發監督委員會的成員, 前幾天已經提出了一個工作小組 在開源技術峰會上的演講中 目的是使Rust在Linux內核編程中與C並駕齊驅。
在正在創建的工作組中, Rust開發人員將與英特爾工程師一起制定規範 可以強調Rust在Linux內核中實現編程所需的功能。 系統編程通常需要低級操作,例如執行特權處理器指令和獲取有關處理器狀態的詳細信息。
在已經為Rust開發的類似功能中, 支持對未命名結構的支持,聯合(union),彙編程序插入(“ asm!”宏)和BFLOAT16浮點數格式。
喬什(Josh)相信系統編程的未來取決於Rust,而現代現實中的C語言則被認為是Assembler在過去的地位。 Rust不僅減輕了開發人員因內存底層工作而引起的特定C語言問題的負擔,而且還為現代編程範例的開發提供了適用性。
在討論喬什的講話時,這個想法表達給:
增加了在Linux內核中開發Rust語言驅動程序的能力,這將允許您以最小的努力來創建更好,更安全的驅動程序,從而減輕諸如釋放內存後訪問內存區域,引用空指針以及退出超出限制範圍之類的問題。緩衝區的。
格雷格·克魯亞·哈特曼, 負責維護Linux內核的穩定分支,以及x表示願意將Rust驅動程序框架添加到內核,如果它比C具有任何真正的優勢, 例如,它將在核心API上提供安全的綁定;此外,Greg將此框架僅視為默認情況下不活動的選項,以免在核心程序集依賴項中不包含Rust。
事實證明,已經有幾個團隊朝著這個方向努力。 例如,Fish in a Barrel開發人員準備了一個工具包,用於使用Rust語言編寫用於Linux內核的可加載模塊,並在內核接口和結構之上使用了一組抽象層來提高安全性。
中間層是根據可使用bindgen實用程序提供的內核頭文件自動生成的。 Clang用於構建中間層。 除圖層外,組裝的模塊還使用staticlib軟件包。
同時,正在開發另一個項目,重點是嵌入式系統控制器的開發。 和物聯網設備,該設備還使用bindgen基於內核頭文件生成項圈。
該框架允許您在不更改內核的情況下提高驅動程序的安全性。 建議不要在內核中為驅動程序創建其他隔離級別,而建議使用更安全的Rust語言在編譯階段阻止問題。
設備製造商應該能夠在沒有適當審核的情況下迅速開發這種方法。
尚未實現所有計劃的功能, 但是該框架已經非常適合該工作,並且用於在Raspberry Pi 9512板上為提供的LAN3 USB以太網控制器編寫一個有效的驅動程序。
編寫了現有的smsc95xx驅動程序 作為參考實施 用C語言編寫Rust驅動程序時。
注意,在為Rust開發驅動程序時,模塊大小和運行時組件開銷並不重要,這使您可以將框架用於資源受限的設備。
我無法在源代碼中找到有關smsc95xx驅動程序的信息,或者在Linux上的Rust中將實現某些內容。