自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

C和C++不安全?谷歌宣布Android加入對(duì)Rust語言支持

開發(fā) 開發(fā)工具
Rust 越來越流行,開始跨入 Android 領(lǐng)域。谷歌宣布 AOSP (Android Open Source Project) 現(xiàn)已支持使用 Rust 開發(fā) Android 操作系統(tǒng)。

Android 系統(tǒng)涉及很多組件,開發(fā)者會(huì)根據(jù)正在開發(fā)的 Android 部分而選擇不同的編程語言。對(duì)于應(yīng)用開發(fā)者來說,Java 和 Kotlin 是比較流行的選擇;而對(duì)于從事操作系統(tǒng)以及內(nèi)部底層的開發(fā)人員來說,C 和 C++ 是比較好的選擇。

近日,谷歌為操作系統(tǒng)開發(fā)者增加了第 3 個(gè)選擇 Rust。谷歌發(fā)布博客稱 AOSP (Android Open Source Project) 現(xiàn)已支持使用 Rust 開發(fā) Android 操作系統(tǒng)。

內(nèi)存安全 bug

C 和 C++ 中的內(nèi)存安全 bug 是最難解決的錯(cuò)誤源。谷歌已經(jīng)投入了大量的精力和資源來檢測(cè)、修復(fù)和緩解這類 bug,并有效地防止了大量 bug 進(jìn)入 Android 版本。然而,盡管做出了這些努力,內(nèi)存安全 bug 仍然是穩(wěn)定性問題的主要原因,它在 Android 嚴(yán)重安全漏洞中長(zhǎng)期占據(jù)大約 70% 的比例。

對(duì)于這些內(nèi)存安全問題,谷歌表示除了優(yōu)化內(nèi)存錯(cuò)誤檢測(cè)機(jī)制外,最有效的解決辦法是采用內(nèi)存安全語言。Java 和 Kotlin 等托管語言是 Android 應(yīng)用開發(fā)的最佳選擇。這些語言專為易于使用、可移植性和安全性而設(shè)計(jì),它們是開發(fā) Android 應(yīng)用的最佳選擇。Android OS 廣泛使用 Java 語言,從而有效地保護(hù)了大部分 Android 平臺(tái)不受內(nèi)存 bug 的影響。但對(duì)于操作系統(tǒng)的底層而言,不能選擇 Kotlin 和 Java。

較低層級(jí)的 OS 需要系統(tǒng)編程語言,如 C、C++ 和 Rust。這些語言設(shè)計(jì)時(shí)考慮到了可控和可預(yù)測(cè)性的目標(biāo)。它們提供對(duì)低級(jí)系統(tǒng)資源和硬件的訪問,資源較少,并具有更可預(yù)測(cè)的性能特征。

對(duì)于 C 和 C++,開發(fā)人員負(fù)責(zé)管理內(nèi)存生存期。遺憾的是,這樣做很容易出錯(cuò),特別是在復(fù)雜的多線程代碼庫中。

Rust 使用編譯時(shí)檢查(強(qiáng)制執(zhí)行對(duì)象生命周期 / 所有權(quán))和運(yùn)行時(shí)檢查(確保內(nèi)存訪問有效)的組合來提供內(nèi)存安全保證。提供這種安全性的同時(shí),Rust 的性能表現(xiàn)足以媲美 C 和 C++。

大約 50% 的錯(cuò)誤發(fā)生在一年之內(nèi)

谷歌表示,用 Rust 重寫數(shù)千萬行的 C 和 c++ Android 代碼根本不可行,而重寫舊的 Android 不會(huì)有太大影響,因?yàn)榈侥壳盀橹古f代碼已經(jīng)清除了大部分 bug。由于 Android 源代碼是一個(gè)擁有數(shù)十億用戶的開源項(xiàng)目,很多人都在關(guān)注它。大部分內(nèi)存 bug 都發(fā)生在新的或最近修改過的代碼中,大約 50% 的錯(cuò)誤發(fā)生在不到一年的時(shí)間里。必要時(shí),Rust 將用于新組件,這將有助于減少谷歌可能引入的新內(nèi)存 bug。

Android 內(nèi)存 bug 圖表。舊代碼有很多 bug,現(xiàn)在已經(jīng)修復(fù)了。

比較罕見的舊內(nèi)存 bug 可能會(huì)讓人感到驚訝,但谷歌表示舊代碼并不是最迫切需要改進(jìn)的地方。隨著時(shí)間的推移,軟件 bug 會(huì)被逐漸發(fā)現(xiàn)和修復(fù),因此我們可以預(yù)期還在維護(hù)但未處于活躍開發(fā)狀態(tài)的代碼中的錯(cuò)誤量會(huì)逐漸減少。

無論如何,向 Android 平臺(tái)添加新的開發(fā)語言支持是一項(xiàng)大工程。谷歌表示:「在過去的 18 個(gè)月里,我們一直在為 Android 開源項(xiàng)目添加 Rust 支持,在接下來的幾個(gè)月里,我們將分享一些早期采用 Rust 的項(xiàng)目。將 Rust 擴(kuò)展到更多的 OS 是一個(gè)長(zhǎng)期項(xiàng)目。」

參考鏈接:

  • https://arstechnica.com/gadgets/2021/04/google-is-now-writing-low-level-android-code-in-rust/
  • https://security.googleblog.com/2021/04/rust-in-android-platform.html
  • https://www.oschina.net/news/136467/rust-in-android-platform
  • https://www.cnbeta.com/articles/tech/1111455.htm

【本文是51CTO專欄機(jī)構(gòu)“機(jī)器之心”的原創(chuàng)譯文,微信公眾號(hào)“機(jī)器之心( id: almosthuman2014)”】 

戳這里,看該作者更多好文

 

責(zé)任編輯:趙寧寧 來源: 51CTO專欄
相關(guān)推薦

2014-04-15 15:35:32

CC語言

2009-08-03 16:58:59

C#不安全代碼

2023-06-01 19:24:16

2017-07-24 20:55:42

2023-09-07 10:50:22

2023-02-03 16:31:33

2024-02-26 07:26:27

RustC++開發(fā)

2010-01-18 16:27:26

C++語言

2013-01-21 10:31:50

2024-02-06 13:43:16

C++內(nèi)存安全

2021-04-30 12:04:57

Rust基金會(huì)Facebook編程語言

2015-07-01 14:48:51

2021-02-04 09:21:37

內(nèi)存安全漏洞網(wǎng)絡(luò)安全

2022-06-01 14:02:47

谷歌Chrome 安全團(tuán)C++

2020-09-18 06:44:57

MSVC微軟C11

2010-01-15 15:52:18

CC++

2012-04-16 10:12:54

Java線程

2010-01-15 10:41:06

CC++

2022-03-25 09:57:18

C++Rust語言

2010-01-14 17:18:17

C++語言
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)