Collabora 的 Daniel Almeida 在 Linux 2 (V4L2) 子系統中發布了 Linux 核心** 4 重寫的 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 核心上游利益相關者的反饋。