IT之家6月27日消息,Rust团队昨日(6月26日)发布博文,宣布推出Rust1.88.0版本更新,主要新增支持裸函数(nakedfunctions),支持开发者完全控制生成的汇编代码。
IT之家援引博文介绍,裸函数不包含编译器生成的结尾和开头代码,从而支持开发者完全控制生成的汇编代码。Rust团队表示,这比在global_asm!块中定义函数更为方便。
#[unsafe(naked)]
pubunsafeextern"sysv64"fnwring_add(au64bu64)-u64{
//Equivalentto`a.wring_add(b)`.
corearchnaked_asm(
"learax[rdi+rsi]",
"ret"
)
}
裸函数通过属性#attribute标记,其主体由单个naked_asm!调用组成。Rust团队展示了如何使用手写的汇编块定义整个函数体的示例。与普通函数不同,编译器不会为裸函数的返回值或参数添加特殊处理。裸函数通常用于Rust的编译器内置功能、操作系统和嵌入式应用等底层环境。
此外,Rust1.88版本的cfg谓语语言现在支持true和false布尔值,并支持配置始终启用或禁用。这适用于Rust的条件编译,包括cfg和cfg_attr属性,内置的cfg!宏,以及Cargo配置和清单中的表格。
Rust团队表示,以前可以使用空的谓词列表进行无条件的配置,如cfg(all)表示启用,cfg(any)表示禁用,但cfg(true)和cfg(false)提供了一种更直接的表达方式。
Rust1.88版本还允许在if和while条件中链式使用let语句(&&),甚至与布尔表达式混合使用。这样一来,if和iflet、while和whilelet之间的区别变得不那么明显。根据Rust团队的说法,let子表达式中的模式可以是可反驳的或不可反驳的,并且绑定可以在链的后续部分以及主体中使用。
最后,Cargo包管理器现在会在其家目录中自动运行垃圾回收,清理缓存。Rust团队解释说,在构建过程中,Cargo会下载并缓存所需的依赖项。以往,这些下载的文件从未被清理,导致Cargo家目录中的磁盘使用量无限增长。
Rust被被广泛认为是目前全球公认最安全的编程语言,尤其在内存安全方面表现突出。许多安全漏洞都与内存管理不当有关,而Rust独特的所有权和借用系统,以及编译时的内存安全检查,有效地防止了这些问题的发生。