这一决定将使谷歌能够在明年内将 Rust 代码包含在 Chrome 二进制文件中。“我们起步缓慢,并且对我们准备好后将考虑的图书馆设定了明确的期望。”
满足“二人法则”
“我们将 Rust 引入 Chromium 的目标是提供一种更简单(无 IPC)和更安全(整体 C++ 复杂度较低,沙箱中也没有内存安全漏洞)的方式来满足二元法则”,Jansens 解释道。
二人法则规定,在编写代码来解析、评估或以其他方式处理来自互联网的不可信输入时,应在以下三个风险因素中选择不超过两个:
(1) 不可信输入;
(2) 不安全的实现语言;
(3) 高特权。
Jansens 补充说,此举还有望加快 Chromium 的开发,因为要编写的代码和设计文档都变得更少。添加 Rust 也将提高安全性,Jansens 说,因为它增加了没有内存安全漏洞的代码行数,同时降低了漏洞密度。
“我们相信我们可以使用第三方 Rust 库来实现这一目标”,Jansens 宣称。“我们知道 C++ 和 Rust 可以很好地协同工作。” 但是,有一些限制。“我们可以预期这些限制的形式会通过新的或改进的工具及时改变,但这里的决定和描述是基于当前的技术状态。”
在 Chromium 项目中加入 Rust 应该不足为奇。自 2019 年以来,谷歌一直在用 Rust 编写 Android 代码。
众人的看法
一些人对这种转变持怀疑态度,例如引入了新的Bug和运行错误。
一位工程师 Lolinder在 Hacker News 上写道:
“对于任何给定的项目,用 Rust 重写都不一定是个好主意,而且几乎可以肯定,谷歌不会像 Mozilla 那样主动用 Rust 重写大量 Chrome。
原因是错误主要存在于新代码中,而不是长期未触及的代码中。虽然可以通过在 Rust 中重写来解决一些潜在的内存问题,但也可能会引入新的Bug回归,这可能会更糟。专注于用安全的语言编写独特的代码更有意义,并且只有在它们需要大量重写时才逐渐迁移。”
一位谷歌资深人士Jansen说道:“这是一件非常好的事情,并且在其他谷歌项目中经历过这一点,真诚地祝贺那些表现出坚韧不拔的人,尽管他们遇到了很多真正的难题,但我敢肯定被问到,还会有很多废话。从长远来看,这一结果对用户是一定有利的。”
Jansen 写道,从 C++ 到 Rust,目前只会在一个方向上支持互操作。有意思的是,谷歌已经投资了Crubit,这是一种“非常”实验性的 C++/Rust 双向操作工具,而贡献最大的是谷歌工程师。
Rust 是由 Mozilla 主导开发的通用、编译型编程语言。设计准则为“安全、并发、实用”,支持函数式、并发式、过程式以及面向对象的编程风格。Rust 语言原本是 Mozilla 员工 Graydon Hoare 的私人计划,而 Mozilla 于 2009 年开始赞助这个计划,并且在 2010 年首次公开。
作者:场长
相关链接: https://security.googleblog.com/2023/01/supporting-use-of-rust-in-chromium.html
本文为 @ 万能的大雄 创作并授权 21CTO 发布,未经许可,请勿转载。
内容授权事宜请您联系 webmaster@21cto.com或关注 21CTO 公众号。
该文观点仅代表作者本人,21CTO 平台仅提供信息存储空间服务。