Posted by zzak on 21 Dec 2013
We’ve decided to change the Ruby versioning policy to a more Semantic Versioning type starting with the release of Ruby 2.1.0.
In order to provide a more well defined and properly utilized versioning scheme for Ruby, we’ve decided to gradually switch to the following policy.
Policy Changes
This policy is based off a proposal by ruby-lang.org system administrator Hiroshi Shibata (@hsbt).
Version Schema
MAJOR
: increased when incompatible change which can’t be released in MINOR- Reserved for special events
MINOR
: increased every christmas, may be API incompatibleTEENY
: security or bug fix which maintains API compatibility- May be increased more than 10 (such as
2.1.11
), and will be released every 2-3 months.
- May be increased more than 10 (such as
PATCH
: number of commits since lastMINOR
release (will be reset at 0 when releasingMINOR
)
Branching Schema
We will continue to maintain the following branches:
- trunk
ruby_{MAJOR}_{MINOR}_{TEENY}
API Compatibility
The following traits can be marked as an incompatible change, requiring an
increase in the MINOR
version:
- Removal of C-level api features
- Backwards incompatible changes or additions
ABI Compatibility
ABI will comply with the following scheme: {MAJOR}.{MINOR}.0
We will give our best effort to keep ABI compatibility within the same MINOR
level releases, so TEENY
will be fixed at 0.
References
To read up more on this proposal please see the following links:
- Introducing a semantic versioning scheme and branching policy
- Accepted proposal in English
- Accepted proposal in Japanese
Thank you!
I’d like to personally thank everyone who contributed to this discussion. Each step we take is closer to a more stable and effective Ruby.