名前

perldelta - what is new for perl v5.44.0

perl5440delta - perl v5.44.0 での変更点

説明

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

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

コアの拡張

Named Parameters in Signatures

This adds a major new ability to subroutine signatures, allowing callers to pass parameters by name/value pairs rather than by position.

これにより、サブルーチンシグニチャに新しい機能が追加され、 呼び出し側は引数を位置ではなく、名前と値の組で渡せるようになります。

    sub f ($x, $y, :$alpha, :$beta = undef) { ... }

    f( 123, 456, alpha => 789 );

Originally specified in PPC0024.

元々は PPC0024 で定義されていました。

This feature is currently considered experimental, and is described in further detail in "Signatures" in perlsub.

この機能は現在 実験的 と見なされており、"Signatures" in perlsub で さらに詳細に説明されています。

Multi-variable foreach can now use aliased references

Perl version 5.22 introduced reference aliases, allowing a foreach loop iteration variable to create new aliases to references. Perl version 5.36 introduced foreach loops with multiple variables, consuming more than one input list item on each iteration. New in this version, the two features may now be used together, allowing multiple iteration variables where any of them are permitted to be reference aliases.

Perl バージョン 5.22 では別名参照が導入され、foreach ループ反復変数を 使用して参照への新しい別名を作成できるようになりました。 Perl バージョン 5.36 では、複数の変数を持つ foreach ループが導入され、 各反復で複数の入力リスト項目が使われるようになりました。 このバージョンでは新たに二つの機能が同時に使えるようになり、 いずれかを参照別名として使用できる複数の反復変数が 使えるようになりました。

    use v5.44;
    use feature qw( refaliasing declared_refs );

    my %hash = (
        one => [1],
        two => [2, 2],
    );

    foreach my ( $key, \@items ) ( %hash ) {
        say "The $key array contains: @items";
    }

Currently both the refaliasing and declared_refs features remain experimental.

現在、refaliasingdeclared_refsの両方の機能はexperimentalのままである。 (TBR)

Enhanced operation of regular expression patterns under /xx

