Rust 宣布发布1.88.0

原文链接

宣布发布 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 的发布,感谢所有人为此付出的时间与心血!❤️

获取帮助

升级工具链,体验新特性,祝编码愉快!

相关推荐
DLYSB_32 分钟前
Kafka 消费倾斜死锁与 Partition 掉队:我用 Rust 写了个“数据管道物理哨兵”,比 Grafana 报警快了 18 秒
rust·kafka·grafana·报警灯
SomeB1oody44 分钟前
【RustyML入门】3.8. 正则化与归一化层
开发语言·后端·机器学习·rust·教程
SomeB1oody2 小时前
【RustyML入门】3.7. 循环层
开发语言·后端·机器学习·rust·教程
k4m7v2pz1 天前
Rust 长跑守护进程日志治理:切分、时区与结构化
开发语言·后端·rust·日志系统·日志轮转·ndjson
k4m7v2pz1 天前
Rust 高并发 WebSocket 连接管理:从线程地狱到 tokio 异步架构
websocket·架构·rust·并发编程·tokio
k4m7v2pz1 天前
Rust 规则热重载实战:用 serde_json + notify 告别重启
开发语言·rust·json·规则引擎·notify·热重载
rustfs1 天前
GitLab 如何与 RustFS 集成?
分布式·rust·gitlab
龙智DevSecOps解决方案1 天前
Perforce QAC + Klocwork 视频教程:Rust 与 C/C++ 混合项目静态分析演示
rust·静态分析·perforce·klocwork·qac·代码合规
程序员爱钓鱼1 天前
Rust 生命周期常见错误详解:看懂编译器报错并正确修复
前端·后端·rust
特立独行的猫a1 天前
Windows安装Rust环境 Clang替代GCC MinGW环境LLVM工具链(详细教程)
开发语言·windows·rust·mingw·环境搭建·llvm