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

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