InfoQ Geekathon 大模型技术应用创新大赛 了解详情
写点什么

谷歌宣布支持使用 Rust 开发 Chromium

  • 2023-02-17
    北京
  • 本文字数:1461 字

    阅读完需:约 5 分钟

谷歌宣布支持使用Rust开发Chromium

谷歌计划在其开源浏览器项目 Chromium 中支持使用第三方 Rust 库,这是对 Rust 编程语言及其安全特性的一次重大认可。


在 1 月份发布的一篇博文中,来自 Chrome 安全团队的 Dana Jansens 表示,谷歌的软件工程师已经开始致力于将 Rust 工具链应用于其构建系统。希望在年底之前将 Rust 代码包含到 Chrome 二进制文件中。


“我们将 Rust 引入 Chromium 的目标是提供一种更简单(无 IPC)且更安全(总体上包含更少的复杂 C++ 代码,同时在沙盒中也没有内存安全漏洞)的方法来满足二个原则,从而加快开发速度(需要写的代码更少、设计文档更少、安全审查更少)并且提升 Chrome 的安全性(增加了没有内存安全漏洞的代码的行数,降低了代码的错误密度)”,Jansens 解释道。


Rust 在不写成不安全的情况下,可以避免内存安全缺陷,而内存安全缺陷占 Chromium 中发现的严重安全漏洞的 70%。Rust 语言不能保证代码没有漏洞,但它可以保证潜在的缺陷要少得多。


值得一提的是,谷歌也一直致力于一种语言来提升 C++ 中的内存安全,创建者 Bjarne Stroustrup 坚称当符合 ISO C++ 标准并遵守静态分析器所强制执行的特定标准时,这种语言是内存安全的。


Jansens 感谢 Mozilla 一直支持 Rust 的开发直到它成熟并吸引了足够的外部支持来建立其自己的基础。Mozilla 长期以来一直得到谷歌的资金支持,作为回报,谷歌成为 Mozilla 的火狐浏览器的默认搜索引擎。但由于谷歌浏览器侵蚀了火狐浏览器的使用率,因此 Mozilla 正寻求其它资金来源。


Jansens 解释道,Rust 和 C++ 是 Chromium 的基础,可以通过 cxx、autocxx bindgen、cbindgen、diplomat 和 crubit 等工具进行交互。这些工具提供了一种安全的方法来从 C++ 代码调用 Rust 代码,反过来也一样。但是由于这两种语言各自的设计不同,它们之间的互操作性也存在限制。


Jansens 解释道,“例如,Rust 通过静态分析来保证临时内存安全。这个静态分析依赖两个输入:生存周期(推断或显式写入)和互斥可变性。后者与 Chromium 的大部分 C++ 的编写方式不兼容。”


Jansens 观察到,由于 Rust 和 C++ 遵循不同的规则,因此两者之间的互操作很容易出错。这就是为什么谷歌采取了一种谨慎方案的原因。


最初,谷歌想支持 C++ 到 Rust 的单项互操作性来控制依赖图的形状。Jansens 解释道,“Rust 不能依赖于 C++,因此它无法理解 C++ 类型和函数,除非通过依赖注入。这样的话,Rust 就不能在任意 C++ 代码中调用,只能在从 C++ 通过 API 传递的函数中调用。”


目前,Chromium 只能通过第三方库来暴露给 Rust。


尽管如此,随着谷歌对 crubit 等工具的开发和维护来提高 C++ 和 Rust 之间的双向互操作性,其对 Rust 的不断深化投入有望大大丰富 Rust 包生态系统。


谷歌已经将 Rust 引入安卓生态系统。微软 Azure CTO Mark Russinovich 呼吁在新项目中使用 Rust 而不是 C++。Linux 内核已经增加了 Rust 支持。甚至是不愿意使用其不能控制的技术的苹果公司都已经一直在用 Rust。®


作者介绍:


Thomas Claburn 位于旧金山湾区,为 The Register 提供软件开发、DevOps、计算机安全等服务。


原文链接:


