Perl 5系の最新版「Perl 5.16」、約1年ぶりにリリース。Unicode 6.1にほぼ対応

 5月20日、Perl 5系の最新安定版となる「Perl 5.16.0」がリリースされた。2011年5月にリリースされた5.14から約1年ぶりにリリースされた安定版で、後方互換性を保ちつつ機能強化を図っている。なお、本リリースによってPer 5.12系のサポートは終了するという。

 Perl 5.16での新機能としては、まず「__SUB__」の挙動が変更された点が挙げられている。これはfeatureプラグマで「current_sub」を有効にする、もしくは「use v5.16」を指定した際に利用できるもので、現在のサブルーチンに対する参照を返すというもの。これによって再帰型のクロージャなどの作成が容易になるという。

 また、ビルトイン関数の新規追加や動作の変更も行われている。eval関連が改良され、featureプラグマで「unicode_eval」を有効にすることで文字列に対するevalは常に文字列をUnicodeとして扱うようになるという。また、「evalbytes」を有効にすることで引数をバイト列として評価する「evalbytes」関数が利用できるようになる。substrの挙動も変更され、左辺値もしくは潜在的に左辺値とみられるコンテキストで2つもしくは3つの引数付きで呼び出された場合、第一引数を変更する特殊な左辺値スカラを返すようになった。

 Unicode 6.1対応も強化されたほか、デバッガ、CORE名前空間、XSインターフェイスなどでさまざまな機能強化が加わっている。

 注意が必要なのは、本リリースより「use バージョン番号」文の動作が変更されている点だ。以前はスクリプトの実行に必要なPerlのバージョンを示すものだったが、本リリースからは「指定したバージョンよりも新しいバージョンのPerlで新たに実装された機能を無効化する」というものに変更された。たとえばPerl 5.16で「use 5.014」と指定されたスクリプトを実行すると、Perl 5.16の新機能は利用できず、Perl 5.14の機能のみが有効となる。

 Perldeltaでは次期版となる「Perl 5.18.0」で削除される、もしくは非推奨になる機能として、コアモジュールではCPANPLUS、Filter::Simple、Text::Soundexなどが、プラットフォームではBeOSなど8種が列挙されている。また、Perl 5.16.0のリリースにより、Perl 5.12系のサポート期間は終了となった。今後5.12系については重要なセキュリティ問題があったときにのみリリースされる可能性があるとのこと。

The Perl Foundation
http://www.perl.org/

perldelta
http://search.cpan.org/~rjbs/perl-5.16.0/pod/perldelta.pod

Perlのダウンロード
http://www.perl.org/get.html