cargo careful:為你的代碼提供更多安全保證
您是否知道標(biāo)準(zhǔn)庫(kù)充滿(mǎn)了用戶(hù)永遠(yuǎn)看不到的有用檢查?標(biāo)準(zhǔn)庫(kù)中有很多斷言,它們會(huì)做一些事情,比如檢查char::from_u32_unchecked必須針對(duì)一個(gè)有效的 char、CStr::from_bytes_with_nul_unchecked只能在沒(méi)有內(nèi)部 null 字節(jié)的情況下調(diào)用,copy或者copy_nonoverlapping必須針對(duì)內(nèi)存布局對(duì)齊的非 null 指針(非重疊)。但是,由 rustup 分發(fā)的常規(guī)標(biāo)準(zhǔn)庫(kù)是在沒(méi)有調(diào)試斷言的情況下編譯的,因此用戶(hù)很難從這些額外檢查中受益。
cargo careful 就是為了彌補(bǔ)這個(gè)差距,它在第一次調(diào)用時(shí),會(huì)從源代碼構(gòu)建一個(gè)帶有調(diào)試斷言的標(biāo)準(zhǔn)庫(kù),然后使用該標(biāo)準(zhǔn)庫(kù)運(yùn)行您的程序或測(cè)試套件。
您可以通過(guò)cargo install cargo-careful快速安裝,然后執(zhí)行cargo +nightly careful run/test用于執(zhí)行二進(jìn)制 crate 或測(cè)試,并進(jìn)行額外的調(diào)試檢查。
需要注意的是,這自然會(huì)比常規(guī)調(diào)試或發(fā)布版本慢,但它比在 Miri 中執(zhí)行程序要快得多,并且仍然有助于找到一些未定義的行為。當(dāng)然,如果您想要更加徹底的檢查,Miri 會(huì)是一個(gè)更好的選擇,兩者結(jié)合使用,體驗(yàn)更佳。
Axum 風(fēng)格的函數(shù)參數(shù)示例
作者使用 Axum 時(shí)候,思考了這樣一件事:Rust 是一個(gè)靜態(tài)編譯的語(yǔ)言,并且沒(méi)有函數(shù)重載和可選參數(shù)這類(lèi)特性,但是 Axum 中,get函數(shù)卻可以接收不同類(lèi)型的函數(shù)指針,這是為什么呢?

作者創(chuàng)建了一個(gè)倉(cāng)庫(kù),動(dòng)手實(shí)踐,詳細(xì)解釋了其中的奧秘。
值得一提的是,Axum 當(dāng)時(shí)也參考了 bevy 的 query system 設(shè)計(jì)。
編譯器優(yōu)化的思考
Rust 編譯器背后為我們做了很多優(yōu)化,但是,如果讓你來(lái)實(shí)現(xiàn),你會(huì)如何下手呢?典型的思路可能是:
找到可以應(yīng)用特定優(yōu)化方法的場(chǎng)景
通過(guò)分析,找到這種場(chǎng)景
應(yīng)用你的優(yōu)化方法
如果將很多編譯優(yōu)化方法結(jié)合起來(lái),編譯器的性能就能提升一大截。但是,這也絕非易事,在一個(gè)場(chǎng)景下實(shí)現(xiàn)編譯優(yōu)化,所要考慮的因素和需要的信息,遠(yuǎn)比你想象的要多。
本文的作者就通過(guò)幾個(gè)例子,解釋了他對(duì)于編譯優(yōu)化背后的思考,相信你耐心看完,肯定有不少收獲。
審核編輯:劉清
-
編譯器
+關(guān)注
關(guān)注
1文章
1672瀏覽量
51674 -
rust語(yǔ)言
+關(guān)注
關(guān)注
0文章
57瀏覽量
3279
原文標(biāo)題:【Rust日?qǐng)?bào)】2022-09-27 cargo careful:為你的代碼提供更多安全保證
文章出處:【微信號(hào):Rust語(yǔ)言中文社區(qū),微信公眾號(hào):Rust語(yǔ)言中文社區(qū)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
安全芯片能否保證芯片安全?
使用PMIC來(lái)保證你的系統(tǒng)安全
工業(yè)用物聯(lián)網(wǎng)為多種行業(yè)提供更多服務(wù)
未來(lái)汽車(chē)的安全怎么保證
能否提供示例的源代碼或?yàn)閣ifi連接模塊添加更多入門(mén)指南呢?
如何在構(gòu)建yocto時(shí)將rust和cargo包安裝為圖像?
如何保證安全用電
KIOCWORK:通過(guò)源代碼分析保證軟件安全性
谷歌向手機(jī)廠商發(fā)出警告 修改Android內(nèi)核代碼將暴露更多的安全Bug
華為云順利通過(guò)TISAX認(rèn)證,為汽車(chē)行業(yè)上云提供更多安全保障
保證鋰離子電池安全的設(shè)計(jì)資料下載
cargo careful:為你的代碼提供更多安全保證
評(píng)論