Blog

Q. Perl5 のどのバージョンをつかったらいいのですか?

  1. 5.18.x, 5.16.x, 5.14.x をつかいましょう。 というのがフォーマルな回答です。

本日時点での Perl5 の最新版は 5.18.0 です。

このあたりのポリシーについては perlpolicyというドキュメントが公式ドキュメントとなっていますのでごらんください。 このブログエントリーでもかいつまんで説明します。

バグフィックス

私たちが「公式に」サポートするのは、最新の安定版とそのひとつ前の安定版のみです。 5.12.x以前のバージョンはもうサポートの対象外です。5.18.0がリリースされたら 「公式に」Perl 5.14.xのサポートを終了します。ただし、後述するセキュリティ アップデートの提供は例外とします。 バグがみつかっても、過去2つのメジャーバージョンにたいしてしかアップデートは提供されません。今でいうと、5.18.x と 5.16.x 以外にたいするバグフィックスリリースが提供されることはありません。ですから、Perl 5.14.x 以下のバージョンをつかっている場合、バグをみつけてもなおったバージョンの tar ball を得ることはむずかしいでしょう。

セキュリティフィックス

過去3年以内にバージョン5.x.0がリリースされたPerlに対する「致命的な」セキュリティ 問題については、最善を尽くしてパッチやリリースを提供します。

現時点で 5.12.x までしかセキュリティフィックスがはいった tar ボールは提供されません。クリティカルな問題である Hash の security fix のはいった tar ball も、5.8.x や 5.10.x 用には提供されていません。

なお、OS にもともとついてくるものの場合、yum のアップデートなどでセキュリティフィックスが配布されますので、問題はないです(OS 自体がサポート期間内の場合は)。

自分でビルドしている場合は、基本的にはアップデートした方がいいです。

Devel::PatchPerl の存在

tar ball をリリースするとふるいバージョンをつかいつづける人がいるし、進歩が阻害されるなどの理由もあってか、Perl 5.8.x などはもはやサポートされていませんし、tar ball が提供されることは今後一切ないとおもいます。

一方で、バグフィックス、セキュリティフィックスを古いバージョンでもしたい!という場合には、Bingos 氏が Devel::Patchperl という CPAN モジュールでパッチセットを配布しています。 この中には例の hash にかんする DoS 脆弱性にたいする fix なども含まれています(@hirose31++ がやってくれました)。

なお、perlbrew や plenv では自動的に Devel::PatchPerl にふくまれるパッチセットが適用さます。

ただ、patchperl 自体はあくまで個人が気になったパッチをつっこんでいるだけのパッチセットですので、あまり全幅の信頼をおくのもちがうかな、とおもいます。

まとめ

基本的に、公式な回答としては 5.12.x 以後をつかうのがオススメです。

ただし、一方で 5.8.x をつかいつづけないといけない場合には patchperl をつかえば、意外とつかえます。

「5.8 つかっててもいいよ」とどうしても発言したい場合には「セキュリティフィックスを OS ベンダーからうけるか、リスクを認識してつかうこと」ともうしそえておくのが、真摯な姿勢であると僕はおもいます。

(ただ、現時点では Perl 5.8 における致命的な脆弱性は、Hash のアレぐらいなんですけどね :P)