先月Perl7が発表されてそこそこ話題になっているのだけど、日本語情報少ない感じだったので自分用のメモとしてまとめてみた。
(注意)
現在Perl7に関する状況はどんどん変わっていて、ここに書いてあることもすぐに古くなることが予想されます。あくまで執筆時点での私の解釈であることに注意してください。
Perl6ってなかったっけ?
2000年、Perl5の次のバージョンとしてPerl6の開発が始まりました。
その後色々あって、2009年、Perl6はPerl5の次のバージョンでない別の言語、ということになり、Perl5も開発が続くことになりました。そして2019年、Perl6はRakuに名前が変わりました。
ということでRaku(元Perl6)はPerl5と直接関係ない言語となっているので、Perl5がPerl7になってもRakuには直接関係なく、Rakuも開発は続いていきます。
Perl7はいつリリースされる?
当初は「来年までに」とされていましたが、出来れば今年中のリリースを目指しているようです。
Perl7ってPerl5と何が違う?
今のところ「Perl7はPerl5.32.0と基本的に同じで、デフォルト設定が異なるだけ」とアナウンスされています。
どのデフォルト設定が異なることになるのかは流動的で、当初発表と現在の予定も変わってきています。
手元にあるPerl5のコードをPerl7で動かすには?
a) お勧めの方法
- コードの先頭に
use v7;
を指定する - エラーが出たところを修正する
これが推奨されている方法です。最近のPerl5で動作していて、use strict; use warnings;
を指定していていれば、ほとんどのコードはエラーが出ないと思われます。
b) 暫定的な方法
- コードの先頭に
use v5;
を指定する
これでいろいろなデフォルトがPerl5と同じになります。但しこれは暫定的な方法で将来使えなくなるとされているので、使えている間にa)の方法に変えていくことになるでしょう。
手元にあるPerl5のコード、変更したくないんだけど
今のままPerl5を使いましょう。
Perl5はどうなる?
Perl5は長期メンテナンスモードに入り、バグや脆弱性の修正は行われますが、新機能は追加されなくなります。
Perl5はどれくらメンテされる?
今のところ5年から10年、あるいはそれ以上、とされています。
ワンライナーは?
ワンライナーでのデフォルトがどうなるかは未定です。
/usr/bin/perlはPerl7になる?
/usr/bin/perlがPerl7になるのかPerl5のままなのかはディストリビューションの判断になります。他の言語でも似たようなことは起きているので同様の判断になると考えられます。
正確な最新情報を得るには?
GitHubにあるWikiを見るのがよいと思います。