专栏名称: InfoQ
有内容的技术社区媒体。
今天看啥  ›  专栏  ›  InfoQ

从 C 迁移到 Rust 的挑战与经验教训h

InfoQ  · 公众号  · 科技媒体  · 2024-10-24 12:54

主要观点总结

文章讲述了Immunant软件工程师Stephen Crane和Khyber Sen如何将互联网安全研究小组(ISRG)的VideoLAN和FFmpeg AV1解码器从C语言移植到Rust语言的过程。文章详细描述了他们面临的挑战,如移植过程中的技术难题和性能优化等。

关键观点总结

关键观点1: 背景介绍

文章背景是关于将VideoLAN VLC和FFmpeg中使用的AV1解码器dav1d从C语言移植到Rust语言的过程介绍。

关键观点2: 移植过程的选择和挑战

工程师们面临的选择是逐步移植还是使用c2rust移植整个代码库。他们最终选择c2rust,因为它可以在重构的同时测试移植的代码,并降低了对专家领域知识的要求。

关键观点3: CI测试的重要性

在重写和改进Rust代码的过程中,进行全面的CI测试非常有益。这有助于对代码库进行横向修改,并在每次提交时运行已有的dav1d测试。

关键观点4: 线程安全和性能挑战

移植过程中面临的挑战包括线程安全和性能优化。工程师通过使用Mutex和RwLock加锁解决了线程安全问题,并进行了细致的性能优化工作。

关键观点5: 性能优化和结果

性能优化工作显著降低了移植带来的开销,将性能损失从11%降至6%。工程师们通过不断的优化和改进,使Rust实现与C语言实现相媲美,同时提供了内存安全性。


文章预览

作者 | Sergio De Simone 译者 | 平川 策划 | Tina 在一个系列文章中,Immunant 软件工程师 Stephen Crane 和 Khyber Sen 讲述了他们如何将互联网安全研究小组 (ISRG) 的 VideoLAN 和 FFmpeg AV1 解码器从 C 语言移植到 Rust 语言。该系列文章详细介绍了他们如何确保不出错并优化性能。 VideoLan VLC 和 FFMpeg 中使用的 AV1 解码器dav1d 已经开发了六年多,包含大约 5 万行 C 代码和 25 万行汇编程序。正如 Crane 所说的那样,它成熟、速度快且应用广泛。因为代码高度优化,所以它的体积小、可移植性好、速度快。因此,他们坚持要移植,而不是使用 Rust 从头开始重写。 Immunant 的工程师们首先要做的选择是,是一步一步地进行移植,还是使用 c2rust 移植整个代码库,获得一个不安全但可运行的 Rust 实现,然后再以此为基础进行重构和重写,使其变得安全而又符合 Rust 的语言习惯 ………………………………

原文地址:访问原文地址
快照地址: 访问文章快照
总结与预览地址:访问总结与预览