名前

perldelta - what is new for perl v5.42.0

perl5420delta - perl v5.42.0 での変更点

説明

This document describes differences between the 5.42.0 release and the 5.40.0 release.

この文書は 5.42.0 リリースと 5.40.0 リリースの変更点を記述しています。

コアの拡張

More CORE:: subs

chdir has been added as a subroutine to the CORE:: namespace.

chdir がサブルーチンとしてCORE:: 名前空間に追加されました。

Previously, code like &CORE::chdir($dir) or my $ref = \&CORE::chdir; $ref->($dir) would throw an error saying &CORE::chdir cannot be called directly. These cases are now fully supported.

以前は、&CORE::chdir($dir)my $ref = \&CORE::chdir; $ref->($dir) の ようなコードは、&CORE::chdir cannot be called directly というエラーを 投げていました。 このような場合は、今では完全に対応しています。

New pragma source::encoding

This allows you to declare that the portion of a program for the remainder of the lexical scope of this pragma is encoded either entirely in ASCII (for use source::encoding 'ascii') or if UTF-8 is allowed as well (for use source::encoding 'utf8'). No other encodings are accepted. The second form is entirely equivalent to use utf8, and may be used interchangeably with that.

これにより、このプラグマのレキシカルスコープの残りの部分のプログラム部分が 完全に ASCII (use source::encoding 'ascii' の場合)または UTF-8 も許可されている場合(use source::encoding 'utf8'の場合)の いずれかでエンコードされることを宣言できます。 他のエンコーディングは受け入れられません。 2 番目の形式は完全に use utf8 と等価であり、これと同じ意味で 使えます。

The purpose of this pragma is to catch cases early where you forgot to specify use utf8.

このプラグマの目的は、use utf8 の指定を忘れたケースを早期に 検出することです。

use source::encoding 'ascii' is automatically enabled within the lexical scope of a use v5.41.0 or higher.

use source::encoding 'ascii' は、use v5.41.0 以降の レキシカルスコープ内では自動的に有効になります。

no source::encoding turns off all this checking for the remainder of its lexical scope. The meaning of non-ASCII characters is then undefined.

no source::encoding は、そのレキシカルスコープの残りの部分について、 このチェックをすべてオフにします。 そして非 ASCII 文字の意味は未定義です。

New :writer attribute on field variables

Classes defined using use feature 'class' are now able to automatically create writer accessors for scalar fields, by using the :writer attribute, similar to the way that :reader already creates reader accessors.

:reader がすでに読み込みアクセサを作成しているのと同様に、 :writer 属性を使って :use feature'class' で定義されたクラスが スカラフィールドの書き込みアクセサを自動的に作成できるようになりました。

    class Point {
        field $x :reader :writer :param;
        field $y :reader :writer :param;
    }

    my $p = Point->new( x => 20, y => 40 );
    $p->set_x(60);

New any and all operators

Two new experimental features have been added, which introduce the list-processing operators any and all.

二つの新しい実験的機能が追加されました; リスト処理演算子 anyall です。

    use v5.42;
    use feature 'keyword_all';
    no warnings 'experimental::keyword_all';

    my @numbers = ...

    if ( all { $_ % 2 == 0 } @numbers ) {
        say "All the numbers are even";
    }

These keywords operate similarly to grep except that they only ever return true or false, testing if any (or all) of the elements in the list make the testing block yield true. Because of this they can short-circuit, avoiding the need to test any further elements if a given element determines the eventual result.

これらのキーワードは grep と同様に動作しますが、真または偽のみを返し、 リスト内のいずれか(またはすべて)の要素がテストブロックの結果を 真にするかどうかをテストする点が異なります。 このため、これらは短絡することができ、特定の要素が最終的な結果を決定した場合に、 それ以上の要素をテストする必要がなくなります。

These are inspired by the same-named functions in the List::Util module, except that they are implemented as direct core operators, and thus perform faster, and do not produce an additional subroutine call stack frame for invoking the code block.

これらは、List::Util モジュールの同じ名前の関数から着想を得たものですが、 直接コア演算子として実装されているため、より高速に実行され、 コードブロックを呼び出すための追加のサブルーチン呼び出しスタックフレームを 生成しない点が異なります。

