セマンティック バージョニング仕様書(SemVer)についてのメモです.
セマンティック バージョニング2.0.0の版からの内容になります.

目次

  1. バージョンナンバーを定める理由
  2. バージョンナンバーの付け方
  3. 初期の開発フェーズ
  4. SemVer文字列をチェックするために推奨される正規表現

バージョンナンバーを定める理由

依存性のあるシステムでは,パッケージを新しくしない限りアップグレードできない状態にロックされたり,パッケージ間で要求されるバージョンがもつれあうことがあります.

ユーザーのプロジェクトで支障が生じないようにするため,適切なスキームでバージョン変更を通知する必要があります.

バージョンナンバーの付け方

バージョンナンバーをメジャー.マイナー.パッチで定めます.

  1. メジャーバージョン:API変更に互換性のない場合
  2. マイナーバージョン:後方互換性のある機能追加
  3. パッチバージョン:後方互換性を伴うバグ修正

バージョンの各値は非負整数です.
ゼロの頭埋めをしてはなりません.

原則として数値を増加させます.
ただし,マイナーバージョンが上がったら,パッチバージョンをゼロにリセットします.
メジャーバージョンが上がったら,マイナーバージョンとパッチバージョンをゼロにリセットします.

初期の開発フェーズ

0.y.zのようなバージョンについてFAQで,次のように書かれています.

一番簡単な方法は0.1.0からで開発版をリリースし、その後のリリースのたびにマイナーバージョンを上げていけばよいでしょう。

仕様書でバージョン1.0.0はパブリックAPIを定義するとしていますが,FAQでどのような場合に1.0.0をリリースすべきかという問いに対し,以下のように答えています.

既にプロダクション用途であなたのソフトウェアが利用されている

安定したAPIを持ち、それに依存しているユーザーが複数いる

後方互換性について多大な心配をしている

SemVer文字列をチェックするために推奨される正規表現

名前付きグループ番号付きキャプチャグループによる正規表現があります.