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