先日のれ、Sawyer XがPerlの今後の新しい計画を発表しました。Perl 7の開発はすでに進行中ですが、コードやシンタックスに大きな変更はありません。Perl 7は、Perl 5にモダンな動作をデフォルトで追加したもので、後にさらに大きな変更が加えられる予定です。
ハードコアキング:Perlコミュニティは、Perl 6の失敗という大きな痛手の後、ようやく暗いムードから抜け出しました。PHPはもちろん、Pythonもなかったのですから。私は、Perl 7は救済への道であり、おそらく新しいPerl 7かPerl 8が出るべきだと思います。
Perl 7は基本的にPerl 5.32です。
Perl 7.0はPerl 5シリーズの5.32になりますが、デフォルトの動作がより現代的で、より賢明なものになります。すでに設定されているデフォルト動作のほとんどを有効にする必要はありません。この大きなバージョンジャンプは、これまで動作してきたことと、これからできることの境界を設定するものです。
ハードコアキング:PerlはPerl 5兄弟が自分たちの手で築き上げたファミリービジネスで、Perl 6は外部から雇われたプロの経営者。そして、Perlの息子であるPerl7は、ファミリービジネスを復活させる準備ができています。
use utf8;use strict;use warnings;use open qw(:std :utf8);no feature qw(indirect);use feature qw(signatures);no warnings qw(experimental::signatures);
v5.12以降では、Set Minimum Versionを使用することで、この厳密なディレクティブを省略することができるため、少し改善されています:
use v5.32;use utf8;use warnings;use open qw(:std :utf8);no feature qw(indirect);use feature qw(signatures);no warnings qw(experimental::signatures);
Perl 7 は、バージョンを指定しなくても、これらの動作のいくつかをデフォルトにする新しい機会です。Perl 5 にはまだ極めて下位互換性の高い動作が残っていますが、Perl 7 は歴史的な荷物を最小限に抑えたモダンなプラクティスで新たな息吹を得るでしょう。個人的には、新しいバージョンのために機能をカットして欲しいのですが、Unicodeをデフォルトの動作にするためには、まだ多くの作業が必要なので、コンパイルディレクティブのいくつかは残しておく必要があるでしょう:
use utf8;use open qw(:std :utf8);
間接的なオブジェクト表現など、確かに使うべきでないジャンクな機能を捨てているかもしれません。ラリー・ウォールは、C++プログラマーについて何とかしなければならないと言っています。
my $cgi = new CGI; # 間接オブジェクトだが、Perl 7にはない!my $cgi = CGI->new; # ダイレクト・オブジェクト
しかし、Perl 7ではこの機能は実際には消えていません。v5.32ではすでに設定でオフにすることができましたが、現在はデフォルトの動作が変わっています。
Perl 5、どうなってるの?
誰もあなたからPerl 5を取り上げることはありませんし、長期メンテナンスモードに入ります。おそらく今から10年後までサポートされるでしょう。
ハードコアオールドキング:いいじゃないですか、古い時代は古い時代にとどまり、新しい世代は軽やかに旅をする。
いつ始まるのですか?
この作業は現在進行中ですが、心配する必要はありません。目標は、来年Perl 7.0のユーザ版をリリースすることで、その間にいくつかのリリース候補を出す予定です。
また、Perl 7は基本的にv5.32でデフォルトの動作が異なるため、約束を守るのは簡単です。現在の実験的な機能のいくつかは安定化されるかもしれませんが、大きな書き換えや新しい機能はありません。
CPAN どうしましょう?
CPAN () には20万近いモジュールがあります。人々がメンテナンス状態で使っているモジュールはまだ動くはずですし、残りは互換モードがあるでしょう。Perl 7はほとんどv5.32であることを忘れないでください。
ハードコアキング:昔、なぜPerlが強かったか知っていますか?その大きな理由のひとつは、PerlにはCPANリポジトリがあったからです。
Perl 7用に別のCPANが作られるのでしょうか?できるだけ副作用の少ない、管理しやすい変更であるべきです。
また、ここ数年、PAUSE()が人気を博しています。これによって、将来のニーズにより簡単に適応できるようになりました。これに取り組んでいる人々は経験豊富で才能があり、コードベースをより管理しやすくしてくれています。
なぜビッグバージョンに飛ぶのですか?
メジャーバージョンはユーザーと異なる契約を結ぶことができます。メジャーバージョンにジャンプすると、たとえそれが過去と衝突したとしても、新しいデフォルトの動作で契約を変更することができます。これらの設定をすべて古い Perl 5 のデフォルトの動作にリセットする方法はいつでもあります。しかし、構文や動作の面では、Perl 7 のコードは v5.32 のコードのままです。
ソーヤーは、Perlユーザーの3つの主なセグメントについて話しました:
- コードを変更しない人たち
- 新機能を使用する人々
- ゼロから始めた男。
Perl 5の社会契約は、驚くほど成功しています。問題は、極端な後方互換性はコードを更新できない人には有効ですが、他の2つのグループには役立たないということです。新機能を使いたい人は、すべてのプログラムにかなり長いルーチンテンプレートのセクションを含めなければなりませんし、ゼロから始める人は、StackOverflowでコンパイル手順が抜けていると罵倒されることなくプログラムを作成するために、なぜこんなに多くのことを含めなければならないのか疑問に思います。
ハードコアオールドキング:新しい血のためのケータリングこそが重要なのです。
なぜ6人ではなく7人なのですか?
この答えには2つの部分があります。 まず、「Perl 6」は現在「 楽 」と呼ばれているものに採用されています。一昔前までは、この非常に野心的な書き換えがv5.8を置き換えると考えられていましたが、結局そうはならず、Perl言語はその生命を保ち続けています。
だから次に使える数字は7。それは、単に次のベースとなる数字です。バージョンジャンプは珍しいことではありません。PHPは5から7に直行しました。歴史上の奇妙なバージョン変更を見てみましょう:
use open qw(:std :utf8);no feature qw(indirect);- メジャーバージョンをPostgres 9.xからPostgres 10に変更
no warnings qw(experimental::signatures);use v5.32;
少なくともPerl 34には飛びませんでした!
ハードコアオールドキング:あなたが踊れるなら、私も踊れるという意味です。それに、バージョン6はちょっと不吉で、バージョン7の方がずっといいと思いませんか?
何か消えてしまったのですか?
なくなるものはあまりありません。デフォルトで無効になるものもありますが、これも本質的には、Perl 5.32 のさまざまな場所を指すようにノブやダイヤルを調整するものです。以下は、最初の変更の対象となりうるものです:
use utf8;- ファイルハンドル
- 疑似多次元配列とハッシュ
- Perl 4スタイルのプロトタイプ定義
筋金入りの老害王:そろそろ諦めることを覚えたほうがいい、ブロックチェーンじゃないんだから、古いものは残せないよ。
何が追加されたのですか?
perl 7 はほとんど Perl v5.32 ですが、デフォルトですべての機能が有効になっています。Raku、新しい isa 演算子、その他いくつかの新機能のほとんどを手に入れるのに、何もする必要はありません。これは、メジャーバージョンが提供する新しい社会契約の利点です。それは、新しい機能がもう一方の側に干渉することなく、デフォルトで存在できるハードボーダーです。
筋金入りのオールドキング:新しいプログラミング言語のスキルをもっと追加してください!たとえそれが構文糖であっても。
では、これからどうすればいいのでしょうか?
あなたのコードを実行するのに古いバージョンのPerlが必要なら、どうぞ。それらの古いバージョンは消えません。Perl 5.6が今でも動くように。
これらの制約や警告の下でコードが問題なく実行され、モダンなPerlスタイルを使用しているのであれば、ほとんどのコードは手を加える必要がない可能性が高いでしょう。また、間接的なオブジェクトシンボルも同様です。
コードが乱雑でも、運が悪いわけではありません。Perl 5から7への移行を助ける互換モードがあります。コンパイルコマンドは、これらのノブやダイヤルを古い設定に戻します。
use compat::perl5; # 動作はPerl 5のデフォルトの動作に似ている。
このモジュールにはまだ解決しなければならない問題がいくつかありますが、それらの問題にも対応する互換性メカニズムが用意される予定です。
筋金入りのオールドキング:コードの書き方が本当にひどいので、チャンスを与えるしかありません。
良いニュースは、Perlの主要な関係者によって、この内容が実稼働環境でテストされているということです。これはペーパーエクササイズではありません。すでに実行され、荒削りな部分のいくつかが調整され、磨かれています。
また、これらのノブやダイヤルのいくつかはv5.32ですでに利用可能です。たとえば、このように間接オブジェクト表現をオフにすることができます:
no feature qw(indirect);
ノブやダイヤルが増えることを期待しています:
no multidimensional;- no bareword::filehandle;
私は、 LeanPubを通じて提供する最新作『』にこれらの情報をまとめました。
一文要約
Perl 7はv5.32で、設定が違うだけです。コードがめちゃくちゃでなければ動くはずです。年以内のユーザーリリースを期待しています。
筋金入りのオールドキング:古いPerlプログラマーとして、このニュースは私を再び動かし、Perlの腕の中に、いや、Perl 7の腕の中に再び身を投じるかどうかを真剣に検討させます。





