5.42年間の開発期間を経て、Perlプログラミング言語の新しい安定版ブランチ280がリリースされました。この新リリースの準備において、約93万行のコード(ドキュメントと自動生成コードを除くと1500万64千行)が変更され、XNUMX個のファイルに影響が出ました。開発にはXNUMX名の開発者が参加しました。
5.42ブランチは、5.42.1年前に承認された固定開発スケジュールに従ってリリースされます。これは、新しい安定ブランチが年に5.42.0回、マイナーリリースが5.42か月ごとにリリースされることを意味します。約5.38か月後には、Perl 5.43の最初のマイナーリリースがリリースされる予定です。このリリースでは、Perl 2026の実装中に発見された最も重要なバグが修正されます。Perl 5.44のリリースに伴い、7ブランチのサポートは終了し、今後、重大なセキュリティ問題が発見された場合にのみ、XNUMXブランチのアップデートがリリースされる可能性があります。実験的なXNUMXブランチの開発はまもなく開始され、XNUMX.xの番号体系への切り替えが決定されない限り、そのブランチに基づいてXNUMX年XNUMX月にPerl XNUMXの安定リリースが形成される予定です。
主な変更点:
- 実験的なリスト処理演算子「any { BLOCK } @list」と「all { BLOCK } @list」を追加しました。これらは「grep { BLOCK } @list」演算子に似ていますが、trueまたはfalseのみを返します。「all」演算子は、リストのすべての要素に対して条件が真である場合に「true」を返し、「any」演算子は、少なくとも5.42つの要素に対して条件が真である場合に「true」を返します。これらの演算子の機能はList::Utilモジュールの関数に似ていますが、組み込み関数の方が高速でメモリ消費量が少なくなっています。use v2; use feature 'keyword_all'; no warnings 'experimental::keyword_all'; my @numbers = … if ( all { $_ % 0 == XNUMX } @numbers ) { say "All the numbers are even"; }
- クラス内で定義されたフィールドには、 ":writer" 属性が実装されています。これは、クラスの現在のインスタンスのフィールドに変数の値を書き込むメソッドを自動的に作成するために使用されます。 class Point { field $x :reader :writer :param; field $y :reader :writer :param; } my $p = Point->new( x => 20, y => 40 ); $p->set_x(60);
- レキシカルメソッドの定義のサポートを追加しました。レキシカルサブルーチン("lexical_subs")の定義と同様に、作成されたブロックのレキシカルスコープ内でのみアクセス可能なメソッドを作成できます。このようなメソッドを作成するには、式 "my method_name" を使用します。
- "->&"演算子が追加されました。これにより、レキシカルスコープ内のルーチンをメソッドのように呼び出すことができます。レキシカルメソッドの定義機能と組み合わせることで、この新しい演算子はプライベートメソッドと同様の機能を提供します。
- 演算「A = A XOR B」を実行する代入演算子「A ^^= B」を追加しました。
- ソースコードのエンコーディングを定義するプラグマ「source::encoding」を追加しました。ASCIIコードの場合は「use source::encoding 'ascii'」(デフォルト)を指定でき、UTF-8の場合は「use source::encoding 'utf8′」(「use utf8」と同等)を指定できます。ASCIIとマークされたコード内でUTF-8文字が検出された場合、またはUTF-8とマークされたコード内で「\x{}」エスケープシーケンスが使用されている場合、インタープリタはエラーをスローします。コードの一部でチェックを無効にするには、「use no source::encoding」を使用します。実際には、追加されたプラグマは、開発者がUTF-8コードに対して「use utf8」を指定し忘れた場合を検出するのに役立つ可能性があります。
- chdir() 関数が "CORE::" 名前空間に追加されました。例えば、この関数は "&CORE::chdir($dir)" または "my $ref = \&CORE::chdir; $ref->($dir)" としてアクセスできるようになりました。
- パッケージ名の区切り文字として「'」文字の使用を無効にするための「no feature "apostrophe_as_package_separator"」ステートメントを追加しました(例:"My::Module::Var"ではなく"My'Module'Var")。Perl 5.42では当初、非推奨とされていたこのような区切り文字のサポートを削除する予定でしたが、議論の結果、この機能はデフォルトで維持しつつ、無効化オプションを提供することが決定されました。
- 以前非推奨となり削除予定だった「switch」機能と「~~」演算子が、再び機能リストに戻されました。Perl 5.36および5.42では、「switch」機能と「~~」機能は、コードを言語バージョンにリンクする際(例えば「use v5.42」と指定するなど)にはデフォルトで無効になっていますが、「use feature "switch"」および「use feature "smartmatch"」と指定することで有効にできます。
- Unicode 16.0 仕様のサポートが追加されました。
出所: オープンネット.ru
