Допустим, я публикую новую библиотеку Foo v1.0.0
который требует php 5.6 в качестве зависимости.
Теперь я хотел бы использовать некоторые более новые языковые конструкции в php 7.0 внутри некоторых реализаций метода. Однако весь мой открытый API (имена методов, параметры, возвраты и т. Д.) Остается неизменным.
Следующий semver, какой номер версии мне сейчас выпустить?
Мне кажется, что требование новой основной зависимости платформы нарушит обратную совместимость для существующих пользователей, использующих php 5.6, которые не смогут просто выполнить обновление с composer update
так что теперь должно быть v2.0.0
, С другой стороны, поскольку в моем открытом API ничего не изменилось, я чувствую, что вместо этого должен быть просто патч v1.0.1
Нет, вы ошиблись backward compatibility
средства. Если API вашей библиотеки остается неизменным, то это может быть просто новая основная версия, но она все еще обратно совместима, что означает, что обновление не требует изменений в коде с использованием вашей библиотеки. Требование PHP 7 — просто требование, но оно не имеет ничего общего с совместимостью.
Другие проекты, которые я видел, обычно сильно увеличивают число, но это в основном потому, что они только изменили требования, но также внесли некоторые изменения, чтобы извлечь выгоду из новых функций PHP. Поэтому спросите себя, действительно ли вы выиграете от того, что вам потребуется PHP 7, или это будет своего рода косметическое изменение или очистка кода. Это также зависит от того, сколько пользователей действительно повлияет на ваши изменения.
РЕДАКТИРОВАТЬ
Требование PHP 7 иногда является огромным изменением, так как многие люди все еще находятся на 5.x и не хотят или не могут обновиться, и хотя это не является проблемой обратной совместимости здесь, я бы сделал это 2.0.0
четко обозначить это изменение как основное.
Других решений пока нет …