Perl5とPerl6は同じ血統ではない、Perlは2つの系統へ
Perlの最新バージョンであるPerl5と、現在開発中のPerl6との関係は、
「Perlという大家族の一員ではあるが、同じ血統ではない」
ということが基本合意されたと、ブログ「Japan Perl Association運営ブログ」のエントリ「Perl5 and Perl6」で同団体代表理事の牧大輔氏が書いています。
Perl5とPerl6は同じ血統ではないとはどういうことでしょう?
Perl6の開発スタートは2000年
Perl6は、高機能化し複雑になってきたPerl5の実装を見直し、次世代のPerlにふさわしいPerlを作ろうと2000年に開発が始まりました。
Perl6は新しく言語仕様から作り直しているため、Perl4や5に対する後方互換性がなくなることが発表されています。ということは、現在のPerl5で書かれた膨大なソフトウェア資産を維持するには、Perl5の実装を何らかの形で維持していかなければなりません。
しかしPerl6の開発が進められていることでPerl5の将来は不透明になり、一方でPerl6は2000年から9年ものあいだ開発は紆余曲折の経緯をたどり、まだ実用的なリリースにたどり着いていません(この辺の経緯については「モダンPerlの世界へようこそ:第14回 Rakudo:実装する方法だってひとつではないのです |gihyo.jp ... 技術評論社」に詳しい解説があります)。
牧氏のブログによると、これによってPerl5とPerl6の関係者のあいだには次のような声があがっていたといいます。
これまでPerl5コミュニティからは「まだまだ実用段階じゃないのにPerl6なんて大々的に言っているものだからPerl5のネガティブキャンペーンになってしまっている」、Perl6コミュニティからは「なんで開発途上のソフトウェアにこんなにいちゃもんをつけられなければいけないんだ」というような声があがってきていました
Perl5とPerl6はそれぞれどうなるのか?
今回の基本合意では、そうした両者の誤解をといて関係を整理したということになります。つまり、Perl5とPerl6は別のものであり、Perl6の登場はPerl5の終了を意味しない、ということのようです。
では、Perl5とPerl6はどうなるのでしょうか?
Perl5について、牧氏はブログでこう書いています。
Perl5自体は現在開発者の若返りが多少起こりつつありますが、Perl6や他のLL言語からどんどん良いところを盗みつつ、独自の開発がどんどん進んでいっています。
またPerl6については来年4月にサブセット実装が公開されるという発表が行われています。
ということは、今後はPerlは2系統に分かれてしまうのでしょうか? 4年前の情報ではありますが、はてなのCTOの伊藤直也氏が2005年8月にブログにポストしたエントリ「Perl6 と後方互換性 - naoyaのはてなダイアリー」には、Perl6を実行する仮想マシンにPerl5の互換機能が含まれると書いてあります。引用します。
- Perl 6 は Pugs なり Parrot なりの上で動くから VM で Perl 5 のモジュールが動くようにできるっぽい
- 実際 use perl5:LWP とかで Perl 6 から 5 のモジュールは使える
- Pugs では Perl 6 を Perl 5 にコンパイルできるらしい
このように言語仕様としては2系統になったとしても、実装としては1本化していくという方向性があるようです。ただしこれも当時における見通しとしての話ですので、あらためてPerl5とPerl6がそれぞれどう発展し、あるいは交わっていくのか、今回の基本合意を出発点として再びさまざまな議論が行われるのではないでしょうか。