Linux的V4L2 VP9编解码器内核代码在Rust中重写,以提高内存安全性

2024年 2月 28日 84.5k 0


Collabora的Daniel Almeida发布了对Linux内核的视频4 Linux 2(V4L2)子系统中的VP9编解码库代码的重写。在使用Rust而不是现有的C代码时,这应该会产生更好的内存安全性,并更好地避免现有代码中的潜在问题。

“请求注解”代码将VP9库代码移植到Rust,并将RKVDEC和Hantro驱动程序代码转换为使用Rust‘ed版本。在使用Rust或C语言版本的代码时,Fluendo的Flster测试显示了相同的结果。

阿尔梅达用RFC补丁评论道:

“在不同的场合,关于驱动程序的讨论已经很多了,我觉得大家的共识是现在等待。这就是为什么我提出了一种不同的方法:将我们的编解码库移植到Rust。

恕我直言,这些组件可以从Rust中受益匪浅,因为它们实现了复杂的算法,这些算法也恰好处理通过V4L2控件从用户空间接收的数据。这些算法使用从用户空间接收的数据来索引到大量数组中,从而受益于Rust的内存安全。

关于代码的第一件事是它不包括任何绑定层。由于需要保持它们与C代码同步,这被多次指出是一个阻塞器。

这里的Rust代码还为C驱动程序提供了一个C API。这个C API是由cbindgen自动生成的,我已经提供了如何执行此操作的说明。我们甚至可以同时使用C和Rust库中的函数,因为ABI是相同的。

上面的方法可以派上用场,因为这意味着如果需要的话,我们可以逐段转换给定的代码库。C驱动程序将通过C API正常工作,任何新的Rust驱动程序都将受益于原生Rust接口。“

他接着在补丁封面信中补充道:

我希望让社区相信,这是一种可行的方式,可以慢慢地试验铁锈代码,而不会把我们绑在太多东西上。

最后,请注意,此代码只是一个概念验证,如果它被广泛接受,我们可以确定一个适当的补丁-包括所有需要的补丁。

感兴趣的人可以在上面找到这些RFC补丁内核邮件列表 while awaiting feedback from other upstream Linux kernel stakeholders.

相关文章

塑造我成为 CTO 之路的“秘诀”
“人工智能教母”的公司估值达 10 亿美金
教授吐槽:985 高校成高级蓝翔!研究生基本废了,只为房子、票子……
Windows 蓝屏中断提醒开发者:Rust 比 C/C++ 更好
Claude 3.5 Sonnet 在伽利略幻觉指数中名列前茅
上海新增 11 款已完成登记生成式 AI 服务

发布评论