crates-version后缀规则

Rust, crates.io

软件版本控制后缀指南

遵循 Semantic Versioning 规范的版本后缀说明,结合 Crates 生态实践。

📦 预发布阶段后缀(Pre-release Tags)

表示版本处于开发或测试阶段,不建议用于生产环境

后缀 全称 含义 示例 稳定性顺序
-alpha Alpha 内部测试版,功能不全,存在较多 Bug,仅限开发者或测试人员使用 1.0.0-alpha.1 最低
-beta Beta 公开测试版,功能基本完整但可能存在缺陷,邀请用户反馈 1.0.0-beta.2
-rc Release Candidate 候选发布版,功能冻结,仅修复关键 Bug,接近正式版 1.0.0-rc.3
-pre Preview 预览版,功能与 -rc 类似,常见于 .NET 生态(如 NuGet 包) 1.0.0-preview
-test / -exp Test/Experimental 实验性版本,用于验证新特性,稳定性极低 1.0.0-test 最高

稳定性顺序-alpha < -beta < -rc/-pre < 正式版

🛠️ 构建元数据后缀(Build Metadata)

+ 开头,不影响版本优先级,仅提供附加信息:

后缀 用途 示例
+build 标识构建号或时间戳 1.0.0+20240820
+sha.xxxxxx 包含 Git 提交哈希,便于追踪代码版本 1.0.0+sha.a1b2c3d
+nightly 每日构建版,含最新未测试代码(常见于 Rust 编译器) rustc 1.70.0-nightly

💻 平台/环境相关后缀

标识特定操作系统或硬件平台的适配版本:

后缀 含义 示例
-linux Linux 平台专用编译 openssl-sys-0.9.80-linux
-windows Windows 平台专用 winapi-0.3.9-windows
-x86_64 64 位 x86 架构 libc-0.2.150-x86_64
-armv7 ARMv7 架构(如树莓派) ring-0.16.20-armv7

⚠️ 特殊用途后缀

后缀 含义 示例
-SNAPSHOT 开发中版本,表示代码持续迭代(常见于 Maven 仓库) 1.0.0-SNAPSHOT
-patch 补丁版本,表示紧急修复(非 SemVer 标准,需谨慎使用) 1.0.0-patch.1
-dev 开发分支版本,含实验性代码 1.0.0-dev

💎 Crates 生态中的版本后缀实践

1. 预发布标识

Rust Crates 严格遵循 SemVer,常用 -alpha-beta-rc 标识测试阶段。

示例

tokio = "1.0.0-rc.1"  # Tokio 的候选发布版

2. 构建元数据

通过 cargo build --release 生成的包可能包含 +metadata,但不影响依赖解析。

3. 平台标识

Cargo.toml 中通过 [target] 配置平台依赖,而非版本后缀:

[target.x86_64-pc-windows-gnu.dependencies]
winapi = "0.3.9"  # 无需写 `-windows`

4. 生产环境建议

  • 正式环境:锁定无后缀版本(如 1.0.0
  • 测试环境:可谨慎使用 -rc,避免使用 -alpha/-beta

💡 避坑指南

  • 后缀大小写敏感-RC 无效,需用 -rc
  • 版本比较规则1.0.0 > 1.0.0-rc.3 > 1.0.0-beta.2
  • 工具推荐:使用 cargo semver 检查版本兼容性

声明:转载需注明出处

版权CC BY-NC-SA 4.0

123 阅读
321 点赞
456 评论
Ducky Funk