プログラムのバージョン番号の宣言方法について、深く考えたい人はそんなにいないと思いますが、Perl においては色々なやり方があり、やや複雑な事情があるようです。1
CPAN モジュールなどを見ていても、各々流儀が違っており、正に「道は1つではない」という Perl の思想が現れているようにも思えます。
そういう状況なので、初めて自分でライブラリモジュールを作るような場合、どのようにバージョン番号をつければいいか悩む人もいるだろうと思います。
というわけで、この文書では、いくつかの代表的・標準的なやり方を紹介することで、これから Perl プログラムを開発・保守する方の助けになれればと思います。
誤記などあればご指摘下さい。
主に以下の2文書を参考にしています。
CPAN 準拠の浮動小数点(X.YY)スタイル
10進数バージョンとも呼ばれています。
次のような宣言方法です。
our $VERSION = "1.12";
正しい CPAN バージョン番号は、小数点の後に少なくとも 2 桁の数字がある 浮動小数点数とのことです。
「ベータ」や「アルファ」のモジュールをリリースする場合、1.13_01
のように正規のバージョン番号の後に "_" を付け、続いて最低2桁の番号を付します。
こうする場合、以下のような宣言方法になります。
our $VERSION = "1.12_01";
our $XS_VERSION = $VERSION; # only needed if you have XS code
$VERSION = eval $VERSION;
ドット付き 10 進数バージョン(vX.Y.Z)
これは次のいずれかの宣言になります。
use version; our $VERSION = 'v0.12.1';
use version 0.77; our $VERSION = version->declare('v0.12.1');
後者が version.pm のドキュメントで紹介されている正式なスタイルですが、前者でも Perl 5.8 以降で正しく動くようです。23
従って、前者がより汎用的な書き方と言えそうです。
Semantic Versioning ライクな宣言ができますが、完全に準拠しているわけではなく、例えば 'v1.0.0-alpha' のような記法はできないようです。4
その他参考
- "Module version numbers best practice" : http://www.perlmonks.org/?node_id=1058778
- SemVer - search.cpan.org ... Semantic Versioning v1.0.0 に準拠したモジュールのようです。
脚注
-
Tatsuhiko Miyagawa's blog — How to correctly use semantic version (vX.Y.Z) in perl modules ↩
-
執筆時点の Carmel では
use version; our $VERSION = version->declare('v0.1.22');
になっていました。 ↩ -
手元の version.pm (v0.9902) で
version->parse('v1.0.0-alpha')
を試したところInvalid version format (non-numeric data)
とエラーになってしまいました。 ↩