谷歌透露更多有關(guān)將 Rust 集成到 Android 的信息
自 2019 年以來,Android 團(tuán)隊一直致力于將 Rust 編程語言引入 AOSP(Android Open Source Project),以作為平臺原生代碼開發(fā)的內(nèi)存安全替代品。近日,谷歌則在一篇博客文章中進(jìn)一步闡述了關(guān)于將 Rust 整合到 AOSP 的更多信息。
博客內(nèi)容指出,與任何大型項目一樣,引入一種新的語言需要仔細(xì)考慮。對于 Android 來說,一個重要的方面就是評估如何將 Rust 最好地融入 Android 的構(gòu)建系統(tǒng)。根據(jù) Android 團(tuán)隊的說法,將 Rust 集成到大型項目中存在許多挑戰(zhàn);例如放棄 Cargo 而直接使用 Rust 編譯器 rustc 的可能會存在使組織脫離更廣泛的 Rust 社區(qū)的風(fēng)險。
該團(tuán)隊還表示,當(dāng)為 Android 開發(fā)的 crates 可以使 Rust 社區(qū)受益時,他們希望將其作為獨(dú)立的 crates 發(fā)布。并認(rèn)為,Rust 在 Android 中的成功取決于最大限度地減少 Android 和整個 Rust 社區(qū)之間的分歧,并希望 Rust 社區(qū)能從 Android 的參與中受益。
Rust 提供 Cargo 作為默認(rèn)的構(gòu)建系統(tǒng)和包管理器,收集依賴關(guān)系并調(diào)用 rustc(Rust 編譯器)來構(gòu)建目標(biāo) crate(Rust 包)。而在 Android 中,Soong 則替代了這個角色,并直接調(diào)用 rustc。原因在于:
- Cargo 中的 C 語言依賴是獨(dú)立處理的,而 Soong 已經(jīng)提供了相關(guān)的機(jī)制;
- 通過 Soong 直接調(diào)用編譯器可以提供更多 Android 所需的穩(wěn)定性和控制力,以支持各種構(gòu)建配置;
- 獨(dú)立的構(gòu)建對于 Android 創(chuàng)建可重復(fù)的構(gòu)建非常重要;
- 增量構(gòu)建對于保持工程生產(chǎn)力非常重要。
Android 團(tuán)隊的 Ivan Lozano 稱,“直接使用 Rust 編譯器使我們能夠避免這些問題,并且與我們在 AOSP 中編譯所有其他代碼的方式一致。它提供了對構(gòu)建過程的最大控制權(quán),并簡化了與 Android 現(xiàn)有構(gòu)建系統(tǒng)的整合。但是,由于 Cargo 的使用在 Rust crate 的生態(tài)系統(tǒng)中根深蒂固,避免使用 Cargo 則會帶來一些挑戰(zhàn),并影響到許多其他構(gòu)建系統(tǒng)的決定。”
此外,關(guān)于為什么支持 proc_macros,而不支持 build.rs 腳本。該團(tuán)隊則解釋稱,這是因為 build.rs 代碼是作為一次性代碼編寫的,而 proc_macros 定義了編譯器中可重用功能,這對于 Rust 社區(qū)可能更有用。且 proc_macros 通常能得到更好的維護(hù)和更多的上游審查,在代碼審查過程中更容易處理、更容易進(jìn)入沙盒。
Android 團(tuán)隊還透露,他們計劃在不久的將來在 source.android.com 中添加關(guān)于如何在 Soong 中定義和使用 Rust 模塊的文檔。其希望 Android 對 Rust 的支持能與 Rust 生態(tài)系統(tǒng)一起繼續(xù)發(fā)展,并希望繼續(xù)參與有關(guān)如何將 Rust 集成到現(xiàn)有構(gòu)建系統(tǒng)的討論。
本文轉(zhuǎn)自O(shè)SCHINA
本文標(biāo)題:谷歌透露更多有關(guān)將 Rust 集成到 Android 的信息
本文地址:https://www.oschina.net/news/141612/integrating-rust-into-android-open