После грядущего релиза Ruby 2.1.0 мы решили изменить политику версионирования
для Ruby в пользу [семантического версионирования](http://semver.org/).

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

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

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

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

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

### Схема веток

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

* `trunk`
* `ruby_{MAJOR}_{MINOR}_{TEENY}`

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

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

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

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

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

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

## Ссылки

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

* [Введение в схему семантического версионирования и ветвления (EN)](https://bugs.ruby-lang.org/issues/8835)
* [Принятие предложения (EN)](https://gist.github.com/sorah/7803201)
* [Принятие предложения (JP)](https://gist.github.com/hsbt/7719305)

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

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