设为首页 - 加入收藏
广告 1000x60
您的当前位置:软件网 > 操作系统 > 正文

Rust支持进入Android基础

来源:华强北电脑网 编辑:yuchun 时间:2021-04-07 14:07

  为了减少内存安全错误,Google宣布开放源代码版本的Android将支持将在Rust中构建的部分操作系统。

  尽管可以使用托管语言(例如Java和Kotlin)编写Android上的应用程序,但这些语言不具有用于构建Android操作系统的较低级语言(例如C和C ++)的“控制性和可预测性”。

  Android团队写道:“它们基于资源,具有更可预测的性能特征。对于C和C ++,开发人员负责管理内存生存期。不幸的是,这样做很容易出错,尤其是在复杂的多线程代码库中。”在博客文章中。

  “ Rust通过结合使用编译时检查来强制执行对象生存期/所有权和运行时检查来确保内存访问有效,从而提供了内存安全保证。在提供与C和C ++等效的性能的同时,还可以实现这种安全性。”

  就目前在Android中的情​​况而言,如果用C / C ++编写的进程正在处理不可靠的输入,则它会在沙盒中运行,谷歌表示这是昂贵的,并且仍然允许攻击者将安全漏洞链接在一起以利用系统。

  另外,谷歌发现其内存错误的一半来自不到一年的代码,因此将Rust定位于新代码是有意义的,而不是用Rust重写操作系统。

  该团队说:“即使我们重新安排Android团队中每个软件工程师的工作,重写几千万行代码也根本不可行。”

  “较旧的内存错误相对罕见,有些人可能会感到惊讶,但是我们发现旧代码并不是我们最迫切需要改进的地方。随着时间的推移,发现并修复了软件错误,因此我们希望可以发现错误的数量的代码将被维护,但不会随着时间的推移而积极开发。”

  Gabeldorsche是其中一种获得Rust治疗的系统,该系统被称为蓝牙的后继产品。

  Android团队还谈到了尝试检测和复制内存错误以修复它们的问题。

  他们写道:“对于复杂的C / C ++代码库,通常只有少数人有能力开发和审查该修补程序,即使花费大量精力来修复错误,有时这些修补程序还是不正确的。”

  “当错误相对罕见时,漏洞检测是最有效的,并且可以给予危险的漏洞以紧急程度和优先权。要获得漏洞检测改进所带来的好处,我们必须优先考虑防止引入新的漏洞。”

  Google说,使用Rust的好处之一是附加的约束和语言固有的检查功能,例如强制初始化变量,这可以防止Android中多达5%的安全漏洞的根本原因。

  该团队说:“向Android平台添加新语言是一项艰巨的任务。需要维护工具链和依赖项,必须更新测试基础架构和工具,还需要对开发人员进行培训。”

  “在过去的18个月中,我们一直在Android开源项目中添加Rust支持,并且我们将在未来几个月中共享一些早期采用者项目。”

  今年早些时候,Rust从Mozilla搬到了自己的基金会。Mozilla已使用Rust构建其Servo浏览器引擎,并用85,000行Rust替换了160,000行C ++。

  Mozilla最近在Firefox上运行了ThreadSanitizer,以清除浏览器代​​码库中剩下的C / C ++中的所有数据争用。

  对于混合代码库,Mozilla担心种族在传递Rust代码时会被混淆,但仍然选择了一对纯Rust种族。

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

  “ WebRender和Stylo都非常大,并且普遍使用多线程,但是线程问题很少。我们确实发现的问题是实现低级且明显不安全的多线程抽象的实现中的错误-而且这些错误很容易修复。

  “这与我们的许多C ++竞赛形成对比,后者经常涉及使用不清楚的语义在不同线程上随机访问事物,从而需要对代码进行非平凡的重构。”

  毫不奇怪,Mozilla建议使用Rust而不是C或C ++构建任何新项目。

联系QQ:12 1 7 80 87 70 邮箱:121 7 808 77 0@qq.com

Copyright © 2002-2017 备案编号: 粤ICP备09113221号-1 运营:深圳市亿欧传媒有限公司

Top