以 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 的图像/视频编码器和解码器的采用情况将会非常有趣。