Google polishes Chromium code with a layer of Rust(https://www.theregister.com/2023/01/12/google_chromium_rust)


声明:本文为 InfoQ 翻译,未经许可禁止转载。


今日好文推荐


18.3 万美元offer到手!ChatGPT 通过谷歌 L3 面试:留给谷歌的时间不多了


我被微服务坑掉了CTO职位


微信全面支持“小号”;员工购买公司福利房,被裁员后遭巨额索赔;16岁少年孤身前往深圳腾讯总部解封QQ账号|Q资讯


现代软件越来越大、越来越慢、越来越烂!还有救吗?


活动推荐:

2023年9月3-5日,「QCon全球软件开发大会·北京站」 将在北京•富力万丽酒店举办。此次大会以「启航·AIGC软件工程变革」为主题,策划了大前端融合提效、大模型应用落地、面向 AI 的存储、AIGC 浪潮下的研发效能提升、LLMOps、异构算力、微服务架构治理、业务安全技术、构建未来软件的编程语言、FinOps 等近30个精彩专题。咨询购票可联系票务经理 18514549229(微信同手机号)。

2023-02-17 11:025244

评论 1 条评论

发布
用户头像
mozilla 用 rust,chromium 也用 rust 了
2023-02-18 11:42 · 浙江
回复
没有更多了
发现更多内容

ARTS挑战打卡第五周(200608-200614)

老胡爱分享

ARTS 打卡计划

Spring Boot 集成 Sharding-JDBC + Mybatis-Plus 实现分库分表

简爱W

介绍一款API敏捷开发工具

棒锤🐮

敏捷开发 Rocket API API敏捷开发

融云 X- Meetup 技术沙龙广州站:全球通信云技术实践分享

InfoQ_967a83c6d0d7

LeetCode题解:26. 删除排序数组中的重复项,双指针,JavaScript,详细注释

Lee Chen

大前端 LeetCode

Docker搭建项目环境实战

书旅

Docker Dockerfile Docker-compose

请不要随便修改基类

架构师修行之路

完了,这个硬件成精了,它竟然绕过了 CPU

简爱W

让理性思维走进我们的生活,帮助我们做出更好的决策。

叶小鍵

心理学 基思. 斯坦诺维奇 超越智商 认知科学

JeecgBoot手记

卧石漾溪

前端分页组件实现逻辑

书旅

php 大前端 分页

ARTS挑战打卡第六周(200615-200621)

老胡爱分享

ARTS 打卡计划

ARTS 挑战打卡第七周(200622-200628)

老胡爱分享

ARTS 打卡计划

战斗还是逃避,或许可以考虑一下合作?

escray

学习 面试

week 11学习总结

Geek_2e7dd7

Flink水位线和时间戳理解-7

小知识点

scala 大数据 flink 模块化流程

ARTS挑战打卡第八周(200629-200705)

老胡爱分享

ARTS 打卡计划

数据库是咋工作的?

简爱W

十一周作业

olderwei

极客大学架构师训练营

图解javascript——基础篇(以思维导图总结js中关键技术点,为面试及工作助力)

执鸢者

Java 大前端

POI 之 策略游戏

zhoo299

随笔杂谈

ARTS 挑战打卡第九周(200706-200712)

老胡爱分享

ARTS 打卡计划

Redis 之父关于 CRC64 的神秘往事!

yes

redis CRC

【解Bug之路】——Nginx 502 Bad Gateway

简爱W

Netty之旅二:口口相传的高性能Netty到底是什么?

一枝花算不算浪漫

用科学的方法理解每日优鲜

石云升

新零售 每日优鲜 多快好省 科学分析

Linux系统监控工具推荐

王坤祥

监控 工具软件

一个快捷方便的油煎鸡胸肉,懒人标配香喷喷好吃看得见

小霸王其乐无穷

美食 鸡胸肉 懒人

视频码控:CBR、VBR和ABR

潇湘落木

直播 SRS 视频编码 码控

SQL查询语句执行顺序详解

书旅

MySQL SQL语法 sql查询

week 11

Geek_2e7dd7

  • 扫码添加小助手
    领取最新资料包
谷歌宣布支持使用Rust开发Chromium_语言 & 开发_Thomas Claburn_InfoQ精选文章