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::updateimpl Default for *const Timpl Default for *mut Tmod ffi::c_strHashMap::extract_ifHashSet::extract_ifhint::select_unpredictableproc_macro::Span::lineproc_macro::Span::column// ...(其余列表见原文)以下 API 现可在常量上下文中使用:
NonNull::replace<*mut T>::replacestd::ptr::swap_nonoverlappingCell::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 在硬件交互层的能力成熟,值得重点关注。
特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.