宣布发布 Rust 1.88.0 2025 年 6 月 26 日 · Rust 发布团队
Rust 团队高兴地宣布 Rust 1.88.0 正式发布!Rust 是一门致力于让每个人都能构建可靠且高效软件的编程语言。
如何升级至 1.88.0 如已通过 rustup 安装 Rust,执行
bash
$ rustup update stable
尚未安装?请访问官网获取 rustup,并查看1.88.0 详细发行说明。 欢迎切换到 beta / nightly 通道帮助测试未来版本,并在 GitHub issue 反馈问题。 版本亮点与深入解读
1. Let 链(let chains)
官方简介 允许在 if / while 条件中用 && 串联多个 let 语句,并可与普通布尔表达式混用,仅限 Rust 2024 版。
1.1 为什么需要
在条件判断里既要"模式匹配并绑定变量"又要追加布尔判断,过去必须写成层层嵌套 if let + if,如下所示:
rust
if let Some(v) = maybe() {
if let Ok(n) = v.parse::<u32>() {
if n > 10 && n < 20 {
// ...
}
}
}
层级深、阅读成本高。
1.2 新写法带来的改变
rust
if let Some(v) = maybe()
&& let Ok(n) = v.parse::<u32>()
&& (10..20).contains(&n)
{
// 这里可以直接使用 n
}
- 统一语法:if / if let 以及 while / while let 的差别被抹平。
- 作用域连贯:前面 let 绑定的变量可在后续链条和代码块中使用。
- 短路规则:与普通 && 一致,一旦某子表达式为 false,后续不再求值。
1.3 使用须知
仅在 Rust 2024 版可用,因其依赖 if-let 临时作用域 行为调整以确保析构顺序一致。 let 子表达式返回 bool:匹配成功 → true,否则 false。 模式既可反驳也可不反驳。
2. 裸函数(naked functions)
官方简介 在函数上标记 #[unsafe(naked)] 即可禁止编译器生成任何栈帧前/后序,函数体只能包含一次 naked_asm! 调用。
2.1 适用场景
启动与引导(bootloader、内核入口)。 上下文/中断切换,需极小开销手动保存/恢复寄存器。 超底层优化(如 compiler-builtins 中的关键算子)。
2.2 与现有方案对比
特性 裸函数 #[unsafe(naked)] global_asm! 普通 asm! 是否单独成函数 ✅ ❌ 嵌入现有函数 自动前后序 无 无 有 内可写 Rust 代码 只能 asm 只能 asm asm 与 Rust 混用 调用方式 像普通函数一样调用 需声明外部符号 普通函数
2.3 示例
rust
#[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",
);
}
编译器 不会帮你保存寄存器或调整栈;必须自行遵守目标 ABI。 故需显式 unsafe,并谨慎审查安全性与可移植性。
3. 布尔配置(Boolean configuration)
cfg(true) / cfg(false) 让无条件启用/禁用配置更直观,替代过去隐晦的 cfg(all()) / cfg(any())。详细背景见 RFC 3695。
4. Cargo 自动缓存清理
Cargo 现会自动 GC $CARGO_HOME 缓存:
- 网络下载的 .crate:3 个月未访问即删除
- 本地缓存:1 个月未访问即删除
- 如需永久保留依赖,可在 ~/.cargo/config.toml 添加:
toml
[cache]
auto-clean-frequency = "never"
设计详情与未稳定子命令参见 cargo#13060。
新增稳定 API(节选)
- Cell::update
- HashMap::extract_if / HashSet::extract_if
- proc_macro::Span::{line,column,start,end,file,local_file}
- <[T]>::{as_chunks, as_rchunks, ...}
- ......(完整列表详见发行说明)
新增 const 上下文稳定 NonNull::replace、Cell::{get, replace, ...} 等现可在 const fn 中使用。
其他重要变更 i686-pc-windows-gnu 目标降至 Tier 2(见公告),依旧由 rustup 分发,但测试减少,未来可能积累更多 Bug。 查看 Rust、Cargo、Clippy 的完整改动。 1.88.0 贡献者名单 众多开发者共同促成了 Rust 1.88.0 的发布,感谢所有人为此付出的时间与心血!❤️
获取帮助
- 官方文档 doc.rust-lang.org/
- 团队联系 www.rust-lang.org/governance/...
- 安全披露 www.rust-lang.org/security
- 行为准则 www.rust-lang.org/policies/co...
- 发现错别字?提 PR github.com/rust-lang/b...
升级工具链,体验新特性,祝编码愉快!