Политика версионирования Ruby меняется после релиза 2.1.0

После грядущего релиза Ruby 2.1.0 мы решили изменить политику версионирования для Ruby в пользу семантического версионирования.

Переход на новую систему будет осуществлен постепенно, чтобы сделать номера версий более детерминированными и предсказуемыми.

Изменения в политике версионирования

Данная система версионирования основывается на предложении системного администратора ruby-lang.org Hiroshi Shibata (@hsbt).

Схема номера версии

  • MAJOR: увеличивается после нарушения обратной совместимости, несовместимой с MINOR
    • Зарезервировано для особых случаев
  • MINOR: увеличивается каждый год на Рождество, возможна несовестимость API
  • TEENY: патчи безопасности и багфиксы, совместимые с текущим API
    • Возможно более, чем 10 (например 2.1.11), выходит каждые 2-3 месяца.
  • PATCH: количество коммитов после последнего MINOR релиза (после этого сбрасывается до 0)

Схема веток

Мы продолжим поддерживать следующие ветки:

  • trunk
  • ruby_{MAJOR}_{MINOR}_{TEENY}

Совместимость API

Следующие характерные изменения будут считаться несовместимыми, увеличивая MINOR версию:

  • yдаление возможностей низкоуровнего С API;
  • oбратно-несовместимые изменения или добавления.

Совместимость ABI

ABI будет представлен следующей схемой: {MAJOR}.{MINOR}.0

Мы будем стараться поддерживать совместимость ABI в рамках одного MINOR релиза, так что TEENY будет зафиксировано на значении 0.

Ссылки

Для получения дальнейшей информации по версионированию посетите:

Благодарности

Хотелось бы лично поблагодарить всех, кто принимал участие в дискуссии. Каждый наш шаг приближает нас к более стабильному и эффективному Ruby.