规范
8. 版本管理
8.1 语义化版本
本协议遵循 Semantic Versioning 2.0.0:
MAJOR.MINOR.PATCH
| 版本号 | 变更类型 | 兼容性 |
|---|---|---|
| MAJOR | 不兼容的协议变更 | 破坏性,需要消费者升级 |
| MINOR | 向后兼容的功能新增 | 旧消费者继续工作 |
| PATCH | 向后兼容的问题修复 | 完全兼容 |
8.2 兼容性规则
8.2.1 兼容性判定
定义:
- 消费者支持的协议版本:
X.Y.Z - 描述符声明的协议版本:
A.B.C
兼容条件:
兼容 ⟺ A === X
8.2.2 兼容性矩阵
| 消费者 | 描述符 | 兼容 | 备注 |
|---|---|---|---|
| 1.0.0 | 1.0.0 | ✓ | 完全匹配 |
| 1.0.0 | 1.5.0 | ✓ | 次版本前向兼容 |
| 1.5.0 | 1.0.0 | ✓ | 次版本后向兼容 |
| 1.0.0 | 2.0.0 | ✗ | 主版本不同 |
8.3 版本不兼容处理
当消费者检测到版本不兼容时,MUST 拒绝调用并返回 VERSION_INCOMPATIBLE 错误(见第 9 章)。
8.4 向后兼容保证
次版本(MINOR)升级 MUST 满足:
- 不删除已有的必需字段
- 新增字段默认为可选
- 不改变已有字段的语义
- 不缩小枚举类型的值域
- 不增加已有接口的必需参数
8.5 文档版本目录
协议文档按版本组织:
docs/{lang}/specification/
├── draft/ # 当前开发草稿
│ ├── 01-引言.md
│ ├── 02-术语与约定.md
│ └── ... # 每章一个独立文件
└── 2025-10-25/ # 已发布版本(以发布日期命名)
├── 01-引言.md
├── 02-术语与约定.md
└── ...
Schema 定义同样按版本组织:
schema/
├── draft/
└── 2025-10-25/
