前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Android 平台基础支持转向 Rust(zdnet)

Android 平台基础支持转向 Rust(zdnet)

作者头像
niqin.com
发布2022-06-30 16:50:43
4510
发布2022-06-30 16:50:43
举报
文章被收录于专栏:Rust 生态与实践

2021 年 4 月 7 日,zdnet 发布文章:Android 平台基础支持转向 Rust。2021 年 4 月 6 日,谷歌宣布,Rust 可以在 Android 开源项目内部使用。

为了减少内存安全漏洞,谷歌宣布开源项目 Android 平台,将支持内置 Rust。

虽然 Android 平台上的应用程序可以用 java 和 Kotlin 等受监管的/托管类语言编写,但这些语言没有用于构建 Android 操作系统的低级语言(如 C/C++)的“控制和可预测性”。

它们的资源较少,而且具有更可预测的性能特征。对于 C/C++,开发人员负责管理内存生命周期。不幸的是,这样做很容易出错,特别是在复杂和多线程的代码库中。

Rust 使用编译时检查,来强制执行对象生命周期/所有权,并通过运行时检查来确保内存访问的有效性,从而提供内存安全保证。这种安全性,是其在提供与 C/C++ 相同性能的同时实现的。

由于目前在 Android 系统中,如果用 C/C++ 编写的进程处理不可信任的输入,那么它运行在沙箱中。google 说这是昂贵的,并且仍然允许攻击者链接安全漏洞。

此外,google 发现一半的内存 bug 来自一年内的新代码,因此将 Rust 对准新代码是有意义的,而不是用 Rust 重写操作系统。

“即使我们重新调整了 Android 团队中每个软件工程师的工作方向,重写数千万行代码也根本不可行的”,Android 团队说。

“比较罕见的是,老旧的历史 bug,其内存错误可能会让一些人感到惊讶,但我们发现旧代码并不是我们最迫切需要改进的地方。随着时间的推移,软件缺陷会被发现并修复,因此我们预计,正在维护但未积极开发的代码中,其缺陷数量会随着时间的推移而减少。”

Rust 开发的 gabeldorsche 项目正在进行,它被誉为蓝牙的继承者。

Android 团队还谈到了试图检测和复制内存缺陷,以修复它们的问题。

“对于复杂的 C/C++ 代码库,通常只有少数人能够开发和检查修复,即使花费大量的精力去修复 bug,有时修复后也不完全正确。”他们写道。

“当缺陷相对罕见时,缺陷检测是最有效的,危险的缺陷可以被赋予必要的紧迫性和优先性。我们要想从缺陷检测的改进中获益,就必须优先防止引入新的缺陷。”

谷歌表示,使用 Rust 的好处之一是语言中固有的附加约束和检查,例如强制初始化变量,这可以防止 Android 中高达 5% 的安全漏洞。

为 Android 平台添加一种新的语言,是一项艰巨的任务。有需要维护的工具链和依赖项,必须更新的测试基础设施和工具,以及需要培训的开发人员。

“在过去的 18 个月里,我们一直在为 Android 开源项目添加 Rust 支持。我们有几个采用 Rust 的早期项目,我们将在未来几个月内分享这些项目。”

今年早些时候,Rust 从 Mozilla 转移到了自己的 Rust 基金会。Mozilla 使用了 Rust 来构建其浏览器引擎,目前,已经使用 85000 行 Rust 代码替换了 160000 行 C/C++ 代码

Mozilla 最近在 Firefox 上运行线程清理器,以清除浏览器代码库中存在的任何数据竞争,这些问题是由 C/C++ 语言开发的。

总体来说,Rust 似乎正在实现其最初的设计目标之一:允许我们安全地编写更多并发代码。

谢谢您的阅读!

原文链接:Rust support moves into Android underpinnings

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-04-08,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Rust 生态与实践 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档