The feature flags enabling those keywords have been named keyword_any and keyword_all to avoid confusion with the ability of the feature module to refer to all of its features by using the :all export tag. [GH #23104]

これらのキーワードを有効にする機能フラグは、:all エクスポートタグを使って すべての機能を参照する feature モジュールの機能との混乱を避けるために、 keyword_any および keyword_all という 名前が付けられています。 [GH #23104]

The related experimental warning flags are consequently named experimental::keyword_any and experimental::keyword_all.

したがって、関連する実験的な警告フラグは、 experimental::keyword_anyexperimental::keyword_all および experimental::keyword_anyおよびexperimental::keyword_all という 名前になります。

Apostrophe as a global name separator can be disabled

This was deprecated in Perl 5.38 and removed as scheduled in perl 5.41.3, but after some discussion has been reinstated by default.

これは Perl 5.38 では非推奨であり、予定通り perl 5.41.3 では削除されましたが、 いくつかの議論の後、デフォルトで復活しました。

This can be controlled with the apostrophe_as_package_separator feature which is enabled by default, but is disabled from the 5.41 feature bundle onwards.

これは apostrophe_as_package_separator 機能で制御できます; この機能はデフォルトで有効になっていますが、5.41 以降の機能の束では 無効になっています。

If you want to disable use within your own code you can explicitly disable the feature:

自身のコード内での使用を無効にしたい場合は、この機能を明示的に 無効にすることができます:

  no feature "apostrophe_as_package_separator";

Note that disabling this feature only prevents use of apostrophe as a package separator within code; symbolic references still treat ' as :: with the feature disabled:

この機能を無効にすると、コード内のパッケージ区切り文字として アポストロフィが使用できなくなるだけです; この機能を無効にしても、シンボリック参照は ':: として扱います。

  my $symref = "My'Module'Var";
  # default features
  my $x = $My'Module'Var; # fine
  no feature "apostrophe_as_package_separator";
  no strict "refs";
  my $y = $$symref;       # like $My::Module::Var
  my $z = $My'Module'Var; # syntax error

[GH #22644]

Lexical method declaration using my method

Like sub since Perl version 5.18, method can now be prefixed with the my keyword. This declares a subroutine that has lexical, rather than package visibility. See perlclass for more detail.

Perlバージョン 5.18 以降の sub と同様に、method の前に my キーワードを付けることができるようになりました。 これは、パッケージの可視性ではなく、レキシカルな可視性を 持つサブルーチンを宣言します。 さらなる詳細については、perlclass を参照してください。

Lexical method invocation operator ->&

Along with the ability to declare methods lexically, this release also permits invoking a lexical subroutine as if it were a method, bypassing the usual name-based method resolution.

メソッドをレキシカルに宣言する機能に加えて、このリリースでは、通常の 名前ベースのメソッド解決を迂回して、メソッドであるかのように レキシカルサブルーチンを呼び出すこともできます。

Combined with lexical method declaration, these two new abilities create the effect of having private methods.

レキシカルメソッド宣言と組み合わせることで、これら二つ新しい機能は プライベートメソッドを持つ効果を生み出します。

Switch and Smart Match operator kept, behind a feature

The "switch" feature and the smartmatch operator, ~~, were introduced in v5.10. Their behavior was significantly changed in v5.10.1. When the "experiment" system was added in v5.18.0, switch and smartmatch were retroactively declared experimental. Over the years, proposals to fix or supplement the features have come and gone.

"switch" 機能と、スマートマッチング演算子 ~~ は、v5.10 で導入されました。 これらの振る舞いは v5.10.1 で大きく変更されました。 「実験的」制度が v5.18.0 で追加されたとき、 switch とスマートマッチングは、遡及的に実験的と宣言されました。 長年にわたって、機能を修正または補完する提案が現れては消えていきました。

They were deprecated in Perl v5.38.0 and scheduled for removal in Perl v5.42.0. After extensive discussion their removal has been indefinitely postponed. Using them no longer produces a deprecation warning.

これらは Perl v5.38.0 では非推奨であり、Perl v5.42.0 では削除が 予定されていました。 広範な議論の後、これらの削除は無期限に延期されました。 これらを使っても、非推奨の警告は生成されなくなりました。

Switch itself still requires the switch feature, which is enabled by default for feature bundles from v5.9.5 through to v5.34. Switch remains disabled in feature bundles 5.35 and later, but can be separately enabled:

switch 自体は依然として switch 機能を必要とします; この機能は、v5.9.5 から v5.34 までの機能の束ではデフォルトで 有効になっています。 switch は 5.35 以降の機能の束では無効のままですが、個別に 有効にすることができます:

  # no switch here
  use v5.10;
  # switch here
  use v5.36;
  # no switch here
  use feature "switch";
  # switch here

Smart match now requires the smartmatch feature, which is enabled by default and included in all feature bundles up to 5.40. It is disabled for the 5.41 feature bundle and later, but can be separately enabled:

スマートマッチングでは、smartmatch 機能が必要になりました; この機能はデフォルトで有効になっており、5.40 までのすべての機能の束に 含まれています。 5.41 以降の機能の束では無効になっていますが、個別に有効にすることができます。

  # smartmatch here
  use v5.41;
  # no smartmatch here
  use feature "smartmatch";
  # smartmatch here

[GH #22752]

Unicode 16.0 supported

Perl now supports Unicode 16.0 https://www.unicode.org/versions/Unicode16.0.0/ including the changes introduced in 15.1 https://www.unicode.org/versions/Unicode15.1.0/.

Perl は、Unicode 15.1 https://www.unicode.org/versions/Unicode15.1.0/ で 導入された変更を含め、 16.0 https://www.unicode.org/versions/Unicode16.0.0/ に 対応するようになりました。

Assigning logical xor ^^= operator

Perl 5.40.0 introduced the logical medium-precedence exclusive-or operator ^^. It was not noticed at the time that the assigning variant ^^= was also missing. This is now added.

Perl 5.40.0 では、論理中置排他的論理和演算子 ^^ が導入されました。 この時点では、代入版 ^^= も欠落していることに気づきませんでした。 これが追加されました。

Security

[CVE-2024-56406] Heap buffer overflow vulnerability with tr//

A heap buffer overflow vulnerability was discovered in Perl.

Perl でヒープバッファオーバーフローの脆弱性が発見されました。

When there are non-ASCII bytes in the left-hand-side of the tr operator, S_do_trans_invmap() can overflow the destination pointer d.

tr 演算子の左側に非 ASCII バイトがある場合、S_do_trans_invmap() は 宛先ポインタ d をオーバーフローさせることがあります。

  $ perl -e '$_ = "\x{FF}" x 1000000; tr/\xFF/\x{100}/;'
  Segmentation fault (core dumped)

It is believed that this vulnerability can enable Denial of Service or Arbitrary Code Execution attacks on platforms that lack sufficient defenses.

この脆弱性により、十分な防御機能を備えていないプラットフォームで サービス拒否攻撃や任意コード実行攻撃が発生する可能性があると 考えられています。

This problem was discovered by Nathan Mills and assigned [CVE-2024-56406] by the CPAN Security Group.

この問題は Nathan Mills によって発見され、 CPAN Security Group によって[CVE-2024-56406] が 割り当てられました。

The patch to fix this issue (87f42aa0e0096e9a346c9672aa3a0bd3bef8c1dd) is applicable to all perls that are vulnerable, including those out-of-support.

この問題を修正するパッチ(87f42aa0e0096e9a346c9672aa3a0bd3bef8c1dd) は、サポート対象外のものを含め、 脆弱な全ての Perl に適用できます。

[CVE-2025-40909] Perl threads have a working directory race condition where file operations may target unintended paths

Perl thread cloning had a working directory race condition where file operations may target unintended paths. Perl 5.42 will no longer chdir to each handle.

Perl スレッドのクローン化には、ファイル操作が意図しないパスを ターゲットにする可能性がある作業ディレクトリの競合状態がありました。 Perl 5.42 では、各ハンドルへの chdir がなくなりました。

This problem was discovered by Vincent Lefèvre via [GH #23010] and assigned [CVE-2025-40909] by the CPAN Security Group.

この問題は、[GH #23010] を介して Vincent Lefèvreによって発見され、 CPAN Security Groupによって [CVE-2025-40909]が 割り当てられました。

Fixes were provided via [GH #23019] and [GH #23361].

修正は、[GH #23019] および [GH #23361] を通じて 提供されました。

互換性のない変更

Removed containing function references for functions without eval

Perl 5.40 reintroduced unconditional references from functions to their containing functions to fix a bug introduced in Perl 5.18 that broke the special behaviour of eval EXPR in package DB which is used by the debugger.

Perl 5.40 では、デバッガで使用されるパッケージ DB 内の eval EXPR の 特殊な動作を破壊する Perl 5.18 で導入されたバグを修正するために、 関数からその関数を含む関数への無条件参照が再導入されました。

In some cases this change led to circular reference chains between closures and other existing references, resulting in memory leaks.

場合によっては、この変更により、クロージャと他の既存の参照との間で 循環参照チェーンが発生し、メモリリークを引き起こしていました。

This change has been reverted, fixing [GH #22547] but re-breaking [GH #19370].

この変更は元に戻され、 [GH #22547] は修正されましたが、 [GH #19370] は再び 壊れました。

This means the reference loops won't occur, and that lexical variables and functions from enclosing functions may not be visible in the debugger.

これは、参照ループが発生しないこと、および囲んでいる関数からの レキシカル変数および関数がデバッガで表示されない可能性があることを 意味します。

Note that calling eval EXPR in a function unconditionally causes a function to reference its enclosing functions as it always has.

関数内でeval EXPR を呼び出すと、常にそうであるように、 無条件にその関数を囲む関数を参照することに注意してください。

性能改善

  • Constant-folded strings are now shareable via the Copy-on-Write mechanism. [GH #22163]

    定数畳み込みされた文字列は、コピーオンライト機構経由で 共有できるようになりました。 [GH #22163]

    The following code would previously have allocated eleven string buffers, each containing one million "A"s:

    次のコードでは、以前はそれぞれ 100 万個の "A" を含む 11 個の文字列バッファが 割り当てられていました:

        my @scalars; push @scalars, ("A" x 1_000_000) for 0..9;

    Now a single buffer is allocated and shared between a CONST OP and the ten scalar elements of @scalars.

    これは、単一のバッファが割り当てられ、CONST OP と @scalars の 10 個の スカラ要素との間で共有されるようになりました。

    Note that any code using this sort of constant to simulate memory leaks (perhaps in test files) must now permute the string in order to trigger a string copy and the allocation of separate buffers. For example, ("A" x 1_000_000).time might be a suitable small change.

    (おそらくテストファイル内の)この種の定数を使ってメモリーリークを シミュレートするコードは、文字列のコピーと個別のバッファの 割当てを引き起こすために、文字列を変更しなければならなくなったことに 注意してください。 たとえば、("A" x 1_000_000).time は、適切な小さな変更でしょう。

  • tr/// now runs at the same speed regardless of the internal representation of its operand, as long as the only characters being translated are ASCII-range, for example tr/A-Z/a-z/. Previously, if the internal encoding was UTF-8, a slower, more general implementation was used.

    tr/// は、変換される文字が tr/A-Z/a-z/ のように ASCII 範囲である限り、 オペランドの内部表現に関係なく同じ速度で実行されるようになりました。 以前は、内部エンコーディングが UTF-8 の場合、より低速でより一般的な 実装が使われていました。

  • Code that uses the indexed function from the builtin module to generate a list of index/value pairs out of an array or list which is then passed into a two-variable foreach list to unpack those again is now optimised to be more efficient.

    builtin モジュールの indexed 関数を使って、配列またはリストから インデックス/値の組のリストを生成し、それを 2 変数のforeach リストに 渡して再度展開するコードが、より効率的になるように 最適化されるようになりました。

        my @array = (...);
    
        foreach my ($idx, $val) (builtin::indexed @array) {
            ...
        }

        foreach my ($idx, $val) (builtin::indexed LIST...) {
            ...
        }

    In particular, a temporary list twice the size of the original is no longer generated. Instead, the loop iterates down the original array or list in-place directly, in the same way that foreach (@array) or foreach (LIST) would do.

    特に、元のサイズの 2 倍の一時的なリストは生成されなくなりました。 代わりに、ループは、foreach (@array) または foreach (LIST) が 行うのと同じ方法で、元の配列またはリストを直接反復します。

  • The peephole optimizer recognises the following zero-offset substr patterns and swaps in a new dedicated operator (OP_SUBSTR_LEFT). [GH #22785]

    覗き穴最適化器は、次のゼロオフセット substr パターンを認識し、 新しい専用演算子 (OP_SUBSTR_LEFT) に交換します。 [GH #22785]

        substr($x, 0, ...)
        substr($x, 0, ..., '')
  • The stringification of integers by "print" in perlfunc and "say" in perlfunc, when coming from an SVt_IV, is now more efficient. [GH #22927]

    "print" in perlfunc"say" in perlfunc による整数の文字列化は、 SVt_IV から来る場合、より効率的になりました。 [GH #22927]

  • String reversal from a single argument, when the string buffer is not "swiped", is now done in a single pass and is noticeably faster. The extent of the improvement is compiler & hardware dependent. [GH #23012]

    文字列バッファが「掃き出し」されていない場合、単一の引数からの文字列反転が 単一のパスで行われるようになり、著しく高速になりました。 改善の程度はコンパイラとハードウェアに依存します。 [GH #23012]

モジュールとプラグマ

更新されたモジュールとプラグマ

  • Archive::Tar has been upgraded from version 3.02_001 to 3.04.

    Archive::Tar はバージョン 3.02_001 から 3.04 に更新されました。

  • B::Deparse has been upgraded from version 1.76 to 1.85.

    B::Deparse はバージョン 1.76 から 1.85 に更新されました。

  • Benchmark has been upgraded from version 1.25 to 1.27.

    Benchmark はバージョン 1.25 から 1.27 に更新されました。

  • builtin has been upgraded from version 0.014 to 0.019.

    builtin はバージョン 0.014 から 0.019 に更新されました。

  • Compress::Raw::Bzip2 has been upgraded from version 2.212 to 2.213.

    Compress::Raw::Bzip2 はバージョン 2.212 から 2.213 に更新されました。

  • Compress::Raw::Zlib has been upgraded from version 2.212 to 2.213.

    Compress::Raw::Zlib はバージョン 2.212 から 2.213 に更新されました。

  • Config::Perl::V has been upgraded from version 0.36 to 0.38.

    Config::Perl::V はバージョン 0.36 から 0.38 に更新されました。

  • CPAN has been upgraded from version 2.36 to 2.38.

    CPAN はバージョン 2.36 から 2.38 に更新されました。

  • CPAN::Meta::YAML has been upgraded from version 0.018 to 0.020.

    CPAN::Meta::YAML はバージョン 0.018 から 0.020 に更新されました。

  • Data::Dumper has been upgraded from version 2.189 to 2.192.

    Data::Dumper はバージョン 2.189 から 2.192 に更新されました。

  • DB has been upgraded from version 1.08 to 1.09.

    DB はバージョン 1.08 から 1.09 に更新されました。

  • DBM_Filter has been upgraded from version 0.06 to 0.07.

    DBM_Filter はバージョン 0.06 から 0.07 に更新されました。

  • Devel::Peek has been upgraded from version 1.34 to 1.36.

    Devel::Peek はバージョン 1.34 から 1.36 に更新されました。

  • Devel::PPPort has been upgraded from version 3.72 to 3.73.

    Devel::PPPort はバージョン 3.72 から 3.73 に更新されました。

  • Digest::MD5 has been upgraded from version 2.58_01 to 2.59.

    Digest::MD5 はバージョン 2.58_01 から 2.59 に更新されました。

  • DynaLoader has been upgraded from version 1.56 to 1.57.

    DynaLoader はバージョン 1.56 から 1.57 に更新されました。

  • experimental has been upgraded from version 0.032 to 0.035.

    experimental はバージョン 0.032 から 0.035 に更新されました。

  • Exporter has been upgraded from version 5.78 to 5.79.

    Exporter はバージョン 5.78 から 5.79 に更新されました。

  • ExtUtils::CBuilder has been upgraded from version 0.280240 to 0.280242.

    ExtUtils::CBuilder はバージョン 0.280240 から 0.280242 に更新されました。

  • ExtUtils::MakeMaker has been upgraded from version 7.70 to 7.76.

    ExtUtils::MakeMaker はバージョン 7.70 から 7.76 に更新されました。

  • ExtUtils::ParseXS has been upgraded from version 3.51 to 3.57.

    ExtUtils::ParseXS はバージョン 3.51 から 3.57 に更新されました。

  • ExtUtils::Typemaps has been upgraded from version 3.51 to 3.57.

    ExtUtils::Typemaps はバージョン 3.51 から 3.57 に更新されました。

  • Fcntl has been upgraded from version 1.18 to 1.20.

    Fcntl はバージョン 1.18 から 1.20 に更新されました。

  • feature has been upgraded from version 1.89 to 1.97.

    feature はバージョン 1.89 から 1.97 に更新されました。

  • fields has been upgraded from version 2.25 to 2.27.

    fields はバージョン 2.25 から 2.27 に更新されました。

  • File::Spec has been upgraded from version 3.90 to 3.94.

    File::Spec はバージョン 3.90 から 3.94 に更新されました。

  • Getopt::Long has been upgraded from version 2.57 to 2.58.

    Getopt::Long はバージョン 2.57 から 2.58 に更新されました。

  • HTTP::Tiny has been upgraded from version 0.088 to 0.090.

    HTTP::Tiny はバージョン 0.088 から 0.090 に更新されました。

  • IO::Compress has been upgraded from version 2.212 to 2.213.

    IO::Compress はバージョン 2.212 から 2.213 に更新されました。

  • IO::Socket::IP has been upgraded from version 0.42 to 0.43.

    IO::Socket::IP はバージョン 0.42 から 0.43 に更新されました。

  • IPC::Open3 has been upgraded from version 1.22 to 1.24.

    IPC::Open3 はバージョン 1.22 から 1.24 に更新されました。

  • locale has been upgraded from version 1.12 to 1.13.

    locale はバージョン 1.12 から 1.13 に更新されました。

  • Math::BigInt has been upgraded from version 2.003002 to 2.005002.

    Math::BigInt はバージョン 2.003002 から 2.005002 に更新されました。

  • Math::BigInt::FastCalc has been upgraded from version 0.5018 to 0.5020.

    Math::BigInt::FastCalc はバージョン 0.5018 から 0.5020 に更新されました。

  • Math::Complex has been upgraded from version 1.62 to 1.63.

    Math::Complex はバージョン 1.62 から 1.63 に更新されました。

  • Memoize has been upgraded from version 1.16 to 1.17.

    Memoize はバージョン 1.16 から 1.17 に更新されました。

  • Module::CoreList has been upgraded from version 5.20240609 to 5.20250702.

    Module::CoreList はバージョン 5.20240609 から 5.20250702 に更新されました。

  • NDBM_File has been upgraded from version 1.17 to 1.18.

    NDBM_File はバージョン 1.17 から 1.18 に更新されました。

  • ODBM_File has been upgraded from version 1.18 to 1.20.

    ODBM_File はバージョン 1.18 から 1.20 に更新されました。

  • Opcode has been upgraded from version 1.65 to 1.69.

    Opcode はバージョン 1.65 から 1.69 に更新されました。

  • overload has been upgraded from version 1.37 to 1.40.

    overload はバージョン 1.37 から 1.40 に更新されました。

  • parent has been upgraded from version 0.241 to 0.244.

    parent はバージョン 0.241 から 0.244 に更新されました。

  • perlfaq has been upgraded from version 5.20240218 to 5.20250619.

    perlfaq はバージョン 5.20240218 から 5.20250619 に更新されました。

  • Pod::Usage has been upgraded from version 2.03 to 2.05.

    Pod::Usage はバージョン 2.03 から 2.05 に更新されました。

  • podlators has been upgraded from version 5.01_02 to v6.0.2.

    podlators はバージョン 5.01_02 から v6.0.2 に更新されました。

  • POSIX has been upgraded from version 2.20 to 2.23.

    POSIX はバージョン 2.20 から 2.23 に更新されました。

  • re has been upgraded from version 0.47 to 0.48.

    re はバージョン 0.47 から 0.48 に更新されました。

  • Safe has been upgraded from version 2.46 to 2.47.

    Safe はバージョン 2.46 から 2.47 に更新されました。

  • Scalar::Util has been upgraded from version 1.63 to 1.68_01.

    Scalar::Util はバージョン 1.63 から 1.68_01 に更新されました。

  • Search::Dict has been upgraded from version 1.07 to 1.08.

    Search::Dict はバージョン 1.07 から 1.08 に更新されました。

  • SelfLoader has been upgraded from version 1.27 to 1.28.

    SelfLoader はバージョン 1.27 から 1.28 に更新されました。

  • sort has been upgraded from version 2.05 to 2.06.

    sort はバージョン 2.05 から 2.06 に更新されました。

  • Storable has been upgraded from version 3.32 to 3.37.

    Storable はバージョン 3.32 から 3.37 に更新されました。

  • strict has been upgraded from version 1.13 to 1.14.

    strict はバージョン 1.13 から 1.14 に更新されました。

  • Term::Table has been upgraded from version 0.018 to 0.024.

    Term::Table はバージョン 0.018 から 0.024 に更新されました。

  • Test::Harness has been upgraded from version 3.48 to 3.50.

    Test::Harness はバージョン 3.48 から 3.50 に更新されました。

  • Test::Simple has been upgraded from version 1.302199 to 1.302210.

    Test::Simple はバージョン 1.302199 から 1.302210 に更新されました。

  • Thread has been upgraded from version 3.05 to 3.06.

    Thread はバージョン 3.05 から 3.06 に更新されました。

  • threads has been upgraded from version 2.40 to 2.43.

    threads はバージョン 2.40 から 2.43 に更新されました。

  • threads::shared has been upgraded from version 1.69 to 1.70.

    threads::shared はバージョン 1.69 から 1.70 に更新されました。

  • Tie::File has been upgraded from version 1.09 to 1.10.

    Tie::File はバージョン 1.09 から 1.10 に更新されました。

  • Tie::RefHash has been upgraded from version 1.40 to 1.41.

    Tie::RefHash はバージョン 1.40 から 1.41 に更新されました。

  • Time::HiRes has been upgraded from version 1.9777 to 1.9778.

    Time::HiRes はバージョン 1.9777 から 1.9778 に更新されました。

  • Time::Piece has been upgraded from version 1.3401_01 to 1.36.

    Time::Piece はバージョン 1.3401_01 から 1.36 に更新されました。

  • Unicode::UCD has been upgraded from version 0.78 to 0.81.

    Unicode::UCD はバージョン 0.78 から 0.81 に更新されました。

  • utf8 has been upgraded from version 1.25 to 1.27.

    utf8 はバージョン 1.25 から 1.27 に更新されました。

  • version has been upgraded from version 0.9930 to 0.9933.

    version はバージョン 0.9930 から 0.9933 に更新されました。

  • VMS::Filespec has been upgraded from version 1.13 to 1.15.

    VMS::Filespec はバージョン 1.13 から 1.15 に更新されました。

  • warnings has been upgraded from version 1.69 to 1.74.

    warnings はバージョン 1.69 から 1.74 に更新されました。

  • Win32 has been upgraded from version 0.59 to 0.59_01.

    Win32 はバージョン 0.59 から 0.59_01 に更新されました。

  • XS::APItest has been upgraded from version 1.36 to 1.43.

    XS::APItest はバージョン 1.36 から 1.43 に更新されました。

文書

既存の文書の変更

We have attempted to update the documentation to reflect the changes listed in this document. If you find any we have missed, open an issue at https://github.com/Perl/perl5/issues.

私たちはこの文書で挙げられた変更を反映するように文書を更新しようとしています。 もし抜けている物を発見したら、 https://github.com/Perl/perl5/issues でイシューを開いてください。

Additionally, the following selected changes have been made:

それに加えて、以下のような変更が行われました。

perlapi

  • Combined the documentation for several groups of related functions into single entries.

    関連する関数のいくつかのグループの文書を一つのエントリにまとめました。

  • All forms of gv_fetchmeth() are now documented together.

    gv_fetchmeth() のすべての形式が一緒に文書化されました。

  • gv_autoload4 is now documented with gv_autoload_pv and additional notes added. The long Perl_ forms are now listed when available.

    gv_autoload4 は、gv_autoload_pv と共に文書化され、 追加の注意事項が追加されました。 長い Perl_ 形式は、利用可能な場合に一覧化されるようになりました。

perldata

  • Binary and octal floating-point constants (such as 012.345p-2 and 0b101.11p-1) are now documented. This feature was first introduced in perl 5.22.0 together with hexadecimal floating-point constants and had a few bug fixes in perl 5.28.0, but it was never formally documented. [GH #18664]

    2 進数および 8 進数の浮動小数点定数 (012.345p-20b101.11p-1 など) が 文書化されました。 この機能は、最初に perl 5.22.0 で 16 進数の浮動小数点定数とともに導入され、 perl 5.28.0 でいくつかのバグ修正が行われましたが、正式に 文書化されることはありませんでした。 [GH #18664]

perlfunc

  • Clarified the description of ref and reftype in relation to built-in types and class names.

    組み込み型とクラス名に関連する refreftype の記述を明確化しました。

  • Clarified that perl sort is stable (and has been since v5.8.0).

    perl sort が(v5.8.0 以降)安定していることを明確にしました。

  • The recommended alternatives to the rand() function were updated to modern modules recommended by the CPAN Security Group. [GH #22873]

    rand() 関数の推奨される代替関数は、 CPAN Security Group によって推奨される モダンなモジュールに更新されました。 [GH #22873]

perlgov

  • The list of Steering Council and Core Team members have been updated, following the conclusion of the latest election on 2024-07-17.

    2024-07-17 の最新の選挙の終了を受けて、運営委員会とコアチームのメンバーの リストが更新されました。

perlguts

  • Added some description of "real" AVs compared to "fake" AVs.

    「本物の」AV と「偽の」AV の比較に関する説明を追加しました。

  • Documentation was updated to reflect that mixing Newx, Renew, and Safefree vs malloc, realloc, and free are not allowed, and mixing pointers between the 2 classes of APIs is not allowed. Updates made in perlguts and perlclib.

    文書が更新され、Newx, Renew, Safefreemalloc, realloc, free の混在は許されず、二つのグループの API 間でのポインタの混在は 許されないことが反映されました。 更新は perlgutsperlclib に対して行われました。

  • Additional caveats have been added to the description of TARG.

    TARG の説明に追加の警告が追加されました。

perlop

  • Portions of perlop are supposed to be ordered so that all the operators wth the same precedence are in a single section, and the sections are ordered so that the highest precedence operators appear first. This ordering has now been restored. Other reorganization was done to improve clarity, with more basic operations described before ones that depend on them.

    perlop の一部は、同じ優先順位を持つすべての演算子が一つのの節内に あるように順序付けられ、セクションは最も優先順位の高い演算子が 最初に表示されるように順序付けられることを想定しています。 この順序は復元されました。 その他の再編成は、明確性を向上させるために行われ、より基本的な操作は、 それらに依存する操作の前に説明されるようになりました。

  • The documentation for here-docs has been cleaned up and reorganized. Indented here-docs were formerly documented separately, now the two types have interwoven documentation which is more compact, and easier to understand.

    ヒヤドキュメントの文書は整理され、再編成されました。 インデントされたヒヤドキュメントは以前は別々に文書化されていましたが、 現在では二種類の文書が織り交ぜられており、よりコンパクトで 理解しやすくなっています。

  • The documentation of the xor operator has been expanded.

    xor 演算子の文書が拡張されました。

  • Outdated advice about using relational string operators in UTF-8 locales has been removed. Use Unicode::Collate for the best results, but these operators will give adequate results on many platforms.

    UTF-8 ロケールでの関係文字列演算子の使用に関する 古いアドバイスは削除されました。 最良の結果を得るには Unicode::Collate を使いますが、これらの演算子は 多くのプラットフォームで適切な結果を提供します。

  • Normalized alignment of verbatim sections, fixing how they are displayed by some Pod viewers that strip indentation.

    そのままの節のアライメントが正規化され、インデントを削除する一部の Pod ビューワでの表示方法が修正されました。

perlvar

  • Entries for $# and $* have been amended to note that use of them result in a compilation error, not a warning.

    $# および $* のエントリについて、これらを使うと警告ではなく コンパイルエラーが発生するということを注意するように修正されました。

診断メッセージ

The following additions or changes have been made to diagnostic output, including warnings and fatal error messages. For the complete list of diagnostic messages, see perldiag.

次のような追加と変更が、警告や致命的エラーメッセージを含む診断出力に 行われました。 診断メッセージの完全な一覧については、perldiag を参照してください。

新しい警告メッセージ

新しいエラー

  • Use of non-ASCII character 0x%X illegal when 'use source::encoding "ascii"' is in effect

    (F) This pragma forbids non-ASCII characters within its scope.

    (F) このプラグマは、そのスコープ内で非 ASCII 文字を禁止します。

  • Undefined subroutine &%s called, close to label '%s'

    (F) The subroutine indicated hasn't been defined, or if it was, it has since been undefined.

    (F) 示されたサブルーチンが定義されていないか、以前定義されていたとしても、 その後未定義になりました。

    This error could also indicate a mistyped package separator, when a single colon was typed instead of two colons. For example, Foo:bar() would be parsed as the label Foo followed by an unqualified function name: foo: bar(). [GH #22860]

    このエラーは、二つのコロンではなく一つのコロンが入力された場合に、 パッケージ区切り文字の入力ミスを示すこともあります。 たとえば、Foo:bar() は、ラベル Foo の後に修飾されていない関数名が 続くものとして解析されます: foo: bar()。 [GH #22860]

新しい警告

  • __CLASS__ is experimental

    (S experimental::class) This warning is emitted if you use the __CLASS__ keyword of use feature 'class'. This keyword is currently experimental and its behaviour may change in future releases of Perl.

    (S experimental::class) この警告は、use feature 'class'__CLASS__ キーワードを使った場合に発生します。 このキーワードは現在実験的なものであり、Perl の将来のリリースで動作が 変更される可能性があります。

  • %s() attempted on handle %s opened with open()

    (W io) You called readdir(), telldir(), seekdir(), rewinddir() or closedir() on a handle that was opened with open(). If you want to use these functions to traverse the contents of a directory, you need to open the handle with opendir().

    (W io) open() で開いたハンドルに対して readdir(), telldir(), seekdir(), rewinddir(), closedir() を呼び出しました。 ディレクトリの内容を走査するためにこれらの関数を使いたい場合、 opendir() でハンドルを開く必要があります。

    [GH #22394]

  • Possible precedence problem between ! and %s

    (W precedence) You wrote something like

    (W precedence) 次のようなものを書きました:

        !$x < $y               # parsed as: (!$x) < $y
        !$x eq $y              # parsed as: (!$x) eq $y
        !$x =~ /regex/         # parsed as: (!$x) =~ /regex/
        !$obj isa Some::Class  # parsed as: (!$obj) isa Some::Class

    but because ! has higher precedence than comparison operators, =~, and isa, this is interpreted as comparing/matching the logical negation of the first operand, instead of negating the result of the comparison/match.

    しかし、! は比較演算子 =~ および isa よりも優先順位が高いため、 これは比較/マッチングの結果を否定するのではなく、最初のオペランドの論理否定を 比較/マッチングするものとして解釈されます。

    To disambiguate, either use a negated comparison/binding operator:

    あいまいさをなくすには、否定された比較/束縛演算子を使うか:

        $x >= $y
        $x ne $y
        $x !~ /regex/

    ... or parentheses:

    かっこか:

        !($x < $y)
        !($x eq $y)
        !($x =~ /regex/)
        !($obj isa Some::Class)

    ... or the low-precedence not operator:

    優先順位の低い not 演算子を使います:

        not $x < $y
        not $x eq $y
        not $x =~ /regex/
        not $obj isa Some::Class

    (If you did mean to compare the boolean result of negating the first operand, parenthesize as (!$x) < $y, (!$x) eq $y, etc.)

    (最初のオペランドを否定した真偽値の結果を比較することを意味していた場合は、 (!$x) < $y, (!$x) eq $y などのようにかっこで囲みます。)

    Note: this warning does not trigger for code like !!$x == $y, i.e. where double negation (!!) is used as a convert-to-boolean operator.

    注: この警告は、!!$x == $y のようなコード、つまり、二重否定 (!!) が 真偽値への変換演算子として使われてコードでは引き起こされません。

既存の診断メッセージの変更

  • %s() attempted on invalid dirhandle %s

    This was consolidated from separate messages for readdir(), telldir(), seekdir(), rewinddir() and closedir() as part of refactoring for [GH #22394].

    これは、[GH #22394] の リファクタリングの一部として、readdir(), telldir(), seekdir(), rewinddir(), losedir() の個別のメッセージから統合されました。

  • Useless use of %s in void context

    This warning now triggers for use of a chained comparison like 0 < $x < 1. [GH #22969]

    この警告は、0 < $x < 1 のような連鎖比較の使用で 引き起こされるようになりました。 [GH #22969]

  • Use of uninitialized value%s

    Prevent this warning when accessing a function parameter in @_ that is an lvalue reference to an untied hash element where the key was undefined. This warning is still produced at the point of call. [GH #22423]

    キーが未定義の tie されていないハッシュ要素への左辺値参照である @_ の関数引数にアクセスするときに、 この警告が発生しないようになりました。 この警告は、呼び出しの時点では未だに生成されます。 [GH #22423]

Utility Changes

Porting/test-dist-modules.pl

  • Separate installation (without overwriting installed modules) is now the default.

    個別インストール(インストールされたモジュールを上書きしない)が デフォルトになりました。

  • Documentation is significantly enhanced.

    文書が大幅に強化されました。

設定とコンパイル

  • Fix compilation on platforms (e.g. "Gentoo Prefix") with only a C locale [GH #22569] Bug first reported downstream bugs.gentoo.org/939014

    C ロケールのみを使用するプラットフォーム(例: "Gentoo Prefix") での コンパイルを修正しました [GH #22569]。 バグは最初にダウンストリーム bugs.gentoo.org/939014 で報告されました。

  • The (mostly undocumented) configuration macro PERL_STRICT_CR has been removed. When enabled (e.g. with ./Configure -A ccflags=-DPERL_STRICT_CR), it would make the perl parser throw a fatal error when it encountered a CR (carriage return) character in source files. The default (and now only) behavior of the perl parser is to strip CRs paired with newline characters and otherwise treat them as whitespace.

    (ほとんど文書化されていない) 設定マクロ PERL_STRICT_CR が削除されました。 これを (たとえば./Configure -A ccflags=-DPERL_STRICT_CRで) 有効にすると、 ソースファイルで CR(キャリッジリターン)文字が検出されたときに、 perl パーサが致命的なエラーを投げるようになります。 perl パーサのデフォルトの(そして今では唯一の)動作は、改行文字と対になった CR を取り除き、それ以外の場合は空白として扱うことです。

    (PERL_STRICT_CR was originally introduced in perl 5.005 to optionally restore backward compatibility with perl 5.004, which had made CR in source files an error. Before that, CR was accepted, but retained literally in quoted multi-line constructs such as here-documents, even at the end of a line.)

    (PERL_STRICT_CR は、オプションでソースファイルの CR がエラーになった perl 5.004 との下位互換性を復元するために perl 5.005 で導入されました。 それ以前は、CR は受け入れられていましたが、ヒヤドキュメントのような 引用された複数行の構文では、行の末尾であっても文字通り保持されていました。)

  • Similarly, the (even less documented) configuration macro PERL_CR_FILTER has been removed. When enabled, it would install a default source filter to strip carriage returns from source code before the parser proper got to see it.

    同様に、(さらに文書化されていない) 設定マクロ PERL_CR_FILTER が 削除されました。 有効にすると、デフォルトのソースフィルタがインストールされ、 パーサがソースコードを見る前にソースコードからキャリッジリターンを 取り除きます。

テスト

Tests were added and changed to reflect the other additions and changes in this release. Furthermore, these significant changes were made:

このリリースのその他の追加と変更を反映してテストが追加、変更されました。 さらに、主に以下のような変更が行われました:

  • A new t/run/todo.t test script was added as a place for TODO tests for known unfixed bugs. Patches are welcome to add to this file.

    既知の修正されていないバグに対する TODO テストの場所として、 新しい t/run/todo.t テストスクリプトが追加されました。 このファイルに追加するパッチを歓迎します。

  • Added testing of the perl headers against the C++ compiler corresponding to the C compiler perl is being built with. [GH #22232]

    perl をビルドしている C コンパイラに対応する C++ コンパイラに対する perl ヘッダのテストが追加されました。 [GH #22232]

プラットフォーム対応

プラットフォーム固有の注意

arm64 Darwin

Fix arm64 darwin hints when using use64bitall with Configure [GH #22672]

Configure で use64bitall を使用するときの arm64 darwin のヒントを 修正しました。 [GH #22672]

Android

Changes to perl_langinfo.h for Android [GH #22650] related to [GH #22627].

[GH #22627] に関連して Android の perl_langinfo.h [GH #22650] を変更しました。

Cygwin

cygwin.c: fix several silly/terrible C errors. [GH #22724]

cygwin.c: いくつかのばかげた/ひどい C エラーを修正しました。 [GH #22724]

Supply an explicit base address for cygperl*.dll that cannot conflict with those generated by --enable-auto-image-base. [GH #22695][GH #22104]

cygperl*.dll に対して、--enable-auto-image-base によって生成された ベースアドレスと競合しない明示的なベースアドレスを指定しました。 [GH #22695] [GH #22104]

MacOS (Darwin)

Collation of strings using locales on MacOS 15 (Darwin 24) and up has been turned off due to a failed assertion in its libc.

MacOS 15 (Darwin 24) 以降でロケールを使用した文字列の照合は、 libc でのアサーションの失敗によりオフになっています。

If earlier versions are also experiencing issues (such as failures in locale.t), you can explicitly disable locale collation by adding the -Accflags=-DNO_LOCALE_COLLATE option to your invocation of ./Configure, or just -DNO_LOCALE_COLLATE to the ccflags and cppflags variables in config.sh.

以前のバージョンでも(locale.t での失敗など)問題が発生している場合は、 ./Configure の起動に -Accflags=-DNO_LOCALE_COLLATE オプションを 追加するか、config.shccflags および cppflags 変数に -DNO_LOCALE_COLLATE を追加することで、ロケール照合を明示的に 無効にすることができます。

内部の変更

  • The "sv_strftime_ints" in perlapi function is introduced. This is an enhanced version of "my_strftime" in perlapi, which is retained for backwards compatibility. Both are to call strftime(3) when you have the year, month, hour, etc. The new function handles UTF8ness for you, and allows you to specify if you want the possibility of daylight savings time to be considered. my_strftime never considers DST.

    "sv_strftime_ints" in perlapi 関数が導入されました。 これは、下位互換性のために保持されている "my_strftime" in perlapi の 拡張版です。 どちらも、年、月、時などがある場合に strftime(3) を呼び出します。 新しい関数は UTF-8 を処理し、夏時間の可能性を考慮するかどうかを指定できます。 my_strftime は DST を考慮しません。

  • The bytes_to_utf8, bytes_from_utf8, and bytes_from_utf8_loc functions are no longer experimental.

    bytes_to_utf8, bytes_from_utf8, bytes_from_utf8_loc 関数は 実験的なものではなくなりました。

  • Calls to call_argv() with the G_DISCARD flag set also ensure the SV parameters constructed from the argv parameter are released before call_argv() returns. Previously they were released on the next FREETMPS. [GH #22255]

    G_DISCARD フラグが設定された call_argv() を 呼び出すと、argv 引数から構築された SV 引数が、 call_argv() が返る前に解放されます。 以前は、次の FREETMPS で解放されていました。 [GH #22255]

  • When built with the -DDEBUGGING compile option, perl API functions that take pointers to distinct types of SVs (AVs, HVs or CVs) will check the SvTYPE() of the passed values to ensure they are valid. Additionally, internal code within core functions that attempts to extract AVs, HVs or CVs from reference values passed in will also perform such checks.

    -DDEBUGGING コンパイルオプションを使ってビルドされた場合、 異なるタイプの SV(AV, HV, CV) へのポインタを取る perl API 関数は、 渡された値の SvTYPE() をチェックして、それらが有効であることを 確認します。 さらに、渡された参照値から AV, HV, CV を抽出しようとする コア関数内の内部コードも、このようなチェックを実行します。

    While this has been entirely tested by normal Perl CI testing, there may still be some corner-cases where these constraints are violated in otherwise-valid calls. These may require further investigation if they are found, and specific code to be adjusted to account for it.

    これは通常の Perl CI テストによって完全にテストされていますが、 それ以外の有効な呼び出しでこれらの制約に違反するコーナーケースが まだいくつかある可能性があります。 これらが見つかった場合は、さらに調査し、それを考慮して特定のコードを 調整する必要があります。

  • The op_dump() function has been expanded to include additional information about the recent OP_METHSTART and OP_INITFIELD ops, as well as for OP_ARGCHECK and OP_ARGELEM which had not been done previously.

    op_dump() 関数が拡張され、最近の OP_METHSTART および OP_INITFIELD op に関する追加情報と、これまで行われていなかった OP_ARGCHECK および OP_ARGELEMに関する追加情報が 含まれるようになりました。

  • op_dump() now also has the facility to print extra debugging information about custom operators, if those operators register a helper function via the new xop_dump element of the XOP structure. For more information, see the relevant additions to perlguts.

    op_dump() には、カスタム演算子が XOP 構造体の新しい xop_dump 要素経由でヘルパー関数を登録する場合に、カスタム演算子に 関する追加のデバッグ情報を出力する機能も追加されました。 詳細については、perlguts への 関連する追加を参照してください。

  • New API functions are introduced to convert strings encoded in UTF-8 to their ordinal code point equivalent. These are safe to use by default, and generally more convenient to use than the existing ones.

    UTF-8 でエンコードされた文字列を対応する序数符号位置に変換する新しい API 関数が導入されました。 これらはデフォルトで安全に使用でき、一般的に既存のものよりも便利です。

    "utf8_to_uv" in perlapi and "utf8_to_uv_or_die" in perlapi replace "utf8_to_uvchr" in perlapi (which is retained for backwards compatibility), but you should convert to use the new forms, as likely you aren't using the old one safely.

    "utf8_to_uv" in perlapi および "utf8_to_uv_or_die" in perlapi は、"utf8_to_uvchr" in perlapi (下位互換性のために保持されています) を 置き換えますが、古い形式を安全に使用していない可能性があるため、 新しい形式を使うように変換するべきです。

    To convert in the opposite direction, you can now use "uv_to_utf8" in perlapi. This is not a new function, but a new synonym for "uvchr_to_utf8" in perlapi. It is added so you don't have to learn two sets of names.

    逆方向に変換するには、"uv_to_utf8" in perlapi を使えるようになりました。 これは新しい関数ではなく、"uvchr_to_utf8" in perlapi の新しい同義語です。 二つの名前のセットを学習する必要がないように追加されました。

    There are also two new functions, "strict_utf8_to_uv" in perlapi and "c9strict_utf8_to_uv" in perlapi which do the same thing except when the input string represents a code point that Unicode doesn't accept as legal for interchange, using either the strict original definition (strict_utf8_to_uv), or the looser one given by Unicode Corrigendum #9 (c9strict_utf8_to_uv). When the input string represents one of the restricted code points, these functions return the Unicode REPLACEMENT CHARACTER instead.

    また、"strict_utf8_to_uv" in perlapi"c9strict_utf8_to_uv" in perlapi という二つの新しい関数もあります; これらの関数は同じことを行いますが、入力文字列が、厳密な元の定義 (strict_utf8_to_uv) または Unicode Corrigendum #9 によって与えられた、より緩やかな定義 (c9strict_utf8_to_uv) のいずれかを使って、Unicode が交換に対して合法として 受け入れない符号位置を表す場合は異なります。 入力文字列が制限された符号位置の一つを表す場合、これらの関数は代わりに Unicode REPLACEMENT CHARACTER を返します。

    Also "extended_utf8_to_uv" in perlapi is a synonym for utf8_to_uv, for use when you want to emphasize that the entire range of Perl extended UTF-8 is acceptable.

    また、"extended_utf8_to_uv" in perlapiutf8_to_uv の同義語であり、 Perl 拡張 UTF-8 の全範囲が受け入れられることを強調したい場合に使います。

    There are also replacement functions for the three more specialized conversion functions that you are unlikely to need to use. Again, the old forms are kept for backwards compatibility, but you should convert to use the new forms.

    また、おそらく使う必要のない三つの特殊な変換関数に代わる関数もあります。 ここでも、下位互換性のために古い形式が保持されていますが、 新しい形式を使うように変換するべきです。

    "utf8_to_uv_flags" in perlapi は、"utf8n_to_uvchr" in perlapi を 置き換えます。

    "utf8_to_uv_errors" in perlapi は、"utf8n_to_uvchr_error" in perlapi を 置き換えます。

    "utf8_to_uv_msgs" in perlapi は、"utf8n_to_uvchr_msgs" in perlapi を 置き換えます。

    Also added are the inverse functions "uv_to_utf8_flags" in perlapi and "uv_to_utf8_msgs" in perlapi, which are synonyms for the existing functions, "uvchr_to_utf8_flags" in perlapi and "uvchr_to_utf8_flags_msgs" in perlapi respectively. These are provided only so you don't have to learn two sets of names.

    また、逆関数 "uv_to_utf8_flags" in perlapi および "uv_to_utf8_msgs" in perlapi も追加されています; これらは、それぞれ既存の関数 "uvchr_to_utf8_flags" in perlapi および "uvchr_to_utf8_flags_msgs" in perlapi の同義語です。 これらは、二つの名前のセットを学ぶ必要がないようにするためだけに 提供されています。

  • Three new API functions are introduced to convert strings encoded in UTF-8 to native bytes format (if possible). These are easier to use than the existing ones, and they avoid unnecessary memory allocations. The functions are "utf8_to_bytes_overwrite" in perlapi which is used when it is ok for the input string to be overwritten with the converted result; and "utf8_to_bytes_new_pv" in perlapi and "utf8_to_bytes_temp_pv" in perlapi when the original string must be preserved intact. utf8_to_bytes_temp_pv returns the result in a temporary using perlapi/SAVEFREEPV that will automatically be destroyed. With utf8_to_bytes_new_pv, you are responsible for freeing the newly allocated memory that is returned if the conversion is successful.

    UTF-8 でエンコードされた文字列を(可能であれば)ネイティブな バイト形式に変換するために、三つの新しい API 関数が導入されました。 これらは既存の関数よりも使いやすく、不要なメモリ割り当てを回避します。 関数は、変換結果で入力文字列を上書きしても問題がない場合に使われる "utf8_to_bytes_overwrite" in perlapi と、 元の文字列をそのまま保持する必要がある場合に使われる "utf8_to_bytes_new_pv" in perlapi および "utf8_to_bytes_temp_pv" in perlapi です。 utf8_to_bytes_temp_pv は、自動的に破棄される perlapi/SAVEFREEPV を使って結果を一時的に返します。 utf8_to_bytes_new_pv では、変換が成功した場合に返される、新しく 割り当てられたメモリを解放する必要があります。

    The latter two functions are designed to replace "bytes_from_utf8" in perlapi which creates memory unnecessarily, or unnecessarily large.

    後者の二つの関数は、メモリを不必要に使ったり、不必要に大きく使ったりする "bytes_from_utf8" in perlapi を置き換えるために設計されています。

  • New API functions valid_identifier_pve(), valid_identifier_pvn() and valid_identifier_sv() have been added, which test if a string would be considered by Perl to be a valid identifier name.

    新しいAPI関数 valid_identifier_pve(), valid_identifier_pvn(), valid_identifier_sv() が追加されました; これらの関数は、文字列が Perl によって有効な識別子名と 見なされるかどうかをテストします。

  • When assigning from an SVt_IV into a SVt_NV (or vice versa), providing that both are "bodyless" types, Perl_sv_setsv_flags will now just change the destination type to match the source type. Previously, an SVt_IV would have been upgraded to a SVt_PVNV to store an NV, and an SVt_NV would have been upgraded to a SVt_PVIV to store an IV. This change prevents the need to allocate - and later free - the relevant body struct.

    SVt_IV から SVt_NV (またはその逆)に割り当てる場合、両方が 「ボディレス」型であれば、Perl_sv_setsv_flags は宛先型を ソース型に一致するように変更します。 以前は、SVt_IV は NV を格納するために SVt_PVNV に昇格され、 SVt_NV は IV を格納するために SVt_PVIV に昇格されていました。 この変更により、関連するボディ構造体を割り当て、 後で解放する必要がなくなりました。

  • Two new API functions are introduced to convert strings encoded in native bytes format to UTF-8. These return the string unchanged if its UTF-8 representation is the same as the original. Otherwise, new memory is allocated to contain the converted string. This is in contrast to the existing "bytes_to_utf8" in perlapi which always allocates new memory. The new functions are "bytes_to_utf8_free_me" in perlapi and "bytes_to_utf8_temp_pv" in perlapi. "bytes_to_utf8_temp_pv" in perlapi arranges for the new memory to automatically be freed. With bytes_to_utf8_free_me, you are responsible for freeing any newly allocated memory.

    ネイティブバイト形式でエンコードされた文字列を UTF-8 に変換するために、 二つの新しい API 関数が導入されました。 これらの関数は、UTF-8 表現が元の文字列と同じ場合は、 文字列を変更せずに返します。 それ以外の場合は、変換された文字列を含む新しいメモリが割り当てられます。 これは、常に新しいメモリを割り当てる既存の "bytes_to_utf8" in perlapi とは対照的です。 新しい関数は、"bytes_to_utf8_free_me" in perlapi および"bytes_to_utf8_temp_pv" in perlapi です。 "bytes_to_utf8_temp_pv" in perlapi は、新しいメモリが 自動的に解放されるように調整します。 bytes_to_utf8_free_me は、新しく割り当てられたメモリを 解放する必要があります。

  • The way that subroutine signatures are parsed by the parser grammar has been changed.

    サブルーチンシグネチャをパーサ文法で構文解析する方法が変更されました。

    Previously, when parsing individual signature parameters, the parser would accumulate an OP_ARGELEM optree fragment for each parameter on the parser stack, collecting them in an OP_LIST sequence, before finally building the complete argument handling optree itself, in a large action block defined directly in perly.y.

    以前は、個々のシグネチャ引数をパースする場合、パーサは、perly.y で 直接定義された大きなアクションブロック内に完全な引数処理 op 木自体を 最終的に構築する前に、パーサスタック上の各引数に対して OP_ARGELEM op 木フラグメントを蓄積し、それらを OP_LIST シーケンスで収集していました。

    In the new approach, all the optree generation is handled by newly-defined functions in op.c which are called by the action blocks in the parser. These do not keep state on the parser stack, but instead in a dedicated memory structure referenced by the main PL_parser structure. This is intended to be largely opaque to other code, and accessed only via the new functions.

    新しい手法では、すべての op 木生成は、パーサ内のアクションブロックによって 呼び出される op.c 内の新しく定義された関数によって処理されます。 これらはパーサスタック上で状態を保持するのではなく、メインの PL_parser 構造体によって参照される専用のメモリ構造内に保持されます。 これは、他のコードからほとんど不透明であり、新しい関数経由でのみ アクセスされることを意図しています。

    This new arrangement is intended to allow more flexible code generation and additional features to be developed in the future.

    この新しい配置は、より柔軟なコード生成と将来開発される追加機能を 可能にすることを目的としています。

  • Three new API functions have been added to interact with the regexp global match position stored in an SV. These are sv_regex_global_pos_get(), sv_regex_global_pos_set() and sv_regex_global_pos_clear(). Using these API functions avoids XS modules needing to know about or interact directly with the way this position is currently stored, which involves the PERL_MAGIC_regex_global magic type.

    SV に保存された正規表現のグローバルなマッチング位置と相互作用するために、 三つの新しい API 関数が追加されました。 これらは、sv_regex_global_pos_get(), sv_regex_global_pos_set(), sv_regex_global_pos_clear() です。 これらの API 関数を使うと、XSモジュールが、 PERL_MAGIC_regex_global マジカル型に関連する、この位置が現在保存されている 方法を認識したり、直接対話したりする必要がなくなります。

  • New SvVSTRING API macro

    新しい SvVSTRING API マクロ

    A new API macro has been added, which is used to obtain the second string buffer out of a "vstring" SV, in a manner similar to the SvPV macro which obtains the regular string buffer out of a regular SV.

    通常の文字列バッファを通常の SV から取得する SvPV マクロと同様の方法で、 "vstring" SV から 2 番目の文字列バッファを取得するために使われる 新しい API マクロが追加されました。

        STRLEN len;
        const char *vstr_pv = SvVSTRING(sv, vstr_len);

    "SvVSTRING" in perlapi を参照してください。

バグ修正の抜粋

  • Fix null pointer dereference in S_SvREFCNT_dec [GH #16627].

    S_SvREFCNT_dec のヌルポインタの逆参照を修正しました [GH #16627]。

  • Fix feature 'class' Segmentation fault in DESTROY [GH #22278].

    DESTROY の feature 'class' セグメンテーションフォルトを修正しました [GH #22278]。

  • chdir now returns real booleans (as its documentation describes), not integers. This means the result of a failed chdir now stringifies to '', not '0'.

    chdir は、整数ではなく(文書で説明されているように)本当の真偽値を 返すようになりました。 これは、失敗した chdir の結果が、'0' ではなく '' に 文字列化されることを意味します。

    [GH #22365]

  • Compound assignment operators return lvalues that can be further modified:

    複合代入演算子は、さらに変更可能な左辺値を返します。

        ($x &= $y) += $z;
        # Equivalent to:
        #  $x &= $y;
        #  $x += $z;

    However, the separate numeric/string bitwise operators provided by the bitwise feature, &= ^= |= &.= ^.= |.=, did not return such lvalues:

    ただし、bitwise 機能 で提供されている 独立した数値/文字列ビット単位演算子 &= ^= |= &.= ^.= |.= は、 このような左辺値を返していませんでした:

        use feature qw(bitwise);
        ($x &= $y) += $z;
        # Used to die:
        #  Can't modify numeric bitwise and (&) in addition (+) at ...

    This has been corrected. [GH #22412]

    これは修正されました。 [GH #22412]

  • Starting in v5.39.8, "strftime" in POSIX would crash or produce odd errors (such as Out of memory in perl:util:safesysmalloc) when given a format string that wasn't actually a string, but a number, undef, or an object (even one with overloaded string conversion).

    v5.39.8 以降、"strftime" in POSIX では、フォーマット文字列が実際には 文字列ではなく、数値、undef、またはオブジェクト(オーバーロードされた 文字列変換を持つものであっても)が与えられた場合、クラッシュしたり、 奇妙なエラー (Out of memory in perl:util:safesysmalloc など)が 発生したりしていました。

    Now strftime stringifies its first argument, as before. [GH #22498]

    strftime は以前と同様に最初の引数を文字列化するようになりました。 [GH #22498]

    Also, fix POSIX::strftime() [GH #22369].

    また、POSIX::strftime() も修正されました [GH #22369]。

  • pack("p", ...) and pack("P", ...) now SvPV_force() the supplied SV unless it is read only. This will remove CoW from the SV and prevents code that writes through the generated pointer from modifying the value of other SVs that happen the share the same CoWed string buffer.

    pack("p", ...)pack("P", ...) は、読み込み専用でない限り、 指定された SV を SvPV_force() するようになりました。 これにより、SV から CoW が削除され、生成されたポインタを介して 書き込むコードが、同じ CoW 文字列バッファを共有する他の SV の値を 変更してしまうことを防ぎます。

    Note: this does not make pack("p",... ) safe, if the SV is magical then any writes to the buffer will likely be discarded on the next read. [GH #22380]

    注意: これは pack("p",... ) を安全にはしません; SV がマジカルな場合、バッファへの書き込みは次の読み取りで 破棄される可能性があります。 [GH #22380]

  • Enforce no feature "bareword_filehandles" for bareword file handles that have strictness removed because they are used in open() with a "dup" mode, such as in open my $fh, ">&", THISHANDLE. [GH #22568]

    open my $fh, ">&", THISHANDLE のように、"dup" モードで open() で使われているために strict 性が削除された裸の単語の ファイルハンドルに対して、no feature "bareword_filehandles" を 強制します。 [GH #22568]

  • Using goto to tail call, or using the call_sv() and related APIs to call, any of trim(), refaddr(), reftype(), ceil(), floor() or stringify() in the builtin:: package would crash or assert due to a TARG handling bug. [GH #22542]

    goto を使って末尾呼び出しを行うか、呼び出しに call_sv() および関連する API を使うと、builtin:: パッケージの trim(), refaddr(), reftype(), ceil(), floor(), stringify() のいずれかが、TARG 処理のバグにより クラッシュまたはアサートしていました。 [GH #22542]

  • Fix sv_gets() to accept a SSize_t append offset instead of I32. This prevents integer overflows when appending to a large SV for readpipe aka qx// and readline. https://www.perlmonks.org/?node_id=11161665

    I32 の代わりに SSize_t 追加オフセットを受け入れるように sv_gets() を修正しました。 これにより、readpipe またの名を qx// および readline のために大きな SV に追加するときに整数オーバーフローを 防ぐことができます。 https://www.perlmonks.org/?node_id=11161665

  • Fixed an issue where utf8n_to_uvchr failed to correctly identify certain invalid UTF-8 sequences as invalid. Specifically, sequences that start with continuation bytes or unassigned bytes could cause unexpected behavior or a panic. This fix ensures that such invalid sequences are now properly detected and handled. This correction also resolves related issues in modules that handle UTF-8 processing, such as Encode.pm.

    utf8n_to_uvchr が特定の無効な UTF-8 シーケンスを無効として 正しく識別できない問題が修正されました。 特に、継続バイトまたは割り当てられていないバイトで始まる シーケンスは、予期しない動作またはパニックを引き起こす可能性がありました。 この修正により、このような無効なシーケンスが適切に検出され、 処理されるようになります。 この修正により、Encode.pm などの UTF-8 処理を処理するモジュールの 関連する問題も解決されます。

  • The perl parser would erroneously parse some POD directives as if they were =cut. Some other POD directives whose names start with cut, prematurely terminating an embedded POD section. The following cases were affected: cut followed by a digit (e.g. =cut2studio), cut followed by an underscore (e.g. =cut_grass), and in string eval, any identifier starting with cut (e.g. =cute). [GH #22759]

    perl パーサは、一部の POD 指示子を =cut であるかのように誤って パースしていました。 名前が cut で始まる他のいくつかの POD 指示子は、埋め込まれた POD 節を途中で終了させていました。 次のケースが影響を受けました: cut の後に数字が続く(例: =cut2studio)、 cut の後にアンダースコアが続く(例: =cut_grass)、 文字列 eval では、cut で始まる任意の識別子(例: =cute)。 [GH #22759]

  • Builds with -msse and quadmath on 32-bit x86 systems would crash with a misaligned access early in the build. [GH #22577]

    32 ビット x86 システムで -msse と quadmath を使ったビルドを行うと、 ビルドの初期段階でアライメントがずれたアクセスによりクラッシュします。 [GH #22577]

  • On threaded builds on POSIX-like systems, if the perl signal handler receives a signal, we now resend the signal to the main perl thread. Previously this would crash. [GH #22487]

    POSIX ライクなシステムのスレッド化されたビルドでは、perl シグナルハンドラが シグナルを受信した場合、メインの perl スレッドにシグナルを 再送するようになりました。 以前はクラッシュしていました。 [GH #22487]

  • Declaring a lexically scoped array or hash using state within a subroutine and then immediately returning no longer triggers a "Bizarre copy of HASH/ARRAY in subroutine exit" error. [GH #18630]

    サブルーチン内で state を使ってレキシカルスコープの配列または ハッシュを宣言し、直後に返っても、 "Bizarre copy of HASH/ARRAY in subroutine exit" エラーが 発生しなくなりました。 [GH #18630]

  • builtin::trim() didn't properly clear TARG which could result in out of date cached numeric versions of the value being used on a second evaluation. Properly clear any cached values. [GH #22784]

    builtin::trim()TARG を適切にクリアしていませんでした; これにより、2 番目の評価で使われた値のキャッシュされた 数値版が古くなる可能性がありました。 キャッシュされた値を適切にクリアするようになりました。 [GH #22784]

  • "shmread" in perlfunc and "shmwrite" in perlfunc are no longer limited to 31-bit values and can use all the available bits on a platform for their POS and SIZE arguments. [GH #22895]

    "shmread" in perlfunc"shmwrite" in perlfunc はもはや 31 ビット値に 制限されなくなり、POS 引数と SIZE 引数にプラットフォーム上で使用可能な すべてのビットを使えるようになりました。 [GH #22895]

  • "shmread" in perlfunc is now better behaved if VAR is not a plain string. If VAR is a tied variable, it calls STORE once; previously, it would also call FETCH, but without using the result. If VAR is a reference, the referenced entity has its refcount properly decremented when VAR is turned into a string; previously, it would leak memory. [GH #22898]

    VAR がプレーンな文字列でない場合の "shmread" in perlfunc の動作が改善されました。 VAR が tie された変数の場合、STORE を 1 回呼び出します; 以前は、結果を使わない FETCH も呼び出していました。 VAR がリファレンスの場合、VAR が文字列に変換されると、参照されるエンティティの 参照カウントが適切に減少します; 以前は、メモリリークしていました。 [GH #22898]

  • The $SIG{__DIE__} and $SIG{__WARN__} handlers can no longer be invoked recursively, either deliberately or by accident, as described in "%SIG" in perlvar. That is, when an exception (or warning) triggers a call to a $SIG{__DIE__} (or $SIG{__WARN__}) handler, further exceptions (or warnings) are processed directly, ignoring %SIG until the original $SIG{__DIE__} (or $SIG{__WARN__}) handler call returns. [GH #14527], [GH #22984], [GH #22987]

    "%SIG" in perlvar で説明されているように、$SIG{__DIE__} および $SIG{__WARN__} ハンドラは、意図的であるか偶発的であるかにかかわらず、 もはや再帰的に呼び出すことができなくなりました。 つまり、例外(または警告)によって $SIG{__DIE__} (または $SIG{__WARN__})ハンドラの呼び出しが引き起こされると、 元の $SIG{__DIE__} (または $SIG{__WARN__}) ハンドラの呼び出しから 返るまで、%SIG を無視して、それ以降の例外(または警告)が 直接処理されます。 [GH #14527], [GH #22984], [GH #22987]

  • The ObjectFIELDS() for an object and xhv_class_fields for the object's stash weren't always NULL or not-NULL, confusing sv_dump() (and hence Devel::Peek's Dump()) into crashing on an object with no defined fields in some cases. [GH #22959]

    オブジェクトの ObjectFIELDS() とオブジェクトのスタッシュの xhv_class_fields は、常に NULL または非 NULL であるとは限らず、 sv_dump() (したがって Devel::Peek の Dump()) を混乱させ、 フィールドが定義されていないオブジェクトでクラッシュする場合がありました。 [GH #22959]

  • When comparing strings when using a UTF-8 locale, the behavior was previously undefined if either or both contained an above-Unicode code point, such as 0x110000. Now all such code points will collate the same as the highest Unicode code point, U+10FFFF. [GH #22989]

    UTF-8 ロケールを使って文字列を比較する場合、以前は、一方または両方に 0x110000 などの Unicode 以上の符号位置が含まれている場合の振る舞いは 未定義でした。 このような符号位置はすべて、最も高い Unicode 符号位置である U+10FFFF と同じように照合されるようになりました。 [GH #22989]

  • In regexes, the contents of \g{...} backreferences are now properly validated. Previously, \g{1 FOO} was silently parsed as \g{1}, ignoring everything after the first number. [GH #23050]

    正規表現内で、 \g{...} 後方参照の内容が適切に検証されるようになりました。 以前は、\g{1 FOO} は暗黙に \g{1} としてパースされ、 最初の数値以降はすべて無視されていました。 [GH #23050]

  • A run-time pattern which contained a code block which recursed back to the same bit of code which ran that match, could cause a crash. [GH #22869]

    マッチングを実行したコードの同じ部分に再帰したコードブロックを含む 実行時パターンは、クラッシュを引き起こす可能性がありました。 [GH #22869]

    For example:

    例えば:

        my $r = qr/... (?{ foo() if ... }) .../;
        sub foo { $string =~ $r }
        foo()
  • In some cases an eval would not add integer parts to the source lines saved by the debugger. [GH #23151]

    場合によっては、eval がデバッガによって保存されたソース行に 整数部分を追加しないことがありました。 [GH #23151]

  • In debugging mode, perl saves source lines from all files (plus an indication of whether each line is breakable) for use by the debugger. The internal storage format has been optimized to use less memory. This should save 24 bytes per stored line for 64-bit systems, more for -Duselongdouble or -Dusequadmath builds. Discussed in [GH #23171].

    デバッグモードでは、perl はデバッガで使うためにすべてのファイルの ソース行(および各行がブレーク可能かどうかの印)を保存します。 内部ストレージ形式は、より少ないメモリを使うように最適化されます。 これにより、64 ビットシステムでは保存された行ごとに 24 バイトが節約され、 -Duselongdouble または -Dusequadmath ビルドではさらに節約されます。 [GH #23171] で 議論されています。

  • Ensure cloning the save stack for fork emulation doesn't duplicate freeing the RExC state. [GH #23022]

    フォークエミュレーション用の保存スタックのクローンを作成しても、 RExC 状態の解放が重複しないようになりました。 [GH #23022]

  • Smartmatch against a code reference that uses a loop exit such as last would crash perl. [GH #16608]

    last などのループ出口を使うコード参照に対してスマートマッチングを行うと、 perl がクラッシュしていました。 [GH #16608]

  • Class initializers and ADJUST blocks, per perlclass, that called last or other loop exits would crash perl. Same cause as for [GH #16608].

    perlclass によるクラス初期化子や ADJUST ブロックが last や 他のループ終了を呼び出すと、perl がクラッシュしていました。 [GH #16608] と同じ原因です。

  • Exceptions thrown and caught entirely within a defer {} or finally {} block no longer stop the outer run-loop.

    defer {} または finally {} ブロック内で完全にスローおよび キャッチされた例外は、外側の実行ループを停止しなくなりました。

    Code such as the following would stop running the contents of the defer block once the inner exception in the inner try/catch block was caught. This has now been fixed, and runs as expected. ([GH #23064]).

    次のようなコードは、内部 try/catch ブロックの内部例外が キャッチされると、defer ブロックの内容の実行を停止していました。 これは現在修正されており、期待どおりに実行されます。 ([GH #23064])。

        defer {
            try { die "It breaks\n"; }
            catch ($e) { warn $e }
    
            say "This line would never run";
        }
  • "readline" in perlfunc now clears the error flag if an error occurs when reading and that error is EAGAIN or EWOULDBLOCK. This allows code that depended on readline to clear all errors to ignore these relatively harmless errors. [GH #22883]

    "readline" in perlfunc は、読み込み中にエラーが発生し、そのエラーが EAGAIN または EWOULDBLOCK である場合、エラーフラグを クリアするようになりました。 これにより、readline に依存するコードがすべてのエラーをクリアして、 これらの比較的無害なエラーを無視できるようになります。 [GH #22883]

  • open automatically creates an anonymous temporary file when passed undef as a filename:

    open は、undef をファイル名として渡すと、自動的に 匿名一時ファイルを作成します:

        open(my $fh, "+>", undef) or die ...

    This is supposed to work only when the undefined value is the one returned by the undef function.

    これは、未定義値が undef 関数によって返された値である場合にのみ 機能することになっています。

    In perls before 5.41.3, this caused a problem due to the fact that the same undefined value can be generated by lookups of non-existent hash keys or array elements, which can lead to bugs in user-level code (reported as [GH #22385]).

    5.41.3 より前の perl では、存在しないハッシュキーや配列要素の照会によって 同じ未定義値が生成される可能性があり、ユーザレベルのコードで バグが発生する可能性があるため、これは問題を引き起こしていました ([GH #22385] として 報告されています)。

    In 5.41.3, additional checks based on the syntax tree of the call site were added, which fixed this issue for some number of common cases, though not all of them, at the cost of breaking the ability of APIs that wrap open to expose its anonymous file mode. A notable example of such an API is autodie.

    5.41.3 では、コールサイトの構文木に基づくチェックが追加され、 すべてではないけれどもいくつかの一般的なケースでこの問題が修正されましたが、 その代償として、open をラップして匿名ファイルモードを公開する API の機能が破壊されました。 このような API の注目すべき例は、autodie です。

    This release reverts to the old problem in preference to the new one for the time being.

    このリリースでは、当面の間、新しい問題よりも古い問題を優先して巻き戻します。

Obituaries

Abe Timmerman

Abe Timmerman (ABELTJE) passed away on August 15, 2024.

Abe Timmerman (ABELJE) は、2024 年 8 月 15 日に亡くなりました。

Since 2002, Abe built and maintained the Test::Smoke project: "a set of scripts and modules that try to run the Perl core tests on as many configurations as possible and combine the results into an easy to read report". Smoking Perl on as many platforms and configurations as possible has been instrumental in finding bugs and developing patches for those bugs.

2002 年以来、Abe は Test::Smoke プロジェクトを構築し、維持してきました: これは、「できるだけ多くの構成で Perl コアテストを実行し、結果を 読みやすいレポートに結合しようとするスクリプトとモジュールのセット」です。 できるだけ多くのプラットフォームと構成で Perl を smoke することは、 バグを見つけ、それらのバグに対するパッチを開発するのに役立ちました。

Abe was a regular attendee of the Perl Toolchain Summit (née Perl QA Hackathon), the Dutch Perl Workshop and the Amsterdam.pm user group meetings. With his kindness, his smile and his laugh, he helped make Perl and its community better.

Abeは、Perl Toolchain Summit (旧称 Perl QA Hackathon), Dutch Perl Workshop, Amsterdam.pm ユーザーグループミーティングに 定期的に参加していました。 彼の優しさと笑顔と笑いで、彼は Perl とそのコミュニティをより良くする 手助けをしました。

Abeltje's memorial card said "Grab every opportunity to have a drink of bubbly. This is an opportunity". We'll miss you Abe, and we'll have a drink of bubbly in your honor.

Abeltje のメモリアルカードには、「あらゆる機会をつかんで、 シャンパンを一杯飲みましょう。これがその機会です」と書かれていました。 私たちはあなたがいなくて寂しいです、 Abe, そして私たちはあなたの名誉のためにシャンパンを一杯飲みましょう。

Andrew Main

Andrew Main (ZEFRAM) passed away on March 10, 2025.

Andrew Main (ZEFRAM) は 2025 年 3 月 10 日に亡くなりました。

Zefram was a brilliant person, seemingly knowledgeable in everything and happy to impart his knowledge and share his striking insights with a gentle, technical demeanor that often failed to convey the genuine care with which he communicated.

Zefram は聡明な人で、あらゆることに精通しているように見え、 彼の知識を喜んで伝え、彼の印象的な洞察を穏やかで技術的な態度で共有しましたが、 彼が本当に心を込めてコミュニケーションしていたことが 伝わらないこともしばしばありました。

It would be impossible to overstate the impact that Zefram has had on both the language and culture of Perl over the years. From his countless contributions to the code-base, to his often quirky but always distinctive appearances at conferences and gatherings, his influence and memory are sure to endure long into the future.

Zefram が長年にわたって Perl の言語と文化の両方に与えてきた影響は、 いくら強調してもしすぎることはありません。 コードベースへの数え切れないほどの貢献から、 会議や集まりでのしばしば奇抜ではあるが常に特徴的な登場まで、 彼の影響力と記憶は将来にわたって長く続くことは間違いありません。

Zefram wished to have no designated memorial location in meatspace. His designated memorial location in cyberspace is http://www.fysh.org/~zefram/personal/.

Zefram は、現実空間に特定の追悼の場所を持たないことを望んでいました。 サイバー空間における彼の追悼の場所は http://www.fysh.org/~zefram/personal/ です。

謝辞

Perl 5.42.0 represents approximately 13 months of development since Perl 5.40.0 and contains approximately 280,000 lines of changes across 1,600 files from 65 authors.

Perl 5.42.0 は、Perl 5.40.0 以降、65 人の作者によって、 1,600 のファイルに約 280,000 行の変更を加えて、 約 13 ヶ月開発されてきました。

Excluding auto-generated files, documentation and release tools, there were approximately 94,000 lines of changes to 860 .pm, .t, .c and .h files.

自動生成ファイル、文書、リリースツールを除くと、860 の .pm, .t, .c, .h ファイルに約 94,000 行の変更を加えました。

Perl continues to flourish into its fourth decade thanks to a vibrant community of users and developers. The following people are known to have contributed the improvements that became Perl 5.42.0:

Perl は、活気のあるユーザーと開発者のコミュニティのおかげで 30 年を超えて 繁栄しています。 以下の人々が、Perl 5.42.0 になるための改良に貢献したことが分かっています:

Aaron Dill, Andrei Horodniceanu, Andrew Ruthven, Antanas Vaitkus, Aristotle Pagaltzis, Branislav Zahradník, brian d foy, Chad Granum, Chris 'BinGOs' Williams, Craig A. Berry, Dabrien 'Dabe' Murphy, Dagfinn Ilmari Mannsåker, Dan Book, Daniel Dragan, Dan Jacobson, David Cantrell, David Mitchell, E. Choroba, Ed J, Ed Sabol, Elvin Aslanov, Eric Herman, Erik Huelsmann, Gianni Ceccarelli, Graham Knop, hbmaclean, H.Merijn Brand, iabyn, James E Keenan, James Raspass, Johan Vromans, Karen Etheridge, Karl Williamson, Leon Timmermans, Lukas Mai, Marek Rouchal, Marin Tsanov, Mark Fowler, Masahiro Honma, Max Maischein, Paul Evans, Paul Johnson, Paul Marquess, Peter Eisentraut, Peter John Acklam, Philippe Bruhat (BooK), pyrrhlin, Reini Urban, Richard Leach, Robert Rothenberg, Robin Ragged, Russ Allbery, Scott Baker, Sergei Zhmylev, Sevan Janiyan, Sisyphus, Štěpán Němec, Steve Hay, TAKAI Kousuke, Thibault Duponchelle, Todd Rinaldo, Tony Cook, Unicode Consortium, Vladimír Marek, Yves Orton.

これはバージョンコントロール履歴から自動的に生成しているので、ほぼ確実に 不完全です。 特に、Perl バグトラッカーに問題を報告をしてくれた (とてもありがたい)貢献者の 名前を含んでいません。

Many of the changes included in this version originated in the CPAN modules included in Perl's core. We're grateful to the entire CPAN community for helping Perl to flourish.

このバージョンに含まれている変更の多くは、Perl コアに含まれている CPAN モジュール由来のものです。 私たちは Perl の発展を助けている CPAN コミュニティ全体に感謝します。

For a more complete list of all of Perl's historical contributors, please see the AUTHORS file in the Perl source distribution.

全ての Perl の歴史的な貢献者のより完全な一覧については、どうか Perl ソース 配布に含まれている AUTHORS を参照してください。

バグ報告

If you find what you think is a bug, you might check the perl bug database at https://github.com/Perl/perl5/issues. There may also be information at https://www.perl.org/, the Perl Home Page.

もしバグと思われるものを見つけたら、 https://github.com/Perl/perl5/issues にある perl バグデータベースを 確認してください。 Perl ホームページ、http://www.perl.org/ にも情報があります。

If you believe you have an unreported bug, please open an issue at https://github.com/Perl/perl5/issues. Be sure to trim your bug down to a tiny but sufficient test case.

もしまだ報告されていないバグだと確信したら、 https://github.com/Perl/perl5/issues にイシューを登録してください。 バグの再現スクリプトを十分小さく、しかし有効なコードに切りつめることを 意識してください。

If the bug you are reporting has security implications which make it inappropriate to send to a public issue tracker, then see "SECURITY VULNERABILITY CONTACT INFORMATION" in perlsec for details of how to report the issue.

報告しようとしているバグがセキュリティに関するもので、公開されている イシュートラッカーに送るのが不適切なものなら、バグの報告方法の詳細について "SECURITY VULNERABILITY CONTACT INFORMATION" in perlsec を参照してください。

感謝を伝える

If you wish to thank the Perl 5 Porters for the work we had done in Perl 5, you can do so by running the perlthanks program:

もし Perl 5 でなされた作業について Perl 5 Porters に感謝したいと考えたなら、 perlthanks プログラムを実行することでそうできます:

    perlthanks

This will send an email to the Perl 5 Porters list with your show of thanks.

これは Perl 5 Porters メーリングリストにあなたの感謝の言葉をメールします。

SEE ALSO

The Changes file for an explanation of how to view exhaustive details on what changed.

変更点の完全な詳細を見る方法については Changes ファイル。

The INSTALL file for how to build Perl.

Perl のビルド方法については INSTALL ファイル。

The README file for general stuff.

一般的なことについては README ファイル。

The Artistic and Copying files for copyright information.

著作権情報については Artistic 及び Copying ファイル。