Collabora的DanielAlmeida發佈Linux內核視頻4Linux2(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 內核上遊利益相關者的反饋。