Experimentally, the /xx pattern modifier can allow bracketed character classes (e.g., [a-zA-Z] to extend across multiple lines and to contain comments, and to warn you of potential cases where a portion of a pattern inadvertently has been treated as a comment instead of what you intended. This behavior is enabled by use feature "enhanced_xx". See "/x and /xx" in perlre.

実験的に、/xxパターン修飾子を使用すると、括弧で囲まれた文字クラス(,[a-zA-Z])を複数行に拡張してコメントを含めたり、パターンの一部が意図したものではなく誤ってコメントとして扱われた可能性がある場合に警告を表示したりできます。 この動作は、use feature "enhanced_xx"によって有効になります。 "/xおよび/xx" in perlreを参照してください。 (TBR)

Unicode 17.0 is supported

https://www.unicode.org/versions/Unicode17.0.0/を参照してください。 (TBR)

New source of entropy for PRNG seeding

Perl now uses the getentropy() system call to fetch random bytes suitable for seeding the internal PRNG. Previously Perl would read raw bytes from the /dev/urandom device. Perl now seeds itself in this order (and falls through upon failure):

Perlは、getentropy()システムコールを使用して、内部PRNGのシードに適したランダムなバイトをフェッチするようになりました。 以前は、Perlは/dev/urandomデバイスから生のバイトを読み取りました。 Perlは現在、次の順序で自身をシードします(失敗すると失敗します)。 (TBR)

  1. getentropy() on systems that support this call (Linux, BSD, MacOS)

    このコールをサポートするシステム上のgetentropy()(Linux, BSD, MacOS) (TBR)

  2. /dev/urandom on systems that have it

    /dev/urandomを実行します。 (TBR)

  3. Hash of internal state variables: Unix time, process ID, and pointer value

    内部状態変数のハッシュ:Unix時間、プロセスID、およびポインタ値 (TBR)

Note that the internal PRNG is still unsuitable for security applications. See "rand EXPR" in perlfunc for a discussion of security.

内部PRNGはセキュリティアプリケーションにはまだ適していないことに注意してください。 セキュリティの詳細については、"rand EXPR" in perlfuncを参照してください。 (TBR)

セキュリティ

CVE-2026-8376 - Buffer overflow in Perl_study_chunk

Perl_study_chunk in regcomp_study.c checked the size of the joined substring buffer in characters rather than bytes. On 32-bit builds, this can lead to an integer overflow of the size of the buffer leading to out-of-bounds writes.

regcomp_study.cのPerl_study_chunkは、結合された部分文字列バッファのサイズをバイト数ではなく文字数でチェックしました。 32ビット構築では、これによりバッファサイズの整数オーバーフローが発生し、範囲外の書き込みが発生する可能性があります。 (TBR)

CVE-2026-57432 - Buffer overflow in S_measure_struct

If you call pack or unpack to operate on a structure whose computed size is too large to fit in memory, an integer overflow could happen that would result in a buffer overflow. This usually happens as a result of embedding a large number as the repeat count for an item.

packまたはunpackを呼び出して、計算サイズが大きすぎてメモリに収まらない構造体を操作すると、整数オーバーフローが発生し、バッファオーバーフローが発生する可能性があります。 これは通常、アイテムの繰り返し回数として大きな数値を埋め込んだ結果として発生します。 (TBR)

CVE-2026-13221 - Regex trie 16-bit field overflow

The trie optimization in the regex engine could overflow in an alternation with more than ~65k branches. This could cause both false positives and false negatives on such regular expressions.

正規表現エンジンでのトライ最適化は、約65,000以上の分岐を持つ代替でオーバーフローする可能性がある。 これにより、このような正規表現では、偽陽性と偽陰性の両方が発生する可能性がある。 (TBR)

互換性のない変更

Unicode rules are now fully enforced on identifier and regular expression group names.

Before Unicode, Perl accepted any \w character in an identifier or other name, except the first character couldn't be a digit. Later, Unicode created two properties that described this. Even later, they found those properties to be insufficient, and created two new similar properties. These are the ones that perl has intended to use since: \p{XID_Start} and \p{XID_Continue}. (The X stands for "eXtended" and indicates these are the more modern versions.)

Unicode以前、Perlは識別子やその他の名前に\w文字を受け入れていましたが、最初の文字は数字ではありませんでした。 その後、Unicodeはこれを記述する2つのプロパティを作成しました。 さらに後になって、彼らはこれらのプロパティが不十分であることを発見し、2つの新しい同様のプロパティを作成しました。 これらはperlが使用しようとしたものです:\p{XID_Start}\p{XID_Continue}です(Xは"eXtended"を表し、これらがより新しいバージョンであることを示しています)。 (TBR)

(And even later, long after Perl identifier rules were formed using the above properties, Unicode added recommendations to further restrict legal identifier names. These were added to counter cases where, for example, programmers snuck code past reviewers using characters that look like other ones. The two properties are Identifier_Status and Identifier_Type. See https://www.unicode.org/reports/tr39/. Perl currently doesn't do anything with these, except to furnish you the ability to use them in regular expressions.)

(さらに後になって、上記のプロパティを使用してPerl識別子ルールが形成されたずっと後になっても、Unicodeは正当な識別子名をさらに制限する推奨事項を追加しました。 これらは、たとえば、プログラマが他の文字に似た文字を使用してレビュー担当者を越えてコードを忍び込ませる場合に対抗するために追加されました。 2つのプロパティはIdentifier_StatusIdentifier_Typeです。 https://www.unicode.org/reports/tr39/を参照してください。 Perlは現在、正規表現で使用できる機能を提供することを除いて、これらに対して何もしていません。 ) (TBR)

We soon discovered that there were 14 characters that match XID_Start and XID_Continue that don't also match \w. To avoid breaking code that had long relied on \w, we chose to not add those to the list of acceptable identifier characters.

私たちはすぐに、XID_StartXID_Continueに一致し、\wにも一致しない14文字があることを発見しました。 長い間\wに依存していたコードを壊すことを避けるために、私たちはこれらを許容される識別子文字のリストに追加しないことを選択しました。 (TBR)

It turns out that there are about 160 characters that match \w but not the Unicode XID properties. Thus they are illegal according to Unicode. Those are now explicitly forbidden in both Perl identifiers and regular expression group names. Previously, it was likely that their use in identifiers wouldn't work anyway; they could be accepted initially as legal, but other code would later reject them, but with a message that had nothing to do with the underlying problem. However group names in regular expression patterns could contain illegal continuation characters and have a higher probability of not being caught. That is now changed.

\wにマッチするがUnicodeのXIDプロパティにマッチしない文字が約160個あることが判明しました。 したがって、これらはUnicodeによれば不正です。 これらは現在、Perl識別子と正規表現グループ名の両方で明示的に禁止されています。 以前は、識別子での使用はいずれにしても機能しない可能性がありました。 これらは最初は正当なものとして受け入れられましたが、他のコードは後でそれらを拒否しましたが、根本的な問題とは関係のないメッセージが表示されました。 しかし、正規表現パターンのグループ名には不正な継続文字が含まれている可能性があり、検出されない可能性が高くなりました。 これが変更されました。 (TBR)

Only programs that do use utf8 can be affected, and then only characters that appear in the 2nd or later positions of the name. The characters that an identifier name can begin with are unchanged.

use utf8を実行するプログラムのみが影響を受け、名前の2番目以降の位置にある文字のみが影響を受けます。 識別子名の先頭文字は変更されません。 (TBR)

130 of the now unacceptable characters are 5 sets of 26 Latin letters that are enclosed by some shape, such as CIRCLED LATIN CAPITAL LETTER N. Another 8 are generic modifiers that add shapes around other characters; 5 are modifiers to Cyrillic numbers; and 16 are Arabic ligatures and isolated forms. The other two are GREEK YPOGEGRAMMENI and VERTICAL TILDE.

現在受け入れられない文字のうち130は、CIRCLED LATIN CAPITAL LETTER Nのように何らかの形で囲まれた26個のラテン文字の5セットである。 他の8つは他の文字の周りに形を追加する一般的な修飾子であり、5つはキリル数字の修飾子であり、16はアラビアの合字と孤立した形である。 他の2つはGREEK YPOGEGRAMMENIとVERTICAL TILDEである。 (TBR)

Deprecations

  • Deprecated since 5.12, using goto to jump into the body of a loop or other block construct from outside is no longer permitted. [GH #23618]

    5.12から非推奨になり、gotoを使用して外部からループやその他のブロック構造の本体にジャンプすることはできなくなった。 [GH #23618] (TBR)

  • m/...[...].../xx has new restrictions

    m/.[.]./xxに新しい制限が追加されました。 (TBR)

    Using an unescaped # or literal vertical space is now deprecated in a regular expression bracketed character class that is compiled with the /xx modifier. These still work, but deprecation warnings will be generated unless turned off or the constructs are cured as follows.

    /xx修飾子を使用してコンパイルされた正規表現の角括弧で囲まれた文字クラスで、エスケープされていない#またはリテラルの垂直スペースを使用することは非推奨になりました。 これらはまだ機能しますが、無効にするか、次のように構文を修正しない限り、非推奨の警告が生成されます。 (TBR)

    • Escape a # by preceding it with a backslash, like in

      #をエスケープするには、次のように前にバックスラッシュを付けます。 (TBR)

       m/ [ % \# ( ) ] /xx
    • Use constructs like \n instead of literal vertical space.

      リテラルの垂直スペースの代わりに、\nのような構文を使用します。 (TBR)

性能改善

  • Simple (non-overflowing) addition (+), subtraction (-) and multiplication (*) of integers are slightly sped up, as long as sufficient underlying C compiler support is available.

    整数の単純な(オーバーフローしない)加算(+)、減算(-)、乗算(*)は、基礎となるCコンパイラが十分にサポートされている限り、わずかに高速化される。 (TBR)

  • Populating a hash from a list of key/value pairs when the keys are constant string operands known at compile time is commonly now faster. [GH #24228]

    キーがコンパイル時に既知の定数文字列オペランドである場合に、キー/値ペアのリストからハッシュを生成することが、一般的に高速になった。 [GH #24228] (TBR)

  • Processing of signatures at the start of a subroutine under the signatures feature is now more efficient at runtime.

    Cの<signatures>機能でサブルーチンの開始時にシグネチャを処理することが、実行時により効率的になった。 (TBR)

モジュールとプラグマ

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

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

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

    This fixes CVE-2026-9538, CVE-2026-42496, and CVE-2026-42497.

    これにより、CVE-2026-9538、CVE-2026-42496、およびCVE-2026-42497が修正されます。 (TBR)

  • attributes has been upgraded from version 0.36 to 0.37.

    attributes はバージョン 0.36 から 0.37 に更新されました。

  • B has been upgraded from version 1.89 to 1.92.

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

  • B::Concise has been upgraded from version 1.007 to 1.012.

    B::Concise はバージョン 1.007 から 1.012 に更新されました。

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

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

  • charnames has been upgraded from version 1.50 to 1.51.

    charnames はバージョン 1.50 から 1.51 に更新されました。

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

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

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

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

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

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

  • CPAN::Meta has been upgraded from version 2.150010 to 2.150013.

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

  • CPAN::Meta::Requirements has been upgraded from version 2.143 to 2.145.

    CPAN::Meta::Requirements はバージョン 2.143 から 2.145 に更新されました。

  • DB_File has been upgraded from version 1.859 to 1.860.

    DB_File はバージョン 1.859 から 1.860 に更新されました。

  • Encode has been upgraded from version 3.21 to 3.24.

    Encode はバージョン 3.21 から 3.24 に更新されました。

  • English has been upgraded from version 1.11 to 1.12.

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

  • Errno has been upgraded from version 1.38 to 1.39.

    Errno はバージョン 1.38 から 1.39 に更新されました。

  • experimental has been upgraded from version 0.035 to 0.036.

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

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

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

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

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

  • ExtUtils::Miniperl has been upgraded from version 1.14 to 1.15.

    ExtUtils::Miniperl はバージョン 1.14 から 1.15 に更新されました。

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

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

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

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

  • feature has been upgraded from version 1.97 to 2.02.

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

  • File::Copy has been upgraded from version 2.41 to 2.43.

    File::Copy はバージョン 2.41 から 2.43 に更新されました。

  • File::Fetch has been upgraded from version 1.04 to 1.08.

    File::Fetch はバージョン 1.04 から 1.08 に更新されました。

  • File::Glob has been upgraded from version 1.42 to 1.44.

    File::Glob はバージョン 1.42 から 1.44 に更新されました。

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

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

  • File::stat has been upgraded from version 1.14 to 1.15.

    File::stat はバージョン 1.14 から 1.15 に更新されました。

  • File::Temp has been upgraded from version 0.2311 to 0.2312.

    File::Temp はバージョン 0.2311 から 0.2312 に更新されました。

  • Filter::Simple has been upgraded from version 0.96 to 0.97.

    Filter::Simple はバージョン 0.96 から 0.97 に更新されました。

  • Filter::Util::Call has been upgraded from version 1.64 to 1.65.

    Filter::Util::Call はバージョン 1.64 から 1.65 に更新されました。

  • Getopt::Std has been upgraded from version 1.14 to 1.15.

    Getopt::Std はバージョン 1.14 から 1.15 に更新されました。

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

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

    This fixes CVE-2026-7010 and CVE-2026-7017.

    これにより、CVE-2026-7010およびCVE-2026-7017が修正されます。 (TBR)

  • IO has been upgraded from version 1.55 to 1.56.

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

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

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

    This fixes CVE-2025-15649, CVE-2026-48961, CVE-2026-48962, and CVE-2026-48959.

    これにより、CVE-2025-15649、CVE-2026-48961、CVE-2026-48962、およびCVE-2026-48959が修正されます。 (TBR)

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

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

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

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

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

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

  • Module::Metadata has been upgraded from version 1.000038 to 1.000039.

    Module::Metadata はバージョン 1.000038 から 1.000039 に更新されました。

  • mro has been upgraded from version 1.29 to 1.30.

    mro はバージョン 1.29 から 1.30 に更新されました。

  • Net::Ping has been upgraded from version 2.76 to 2.77.

    Net::Ping はバージョン 2.76 から 2.77 に更新されました。

  • Opcode has been upgraded from version 1.69 to 1.71.

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

  • overloading has been upgraded from version 0.02 to 0.03.

    overloading はバージョン 0.02 から 0.03 に更新されました。

  • PerlIO::via has been upgraded from version 0.19 to 0.21.

    PerlIO::via はバージョン 0.19 から 0.21 に更新されました。

  • Pod::Html has been upgraded from version 1.35 to 1.36.

    Pod::Html はバージョン 1.35 から 1.36 に更新されました。

  • Pod::Simple has been upgraded from version 3.45 to 3.48.

    Pod::Simple はバージョン 3.45 から 3.48 に更新されました。

  • POSIX has been upgraded from version 2.23 to 2.26.

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

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

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

  • SelectSaver has been upgraded from version 1.02 to 1.03.

    SelectSaver はバージョン 1.02 から 1.03 に更新されました。

  • SelfLoader has been upgraded from version 1.28 to 1.29.

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

  • Socket has been upgraded from version 2.038 to 2.041.

    Socket はバージョン 2.038 から 2.041 に更新されました。

    This fixes CVE-2026-12087.

    これにより、CVE-2026-12087が修正されます。 (TBR)

  • Storable has been upgraded from version 3.37 to 3.41.

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

    This fixes CVE-2026-57433.

    これにより、CVE-2026-57433が修正されます。 (TBR)

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

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

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

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

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

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

  • Text::Balanced has been upgraded from version 2.06 to 2.07.

    Text::Balanced はバージョン 2.06 から 2.07 に更新されました。

  • threads has been upgraded from version 2.43 to 2.45.

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

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

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

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

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

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

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

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

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

  • UNIVERSAL has been upgraded from version 1.17 to 1.18.

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

  • utf8 has been upgraded from version 1.27 to 1.29.

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

  • version has been upgraded from version 0.9933 to 0.9934.

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

  • warnings has been upgraded from version 1.74 to 1.78.

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

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

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

  • XS::Typemap has been upgraded from version 0.20 to 0.22.

    XS::Typemap はバージョン 0.20 から 0.22 に更新されました。

文書

既存の文書の変更

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

  • Auto-generation of this document now includes the line number of the source code, as well as its documentation.

    この文書の自動生成には、ソースコードの行番号と文書が含まれるようになりました。 (TBR)

  • It now contains information about how to find what release of Perl first contained an API element.

    API要素が最初に含まれていたPerlのリリースを調べる方法についての情報が含まれるようになりました。 (TBR)

perlexperiment

  • New entry for "New object system and class syntax".

    "New object system and classsyntax"の新しいエントリ。 (TBR)

perlxs

  • The reference manual for writing Perl XS code has been completely rewritten and modernized. It is about twice the size of the old file, and promotes more modern XS syntax, such as ANSI signatures.

    Perl XSコードを書くためのリファレンスマニュアルは完全に書き直され、現代化されました。 これは古いファイルの約2倍のサイズで、ANSI署名などのより現代的なXS構文を促進します。 (TBR)

診断メッセージ

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 を参照してください。

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

  • 初期化されていない値%sの使用 (TBR)

    This warning was issued in the reverse order (right-to-left) when both operands of a binary operator are uninitialized values. This is now fixed to be consistent with evaluation order of operands.

    二項演算子の両方のオペランドが初期化されていない値の場合、この警告は逆の順序(右から左)で発行されました。 これは、オペランドの評価順序と一致するように修正されました。 (TBR)

  • Certain diagnostics about byte sequences that are supposed to comprise a UTF-8 encoded character, but that are invalid in some way, now don't include bytes irrelevant to that determination. An example is

    UTF-8でエンコードされた文字を構成すると想定されているが、何らかの点で無効であるバイトシーケンスに関する特定の診断には、その決定に無関係なバイトは含まれません。 次に例を示します。 (TBR)

    old message

    Malformed UTF-8 character: \xc1\x27 (any UTF-8 sequence that starts with \xc1 is overlong which can and should be represented with a different, shorter sequence)

    不正な形式のUTF-8文字:\xc1\x27(\xc1で始まるUTF-8シーケンスは長すぎるため、別の短いシーケンスで表現する必要があります) (TBR)

    new message

    Malformed UTF-8 character: \xc1 (any UTF-8 sequence that starts with \xc1 is overlong which can and should be represented with a different, shorter sequence)

    不正な形式のUTF-8文字:\xc1(\xc1で始まるUTF-8シーケンスは長すぎるため、別の短いシーケンスで表すことができます。 ) (TBR)

    In this case the \xc1 is all that is needed to make the sequence invalid. Whatever comes after it is irrelevant (in this case, \x27), and including it in the message might lead the reader to think that it somehow does matter.

    この場合、シーケンスを無効にするために必要なのは\xc1だけです。 その後に続くもの(この場合は\x27)は無関係であり、メッセージに含めると、読者はそれが何らかの形で重要であると考えるかもしれません。 (TBR)

  • The error Unrecognised parameters for "%s" constructor: %s has been changed to Unrecognized parameters for "%s" constructor: %s.

    エラーUnrecognized parameters for "%s" constructor: %sUnrecognized parameters for "%s" constructor: %sに変更されました。 (TBR)

  • Variables whose name started with ^_ were incorrectly shown in diagnostics with a literal Ctrl-_ (which is an invisible ASCII character) in their name.

    名前が^_で始まる変数が、名前にリテラルCtrl-_(非表示のASCII文字)が含まれる診断で誤って表示されていました。 (TBR)

    The names of variables whose names begin with a caret and are longer than two characters are now wrapped in braces, just as they have to be in the source code.

    キャレットで始まり、2文字を超える変数名は、ソースコード内と同様に中括弧で囲まれるようになりました。 (TBR)

    Therefore, using an undefined ${^_FOO} will now correctly warn with Use of uninitialized value ${^_FOO}, instead of the earlier Use of uninitialized value $FOO (with a literal Ctrl-_ after the dollar sign).

    したがって、未定義の${^_FOO}を使用すると、以前のUse of uninitialized value $FOO(ドル記号の後にリテラルCtrl-_を付ける)ではなく、Use of uninitialized value ${^_FOO}で正しく警告されるようになりました。 (TBR)

    [GH #24135] (TBR)

  • Calling the import method on a package with no import method now produces a regular warning rather than a deprecation warning or error.

    importメソッドのないパッケージでimportメソッドを呼び出すと、非推奨の警告やエラーではなく、通常の警告が生成されるようになった。 (TBR)

    Since Perl 5.39.1, calling import with arguments on a package without such a method has triggered a deprecation warning. In Perl 5.43.6, this deprecation was promoted into an error. This broke a significant amount of code while providing very little advantage over the warning. This fatal error has been converted back to a warning, with its deprecation status removed. There are no longer any plans to make this fatal in the future. The category for this warning is missing_import and it is enabled by default.

    Perl 5.39.1以降、このようなメソッドを使用せずにパッケージの引数を使用してimportを呼び出すと、非推奨の警告が発生します。 Perl 5.43.6では、この非推奨がエラーに昇格しました。 これにより、警告を上回る利点はほとんどなく、かなりの量のコードが破損しました。 この致命的なエラーは警告に戻され、非推奨ステータスが削除されました。 今後、これを致命的にする計画はありません。 この警告のカテゴリはmissing_importであり、デフォルトで有効になっています。 (TBR)

新しい警告メッセージ

新しいエラー

新しい警告

  • qw()list (TBR)

    (W qw) qw() lists contain items separated by whitespace; contrary to what some might expect, backslash characters cannot be used to "protect" whitespace from being split, but are instead treated as literal data.

    (W qw)qw()リストは空白で区切られた項目を含みます。 予想に反して、バックスラッシュ文字は空白が分割されないように「保護」するために使用することはできず、代わりにリテラルデータとして扱われます。 (TBR)

    Note that this warning is only emitted when the backslash is followed by actual whitespace (that qw splits on).

    この警告は、バックスラッシュの後に実際の空白(qwが分割する)が続く場合にonlyが発行されることに注意してください。 (TBR)

設定とコンパイル

  • C23 <stdckdint.h> and associated macros are now used if available.

    C23 <<stdckdint.h>>および関連マクロが使用可能な場合に使用されるようになりました。 (TBR)

  • It is now possible to pass to Configure the values dealing with POSIX locale categories, overriding its automatic calculation of these. This enables cross-compilation to work. The easiest way to do this is to extract the C program that does the calculation from Configure and then run it on the target machine, and then pass the values it outputs to Configure on the other machine. Porting/Glossary has examples. [GH #22992]

    POSIXロケールカテゴリを扱う値をConfigureに渡して、自動計算を上書きできるようになりました。 これにより、クロスコンパイルが機能します。 これを行う最も簡単な方法は、Configureから計算を行うCプログラムを抽出し、ターゲットマシンで実行して、出力した値を他のマシンのConfigureに渡すことです。 Porting/Glossaryには例があります。 [GH #22992] (TBR)

  • The PERL_CREATE_GVSV configuration macro has been removed. It was almost undocumented and it has been disabled by default since Perl 5.10.0. Its purpose was to force all GVs to initialize their SV slot on creation. [GH #24177]

    PERL_CREATE_GVSV設定マクロが削除されました。 ほとんど文書化されておらず、Perl 5.10.0以降はデフォルトで無効になっています。 その目的は、すべてのGVがSVスロットを作成時に強制的に初期化することでした。 [GH #24177] (TBR)

テスト

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

このリリースのその他の追加と変更を反映するために、テストが追加および変更されました。 さらに、次の変更が行われました。 (TBR)

  • Karl Williamson gave a talk at TPRC 2025 asking people to contribute tests to find old issues that are no longer a problem, and todo tests to reflect reproduction cases for known outstanding bugs. (video link) It gained renewed interest this year, leading to an uptick in test submissions from new authors, for which we are extremely grateful.

    Karl Williamson氏はTPRC 2025で講演し、もはや問題ではない古い問題を見つけるためのテストに貢献し、既知の未解決のバグの再現事例を反映するためのテストを行うよう人々に求めた。 (video link)今年は新たな関心が高まり、新しい著者からのテスト投稿が増加したことに非常に感謝している。 (TBR)

  • When testing embedding, add a sanity check to ensure the libperl we link against matches the perl we are building. [GH #22125]

    埋め込みをテストする場合は、リンク先のlibperlが構築中のperlと一致することを確認するために、健全性チェックを追加してください。 [GH #22125] (TBR)

プラットフォーム対応

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

Windows
  • Fix builds with USE_IMP_SYS defined but USE_ITHREADS not defined.

OpenBSD
  • When testing embedding, ensure we link against the correct static libperl. [GH #22125]

AIX
  • Thread-safe locale handling has been turned off on all releases due to apparent bugs in the underlying operating system support.

  • The ibm-clang/ibm-clang_r IBM Open XL C/C++ compiler is now supported for AIX 7.2 and 7.3. This is the recommended compiler to use when compiling Perl on these versions of AIX.

z/OS
  • clang is now the only supported compiler

  • A single test failure remains for the core Perl test suite

    It is for a misleading warning message in an edge case for reading malformed UTF-8 in XS-APItest/t/utf8_warn00.t. (Several instances of the same failure occur.)

    これは、XS-APItest/t/utf8_warn00.t で不正な形式の UTF-8 を読み込んだ場合に、 誤解を招く警告メッセージに関するものです。 (同じエラーが複数回発生します。)

  • Some cpan modules shipped with core have known problems:

    (コアと共に出荷されている一部の cpan モジュールには既知の問題があります)

    Encode
    ExtUtils-MakeMaker
    HTTP-Tiny
    IO-Compress
    JSON-PP
    libnet
    MIME-Base64
    PerlIO-via-QuotedPrint
    Pod-Checker
    podlators
    Pod-Simple

    Check for updates to these on cpan.

    cpan でこれらの更新をチェックしてください。

  • You can get a perl that works in ASCII mode

    An open source project has been created to modify the official perl to work on z/OS in ASCII mode. See https://github.com/zopencommunity/perlport.

    公式 perl を ASCII モードの z/OS で動作するように変更するために、 オープンソースプロジェクトが作成されました。 https://github.com/zopencommunity/perlport を参照してください。

内部の変更

  • The XS parser, ExtUtils::ParseXS, has been further extensively restructured internally. Most of these changes shouldn't be visible externally, but might affect XS code which was using invalid or unsupported syntax. Several minor bug-fixes were included.

    XS パーサ ExtUtils::ParseXS は、内部でさらに大幅に再構成されました。 これらの変更のほとんどは外から観測できないはずですが、不正または 非対応の構文を使っていた XS コードには影響を与える可能性があります。 いくつかの小さなバグ修正が含まれていました。

  • Removed the deprecated (since 5.32) functions sv_locking() and sv_unlocking.

    (5.32 から)廃止予定だった関数 sv_locking()sv_unlocking を 削除しました。

  • Perl_expected_size has been added as an experimental stub macro. The intention is to build on this such that it can be passed a size in bytes, then returns the interpreter's best informed guess of what actual usable allocation size would be returned by the malloc implementation in use.

    Perl_expected_size が実験的なスタブマクロとして追加されました。 このマクロの目的は、バイト単位のサイズを渡すことができるようにこれを構築し、 使用中の malloc 実装によって返される実際に使用可能な割り当てサイズについて、 インタプリタが最もよく知っている推測を返すことです。 (TBR)

    This would help with sizing allocations such that SvLEN is more accurate and not trying to shrink string buffers to save size when the intended saving is unrealistic.

    これは、SvLENがより正確になり、意図した保存が非現実的な場合にサイズを節約するために文字列バッファを縮小しようとしないように、割り当てのサイズを設定するのに役立つ。 (TBR)

  • SvPV_shrink_to_cur has been revised to include a byte for copy-on-write (COW), so that the resulting string could be COWed in the future.

    SvPV_shrink_to_curは、コピーオンライト(COW)用のバイトを含むように改訂されました。 これにより、結果の文字列が将来COWされる可能性があります。 (TBR)

    It also now uses Perl_expected_size, compared against the current buffer size, and does not try to do a reallocation if the requested memory saving is unrealistic.

    また、現在のバッファサイズと比較してPerl_expected_sizeを使用するようになり、要求されたメモリ節約が非現実的な場合には再割り当てを行わないようになった。 (TBR)

  • sv_vcatpvfn_flags() now substitutes the Unicode REPLACEMENT CHARACTER for malformed input. Previously it used the NUL character.

    sv_vcatpvfn_flags()は、不正な入力の代わりにユニコードのREPLACEMENT CHARACTERを使用するようになりました。 以前はNUL文字を使用していました。 (TBR)

  • For core Perl maintainers, the syntax of embed.fnc has been extended. Every function, foo(), named in that file has generated for it a macro named PERL_ARGS_ASSERT_FOO. The macro expands to assert() calls that do basic sanity checking for each argument to foo() that we currently deem as being appropriate to have such checking. (That means that many arguments are not checked, and that the generated macro may currently expand to nothing.) With this release, you can add assert() statements yourself to embed.fnc that will be incorporated into the generated macro, beyond the system-generated ones. Comments and examples in embed.fnc give details.

    Perlのコアメンテナーのために、embed.fncの構文が拡張されました。 そのファイル内のすべての関数foo()は、PERL_ARGS_ASSERT_FOOという名前のマクロを生成しました。 このマクロは、foo()の各引数に対して基本的な健全性チェックを行うassert()呼び出しに拡張されます。 このチェックは、現在そのようなチェックを行うのが適切であると考えられます。 (つまり、多くの引数がチェックされず、生成されたマクロは現在何も展開されない可能性があります。 )このリリースでは、assert()ステートメントをembed.fncに追加できます。 このステートメントは、システム生成のものを超えて、生成されたマクロに組み込まれます。 詳細は、embed.fncのコメントと例を参照してください。 (TBR)

  • A new function valid_utf8_to_uv has been added. This is synonymous with valid_utf8_to_uvchr; its reason for existence is to have consistent spelling with the names of the other functions that translate from UTF-8, so you don't have to remember a different spelling.

    新しい関数valid_utf8_to_uvが追加されました。 これはvalid_utf8_to_uvchrと同義です。 この関数が存在する理由は、UTF-8から変換する他の関数の名前との一貫性を保つためです。 したがって、別のスペルを覚える必要はありません。 (TBR)

  • "newSVsv_flags_NN" in perlapi is a new function for creating a new SV and assigning the value(s) of an existing SV to it.

    "newSVsv_flags_NN" in perlapiは、新しいSVを作成し、既存のSVの値を割り当てるための新しい関数です。 (TBR)

    Historically, Perl_newSVsv_flags and Perl_sv_mortalcopy_flags would pass a new SV head and the original SV to Perl_sv_setsv_flags. However, the latter contains many branches of no relevance to a fresh SV, so they now make use of the new function to streamline the process.

    従来、Perl_newSVsv_flagsPerl_sv_mortalcopy_flagsは、新しいSVヘッドと元のSVをPerl_sv_setsv_flagsに渡していましたが、後者には新しいSVに関係のない多くのブランチが含まれているため、プロセスを合理化するために新しい機能を使用するようになりました。 (TBR)

    Perl_newSVsv_flags is now essentially a NULL pointer check and wrapper around the new function, so has been moved into sv_inline.h.

    Perl_newSVsv_flagsは基本的にNULLポインタチェックと新しい関数のラッパになったので、sv_inline.hに移動しました。 (TBR)

  • "STATIC_ASSERT_DECL" in perlapi and STATIC_ASSERT_STMT are like assert(), but are evaluated at compile time. That means their argument must be a constant expression that can be verified by the compiler, and so they effectively have no cost, not appearing in the code that gets executed. These were added in v5.28, but not until now have we opened their use up to XS writers. At the same time, a new variant has been added, STATIC_ASSERT_EXPR which is suitable for use in an expression, such as a comma expression in a C macro.

    "STATIC_ASSERT_DECL" in perlapiSTATIC_ASSERT_STMTassert()に似ていますが、コンパイル時に評価されます。 つまり、これらの引数はコンパイラで検証できる定数式である必要があるため、実行されるコードに表示されず、実質的にコストがかかりません。 これらはv5.28で追加されましたが、これまではXSライタに使用を開放していませんでした。 同時に、Cマクロのカンマ式などの式での使用に適した新しいバリアントであるSTATIC_ASSERT_EXPRが追加されました。 (TBR)

  • Perl_sv_backoff, which undoes the OOK string offset mechanism now only moves the string buffer contents to the start of the buffer if SvOK(sv) is true. Historically, the buffer contents were always moved, but if the buffer contents are defunct and no longer required, doing that incurs an unnecessary cost proportional to the size of the shifted contents.

    OOK文字列オフセットメカニズムを元に戻すPerl_sv_backoffは、SvOK(sv)がtrueの場合にのみ、文字列バッファの内容をバッファの先頭に移動するようになりました。 これまで、バッファの内容は常に移動されていましたが、バッファの内容が無効になり不要になった場合、移動された内容のサイズに比例して不要なコストが発生します。 (TBR)

    (The assumption in this change is that SvOK(sv) is a valid indicator of whether the string buffer contents are "live" or not.)

    (この変更では、SvOK(sv)が文字列バッファの内容が「ライブ」かどうかを示す有効なインジケータであることを前提としています)。 (TBR)

    See [GH #23967] for an example of where such a copy was noticeable.

    そのようなコピーが顕著であった例については、[GH #23967]を参照のこと。 (TBR)

  • Fixed a bug in the "sv_numeq" in perlapi API where values with numeric ("0+") overloading but not equality or numeric comparison overloading would always be compared as floating point values. This could lead to large integers being reported as equal when they weren't.

    "sv_numeq" in perlapiAPIのバグが修正されました。 このバグでは、数値("0+")オーバーロードの値は常に浮動小数点値として比較されますが、等価性または数値比較オーバーロードの値は常に浮動小数点値として比較されません。 これにより、大きな整数が等価でない場合に等価として報告される可能性がありました。 (TBR)

  • Fixed a bug in "sv_numeq" in perlapi where the SV_SKIP_OVERLOAD flag would skip operator overloading, but would still honor numeric ("0+") overloading.

    SV_SKIP_OVERLOADフラグが演算子のオーバーロードをスキップし、数値("0+")のオーバーロードを優先する"sv_numeq" in perlapiのバグが修正されました。 (TBR)

  • Added "sv_numne" in perlapi, sv_numle, sv_numlt, sv_numge, sv_numgt and "sv_numcmp" in perlapi APIs that perform numeric comparison in the same way perl does, including overloading. Separate APIs for each comparison are needed to invoke their corresponding overload when needed. Inspired by [GH #23918]

    オーバーロードを含め、perlと同じ方法で数値比較を実行する"sv_numne" in perlapi、sv_numle、sv_numlt、sv_numge、sv_numgt、および"sv_numcmp" in perlapiAPIが追加されました。 必要に応じて対応するオーバーロードを呼び出すには、比較ごとに個別のAPIが必要です。 Inspired by[GH #23918] (TBR)

    This also extends the sv_numeq API to support SV_FORCE_OVERLOAD.

    また、sv_numeq APIを拡張してSV_FORCE_OVERLOADをサポートします。 (TBR)

  • Added the AMGf_force_scalar flag to the "amagic_call" in perlapi API to force scalar context for overload calls.

    "amagic_call" in perlapiAPIにAMGf_force_scalarフラグが追加され、オーバーロード呼び出しのスカラーコンテキストが強制されるようになりました。 (TBR)

  • Added the AMGf_force_overload flag to the "amagic_call" in perlapi API to allow forcing overloading to be honored even in the context of no overloading;.

    "amagic_call" in perlapiAPIにAMGf_force_overloadフラグが追加され、no overloading;のコンテキストでも強制的なオーバーロードを実行できるようになりました。 (TBR)

  • The SvFLAGS bits used by SvPCS_IMPORTED() and SvOOK() have now been merged into the same position, thus freeing up a flags bit for possible future purposes. This merge is distinguished by the fact that the PCS_IMPORTED behaviour is only used on references (when SvROK is true), whereas the OOK only applies to string buffers (when SvROK is false).

    SvPCS_IMPORTED()SvOOK()で使用されるSvFLAGSビットが同じ位置にマージされました。 これにより、フラグビットが将来の目的に使用できるようになりました。 このマージは、PCS_IMPORTEDの動作が参照でのみ使用される(SvROKがtrueの場合)のに対し、OOKは文字列バッファにのみ適用される(SvROKがfalseの場合)という点で区別されます。 (TBR)

    This change shouldn't affect any XS module code that is using the test macros correctly, though might cause confusion to code that attempts to analyse SvFLAGS bits directly outside of the helper macros.

    この変更は、テストマクロを正しく使用しているXSモジュールコードには影響しませんが、ヘルパーマクロの外部で直接SvFLAGSビットを分析しようとするコードに混乱を引き起こす可能性があります。 (TBR)

  • An upper limit has been applied to the multiplier operand of the repetition operator. Constant folding will not be attempted if the operand is a numerical constant above PERL_FOLD_REPEAT_LIMIT. See [GH #20586] and [GH #23561] for background.

    繰り返し演算子の乗数オペランドに上限が適用されました。 オペランドがPERL_FOLD_REPEAT_LIMITを超える数値定数である場合、定数の折り畳みは試行されません。 背景については[GH #20586]と[GH #23561]を参照してください。 (TBR)

  • Dedicated check functions Perl_ck_anonhash and Perl_ck_aassign have been added and are used to hekify some OP_CONST hash keys at compile time. [GH #24228]

    専用のチェック関数Perl_ck_anonhashPerl_ck_aassignが追加され、コンパイル時にいくつかのOP_CONSTハッシュキーをハッシュするために使用される。 [GH #24228] (TBR)

  • The macro "fromCTRL" in perlapi has been added to be the inverse of the existing "toCTRL" in perlapi. toCTRL('A') yields 1 (the control character SOH on all platforms Perl works on); fromCTRL(1) yields 'A'.

    マクロ"fromCTRL" in perlapiは、既存の"toCTRL" in perlapiの逆になるように追加されました。 toCTRL('A')は1(Perlが動作するすべてのプラットフォーム上の制御文字SOH)を生成し、fromCTRL(1)は'A'を生成します。 (TBR)

  • Perl_check_hash_fields_and_hekify, partly called as a compile-time optimization, no longer preemptively converts an NV to a HEK if the compile time and run time locales could differ. [GH #24252]

    Perl_check_hash_fields_and_hekifyは、コンパイル時の最適化とも呼ばれるが、コンパイル時と実行時のロケールが異なる場合に、NVをHEKに事前に変換することはなくなった。 [GH #24252] (TBR)

  • When a UTF-8 constant string was used as the hash key in an insert operation, such as $hash{'über maus'} = 1;, and the string could be converted into a single byte representation, the flag noting the original encoding (HVhek_WASUTF8) was not always retained.

    $hash{'über maus'} = 1;のように、UTF-8定数文字列が挿入操作のハッシュキーとして使用され、その文字列がシングルバイト表現に変換できる場合、元のエンコーディングを示すフラグ(HVhek_WASUTF8)が常に保持されるとは限りませんでした。 (TBR)

    When this occurred, the relevant scalars returned by keys %hash would not be in the original, expected UTF-8 encoding.

    これが発生した場合、keys %hashによって返される関連するスカラーは、元の期待されるUTF-8エンコーディングではありません。 (TBR)

    The original encoding is now captured and propagated. [GH #24266] [GH #24290]

    元のエンコーディングがキャプチャされ、伝播される。 [GH #24266][GH #24290] (TBR)

  • When a constant IV or NV was used as a hash key, such as in my %hash = ( 42 => 0 );, and was preemptively stringified into a hash key, the fact that the numerical value came first was lost. This unintentionally modified deparse output for such keys.

    my %hash = ( 42 =>0);>>のように、定数IVまたはNVがハッシュキーとして使用され、事前にハッシュキーに文字列化された場合、数値が最初に来たという事実が失われました。 これにより、このようなキーの構文解析解除出力が意図せず変更されました。 (TBR)

    The numerical values are now carried across, and flags on the key variable reflect the original data type.

    数値が渡されるようになり、key変数のフラグが元のデータ型を反映するようになりました。 (TBR)

    Note: This now preserves the form of constant keys supplied to tied hashes in list assignments. [GH #24302]

    注:これにより、リスト割り当ての結合ハッシュに指定された定数キーの形式が保持されるようになりました。 [GH #24302] (TBR)

  • A new function, "defer_error" in perlapi, has been added to report errors in compiling a perl program. "qerror" in perlapi is a deprecated alias for it. Previously, qerror existed but was undocumented.

    新しい関数"defer_error" in perlapiが追加されました。 Perlプログラムのコンパイルエラーを報告します。 "qerror" in perlapiは廃止予定の別名です。 以前はqerrorが存在していましたが、文書化されていませんでした。 (TBR)

    [GH #23676] (TBR)

  • "op_clear" in perlapi is now part of the API.

    "op_clear" in perlapiはAPIの一部になりました。 (TBR)

    [GH #23676] (TBR)

バグ修正の抜粋

  • Reported argument counts in method signatures now account for $self

    methodシグネチャで報告される引数の数が$selfを占めるようになった (TBR)

    In previous versions of Perl, the exception message thrown by a method subroutine with a signature when it does not receive an appropriate number of arguments to match its declared parameters failed to account for the implied $self parameter, causing the numbers in the message to be 1 fewer than intended.

    以前のバージョンのPerlでは、宣言されたパラメータに一致する適切な数の引数を受け取らなかったときに、シグネチャ付きのmethodサブルーチンによってスローされる例外メッセージは、暗黙の$selfパラメータを考慮していなかったため、メッセージ内の数値が意図したものより1少なくなりました。 (TBR)

    This has now been fixed, so messages report the correct number of arguments including the object invocant.

    この問題が修正され、メッセージがオブジェクトの呼び出し元を含む正しい数の引数を報告するようになりました。 (TBR)

  • When both operands of arithmetic operators (+, -, etc.) are overloaded objects which have no method for that operator but have a 0+ method and the fallback option set to TRUE, perl will normally call the 0+ method for the left operand first and then call one for the right operand, i.e. in the same order as operand evaluation. But if use integer; is in effect, the 0+ methods used to be called in wrong (reverse) order.

    算術演算子(+,-など)の両方のオペランドがoverloadされたオブジェクトであり、その演算子のメソッドがなく、0+メソッドがあり、fallbackオプションがTRUEに設定されている場合、perlは通常、最初に左オペランドの0+メソッドを呼び出し、次に右オペランドの0+メソッドを呼び出します。 つまり、オペランドの評価と同じ順序で呼び出されます。 しかし、use integer;が有効な場合、0+メソッドは間違った(逆の)順序で呼び出されていました。 (TBR)

  • Certain constructs involving a two-variable for loop would crash the perl compiler in v5.42.0:

    2変数のforループを含む特定の構成体は、v5.42.0のperlコンパイラをクラッシュさせます。 (TBR)

        # Two-variable for loop over a list returned from a method call:
        for my ($x, $y) (Some::Class->foo()) { ... }
        for my ($x, $y) ($object->foo()) { ... }

    and

    と (TBR)

        # Two-variable for loop over a list returned from a call to a
        # lexical(ly imported) subroutine, all inside a lexically scoped
        # or anonymous subroutine:
        my sub foo { ... }
        my $fn = sub {
            for my ($x, $y) (foo()) { ... }
        };
    
        use builtin qw(indexed);  # lexical import!
        my sub bar {
            for my ($x, $y) (indexed(...)) { ... }
        }

    These have been fixed. [GH #23405]

    これらは修正されました。 [GH #23405] (TBR)

  • Several error conditions in the pack and unpack operations were not detected and now are.

    packおよびunpack操作でいくつかのエラー状態が検出されませんでしたが、現在は検出されています。 (TBR)

  • INTERFACE keyword in XS

    INTERFACE is now compatible with ISO/IEC 9899:2024 ("C23"), which is the default language version used by GCC 15. Previously, it generated code that failed to compile as C23.

    INTERFACEは、GCC 15で使用されるデフォルトの言語バージョンであるISO/IEC 9899:2024("C23")と互換性があるようになりました。 以前は、C23としてコンパイルに失敗したコードを生成しました。 (TBR)

    Secondly, INTERFACE now supports Perl package names as C types (i.e. Foo::Bar gets auto-converted to Foo__Bar).

    次に、INTERFACEはPerlパッケージ名をC型としてサポートするようになりました(つまり、Foo::BarFoo__Barに自動変換されます)。 (TBR)

    [GH #23192] (TBR)

  • &CORE::__CLASS__ no longer returns invalid results

    CORE::__CLASS__ would work as expected when used as a bareword or aliased:

    CORE::__CLASS__は、ベアワードまたはエイリアスとして使用すると、期待どおりに動作します。 (TBR)

        use feature qw(class);
        class Foo {
            BEGIN { *cls = \&CORE::__CLASS__; }
            method bar() {
                my $class1 = CORE::__CLASS__;  # ok
                my $class2 = cls;              # ok
            }
        }

    But when called with an ampersand (&CORE::__CLASS__()) or through a reference (my $ref = \&CORE::__CLASS__; $ref->()), it would return unrelated strings. These runtime calls have been fixed to throw an error of the form &CORE::__CLASS__ cannot be called directly instead of silently returning incorrect results.

    しかし、アンパサンド(&CORE::__CLASS__())や参照(my $ref = \&CORE::__CLASS__; $ref->()>>)を使ってコールすると、無関係な文字列を返します。 これらのランタイムコールは、間違った結果を黙って返すのではなく、&CORE::__CLASS__ cannot be called directlyという形式のエラーをスローするように修正されました。 (TBR)

    [GH #23737] (TBR)

  • parse_subsignature() can now handle empty subroutine signatures

    Previously, calling the parse_subsignature() API function with an empty signature would cause a "Syntax error" failure, requiring code which calls it to detect the special case and take appropriate steps. This is now fixed, returning the same optree that the parser would yield for a regular empty signature during normal parse time.

    以前は、空のシグネチャを使用してparse_subsignature()API関数を呼び出すと、「構文エラー」エラーが発生し、特殊なケースを検出して適切な手順を実行するために呼び出すコードが必要でした。 これが修正され、通常の解析時にパーサーが通常の空のシグネチャに対して生成するのと同じoptreeを返すようになりました。 (TBR)

    [GH #17689] (TBR)

  • The -CA flag (or equivalently, the PERL_UNICODE=A environment setting) tells perl to treat command-line arguments as UTF-8 strings. (See perlrun for details.) However, this did not extend to the global variables implicitly created by the -s option:

    -CAフラグ(または同等のPERL_UNICODE=A環境設定)は、perlにコマンドライン引数をUTF-8文字列として扱うように指示します(詳細はperlrunを参照してください)。 ただし、これは-sオプションによって暗黙的に作成されたグローバル変数には拡張されませんでした。 (TBR)

     $ perl -CA -s -e 'printf "%vx\n", $_ for $foo, $ARGV[0]' -- -foo=é é
     c3.a9
     e9

    Here $foo would end up containing the two-byte UTF-8 representation of "LATIN SMALL LETTER E WITH ACUTE", but $ARGV[0] would contain a single codepoint corresponding to U+00E9.

    この場合、$fooには"LATIN SMALL LETTER E WITH ACUTE"の2バイトUTF-8表現が含まれますが、$ARGV[0]にはU+00E9に対応するコードポイントが1つ含まれます。 (TBR)

    This has been fixed: If -CA is in effect, options parsed by -s are treated as UTF-8, too. In the example above, $foo and $ARGV[0] now both contain chr(0xE9). [GH #23377]

    これは修正されました:-CAが有効な場合、-sによって解析されたオプションもUTF-8として扱われます。 上の例では、$foo$ARGV[0]は両方ともchr(0xE9)を含むようになりました。 [GH #23377] (TBR)

  • We have long claimed to support identifiers up to about 255 characters long. However this was actually true only for identifiers that consisted of only ASCII characters. The real upper limit was as few as 64 characters for identifiers written in languages using non-ASCII characters, for example, Chinese or Osage. Now an identifier in any language may contain at least 255 characters.

    私たちは長い間、約255文字までの識別子をサポートすると主張してきました。 しかし、これは実際にはASCII文字だけで構成された識別子にのみ当てはまります。 実際の上限は、中国語やOsageなどの非ASCII文字を使用する言語で書かれた識別子では64文字とわずかでした。 現在では、どの言語の識別子も少なくとも255文字を含むことができます。 (TBR)

  • Fixed parsing of array names starting with a digit in double-quotish context under use utf8;.

    use utf8;におけるダブルクォートのコンテキストで、数字で始まる配列名の解析が修正されました。 (TBR)

  • use 5.42 now turns on use source::encoding "ascii" for the remainder of the line (besides subsequent lines). [GH #23881]

    use 5.42は、行の残りの部分(後続の行以外)でuse source::encoding "ascii"をオンにします。 [GH #23881] (TBR)

  • Since 5.32.0, the second branch of a ternary condition operator wasn't getting the correct autovivification context applied. For example in something like

    5.32.0以降、三項条件演算子の2番目のブランチには、正しいautovivificationコンテキストが適用されていませんでした。 たとえば、次のようなものです。 (TBR)

        @{ $cond ? $h{foo} : $h{bar} } = ...;

    the first branch would correctly autovivify $h{foo} to an array ref, but the second branch might incorrectly autovivify $h{bar} to a hash ref. [GH #18669].

    最初のブランチは$h{foo}を配列refに正しくautovivifyしますが、2番目のブランチは$h{bar}をハッシュrefに誤ってautovivifyする可能性があります[GH #18669]。 (TBR)

  • Don't warn about jumping into a construct if we're DIE-ing [GH #23922].

    私たちが死にかけている[GH #23922]場合、構成体に飛び込むことについて警告しないでください。 (TBR)

  • Regexes which include both a sub-pattern (e.g. (??{...}) or (?&FOO)) and a cut (i.e. (?>...)) could sometimes cause a premature scope exit in other code during a match. For example, in something like (?{ local $x = ... }), the local might have been unwound before the pattern has finished matching. [GH #16197]

    サブパターン(例:(?{.})または(?&FOO))とカット(例:(?>.)>>)の両方を含む正規表現は、マッチング中に他のコードで早期スコープ終了を引き起こすことがありました。 たとえば、(?{local$x=.})のようなものでは、パターンのマッチングが完了する前にlocalが巻き戻された可能性があります。 [GH #16197] (TBR)

  • DB::sub is not meant to be called for sub calls from the DB package, but calls to overloaded subs for overloaded values used in the DB package would result in calls to DB::sub. Fixed the check for the current package in amagic_call(). [GH #24001].

    DB::subは、DBパッケージからのサブコールのために呼び出されることを意図したものではありませんが、DBパッケージで使用されるオーバーロードされた値のためのオーバーロードされたサブへのコールは、DB::subへのコールをもたらします。 現在のパッケージのチェックをamagic_call().[GH #24001]で修正しました。 (TBR)

  • Fix parsing of hexadecimal floating-point numbers whose significand (aka "mantissa") values are too large to fit in UV range. Such literals (for example, 0x1234567890.1p+0 for 32-bit IV/UV platform, or 0x1234567890_1234567890.1p+0 for 64-bit IV/UV) used to be parsed incorrectly.

    仮数(別名"仮数部")の値が大きすぎてUV範囲に収まらない16進数の浮動小数点数の解析が修正されました。 このようなリテラル(32ビットIV/UVプラットフォームの場合は0x1234567890.1p+0、64ビットIV/UVの場合は0x1234567890_1234567890.1p+0)は以前は正しく解析されませんでした。 (TBR)

  • Perl 5.42.0 did not handle the transition to/from daylight savings time properly, fixed in 5.42.1. The time and/or timezone could be off by an hour in the intervals surrounding such transitions. This was a regression from earlier releases. This bug was evident from perl space in the "strftime" in POSIX function, and in XS code with any of "my_strftime" in perlapi, "sv_strftime_ints" in perlapi, or "sv_strftime_tm" in perlapi.

    Perl 5.42.0では、夏時間への移行と夏時間からの移行を適切に処理できませんでした。 これは5.42.1で修正されました。 このような移行の前後の間隔では、時刻やタイムゾーンが1時間ずれる可能性がありました。 これは以前のリリースからの退行です。 このバグは、"strftime" in POSIX関数のperlスペース、および"my_strftime" in perlapi"sv_strftime_ints" in perlapi、または"sv_strftime_tm" in perlapiのいずれかを使用するXSコードで明らかでした。 (TBR)

  • sort() optimizes common comparisons from calling the OP tree for a comparison block into a call to a C function. The C function used for overloaded numeric comparisons did not handle the case where there was no comparison overload but there was a numeric ("0+") overload correctly, losing precision for large overloaded integer arguments that are not exactly representable as a Perl floating point value (NV). [GH #23956]

    sort()は、比較ブロックのOPツリーの呼び出しからC関数への呼び出しへと、一般的な比較を最適化します。 オーバーロードされた数値比較に使用されるC関数は、比較オーバーロードはないが数値("0+")オーバーロードがある場合を正しく処理せず、Perl浮動小数点値(NV)として正確に表現できない大きなオーバーロードされた整数引数の精度を失いました。 [GH #23956] (TBR)

  • When a scalar variable used as the target of a filehandle is undef'ed while being output, garbage bytes would be left in that scalar. [GH #24008]

    ファイルハンドルのターゲットとして使用されるスカラー変数が出力中にundefされると、そのスカラーには不要なバイトが残ります。 [GH #24008] (TBR)

  • When a scalar variable was used as the target of a filehandle and also was output onto itself, garbage could result, or even trigger a segmentation fault (as in open $fh, '>', \$str; print $fh $str;). [GH #24199]

    スカラー変数がファイルハンドルのターゲットとして使用され、それ自体にも出力された場合、ガベージが発生したり、セグメンテーション障害が発生したりする可能性がありました(open $fh, '>',\$str;print$fh$str;>>のように)。 [GH #24199] (TBR)

  • close(STDOUT) when STDOUT has been opened as a pipe will now properly wait for the child to exit on Windows. [GH #4106]

    STDOUTがパイプとしてオープンされた場合のclose(STDOUT)が、Windows上で子プロセスの終了を適切に待機するようになった。 [GH #4106] (TBR)

  • Calling an XSUB via goto in scalar context, where the XSUB didn't return exactly one value, could result in the return of the wrong number of items, leading to potential stack corruption. For example:

    XSUBが正確に1つの値を返さなかったスカラーコンテキストでgotoを介してXSUBを呼び出すと、誤った数の項目が返され、スタックが破損する可能性があります。 次に例を示します。 (TBR)

        sub wrap { goto \&an_xsub_which_returns_no_values }
        $ret = wrap();

    [GH #24212] (TBR)

  • On debugging perls, instantiating a class with an array field with an empty initializer list would abort with an error:

    perlsのデバッグでは、空の初期化子リストを持つ配列フィールドを持つクラスのインスタンス化は、エラーで中断されます。 (TBR)

        class Foo {
            field @bar = ();
        }
        Foo->new();

    Error message: perl: inline.h:194: Perl_av_new_alloc: Assertion `size > 0' failed.

    エラーメッセージ:perl: inline.h:194: Perl_av_new_alloc: Assertion `size >0'failed. (TBR)

    This has been fixed. [GH #24246]

    この問題は修正されました。 [GH #24246] (TBR)

  • Refassigning to a class field in a method could result in the SV for that field being released when the method exited. The next access to that field could result in a crash or an assertion, or if the freed SV had been re-used, random data. Discussed in [GH #24187]

    メソッド内のクラスフィールドに再代入すると、メソッドが終了したときにそのフィールドのSVが解放される可能性がある。 そのフィールドへの次のアクセスでは、クラッシュまたはアサーションが発生するか、解放されたSVが再利用されていた場合は、ランダムなデータが発生する可能性がある。 [GH #24187]で議論されている。 (TBR)

Known Problems

None

なし(None) (TBR)

Obituary

"WELL VOLUNTEERED!" echoed across conference rooms and IRC channels. Matt S. Trout's battle cry that transformed reluctant volunteers into community leaders.

「よくボランティアをした!」という声が会議室やIRCチャンネルに響き渡った。 マットSトラウトのスローガンは、消極的なボランティアをコミュニティのリーダーに変えた。 (TBR)

With profound sadness, we announce Matt's passing. Since the early 2000s, Matt shaped Perl through sheer force of will: IRC operator, PAUSE administrator, Shadowcat Systems co-founder, architect of DBIx::Class. His opinions came wrapped in profanity and delivered at maximum volume. He suffered no fools and grew to sometimes realize he should apologize. Yet this same abrasive exterior protected fierce dedication to mentoring, developers he harangued into volunteering now lead the community themselves. Matt's deliberately mind-bending code pushed Perl forward. Every modern Perl developer touches his legacy daily.

深い悲しみとともに、Mattの逝去をお知らせします。 2000年代初頭から、MattはIRCオペレーター、PAUSEアドミニストレーター、Shadowcat Systemsの共同創設者、DBIx::Classのアーキテクトなど、意志の力によってPerlを形成してきました。 彼の意見は冒涜に包まれ、最大限の量で伝えられました。 彼は愚か者に苦しむことなく、時には謝るべきだと気づくようになりました。 しかし、この同じ無愛想な外見が、メンタリングへの熱心な献身を守り、彼が熱心にボランティアに参加した開発者たちは、今ではコミュニティを自らリードしています。 Mattの意図的に心を揺るがすコードは、Perlを前進させました。 現代のPerl開発者は皆、彼の遺産に毎日触れています。 (TBR)

Well volunteered, Matt. Rest in peace.

Well volunteered, Matt. Rest in peace. (TBT)

謝辞

Perl 5.44.0 represents approximately 12 months of development since Perl 5.42.0 and contains approximately 270,000 lines of changes across 1,300 files from 71 authors.

Perl 5.44.0 は、Perl 5.42.0 以降、71 人の作者によって、 1,300 のファイルに約 270,000 行の変更を加えて、 約 12 ヶ月開発されてきました。

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

自動生成ファイル、文書、リリースツールを除くと、860 の .pm, .t, .c, .h ファイルに約 110,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.44.0:

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

Alexander Karelas, Aristotle Pagaltzis, Arne Johannessen, Bartosz Jarzyna, Branislav Zahradník, brian d foy, Chad Granum, Chris 'BinGOs' Williams, Chris Prather, Christian Hansen, Craig A. Berry, Dagfinn Ilmari Mannsåker, Dan Book, Dan Church, Daniel Dragan, Daniel Laügt, Daniel Tang, Dan Kogai, Dave Cross, David Mitchell, Dmitrii Kuvaiskii, E. Choroba, Ed J, Elvin Aslanov, Eric Herman, Eugen Konkov, Graham Knop, Harald Jörg, H.Merijn Brand, Igor Todorovski, James Cook, James E Keenan, James Raspass, Jörg Thomas, Karen Etheridge, Karl Williamson, Leon Timmermans, Lukas Mai, Marc Reisner, Masahiro Iuchi, Matthew Horsfall, Maxim Vuets, Max Maischein, Nicolas R, Olaf Alders, Paul Evans, Paul Marquess, Peter John Acklam, Philippe Bruhat (BooK), Ricardo Signes, Richard Leach, Robert Rothenberg, Ryan Carsten Schmidt, Samuel Smith, Samuel Young, Scott Baker, Sevan Janiyan, Shirakata Kentaro, Sisyphus, Stan Ulbrych, Stefan Adams, Štěpán Němec, Steve Hay, TAKAI Kousuke, Thibault Duponchelle, Toby Inkster, Tomasz Konojacki, Tom Wyant, Tony Cook, Unicode Consortium, Yitzchak Scott-Thoennes.

Alexander Karelas, Aristotle Pagaltzis, Arne Johannessen, Bartosz Jarzyna, Branislav Zahradník, brian d foy, Chad Granum, Chris 'BinGOs' Williams, Chris Prather, Christian Hansen, Craig A. Berry, Dagfinn Ilmari Mannsåker, Dan Book, Dan Church, Daniel Dragan, Daniel Laügt, Daniel Tang, Dan Kogai, Dave Cross, David Mitchell, Dmitrii Kuvaiskii, E. Choroba, Ed J, Elvin Aslanov, Eric Herman, Eugen Konkov, Graham Knop, Harald Jörg, H.Merijn Brand, Igor Todorovski, James Cook, James E Keenan, James Raspass, Jörg Thomas, Karen Etheridge, Karl Williamson, Leon Timmermans, Lukas Mai, Marc Reisner, Masahiro Iuchi, Matthew Horsfall, Maxim Vuets, Max Maischein, Nicolas R, Olaf Alders, Paul Evans, Paul Marquess, Peter John Acklam, Philippe Bruhat (BooK), Ricardo Signes, Richard Leach, Robert Rothenberg, Ryan Carsten Schmidt, Samuel Smith, Samuel Young, Scott Baker, Sevan Janiyan, Shirakata Kentaro, Sisyphus, Stan Ulbrych, Stefan Adams, Štěpán Němec, Steve Hay, TAKAI Kousuke, Thibault Duponchelle, Toby Inkster, Tomasz Konojacki, Tom Wyant, Tony Cook, Unicode Consortium, Yitzchak Scott-Thoennes. (TBT)

The list above is almost certainly incomplete as it is automatically generated from version control history. In particular, it does not include the names of the (very much appreciated) contributors who reported issues to the Perl bug tracker.

これはバージョンコントロール履歴から自動的に生成しているので、ほぼ確実に 不完全です。 特に、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 ファイル。

POD ERRORS

Hey! The above document had some coding errors, which are explained below:

Around line 4:

Cannot have multiple =encoding directives

Invalid =encoding syntax: utf8

Around line 2295:

Unterminated C< ... > sequence

Around line 2551:

Unterminated C< ... > sequence

Around line 2727:

Unterminated C< ... > sequence

Around line 2828:

Unterminated C< ... > sequence