基於Rust 的記憶體安全PNG 解碼器”大大優於”基於C 的PNG 庫
以Rust 程式語言編寫的視訊和圖像編碼器/解碼器因其記憶體安全保證而常被視為程式語言用於更好地防止畸形/惡意內容(尤其是Web 瀏覽器中的畸形/惡意內容)的引人注目的領域之一。 事實證明,基於Rust 的PNG 影像解碼器不僅比基於C 的解碼器更安全,而且Rust 解決方案的效能甚至更快。
image-png 和zune-png Rust 項目的Sergey Davidoff 分享說,該團隊在Reddit 上發布了一些令人鼓舞的細節,他們自己發現內存安全的Rust PNG 解碼器的性能遠遠超過普通的C PNG 庫。
開發人員將他們的發現發佈在Reddit 上,並發表了評論:
“PNG 的記憶體安全實作(png、zune-png、wuffs)現在在解碼影像時的效能大大優於記憶體不安全實作(libpng、spng、stb_image)。”
Rust png crate 在我們的基準測試中名列前茅,在x86 平台上比libpng 提高了1.8 倍,在ARM 平台上提高了1.5 倍。 在Reddit 上發布的基準測試中,他們使用的是AMD Zen 4 系統。
除了比基於C 的PNG 庫更快更安全之外,他們還認為這些基於Rust 的解決方案可以投入生產:
“這可以投入生產嗎?
是的!
所有三個記憶體安全實作都支援APNG、讀取/寫入輔助塊,以及現代PNG 庫所應具備的其他功能。
png 和zune-png 已在廣泛的真實圖像上進行了測試,僅在測試語料庫中就有超過10 萬張圖像。 而png 被圖像箱的每個使用者所使用,因此它已經過了徹底的實戰測試。
WUFFS PNG v0.4 在我們的測試中似乎無法處理帶有alpha 的灰階影像。 我們還沒有深入研究這個問題,這可能是我們的配置問題,而不是錯誤。 不過,我們無法像Rust 函式庫那樣為WUFFS 作擔保。 “
在未來幾年中,基於Rust 的PNG 實作以及其他基於Rust 的圖片/視訊編碼器和解碼器的採用將會非常有趣。