|
从Android 十二起,谷歌宣告在Android平台中反对Rust编程言语,作为C/C++的内存平安代替言语。
谷歌的指标不是将现有的C/C++转换为Rust,而是跟着时间的推移将新代码的开发转移到内存平安的言语。
Android 13 是第一个添加到版本中的大部份新代码都采取内存平安言语的 Android 版本。
Rust 不是Android 中独一使用的内存平安言语(Java 和 Kotlin 也算在内),但它是一个次要的言语。
在Android 13中,约21%的新原生代码(C/C++/Rust)使用Rust。Android开源名目(AOSP)中总共有大约150万行Rust代码,波及新的功用和组件,如Keystore 2、新的超宽带(UWB)堆栈、DNS-over-HTTP 3、Android的虚构化框架(AVF)和各种其余组件及其开源依赖项。这些是需求零碎言语的低级组件,不然这些零碎言语将以C++完成。
到目前为止,Android的Rust代码中没有发现内存平安破绽。
咱们不但愿这个数字永久为零,但斟酌到两个Android版本中新Rust代码的数量,以及使用它的平安敏感组件,这是一个首要的后果。它标明Rust正在完成其避免Android最多见破绽来源的预期目的。在许多Android的C/C++组件(例如媒体、蓝牙、NFC等)中,历史破绽密度大于1/kLOC(每千行代码1个破绽)。按照这一历史破绽密度,使用Rust可能曾经禁止了数百个破绽进入出产环境。
从C/C++迁徙是一项应战,但咱们正在取得停顿。Rust在Android平台上的使用正在增长,但这并非故事的完结。为了完成在Android规模内进步平安性、不乱性和品质的指标,咱们需求可以在需求当地代码的代码库中的任何中央使用Rust。咱们正在Rust中完成用户空间HAL。咱们正在添加对受信赖运用顺序中Rust的反对。咱们已将Android虚构化框架中的虚构机固件迁徙到Rust。跟着Linux 6.1对Rust登陆的反对,咱们很快乐能将内存平安性引入内核,从内核驱动顺序开始。
咱们在Java中看到的破绽类型次要是逻辑过错,如上所述,重大性通常较低。接上去,咱们将探究Rust更丰硕的类型零碎如何帮忙避免常见类型的逻辑过错。
跟着Android从C/C++迁徙到Java/Kotlin/Rust,咱们预计内存平安破绽的数量将持续降落。为Android上内存毁坏过错稀有的将来干杯!
更多信息:谷歌的安卓13大幅度从C/C++迁徙到Rust |
|