语义版本控制 - 向后兼容性和版本 0.x.y

Posted

技术标签:

【中文标题】语义版本控制 - 向后兼容性和版本 0.x.y【英文标题】:Semantic Versioning - Backward compatibility and version 0.x.y 【发布时间】:2020-05-25 11:31:24 【问题描述】:

这里是关于IBM mainframes的摘录:

IBM Z 系列保持完全的向后兼容性。这意味着当前系统是 1964 年宣布的 System/360 和 1970 年代 System/370 的直接、直系后代。为这些系统编写的许多应用程序仍然可以在 50 多年后在最新的 IBM Z 系统上运行而无需修改!

我确信,关于向后兼容性的声明,会有免责声明、“如果”、“但是”。但是,为了争论,如果 IBM Z 支持语义版本控制,它会超越0.y.z 吗?因此,如果发布了主要功能并且完整版本仍然向后兼容,是否可以增加主要整数?

【问题讨论】:

【参考方案1】:

我确信,关于向后兼容性的声明,会有免责声明、“如果”、“但是”。但是,为了争论,如果 IBM Z 支持语义版本控制,它会超越 0.y.z 吗?

是的,但他们为什么要这样做?他们自己的宣传声称向后兼容,0.y.z 形式明确地没有这样的声称。来自SemVer 2.0.0:

[4](https://semver.org/#spec-item-4) Major version zero (0.y.z) is for initial development. Anything MAY change at any time. The public API SHOULD NOT be considered stable.

不完全是 IBM 正在传达的信息。

...如果发布了主要功能并且完整版本仍然向后兼容,是否可以增加主要整数?

是的。规范中没有任何内容表明您不能出于任何任意原因修改主要版本。规范说,如果您做出重大更改,则必须修改它,而不是只能因为这个原因而修改它。


我要补充一点,Z 机器自 60 年代以来就没有出现过。 IBM 声称它与过去制造的其他机器向后兼容。说到跨不同产品的语义版本历史,真的没有任何意义。他们真正想说的是,这些早期产品中的每一个都有一个接口(机器语言),今天的 Z 机器能够执行。

【讨论】:

以上是关于语义版本控制 - 向后兼容性和版本 0.x.y的主要内容,如果未能解决你的问题,请参考以下文章

HTTP Restful 语义版本控制

对于非 API 软件,是不是有与语义版本控制等效的方案?

语义版本控制:小改动还是大改动?

如何增加语义版本号?

Bamboo 和 Artifactory 之间的语义版本控制?

GitHub 上的 SemVer 和 0.x.y 版本