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检查版本兼容性
声明:转载需注明出处
123 阅读
321 点赞
456 评论