Rust 1.88.0 正式发布

Rust 1.88.0 正式发布2025 年 6 月 26 日 Rust 发布团队欣然宣布 Rust 1 88 0 版本发布 Rust 是一门赋能所有人构建可靠高效软件的编程语言 若已通过 rustup 安装旧版 Rust 可通过以下命令升级至 1 88

大家好,欢迎来到IT知识分享网。

2025年6月26日 Rust 发布团队欣然宣布 Rust 1.88.0 版本发布。Rust 是一门赋能所有人构建可靠高效软件的编程语言。

若已通过 rustup 安装旧版 Rust,可通过以下命令升级至 1.88.0:

$ rustup update stable

若尚未安装 rustup,请从官网下载,并查看 1.88.0 详细发布说明(
https://blog.rust-lang.org/2025/06/26/Rust-1.88.0.html)。

1.88.0 稳定版亮点

1. let 链式表达式

该特性允许在 if/while 条件中将 let 语句与布尔表达式通过 && 混合使用,模糊了 if/if let 和 while/while let 的界限。let 子句的模式可不可反驳或可反驳,且绑定变量可在后续链式条件及代码块中使用。

例如,以下片段合并了多个条件(此前需嵌套 `if let` 和 `if` 块):

if let Channel::Stable(v) = release_info() && let Semver { major, minor, .. } = v && major == 1 && minor == 88 { println!("`let_chains` 在此版本中已稳定"); }

注意:let 链式表达式仅在 Rust 2024 版本中可用,因其依赖 if let 临时作用域变更以实现更一致的析构顺序。早期尝试兼容所有版本时遭遇边界问题,2024 版本使其可行——如需使用请升级项目版本!

2. 裸函数(Naked Functions)

Rust 现支持编写无编译器生成序言/结语的裸函数,实现对特定函数汇编代码的完全控制。这是比 global_asm! 块更符合人体工学的方案。裸函数需标记 #[unsafe(naked)] 属性,且函数体仅包含单个 naked_asm! 调用:

#[unsafe(naked)] pub unsafe extern "sysv64" fn wrapping_add(a: u64, b: u64) -> u64 { // 等价于 `a.wrapping_add(b)` core::arch::naked_asm!( "lea rax, [rdi + rsi]", "ret" ); }

手写汇编块即整个函数体:与非裸函数不同,编译器不会处理参数或返回值。此特性适用于编译器内置函数、操作系统及嵌入式开发等底层场景。更多技术解析即将发布!

3. 布尔配置谓词

配置谓词语言现支持字面量 true/false,分别表示”始终启用”或”始终禁用”的配置。此特性适用于:

  • Rust 条件编译(`cfg`/`cfg_attr` 属性及 `cfg!` 宏)
  • Cargo 配置表和清单

此前需用 cfg(all())(启用)或 cfg(any())(禁用)实现无条件配置,但语义隐晦易错。cfg(true)/cfg(false) 提供了更直观的表达方式。详见 RFC 3695(
https://rust-lang.github.io/rfcs/3695-cfg-boolean-literals.html)!

4. Cargo 自动缓存清理

从 1.88.0 起,Cargo 将自动对其主目录缓存执行垃圾回收!

构建时 Cargo 会下载并缓存依赖项。历史上这些文件永不清理,导致磁盘占用无限增长。本版本引入自动清理机制:

  • 网络下载文件:超过 3 个月未访问则删除
  • 本地系统文件:超过 1 个月未访问则删除

注:离线模式(–offline 或 –frozen)不触发自动清理

Cargo 1.78+ 版本已记录访问信息(为兼容旧版提前实现)。若同时使用早于 1.78 的 Cargo 版本,且需保留旧版专属缓存,可在配置中设置
cache.auto-clean-frequency = “never”(参见文档)。更多细节参见初始设计说明(
https://doc.rust-lang.org/nightly/cargo/reference/unstable.html#gc-clean-gc),部分功能(如 cargo gc 子命令)仍处实验阶段。

5. 稳定化的 API

Cell::update impl Default for *const T impl Default for *mut T mod ffi::c_str HashMap::extract_if HashSet::extract_if hint::select_unpredictable proc_macro::Span::line proc_macro::Span::column // ...(其余列表见原文)

以下 API 现可在常量上下文中使用:

NonNull<T>::replace <*mut T>::replace std::ptr::swap_nonoverlapping Cell::replace // ...(其余列表见原文)

其他变更

i686-pc-windows-gnu 目标降级为 Tier 2(
https://blog.rust-lang.org/2025/05/15/Demoting-i686-windows-gnu.html):用户无感,rustup 仍分发该目标的编译器和标准库,但因测试强度降低,未来可能积累更多缺陷。

致谢 1.88.0 贡献者

Rust 1.88.0 是社区协作的成果,感谢所有贡献者!

总结

本次更新聚焦开发体验优化系统级控制强化,亮点如下:

1. 里程碑语法特性

  • let 链式表达式:大幅简化嵌套条件逻辑,提升模式匹配表达力。需注意其与 Rust 2024 版本的强绑定,体现了语言演进的阶段性策略。

2. 底层编程能力突破

  • 裸函数:填补了 Rust 在极端性能场景(如内核、嵌入式)的工具链空白,通过 naked_asm! 宏提供安全抽象,兼顾灵活性与可控性。

3. 工程实践改进

  • Cargo 自动缓存清理:解决长期存在的磁盘空间痛点,智能策略平衡了清理频率与开发连续性。
  • 布尔配置谓词:以 cfg(true)/cfg(false) 取代隐晦写法,提升配置代码可读性。

4. 潜在影响

  • 686 Windows GNU 目标降级释放出资源优化信号,跨平台开发者需关注其长期维护状态。
  • 部分稳定化 API(如 HashMap::extract_if)为数据操作提供新范式,而 select_unpredictable 则助力安全关键算法开发。

1.88.0稳健进化型版本,未引入颠覆性变革,但通过精准的语法扩展和工具链优化持续降低开发门槛。尤其 let 链式表达式将深刻影响代码风格,建议项目评估 2024 版本迁移计划。对系统编程开发者而言,裸函数支持标志着 Rust 在硬件交互层的能力成熟,值得重点关注。

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/182562.html

(0)
上一篇 2025-07-05 09:33
下一篇 2025-07-05 09:45

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信