Skip to content

[规划] MSRV 升级路线图:从 1.75 到 1.78+ #147

@foxzool

Description

@foxzool

背景

当前项目 MSRV (Minimum Supported Rust Version) 为 1.75,已稳定运行。随着 Rust 生态发展,需要规划未来的 MSRV 升级路径。

当前状况

项目 现状
MSRV 1.75 (2023-12-28 发布)
Edition 2021
quick_cache 已降级到 v0.6.18 保持兼容
主要依赖 tokio 1.70+, reqwest 1.70+ 均兼容 1.75

短期策略(现在 - 6个月内)

保持 Rust 1.75

理由:

  1. 稳定性 - 1.75 是成熟的 LTS 版本,被广泛采用
  2. 企业兼容性 - 企业用户可能使用较旧 Rust 版本
  3. 已稳定 - PR fix(ci): 降级 quick_cache 修复 MSRV 检查 (#140) #146 已解决 quick_cache 兼容性问题
  4. 无迫切需求 - 当前依赖图工作正常

中期升级目标(6-12个月)

目标版本:1.78+

各版本关键特性

版本 发布日期 关键特性 对项目的价值
1.76 2024-02 ABI 兼容性改进 更好的跨平台支持
1.77 2024-03 C-string 字面量 更安全的 FFI 代码
1.78 2024-05 #[diagnostic] 属性 更好的编译器错误提示
1.79 2024-06 Inline const 表达式 更灵活的常量处理
1.80 2024-07 LazyCell/LazyLock 更高效的延迟初始化

升级动机

  1. Edition 2024 准备 - 需要 1.78+ 作为基础
  2. MSRV-aware Cargo - 1.79+ 的 Cargo 能更好地解析依赖
  3. 改进开发者体验 - #[diagnostic] 属性提供更好的错误提示
  4. 依赖库跟进 - 部分新依赖可能要求更高 MSRV

升级时机判断标准

立即升级触发条件

  • 核心依赖(tokio/reqwest/serde)提高 MSRV
  • 需要使用 Rust 2024 Edition 特性
  • 遇到无法通过降级解决的依赖冲突
  • 1.75 版本不再接收安全更新

保持 1.75 的信号

  • 当前依赖图稳定工作
  • 企业客户仍在使用旧版本
  • 没有迫切的语言特性需求

建议的升级路径

实施计划

Phase 1: 准备阶段(1-2个月)

  • 收集社区反馈,了解用户 Rust 版本分布
  • 测试 1.78 兼容性(本地 + CI)
  • 更新文档,提前通知用户

Phase 2: 过渡阶段(1个月)

  • 在 CI 中并行测试 1.75 和 1.78
  • 修复发现的兼容性问题
  • 发布预发布版本供测试

Phase 3: 正式升级(1个月)

  • 更新所有 Cargo.toml 的 rust-version
  • 更新 CI 配置
  • 发布正式版本
  • 更新 CHANGELOG 和文档

相关资源

标签

/label ~type:policy ~scope:compat ~priority:p2

备注

此 Issue 用于跟踪 MSRV 升级规划,暂不执行。欢迎社区成员提供反馈和建议。

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions