如何在保持主版本零的同时引入不兼容的更改?

How to introduce incompatible changes while remaining in major version zero?

我有一个大型的个人软件库,我一直在努力,目前正在努力。目前,它的版本是 0.1.0.

1 的主要版本还不够成熟。我不断修改代码并引入不兼容的更改,这些更改值得增加主要版本号。同时,我的其他一些库依赖于这个库,通过版本号来引用。

如果我引入了不兼容的更改并且不想将主要版本从 0 增加到 1,我应该如何增加我的版本号?

SemVer网站对此不是很清楚,只是说:

Major version zero (0.y.z) is for initial development. Anything may change at any time. The public API should not be considered stable.

"anything may change at any time mean" 0 的主要版本是否有例外,我可以随心所欲地更改 y 和 z 数字吗?

例如,如果我的版本是 0.1.0 并且我引入了一个不兼容的更改,那么具有该更改的新版本可以是 0.2.0 吗?

别人怎么说

this site 上它说:

In fact, the SemVer spec defines that anything starting with “0.” doesn’t have to apply any of the SemVer rules.

Another site 似乎也暗示当主版本为 0 且添加了不兼容的更改时,增加次版本是可以的:

So you just continue through the 0.x.y range, incrementing y for every backwards-compatible change, and x for every incompatible change.

这取决于你,因为

  • 如果其他库依赖于您的软件,则意味着您的软件有一些消耗的 public API,如果它有它们...为什么还没有 1.x.x 版本?
    毕竟...为什么您的软件只有在稳定后才达到 1.0.0 版本如此重要?一旦达到稳定版本,它可以从 3.0.04.0.0 开始...
  • 你的软件并没有在精神上与你的大项目脱钩,因为事实上,只有当整个软件(由许多较小的库组成)达到 [=32] 时,你才会考虑它 "mature" =] 版本。但从技术角度来看,它已经解耦
  • 没错,从0开始就不用严格遵守semver规则了

一切都围绕着被认为是"mature"。你说你的软件不成熟,但这是什么意思?那可以改进吗?它没有涵盖所有的极端情况?它没有经过 100% 测试?

最后:如果您认为它不成熟,请继续 0.x.y 版本控制并增加次要版本,但您不成熟的软件已经被其他库使用,因此它现在应该达到 [=16] =]版本