Perl6 と後方互換性

LLDN で弾さんの Perl Updates のときに、後方互換性についての質問をしました。僕が聞きたかったことを詳細に言うと「Perl5 のときは 5.6 → 5.8 みたいに後方互換性を維持しつつもバージョンアップという形で進んできたのに、Perl 6 はまるで別言語のようだ。Perl 6 は面白いと思うけど、後方互換性を捨ててまで 6 を作りたいというモチベーションが何なのかを教えて欲しい」ということでした。

で、答えとしては "insane" だってことで作りたいから作ってるみたいなとこだったんですが、今さっき miyagawa さんと話しててわかったこと。

  • Perl 6 は Pugs なり Parrot なりの上で動くから VM で Perl 5 のモジュールが動くようにできるっぽい
  • 実際 use perl5:LWP とかで Perl 6 から 5 のモジュールは使える
  • Pugs では Perl 6 ã‚’ Perl 5 にコンパイルできるらしい

なんで、僕の質問に自分で回答すると「後方互換性を維持するために踏み出せなかった一歩を、いよいよそれを捨てて実装しましょう、プリミティブや配列やハッシュもオブジェクトとして扱うとか Ruby っぽい特徴を入れて Perl をもっとまともな OO 言語に仕上げましょう、かといって昔の遺産を完全に捨ててしまうってことじゃなく、そこは VM 側で吸収してちゃんと動くようにしましょう」っていうところなんだと思います。

ところで、Pugs を作った Autrijus Tang 氏の Journal で、Pugs で JSAN を使えるようになったとか書いてあり、えらいことになってるようだと miyagawa さんに教えてもらった。天才君すごすぎ。