引入非前向兼容变更时是否需要升级SemVer主版本号?
该场景下SemVer版本号升级方案
首先明确核心前提:SemVer官方规范的所有兼容性规则,默认约束的是你对外公开承诺的后向兼容性边界,前向兼容(旧版工具加载新版产物)的支持不属于默认要求范畴,具体判定可以分为两种情况:
- 若你此前在产品公开说明中明确约定了双向兼容要求,即承诺「所有版本的程序都能打开任意版本生成的文档」,那本次变更属于破坏公开承诺的兼容性规则,必须升级主版本号。
- 若你没有明确承诺过前向兼容能力,仅公开承诺过新版程序会兼容旧版文档,那本次变更仅需升级次版本号即可:
SemVer规范中次版本号的升级要求为「新增功能、整体保持后向兼容」,你的变更完全满足该要求:原有用户升级到新版后,所有旧文档都能正常打开,不存在兼容性损失;旧版本用户本身不具备对「未来版本产物兼容」的预期,不属于破坏已公开的兼容性约定。
实操建议
- 版本发布时在更新日志的显眼位置标注:「本版本生成的文档无法被旧版本程序加载」,提前告知用户风险
- 可在文档的元信息中新增最低支持加载的程序版本字段,程序打开文档前先做版本校验,给出明确的版本过低提示,避免无理由加载失败的问题
内容的提问来源于stack exchange,提问作者user877329
相关产品推荐
相关产品推荐

