跳转到内容

输入功能名称或 API · Enter 打开首项 · Esc 关闭

版本与升级规则

本文规定版本兼容性、弃用流程和升级要求。 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 版本说明。