Linux V4L2 VP9 編解碼器核心程式碼將以Rust重寫提高記憶體安全性
Collabora 的Daniel Almeida 發布了Linux 核心影片4 Linux 2 (V4L2) 子系統中重寫的VP9 編解碼器程式庫程式碼。透過使用Rust 而不是現有的C 程式碼,這應該會產生更好的記憶體安全性,並能更好地抵禦現有程式碼中的潛在問題。
請求註解”程式碼將VP9 庫程式碼移植到Rust 中,並將RKVDEC 和Hantro 驅動程式程式碼轉換為使用Rust 版本。
Fluendo 的Fluster 測試表明,無論是使用Rust 還是C 版本的程式碼,結果都是一樣的。
Almeida 對RFC 補丁發表瞭如下評論:
關於驅動程序,我們在不同場合已經說了很多,我覺得目前的共識是等待。這就是為什麼我提出一種不同的方法:將我們的編解碼器庫移植到Rust 中。
在我看來,這些元件可以從Rust 中受益匪淺,因為它們實現了複雜的演算法,同時也透過V4L2 控制來處理從用戶空間接收的資料。這些演算法使用從用戶空間接收的資料來索引大量數組,從而受益於Rust 的記憶體安全性。
關於程式碼的第一件事是它不包含任何綁定層。
這裡的Rust 程式碼也為C 驅動程式提供了一個C API。這個C API 是由cbindgen 自動產生的,我已經提供如何產生的說明。我們甚至可以同時使用C 函式庫和Rust 函式庫中的函數,因為ABI 是相同的。
以上內容非常有用,因為這意味著我們可以在必要時逐段轉換給定的程式碼庫。C 驅動程式將透過C API 正常運作,而任何新的Rust 驅動程式都將受益於本機Rust 介面。
他在補丁封面信中繼續補充:
最後,請注意這段程式碼只是一個概念驗證,如果反應良好,我們可以推出一個正式的補丁(包括所有相關內容)”
有興趣的人可以在核心郵件清單中找到這些RFC 補丁,同時等待其他Linux 核心上游利害關係人的回饋。