IT之家 6 月 27 日消息,Rust 團(tuán)隊(duì)昨日(6 月 26 日)發(fā)布博文,宣布推出 Rust 1.88.0 版本更新,主要新增支持裸函數(shù)(naked functions),支持開(kāi)發(fā)者完全控制生成的匯編代碼。
IT之家援引博文介紹,裸函數(shù)不包含編譯器生成的結(jié)尾和開(kāi)頭代碼,從而支持開(kāi)發(fā)者完全控制生成的匯編代碼。Rust 團(tuán)隊(duì)表示,這比在 global_asm! 塊中定義函數(shù)更為方便。
[unsafe(naked)]pub unsafe extern "sysv64" fn wring_add(a u64 b u64) - u64 { // Equivalent to `a.wring_add(b)`. corearchnaked_asm( "lea rax [rdi + rsi]" "ret" )}
裸函數(shù)通過(guò)屬性attribute 標(biāo)記,其主體由單個(gè) naked_asm! 調(diào)用組成。Rust 團(tuán)隊(duì)展示了如何使用手寫(xiě)的匯編塊定義整個(gè)函數(shù)體的示例。與普通函數(shù)不同,編譯器不會(huì)為裸函數(shù)的返回值或參數(shù)添加特殊處理。裸函數(shù)通常用于 Rust 的編譯器內(nèi)置功能、操作系統(tǒng)和嵌入式應(yīng)用等底層環(huán)境。
此外,Rust 1.88 版本的 cfg 謂語(yǔ)語(yǔ)言現(xiàn)在支持 true 和 false 布爾值,并支持配置始終啟用或禁用。這適用于 Rust 的條件編譯,包括 cfg 和 cfg_attr 屬性,內(nèi)置的 cfg! 宏,以及 Cargo 配置和清單中的表格。
Rust 團(tuán)隊(duì)表示,以前可以使用空的謂詞列表進(jìn)行無(wú)條件的配置,如 cfg (all ()) 表示啟用,cfg (any ()) 表示禁用,但 cfg (true) 和 cfg (false) 提供了一種更直接的表達(dá)方式。
Rust 1.88 版本還允許在 if 和 while 條件中鏈?zhǔn)绞褂?let 語(yǔ)句(&&),甚至與布爾表達(dá)式混合使用。這樣一來(lái),if 和 if let、while 和 while let 之間的區(qū)別變得不那么明顯。根據(jù) Rust 團(tuán)隊(duì)的說(shuō)法,let 子表達(dá)式中的模式可以是可反駁的或不可反駁的,并且綁定可以在鏈的后續(xù)部分以及主體中使用。
最后,Cargo 包管理器現(xiàn)在會(huì)在其 / home 目錄中自動(dòng)運(yùn)行垃圾回收,清理緩存。Rust 團(tuán)隊(duì)解釋說(shuō),在構(gòu)建過(guò)程中,Cargo 會(huì)下載并緩存所需的依賴(lài)項(xiàng)。以往,這些下載的文件從未被清理,導(dǎo)致 Cargo /home 目錄中的磁盤(pán)使用量無(wú)限增長(zhǎng)。
Rust 被被廣泛認(rèn)為是目前全球公認(rèn)最安全的編程語(yǔ)言,尤其在內(nèi)存安全方面表現(xiàn)突出。許多安全漏洞都與內(nèi)存管理不當(dāng)有關(guān),而 Rust 獨(dú)特的所有權(quán)和借用系統(tǒng),以及編譯時(shí)的內(nèi)存安全檢查,有效地防止了這些問(wèn)題的發(fā)生。