2009年2月15日日曜日

続・Perl6は何処にいった

昨年末のアルファ版リリースはならなかったようだ。

Perl6用でも使用されるParrot VMは先月23日に0.9がリリースされ
現在は3月の1.0リリースに向け、開発中。(こちら)。

少なくともPerl6はPerl6自体の中間コードコンパイラとPerl5互換の中間
コードコンパイラの両方が実用レベルで動作する必要があるため、この
2つが実用レベルで実装されるまでリリースされない。いつリリース
されるかは已然不明。

中間コードコンパイラは任意の言語をParrotバイトコードに変換する
コンパイラをここでは指します。

Perl6は複数の言語を利用できる夢の言語のようにPerl6使いの間では
思われていた節もあるようだが、この夢物語を現実にするには、それ
ぞれの言語に対して中間コードコンパイラが必要であり、実用レベル
の中間コードコンパイラのある言語は何処にも存在しない現状では
当分の間は夢物語になりそうである。最低限必要なPerl用のコンパイラ
でさえ実用にほど遠い現状では。

Parrotは実装が開始されてから、かなりの年数がたっており、先進的な
VMとはよべなくなっている。

Parrotは今や数あるVMの一つにすぎず、他のVMを圧倒する性能と
いうわけでもない、Parrotに格別の思い入れのあるエンジニアでも
なければ、Parrot用コンパイラを書く事はないと思われる。

それを証明するかのようにPerl以外のParrot用コンパイラの実装は
遅々として進んでいない(実験的なモノを除く)。

Parrot.orgのlanguagesのリストに記載されている中間コードコンパイラ
のほとんどは実装途中で開発が停滞・停止あるいは放棄されている。

Parrot用にPerl以外の言語の言語仕様を満たすコンパイラを書く
ことに意義を見いだすエンジニアがこのさき、多数出てくるか
甚だ疑問。

以前、Perl6はParrotVMへの移行よりも現行VMベースでの実装を
先行したほうがいいのでは、と書いたが、現行のPerl5系をParrotVM
上に実装、Perl5.12(?)として公開してからPerl6を進めるのが現実解で
あると今は思う。

Perl5系のParrotVM実装(5.12)、PerlのOO言語化(6.0)、現行のPerl6
仕様のOO言語化以外の機能の実装(7.0?)くらいが妥当ではないだろう
か?

Rubyの場合、アグレッシブな変更を伴う予定で仕様の確定しない
Ruby2.0を先送りし、代わりに1.8仕様の改良版をYARV上に実装する
現実解を開発陣が選択した。それが功を奏し、安定板である1.9.1が
既にリリースされている、1年以内に実運用に耐える段階に達する
だろう。Ruby2.0で予定されていた機能が1.9系に取り込まれながら、
段階的に2.0(理想形?)に近づいていくと思われる。

Perl開発陣もPerl6のリリース時期が確定できないのなら、現実的な
ロードマップを模索してはどうだろうか?