假设我发布了一个新的库Foo v1.0.0
,它需要php 5.6作为依赖。
现在我想在一些方法实现中内部使用php 7.0中的一些较新的语言结构。但是,我的整个公共API(方法名称,参数,返回等)保持不变。
关注semver,我现在应该发布什么版本号?
在我看来,要求新的主要平台依赖性将破坏运行php 5.6的现有用户的向后兼容性,这些用户将无法使用composer update
进行简单升级,因此它现在应该是v2.0.0
。另一方面,因为我公开的API没有任何改变,我觉得这应该只是一个补丁v1.0.1
答案 0 :(得分:1)
不,你错了backward compatibility
的含义。如果您的库的API保持不变,那么它可能只是新的主要版本,但它仍然是向后兼容的,这意味着升级不需要使用您的库更改代码。要求PHP 7只是要求,但它没有兼容性。
我看到的其他项目通常会产生重大影响,但这主要是因为它们只是改变了需求,但也做了一些改进,以便从新的PHP功能中受益。因此,问问自己是否真的会从仅需要PHP 7中获益,或者它将是一种整容变化或代码清理。这还取决于您的更改会对实际影响的用户数量。
修改强>
要求PHP 7有时会发生巨大的变化,因为许多人仍然使用5.x并且不想要或者无法升级,虽然这不是向后兼容问题,但我还是让它2.0.0
清楚地表明这种变化是主要的。