Help us understand the problem. What is going on with this article?

Perl モジュールの標準的なバージョンナンバリング方法

More than 5 years have passed since last update.

プログラムのバージョン番号の宣言方法について、深く考えたい人はそんなにいないと思いますが、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

その他参考

脚注


  1. Version numbers should be boring | David Golden 

  2. Tatsuhiko Miyagawa's blog — How to correctly use semantic version (vX.Y.Z) in perl modules 

  3. 執筆時点の Carmel では use version; our $VERSION = version->declare('v0.1.22'); になっていました。 

  4. 手元の version.pm (v0.9902) で version->parse('v1.0.0-alpha') を試したところ Invalid version format (non-numeric data) とエラーになってしまいました。 

key-amb
引越しました→ @progrhyme
https://qiita.com/progrhyme
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした