Perl 7 は、下位互換性を損なうことなく Perl 5 の開発をシームレスに継続します。

Perl プロジェクト管理評議会は、Perl 5 ブランチのさらなる開発と Perl 7 ブランチの作成に関する計画の概要を説明しました。議論の中で、管理評議会は、既に Perl 5 用に書かれたコードとの互換性を壊す場合を除き、互換性を損なうことは受け入れられないことに同意しました。脆弱性を修正するには互換性が必要です。 同評議会はまた、言語を進化させ、新しい機能をより集中的に推進すると同時に、新たなイノベーションにアクセスしやすくし、採用を促進する必要があると結論付けました。

下位互換性を損なう変更をデフォルトで Perl 7 ブランチに含めることを許可するという当初の意図とは異なり、新しい計画では、既存のコードとの下位互換性を損なうことなく、Perl 5 ブランチを Perl 7 に段階的に移行する予定です。 Perl 7.0 リリースは、概念的には次の Perl 5.xx ブランチと何ら変わりません。

Perl 5 の新しいリリースの開発は以前と同様に継続されます。古いコードと互換性のないブランチに追加された新しい機能は、以前と同様、「バージョンを使用」または「機能機能を使用」プラグマが明示的に指定されている場合にのみ含まれます。コードの中で。 たとえば、Perl 5.010 では新しいキーワード「say」が導入されましたが、既存のコードでは「say」という名前の関数を使用できるため、新しいキーワードのサポートは「use feature 'say'」プラグマを明示的に指定することによってのみ有効になりました。

言語に追加された新しい構文は、以前のリリースで処理するとエラーが発生しましたが、特別なプラグマを指定する必要なく、すぐに使用できるようになります。 たとえば、Perl 5.36 では、複数のリスト値を一度に処理するための簡略化された構文 (「foreach my ($key, $value) (%hash) {」) が導入され、「use」を使用しないコードでもすぐに使用できるようになります。 v5.36」プラグマ。

現在の形式では、Perl 5.36 は「use v5.36」プラグマを使用して、相互運用性を破壊する 13 の機能 (「say」、「state」、「current_sub」、「fc」、「lexical_subs」、「signatures」、「isa」) を有効にします。 '、' bareword_filehandles'、'bitwise'、'evalbytes'、'postderef_qq'、'unicode_eval'、および 'unicode_strings')、デフォルトで「use strict」モードと「use warnings」モードを有効にし、従来の間接表記のサポートを無効にします。オブジェクトの呼び出し (「- >」の代わりにスペースを使用する場合)、および Perl 4 スタイルの多次元配列とハッシュ (「$hash{1, 2}」)。

十分な変更が蓄積されると、Perl 5.x の次のリリースではなく、Perl 7.0 のバージョンが生成され、これは一種の状態スナップショットになりますが、Perl 5 との完全な下位互換性は維持されます。 変更と設定を有効にするには互換性を損なう場合は、「use v7」プラグマをコードに明示的に追加する必要があります。 それらの。 「use v7」プラグマを使用したコードは、互換性を破壊する言語変更が利用できる「最新の Perl」として扱うことができ、プラグマを使用しない場合は、過去のリリースとの完全な下位互換性が維持される「保守的な Perl」として扱うことができます。

出所: オープンネット.ru

コメントを追加します