机器之心报道
机器之心编辑部
Rust越来越流行,开始跨入Android领域。谷歌宣布AOSP(AndroidOpenSourceProject)现已支持使用Rust开发Android操作系统。
Android系统涉及很多组件,开发者会根据正在开发的Android部分而选择不同的编程语言。对于应用开发者来说,Java和Kotlin是比较流行的选择;而对于从事操作系统以及内部底层的开发人员来说,C和C++是比较好的选择。
近日,谷歌为操作系统开发者增加了第3个选择Rust。谷歌发布博客称AOSP(AndroidOpenSourceProject)现已支持使用Rust开发Android操作系统。
内存安全bug
C和C++中的内存安全bug是最难解决的错误源。谷歌已经投入了大量的精力和资源来检测、修复和缓解这类bug,并有效地防止了大量bug进入Android版本。然而,尽管做出了这些努力,内存安全bug仍然是稳定性问题的主要原因,它在Android严重安全漏洞中长期占据大约70%的比例。
对于这些内存安全问题,谷歌表示除了优化内存错误检测机制外,最有效的解决办法是采用内存安全语言。Java和Kotlin等托管语言是Android应用开发的最佳选择。这些语言专为易于使用、可移植性和安全性而设计,它们是开发Android应用的最佳选择。AndroidOS广泛使用Java语言,从而有效地保护了大部分Android平台不受内存bug的影响。但对于操作系统的底层而言,不能选择Kotlin和Java。
较低层级的OS需要系统编程语言,如C、C++和Rust。这些语言设计时考虑到了可控和可预测性的目标。它们提供对低级系统资源和硬件的访问,资源较少,并具有更可预测的性能特征。
对于C和C++,开发人员负责管理内存生存期。遗憾的是,这样做很容易出错,特别是在复杂的多线程代码库中。
Rust使用编译时检查(强制执行对象生命周期/所有权)和运行时检查(确保内存访问有效)的组合来提供内存安全保证。提供这种安全性的同时,Rust的性能表现足以媲美C和C++。
大约50%的错误发生在一年之内
谷歌表示,用Rust重写数千万行的C和c++Android代码根本不可行,而重写旧的Android不会有太大影响,因为到目前为止旧代码已经清除了大部分bug。由于Android源代码是一个拥有数十亿用户的开源项目,很多人都在