Rust 1.96.1 发布:Cargo HTTP 修复、MIR 误编译修正与 libssh2 安全更新

2026-06-30 32 预计阅读时间: 1 分钟
来源: blog.rust-lang.org AI 摘要 Original link

Disclaimer: This article is an AI-assisted summary. Read it together with the original source when precision matters. The summary may omit context, version differences, or edge cases and is not official documentation.

预计阅读时间:6 分钟

Rust 1.96.1 发布:这个小版本值得尽快升级

Rust 团队发布了 1.96.1 点版本。它不是一个带来新语法的大版本,但对日常构建链路很关键:Cargo 的 HTTP 客户端补上了缺失的重试和超时处理,编译器修复了一个 MIR 优化导致的误编译问题,同时 Cargo 内置的 libssh2 也修复了三个 CVE。

对使用 Rust 的团队来说,这类 point release 往往比看起来更重要。它影响的不是“能不能写新代码”,而是“构建是否稳定、产物是否可信、供应链依赖是否安全”。

这次修了什么

Rust 1.96.1 的修复集中在三个方向:

  • Cargo HTTP 客户端:修复缺失的 retries 和 timeouts,减少网络抖动时构建卡住或失败的概率。
  • MIR 优化:修复一个可能导致误编译的优化问题。MIR 是 Rust 编译器中间表示的一部分,相关 bug 影响的是编译结果的正确性。
  • libssh2 安全修复:Cargo 编译时包含 libssh2,本次修复了 CVE-2025-15661、CVE-2026-55199、CVE-2026-55200。

这里的重点不是“功能更多”,而是“工具链更稳”。如果你的 CI、发布流水线或开发机依赖 cargo buildcargo testcargo publish,这个版本都值得纳入常规升级。

为什么 Cargo 的 HTTP 修复很实际

Rust 项目构建时经常需要访问 registry、下载 crate、同步索引或依赖缓存。网络一旦不稳定,缺少合理的重试和超时会带来两个典型问题:

  • 构建任务长时间挂起,占住 CI runner。
  • 临时网络错误直接导致失败,重跑一次又好了。

1.96.1 修复 Cargo HTTP 客户端中的相关问题后,不能保证所有网络问题消失,但可以减少“偶发失败”和“无意义等待”。对依赖较多、CI 并发较高、跨区域访问 crates registry 的团队尤其有价值。

可以这样升级和验证

如果你已经通过 rustup 安装 Rust,升级很直接:

rustup update stable
rustc --version
cargo --version

你应该看到稳定版工具链已经更新到 1.96.1。如果项目使用 rust-toolchain.toml 固定版本,可以这样改造:

[toolchain]
channel = "1.96.1"
components = ["rustfmt", "clippy"]
profile = "default"

然后在项目根目录验证:

rustup show
cargo clean
cargo test
cargo clippy --all-targets --all-features

如果你维护 CI,也可以显式指定稳定版本。以 GitHub Actions 为例,可以这样实践:

name: Rust CI

on:
  push:
  pull_request:

jobs:
  test:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - name: Install Rust 1.96.1
        run: |
          rustup toolchain install 1.96.1 --profile minimal
          rustup default 1.96.1
          rustc --version
          cargo --version
      - name: Test
        run: cargo test --all-features

如果你的仓库已经有 rust-toolchain.toml,CI 里通常不需要 rustup default,让 rustup 自动读取项目配置会更一致。

升级前后要看哪些信号

这次更新包含编译器误编译修复和 Cargo/libssh2 修复,建议不要只在本地跑一个 cargo build 就结束。更稳妥的检查清单是:

  • 跑完整测试:至少执行 cargo test --all-features
  • 覆盖发布配置:如果有 release-only 代码路径,执行 cargo build --release
  • 检查 CI 缓存:确认缓存 key 不会把旧工具链和新工具链混在一起。
  • 固定工具链:团队项目建议通过 rust-toolchain.toml 明确版本,避免开发机和 CI 漂移。
  • 关注私有 registry 或代理:Cargo HTTP 行为变化后,观察内部镜像、代理、registry 服务是否正常。

采用建议

Rust 1.96.1 是典型的“应该尽快吃掉”的维护版本。它没有要求你重写代码,也没有引入需要迁移的新特性;它修的是构建稳定性、编译正确性和 Cargo 依赖链上的安全问题。

对个人项目,可以直接 rustup update stable。对团队项目,建议先在 CI 分支固定 1.96.1,跑完整测试和 release 构建,再把 rust-toolchain.toml 合入主干。点版本升级的成本通常很低,但它能换来更少的构建噪音和更明确的安全基线。


相关推荐