Perlの最新バージョン5.16.0がリリースされました
2012年5月20日に待望のPerlの最新バージョンPerl 5.16.0がリリースされました。
[http://perl5.git.perl.org/perl.git/tag/refs/tags/v5.16.0:image=http://news.mynavi.jp/news/2011/03/02/009/images/001l.jpg]
1年に1回リリースするという方針が決まってからの3回目のリリースですね。Perlはスクリプト言語の中でも開発が活発なイメージがあります。Perl5のロゴは恐竜です。
新機能や変更点についてピックアップしました。Unicode6.1にほぼ対応、__SUB__の追加、デバッガの機能追加、use VERSIONの挙動の変更、パフォーマンスの改善、多くのバグフィックスがなされています。
これにともないPerl5.12シリーズはサポート対象外になりました。重大なセキュリティフィックスについてのみPerl5.12シリーズでも行われます。
新機能
__SUB__
__FILE__や__PACKAGE__に似た、__SUB__という記述が可能になりました。これは現在実行しているサブルーチンの参照を取得できる機能で、再帰的なサブルーチンが書きやすくなります。use 5.16あるいはuse feature 'current_sub'の状態で利用することができます。
sub func { __SUB__->(); }
デバッガにおけるenableとdisableの追加
ブレークポイントを有効にしたり、無効にしたりすることができるようになりました。
デバッガにおけるブレークポイント設定でファイル名指定
bコマンド(ブレークポイントの指定)で行番号に加えて、ファイル名を指定できるようになりました。
b [file]:[line]
これで、ファイルをいったりきたりする作業が減るかもしれませんね。
多くの Perl キーワードが CORE 名前空間で利用可能になった
今までは COREというのは実は名前空間ではなかったのですが、 COREが名前空間になり、通常の名前空間と同様の扱いができるような感じになったようです。
Core::tie
修正のタイプマップの提供
T_AVREF_REFCOUNT_FIXED などの追加の typemap が提供されるようになりました。これはXSでのお話です。
HV* T_HVREF_REFCOUNT_FIXED
Unicode 6.1へほぼ対応
Unicode6.1へほぼ対応しました。Unicode6.0とUnicode6.1には、完全な互換性がないことに注意してください。
Unicode6といえば、顔文字が文字として含まれたことが特徴的ですね。携帯電話のメールをごにょごにょするアプリケーションはもしかしたら作りやすくなるのかなぁ。
細かな変更点
use VERSIONはそのPerlのバージョンでの動きを期待するものになった
「use v5.16」という記述は、Perl5.16の動作を期待するものになりました。
use v5.16;
つまり、「use v5.14」はPerl 5.14の動きを期待し、「use v5.16」はPerl 5.16の動きを期待するものになりました。
$[ は use v5.16 の元では無効になるようになりました。
$[はuse v5.16の元では無効になるようになりました。
正規表現の名前付キャプチャのメモリリークの修正
以下のコードのメモリリークが修正されました。これはPerl5.10からずっと存在していたものでした。
for (1..10_000_000) { if ("foo" =~ /(foo|(?<capture>bar))?/) { my $capture = $+{capture} } } system "ps -o rss $$"'
これで名前つきキャプチャが、デーモンプロセスで使えるようになったかな。
非推奨
lib/unicore にある Unicode データベースファイルは読み込まないようになりました。これは、Perlのコアを小さくするためです。Unicode::UCDの新しい関数を代わりに使ってください。
非推奨のモジュール
- Version::Requirements
Version::Requirementsは非推奨となりました。CPAN::Meta::Requirementsを使ってください。
将来の非推奨モジュール
以下のモジュールは将来非推奨になる予定です。非推奨になってしばらくすれば、とりのぞかれると思います。ただし、CPANではそのまま利用可能なので、利用している場合は、インストールする手間が増えることになります。
- CPANPLUS
- Filter::Simple
- PerlIO::mmap
- Pod::LaTeX
- Pod::Parser
- SelfLoader
- Text::Soundex
- Thread.pm
不必要なモジュールを取り除いて少しづつコアが小さくなっていくのかもしれません。
削除されたモジュールとプラグマ
以下のモジュールはコアから削除されました。CPANにはあります。
- Devel::DProf
- Shell
以下のPerl4形式のライブラリは削除されました。
abbrev.pl assert.pl bigfloat.pl bigint.pl bigrat.pl cacheout.pl complete.pl ctime.pl dotsh.pl exceptions.pl fastcwd.pl flush.pl getcwd.pl getopt.pl getopts.pl hostname.pl importenv.pl lib/find{,depth}.pl look.pl newgetopt.pl open2.pl open3.pl pwd.pl shellwords.pl stat.pl tainted.pl termcap.pl timelocal.pl
これらは CPAN の Perl4::CoreLibs にあります。