Ruby 2.1.0 以降のセマンティックバージョニングについて

Ruby 2.1.0 以降、Semantic Versioning (日本語訳) に沿ったバージョニングに移行することを決定しました。

Ruby に、より明確で適切なバージョニングスキーマを提供するため、われわれは以下のポリシーに段階的に移行します。

ポリシーの変更

このポリシーは、 ruby-lang.org の管理者である柴田博志 (@hsbt) の提案にもとづくものです。

バージョンスキーマ

  • MAJOR: MINOR リリースで対応できない互換性のない変更がある場合に増加する。
    • 特別なイベントのために予約される。
  • MINOR: クリスマスごとに増加する。 API レベルでの非互換がありえる。
  • TEENY: API 互換性を維持するセキュリティフィックスやバグフィックス。
    • 2.1.11 のように10以上の値になりえる。2、3ヶ月おきにリリースされる。
  • PATCH: 直前の MINOR リリースからのコミット数。 (MINOR がリリースされるごとに 0 に戻る)

ブランチスキーマ

われわれは以下のブランチを管理することにします。

  • trunk
  • ruby_{MAJOR}_{MINOR}

ruby_{MAJOR}_{MINOR} ブランチは TEENY リリースにわたって管理されます。 それぞれのリリースにはタグを用います。

API 互換性

以下のことが行われた際は非互換であるとして、 MINOR バージョンを増加させるものとします。

  • C レベルの API 機能の削除
  • 下位互換性のない変更および追加

ABI 互換性

ABI は {MAJOR}.{MINOR}.0 のスキーマに従うものとします。

われわれは同一の MINOR レベルのリリースにおける ABI 互換性の維持に最大限注力します。 したがって TEENY は0に固定されます。

参考文献

この提案についてのより詳しい情報は以下のリンクを参照してください。

ありがとう!

この議論に参加してくれたすべての方々に感謝します。 われわれの一つ一つの歩みは Ruby をより安定した効果的なものにしていくでしょう。