本文规定版本兼容性、弃用流程和升级要求。
cacheq 遵循语义化版本,目前处于 v0 开发阶段。
以 v0.1.0 为例,三个数字依次是主版本、次版本和补丁版本。
| 升级 | 含义 |
|---|---|
v0.1.0 → v0.1.1 |
保持兼容的缺陷修复、文档或性能改进;原来受支持的用法继续有效 |
v0.1.x → v0.2.0 |
新功能或弃用;也可能包含破坏性变更,必须提供迁移说明 |
v0.x.y → v1.0.0 |
确立稳定的公开 API |
v1.0.0 → v1.1.0 |
向后兼容的功能新增或弃用 |
v1.x.y → v2.0.0 |
公开 API 的破坏性变更;Go 还要求模块和导入路径带 /v2 后缀 |
所有阶段的补丁版本都保持兼容,不新增公开功能。即使在 v0 阶段,也优先采用
兼容改动;包含破坏性变更的版本必须在发布说明中写清受影响的 API 或行为,以及
用户如何迁移。
从 v1 起,弃用声明使用 Go 的 Deprecated: 注释,提供替代方式,并至少保留
一个次版本,才允许在后续主版本中删除。在 v0 阶段,条件允许时优先提前弃用;
删除功能必须发布次版本,并提供迁移说明。
承诺覆盖根目录 cacheq 包的公开声明,以及源码注释和功能文档中明确说明的行为,
包括配置默认值、缓存新鲜期、请求共享、取消、失效和订阅。修改这些约定,导致
受支持的用法不再成立,属于破坏性变更;修正违背文档的行为属于缺陷修复。
使用带字段名的结构体字面量,以便兼容版本可以新增字段;用 errors.Is 判断公开
错误值。按位置初始化字段、错误消息的精确文本、内部实现、性能测量结果和未明确
约定的并发顺序不属于承诺。独立示例、文档站和发布工具不属于根包的 API 契约。
核心库目前要求 Go 1.22;CI 在 Linux、macOS 和 Windows 上测试 Go 1.22 和最新
稳定版 Go。提高最低 Go 版本必须发布 v0 次版本,或从 v1 起发布新主版本,
并在发布说明中记录。示例模块可以独立要求更高的 Go 版本。
升级前阅读目标版本的发布说明,尤其是跨 v0 次版本升级。固定目标的已发布版本,例如 v0.1.0:
go get github.com/Waterkyuu/cacheq@v0.1.0升级后运行应用自身的测试。参考已安装版本对应 Git tag 下的源码注释和功能文档;main 和在线文档站可能包含
尚未发布的改动。
已发布的 tag 和模块内容不可改写。发布出错时应发布新版本,不得移动、删除或复用 旧 tag。普通提交不会发布新版本。发布操作见 发布指南,模块路径规则见 Go 版本说明。
