=encoding utf8 =encoding utf8 =head1 NAME =begin original perldelta - what is new for perl v5.44.0 =end original perl5440delta - perl v5.44.0 での変更点 =head1 DESCRIPTION =begin original This document describes differences between the 5.42.0 release and the 5.44.0 release. =end original この文書は 5.42.0 リリースと 5.44.0 リリースの変更点を記述しています。 =head1 Core Enhancements (コアの拡張) =head2 Named Parameters in Signatures =begin original This adds a major new ability to subroutine signatures, allowing callers to pass parameters by name/value pairs rather than by position. =end original これにより、サブルーチンシグニチャに新しい機能が追加され、 呼び出し側は引数を位置ではなく、名前と値の組で渡せるようになります。 sub f ($x, $y, :$alpha, :$beta = undef) { ... } f( 123, 456, alpha => 789 ); =begin original Originally specified in L. =end original 元々は L で定義されていました。 =begin original This feature is currently considered B, and is described in further detail in L. =end original この機能は現在 B<実験的> と見なされており、L で さらに詳細に説明されています。 =head2 Multi-variable C can now use aliased references =begin original Perl version 5.22 introduced reference aliases, allowing a C loop iteration variable to create new aliases to references. Perl version 5.36 introduced C 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. =end original Perl バージョン 5.22 では別名参照が導入され、C ループ反復変数を 使用して参照への新しい別名を作成できるようになりました。 Perl バージョン 5.36 では、複数の変数を持つ C ループが導入され、 各反復で複数の入力リスト項目が使われるようになりました。 このバージョンでは新たに二つの機能が同時に使えるようになり、 いずれかを参照別名として使用できる複数の反復変数が 使えるようになりました。 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"; } =begin original Currently both the C and C features remain B. =end original 現在、CとCの両方の機能はBのままである。 (TBR) =head2 Enhanced operation of regular expression patterns under /xx =begin original Experimentally, the C pattern modifier can allow bracketed character classes (I, C<[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 S>. See Lx and Exx>. =end original 実験的に、Cパターン修飾子を使用すると、括弧で囲まれた文字クラス(I<例>,C<[a-zA-Z]>)を複数行に拡張してコメントを含めたり、パターンの一部が意図したものではなく誤ってコメントとして扱われた可能性がある場合に警告を表示したりできます。 この動作は、S>によって有効になります。 LxおよびExx>を参照してください。 (TBR) =head2 Unicode 17.0 is supported =begin original See L. =end original Lを参照してください。 (TBR) =head2 New source of entropy for PRNG seeding =begin original Perl now uses the C system call to fetch random bytes suitable for seeding the internal PRNG. Previously Perl would read raw bytes from the F device. Perl now seeds itself in this order (and falls through upon failure): =end original Perlは、Cシステムコールを使用して、内部PRNGのシードに適したランダムなバイトをフェッチするようになりました。 以前は、PerlはFデバイスから生のバイトを読み取りました。 Perlは現在、次の順序で自身をシードします(失敗すると失敗します)。 (TBR) =over =item 1. =begin original C on systems that support this call (Linux, BSD, MacOS) =end original このコールをサポートするシステム上のC(Linux, BSD, MacOS) (TBR) =item 2. =begin original F on systems that have it =end original Fを実行します。 (TBR) =item 3. =begin original Hash of internal state variables: Unix time, process ID, and pointer value =end original 内部状態変数のハッシュ:Unix時間、プロセスID、およびポインタ値 (TBR) =back =begin original Note that the internal PRNG is still unsuitable for security applications. See L for a discussion of security. =end original 内部PRNGはセキュリティアプリケーションにはまだ適していないことに注意してください。 セキュリティの詳細については、Lを参照してください。 (TBR) =head1 Security (セキュリティ) =head2 CVE-2026-8376 - Buffer overflow in Perl_study_chunk =begin original 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. =end original regcomp_study.cのPerl_study_chunkは、結合された部分文字列バッファのサイズをバイト数ではなく文字数でチェックしました。 32ビット構築では、これによりバッファサイズの整数オーバーフローが発生し、範囲外の書き込みが発生する可能性があります。 (TBR) =head2 CVE-2026-57432 - Buffer overflow in S_measure_struct =begin original If you call C or C 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. =end original CまたはCを呼び出して、計算サイズが大きすぎてメモリに収まらない構造体を操作すると、整数オーバーフローが発生し、バッファオーバーフローが発生する可能性があります。 これは通常、アイテムの繰り返し回数として大きな数値を埋め込んだ結果として発生します。 (TBR) =head2 CVE-2026-13221 - Regex trie 16-bit field overflow =begin original 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. =end original 正規表現エンジンでのトライ最適化は、約65,000以上の分岐を持つ代替でオーバーフローする可能性がある。 これにより、このような正規表現では、偽陽性と偽陰性の両方が発生する可能性がある。 (TBR) =head1 Incompatible Changes (互換性のない変更) =head2 Unicode rules are now fully enforced on identifier and regular expression group names. =begin original Before Unicode, Perl accepted any C<\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: C<\p{XID_Start}> and C<\p{XID_Continue}>. (The C stands for "eXtended" and indicates these are the more modern versions.) =end original Unicode以前、Perlは識別子やその他の名前にC<\w>文字を受け入れていましたが、最初の文字は数字ではありませんでした。 その後、Unicodeはこれを記述する2つのプロパティを作成しました。 さらに後になって、彼らはこれらのプロパティが不十分であることを発見し、2つの新しい同様のプロパティを作成しました。 これらはperlが使用しようとしたものです:C<\p{XID_Start}>とC<\p{XID_Continue}>です(Cは"eXtended"を表し、これらがより新しいバージョンであることを示しています)。 (TBR) =begin original (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 C and C. See L. Perl currently doesn't do anything with these, except to furnish you the ability to use them in regular expressions.) =end original (さらに後になって、上記のプロパティを使用してPerl識別子ルールが形成されたずっと後になっても、Unicodeは正当な識別子名をさらに制限する推奨事項を追加しました。 これらは、たとえば、プログラマが他の文字に似た文字を使用してレビュー担当者を越えてコードを忍び込ませる場合に対抗するために追加されました。 2つのプロパティはCとCです。 Lを参照してください。 Perlは現在、正規表現で使用できる機能を提供することを除いて、これらに対して何もしていません。 ) (TBR) =begin original We soon discovered that there were 14 characters that match C and C that don't also match C<\w>. To avoid breaking code that had long relied on C<\w>, we chose to not add those to the list of acceptable identifier characters. =end original 私たちはすぐに、CとCに一致し、C<\w>にも一致しない14文字があることを発見しました。 長い間C<\w>に依存していたコードを壊すことを避けるために、私たちはこれらを許容される識別子文字のリストに追加しないことを選択しました。 (TBR) =begin original It turns out that there are about 160 characters that match C<\w> but not the Unicode C 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. =end original C<\w>にマッチするがUnicodeのCプロパティにマッチしない文字が約160個あることが判明しました。 したがって、これらはUnicodeによれば不正です。 これらは現在、Perl識別子と正規表現グループ名の両方で明示的に禁止されています。 以前は、識別子での使用はいずれにしても機能しない可能性がありました。 これらは最初は正当なものとして受け入れられましたが、他のコードは後でそれらを拒否しましたが、根本的な問題とは関係のないメッセージが表示されました。 しかし、正規表現パターンのグループ名には不正な継続文字が含まれている可能性があり、検出されない可能性が高くなりました。 これが変更されました。 (TBR) =begin original Only programs that do L|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. =end original L|utf8>を実行するプログラムのみが影響を受け、名前の2番目以降の位置にある文字のみが影響を受けます。 識別子名の先頭文字は変更されません。 (TBR) =begin original 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. =end original 現在受け入れられない文字のうち130は、CIRCLED LATIN CAPITAL LETTER Nのように何らかの形で囲まれた26個のラテン文字の5セットである。 他の8つは他の文字の周りに形を追加する一般的な修飾子であり、5つはキリル数字の修飾子であり、16はアラビアの合字と孤立した形である。 他の2つはGREEK YPOGEGRAMMENIとVERTICAL TILDEである。 (TBR) =head1 Deprecations =over 4 =item * =begin original Deprecated since 5.12, using C to jump into the body of a loop or other block construct from outside is no longer permitted. [L] =end original 5.12から非推奨になり、Cを使用して外部からループやその他のブロック構造の本体にジャンプすることはできなくなった。 [L] (TBR) =item * =begin original C has new restrictions =end original Cに新しい制限が追加されました。 (TBR) =begin original Using an unescaped C<#> or literal vertical space is now deprecated in a regular expression bracketed character class that is compiled with the C modifier. These still work, but deprecation warnings will be generated unless turned off or the constructs are cured as follows. =end original C修飾子を使用してコンパイルされた正規表現の角括弧で囲まれた文字クラスで、エスケープされていないC<#>またはリテラルの垂直スペースを使用することは非推奨になりました。 これらはまだ機能しますが、無効にするか、次のように構文を修正しない限り、非推奨の警告が生成されます。 (TBR) =over =item * =begin original Escape a C<#> by preceding it with a backslash, like in =end original C<#>をエスケープするには、次のように前にバックスラッシュを付けます。 (TBR) m/ [ % \# ( ) ] /xx =item * =begin original Use constructs like C<\n> instead of literal vertical space. =end original リテラルの垂直スペースの代わりに、C<\n>のような構文を使用します。 (TBR) =back =back =head1 Performance Enhancements (性能改善) =over 4 =item * =begin original Simple (non-overflowing) addition (C<+>), subtraction (C<->) and multiplication (C<*>) of integers are slightly sped up, as long as sufficient underlying C compiler support is available. =end original 整数の単純な(オーバーフローしない)加算(C<+>)、減算(C<->)、乗算(C<*>)は、基礎となるCコンパイラが十分にサポートされている限り、わずかに高速化される。 (TBR) =item * =begin original 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. [L] =end original キーがコンパイル時に既知の定数文字列オペランドである場合に、キー/値ペアのリストからハッシュを生成することが、一般的に高速になった。 [L] (TBR) =item * =begin original Processing of signatures at the start of a subroutine under the C feature is now more efficient at runtime. =end original Cの機能でサブルーチンの開始時にシグネチャを処理することが、実行時により効率的になった。 (TBR) =back =head1 Modules and Pragmata (モジュールとプラグマ) =head2 Updated Modules and Pragmata (更新されたモジュールとプラグマ) =over 4 =item * =begin original L has been upgraded from version 3.04 to 3.12. =end original L はバージョン 3.04 から 3.12 に更新されました。 =begin original This fixes CVE-2026-9538, CVE-2026-42496, and CVE-2026-42497. =end original これにより、CVE-2026-9538、CVE-2026-42496、およびCVE-2026-42497が修正されます。 (TBR) =item * =begin original L has been upgraded from version 0.36 to 0.37. =end original L はバージョン 0.36 から 0.37 に更新されました。 =item * =begin original L has been upgraded from version 1.89 to 1.92. =end original L はバージョン 1.89 から 1.92 に更新されました。 =item * =begin original L has been upgraded from version 1.007 to 1.012. =end original L はバージョン 1.007 から 1.012 に更新されました。 =item * =begin original L has been upgraded from version 1.85 to 1.89. =end original L はバージョン 1.85 から 1.89 に更新されました。 =item * =begin original L has been upgraded from version 1.50 to 1.51. =end original L はバージョン 1.50 から 1.51 に更新されました。 =item * =begin original L has been upgraded from version 2.213 to 2.218. =end original L はバージョン 2.213 から 2.218 に更新されました。 =item * =begin original L has been upgraded from version 2.213 to 2.222. =end original L はバージョン 2.213 から 2.222 に更新されました。 =item * =begin original L has been upgraded from version 0.38 to 0.39. =end original L はバージョン 0.38 から 0.39 に更新されました。 =item * =begin original L has been upgraded from version 2.150010 to 2.150013. =end original L はバージョン 2.150010 から 2.150013 に更新されました。 =item * =begin original L has been upgraded from version 2.143 to 2.145. =end original L はバージョン 2.143 から 2.145 に更新されました。 =item * =begin original L has been upgraded from version 1.859 to 1.860. =end original L はバージョン 1.859 から 1.860 に更新されました。 =item * =begin original L has been upgraded from version 3.21 to 3.24. =end original L はバージョン 3.21 から 3.24 に更新されました。 =item * =begin original L has been upgraded from version 1.11 to 1.12. =end original L はバージョン 1.11 から 1.12 に更新されました。 =item * =begin original L has been upgraded from version 1.38 to 1.39. =end original L はバージョン 1.38 から 1.39 に更新されました。 =item * =begin original L has been upgraded from version 0.035 to 0.036. =end original L はバージョン 0.035 から 0.036 に更新されました。 =item * =begin original L has been upgraded from version 0.280242 to 0.280243. =end original L はバージョン 0.280242 から 0.280243 に更新されました。 =item * =begin original L has been upgraded from version 7.76 to 7.78. =end original L はバージョン 7.76 から 7.78 に更新されました。 =item * =begin original L has been upgraded from version 1.14 to 1.15. =end original L はバージョン 1.14 から 1.15 に更新されました。 =item * =begin original L has been upgraded from version 3.57 to 3.63. =end original L はバージョン 3.57 から 3.63 に更新されました。 =item * =begin original L has been upgraded from version 3.57 to 3.63. =end original L はバージョン 3.57 から 3.63 に更新されました。 =item * =begin original L has been upgraded from version 1.97 to 2.02. =end original L はバージョン 1.97 から 2.02 に更新されました。 =item * =begin original L has been upgraded from version 2.41 to 2.43. =end original L はバージョン 2.41 から 2.43 に更新されました。 =item * =begin original L has been upgraded from version 1.04 to 1.08. =end original L はバージョン 1.04 から 1.08 に更新されました。 =item * =begin original L has been upgraded from version 1.42 to 1.44. =end original L はバージョン 1.42 から 1.44 に更新されました。 =item * =begin original L has been upgraded from version 3.94 to 3.95. =end original L はバージョン 3.94 から 3.95 に更新されました。 =item * =begin original L has been upgraded from version 1.14 to 1.15. =end original L はバージョン 1.14 から 1.15 に更新されました。 =item * =begin original L has been upgraded from version 0.2311 to 0.2312. =end original L はバージョン 0.2311 から 0.2312 に更新されました。 =item * =begin original L has been upgraded from version 0.96 to 0.97. =end original L はバージョン 0.96 から 0.97 に更新されました。 =item * =begin original L has been upgraded from version 1.64 to 1.65. =end original L はバージョン 1.64 から 1.65 に更新されました。 =item * =begin original L has been upgraded from version 1.14 to 1.15. =end original L はバージョン 1.14 から 1.15 に更新されました。 =item * =begin original L has been upgraded from version 0.090 to 0.096. =end original L はバージョン 0.090 から 0.096 に更新されました。 =begin original This fixes CVE-2026-7010 and CVE-2026-7017. =end original これにより、CVE-2026-7010およびCVE-2026-7017が修正されます。 (TBR) =item * =begin original L has been upgraded from version 1.55 to 1.56. =end original L はバージョン 1.55 から 1.56 に更新されました。 =item * =begin original L has been upgraded from version 2.213 to 2.223. =end original L はバージョン 2.213 から 2.223 に更新されました。 =begin original This fixes CVE-2025-15649, CVE-2026-48961, CVE-2026-48962, and CVE-2026-48959. =end original これにより、CVE-2025-15649、CVE-2026-48961、CVE-2026-48962、およびCVE-2026-48959が修正されます。 (TBR) =item * =begin original L has been upgraded from version 0.43 to 0.44. =end original L はバージョン 0.43 から 0.44 に更新されました。 =item * =begin original L has been upgraded from version 2.005002 to 2.005003. =end original L はバージョン 2.005002 から 2.005003 に更新されました。 =item * =begin original L has been upgraded from version 5.20250702 to 5.20260708. =end original L はバージョン 5.20250702 から 5.20260708 に更新されました。 =item * =begin original L has been upgraded from version 1.000038 to 1.000039. =end original L はバージョン 1.000038 から 1.000039 に更新されました。 =item * =begin original L has been upgraded from version 1.29 to 1.30. =end original L はバージョン 1.29 から 1.30 に更新されました。 =item * =begin original L has been upgraded from version 2.76 to 2.77. =end original L はバージョン 2.76 から 2.77 に更新されました。 =item * =begin original L has been upgraded from version 1.69 to 1.71. =end original L はバージョン 1.69 から 1.71 に更新されました。 =item * =begin original L has been upgraded from version 0.02 to 0.03. =end original L はバージョン 0.02 から 0.03 に更新されました。 =item * =begin original L has been upgraded from version 0.19 to 0.21. =end original L はバージョン 0.19 から 0.21 に更新されました。 =item * =begin original L has been upgraded from version 1.35 to 1.36. =end original L はバージョン 1.35 から 1.36 に更新されました。 =item * =begin original L has been upgraded from version 3.45 to 3.48. =end original L はバージョン 3.45 から 3.48 に更新されました。 =item * =begin original L has been upgraded from version 2.23 to 2.26. =end original L はバージョン 2.23 から 2.26 に更新されました。 =item * =begin original L has been upgraded from version 1.68_01 to 1.70. =end original L はバージョン 1.68_01 から 1.70 に更新されました。 =item * =begin original L has been upgraded from version 1.02 to 1.03. =end original L はバージョン 1.02 から 1.03 に更新されました。 =item * =begin original L has been upgraded from version 1.28 to 1.29. =end original L はバージョン 1.28 から 1.29 に更新されました。 =item * =begin original L has been upgraded from version 2.038 to 2.041. =end original L はバージョン 2.038 から 2.041 に更新されました。 =begin original This fixes CVE-2026-12087. =end original これにより、CVE-2026-12087が修正されます。 (TBR) =item * =begin original L has been upgraded from version 3.37 to 3.41. =end original L はバージョン 3.37 から 3.41 に更新されました。 =begin original This fixes CVE-2026-57433. =end original これにより、CVE-2026-57433が修正されます。 (TBR) =item * =begin original L has been upgraded from version 0.024 to 0.028. =end original L はバージョン 0.024 から 0.028 に更新されました。 =item * =begin original L has been upgraded from version 3.50 to 3.52. =end original L はバージョン 3.50 から 3.52 に更新されました。 =item * =begin original L has been upgraded from version 1.302210 to 1.302219. =end original L はバージョン 1.302210 から 1.302219 に更新されました。 =item * =begin original L has been upgraded from version 2.06 to 2.07. =end original L はバージョン 2.06 から 2.07 に更新されました。 =item * =begin original L has been upgraded from version 2.43 to 2.45. =end original L はバージョン 2.43 から 2.45 に更新されました。 =item * =begin original L has been upgraded from version 1.70 to 1.73. =end original L はバージョン 1.70 から 1.73 に更新されました。 =item * =begin original L has been upgraded from version 1.9778 to 1.9780. =end original L はバージョン 1.9778 から 1.9780 に更新されました。 =item * =begin original L has been upgraded from version 1.36 to 1.41. =end original L はバージョン 1.36 から 1.41 に更新されました。 =item * =begin original L has been upgraded from version 0.81 to 0.83. =end original L はバージョン 0.81 から 0.83 に更新されました。 =item * =begin original L has been upgraded from version 1.17 to 1.18. =end original L はバージョン 1.17 から 1.18 に更新されました。 =item * =begin original L has been upgraded from version 1.27 to 1.29. =end original L はバージョン 1.27 から 1.29 に更新されました。 =item * =begin original L has been upgraded from version 0.9933 to 0.9934. =end original L はバージョン 0.9933 から 0.9934 に更新されました。 =item * =begin original L has been upgraded from version 1.74 to 1.78. =end original L はバージョン 1.74 から 1.78 に更新されました。 =item * =begin original L has been upgraded from version 1.43 to 1.50. =end original L はバージョン 1.43 から 1.50 に更新されました。 =item * =begin original L has been upgraded from version 0.20 to 0.22. =end original L はバージョン 0.20 から 0.22 に更新されました。 =back =head1 Documentation (文書) =head2 Changes to Existing Documentation (既存の文書の変更) =begin original 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 L. =end original 私たちはこの文書で挙げられた変更を反映するように文書を更新しようとしています。 もし抜けている物を発見したら、 L でイシューを開いてください。 =begin original Additionally, the following selected changes have been made: =end original それに加えて、以下のような変更が行われました。 =head3 L =over 4 =item * =begin original Auto-generation of this document now includes the line number of the source code, as well as its documentation. =end original この文書の自動生成には、ソースコードの行番号と文書が含まれるようになりました。 (TBR) =item * =begin original It now contains information about how to find what release of Perl first contained an API element. =end original API要素が最初に含まれていたPerlのリリースを調べる方法についての情報が含まれるようになりました。 (TBR) =back =head3 L =over 4 =item * =begin original New entry for "New object system and C syntax". =end original "New object system and Csyntax"の新しいエントリ。 (TBR) =back =head3 L =over 4 =item * =begin original 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. =end original Perl XSコードを書くためのリファレンスマニュアルは完全に書き直され、現代化されました。 これは古いファイルの約2倍のサイズで、ANSI署名などのより現代的なXS構文を促進します。 (TBR) =back =head1 Diagnostics (診断メッセージ) =begin original 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 L. =end original 次のような追加と変更が、警告や致命的エラーメッセージを含む診断出力に 行われました。 診断メッセージの完全な一覧については、L を参照してください。 =head2 Changes to Existing Diagnostics (既存の診断メッセージの変更) =over 4 =item * =begin original L =end original L<初期化されていない値%sの使用|perldiag/"初期化されていない値%sの使用"> (TBR) =begin original 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. =end original 二項演算子の両方のオペランドが初期化されていない値の場合、この警告は逆の順序(右から左)で発行されました。 これは、オペランドの評価順序と一致するように修正されました。 (TBR) =item * =begin original 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 =end original UTF-8でエンコードされた文字を構成すると想定されているが、何らかの点で無効であるバイトシーケンスに関する特定の診断には、その決定に無関係なバイトは含まれません。 次に例を示します。 (TBR) =over =item old message =begin original Malformed UTF-8 character: C<\xc1\x27> (any UTF-8 sequence that starts with C<\xc1> is overlong which can and should be represented with a different, shorter sequence) =end original 不正な形式のUTF-8文字:C<\xc1\x27>(C<\xc1>で始まるUTF-8シーケンスは長すぎるため、別の短いシーケンスで表現する必要があります) (TBR) =item new message =begin original Malformed UTF-8 character: C<\xc1> (any UTF-8 sequence that starts with C<\xc1> is overlong which can and should be represented with a different, shorter sequence) =end original 不正な形式のUTF-8文字:C<\xc1>(C<\xc1>で始まるUTF-8シーケンスは長すぎるため、別の短いシーケンスで表すことができます。 ) (TBR) =back =begin original In this case the C<\xc1> is all that is needed to make the sequence invalid. Whatever comes after it is irrelevant (in this case, C<\x27>), and including it in the message might lead the reader to think that it somehow does matter. =end original この場合、シーケンスを無効にするために必要なのはC<\xc1>だけです。 その後に続くもの(この場合はC<\x27>)は無関係であり、メッセージに含めると、読者はそれが何らかの形で重要であると考えるかもしれません。 (TBR) =item * =begin original The error C has been changed to C. =end original エラーCがCに変更されました。 (TBR) =item * =begin original Variables whose name started with C<^_> were incorrectly shown in diagnostics with a literal C (which is an invisible ASCII character) in their name. =end original 名前がC<^_>で始まる変数が、名前にリテラルC(非表示のASCII文字)が含まれる診断で誤って表示されていました。 (TBR) =begin original 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. =end original キャレットで始まり、2文字を超える変数名は、ソースコード内と同様に中括弧で囲まれるようになりました。 (TBR) =begin original Therefore, using an undefined C<${^_FOO}> will now correctly warn with C, instead of the earlier C (with a literal C after the dollar sign). =end original したがって、未定義のC<${^_FOO}>を使用すると、以前のC(ドル記号の後にリテラルCを付ける)ではなく、Cで正しく警告されるようになりました。 (TBR) =begin original [L] =end original [L] (TBR) =item * =begin original Calling the C method on a package with no C method now produces a regular warning rather than a deprecation warning or error. =end original CメソッドのないパッケージでCメソッドを呼び出すと、非推奨の警告やエラーではなく、通常の警告が生成されるようになった。 (TBR) =begin original Since Perl 5.39.1, calling C 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 C and it is enabled by default. =end original Perl 5.39.1以降、このようなメソッドを使用せずにパッケージの引数を使用してCを呼び出すと、非推奨の警告が発生します。 Perl 5.43.6では、この非推奨がエラーに昇格しました。 これにより、警告を上回る利点はほとんどなく、かなりの量のコードが破損しました。 この致命的なエラーは警告に戻され、非推奨ステータスが削除されました。 今後、これを致命的にする計画はありません。 この警告のカテゴリはCであり、デフォルトで有効になっています。 (TBR) =back =head2 New Diagnostics (新しい警告メッセージ) =head3 New Errors (新しいエラー) =over 4 =item * =begin original L =end original L<キャッチ変数を"%s"|perldiagとして再宣言できません/"キャッチ変数を"%s"として再宣言できません"> (TBR) =begin original (F) A C, C or C keyword was used with the exception variable in a C block: =end original (F)C、C、またはCキーワードが、Cブロック内の例外変数とともに使用されました。 (TBR) try { ... } catch (my $e) { ... } # or catch (our $e) { ... } # or catch (state $e) { ... } =begin original This is not valid syntax. C takes a bare variable name, which is automatically lexically declared. [L] =end original これは有効な構文ではありません。 Cは裸の変数名を取り、自動的に字句的に宣言されます。 [L] (TBR) =item * =begin original L =end original L<"goto"を使用して構成にジャンプすることはできなくなりました|perldiag/""goto"を使用して構成にジャンプすることはできなくなりました"> (TBR) =begin original (F) You have used C or C in an attempt to jump into the body of a loop or other block construct from the outside. As of Perl 5.44, this throws an exception. =end original (F)CまたはCを使用して、ループまたは他のブロック構造の本体に外部からジャンプしようとしました。 Perl 5.44では、これは例外をスローします。 (TBR) =item * =begin original L<\x{%X} is a \w char that isn't valid in a name "%s" |perldiag/\x{%X} is a \w char that isn't valid in a name "%s"> =end original L<\x{%X}は\w文字であり、名前「%s」では無効です|perldiag/\x{%X}は\w文字であり、名前「%s」では無効です> (TBR) =begin original In most cases where this message now appears, an error would have occurred anyway, but the text would not have been helpful in finding the problem. =end original このメッセージが表示されるほとんどの場合、いずれにしてもエラーが発生していますが、テキストは問題を見つけるのに役立ちませんでした。 (TBR) =back =head3 New Warnings (新しい警告) =over 4 =item * =begin original L =end original L (TBR) =begin original (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. =end original (W qw)qw()リストは空白で区切られた項目を含みます。 予想に反して、バックスラッシュ文字は空白が分割されないように「保護」するために使用することはできず、代わりにリテラルデータとして扱われます。 (TBR) =begin original Note that this warning is I emitted when the backslash is followed by actual whitespace (that C splits on). =end original この警告は、バックスラッシュの後に実際の空白(Cが分割する)が続く場合にIが発行されることに注意してください。 (TBR) =back =head1 Configuration and Compilation (設定とコンパイル) =over 4 =item * =begin original C23 F<< >> and associated macros are now used if available. =end original C23 F<<>>および関連マクロが使用可能な場合に使用されるようになりました。 (TBR) =item * =begin original It is now possible to pass to F 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 F and then run it on the target machine, and then pass the values it outputs to F on the other machine. F has examples. [L] =end original POSIXロケールカテゴリを扱う値をFに渡して、自動計算を上書きできるようになりました。 これにより、クロスコンパイルが機能します。 これを行う最も簡単な方法は、Fから計算を行うCプログラムを抽出し、ターゲットマシンで実行して、出力した値を他のマシンのFに渡すことです。 Fには例があります。 [L] (TBR) =item * =begin original The C 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. [L] =end original C設定マクロが削除されました。 ほとんど文書化されておらず、Perl 5.10.0以降はデフォルトで無効になっています。 その目的は、すべてのGVがSVスロットを作成時に強制的に初期化することでした。 [L] (TBR) =back =head1 Testing (テスト) =begin original Tests were added and changed to reflect the other additions and changes in this release. Furthermore, these changes were made: =end original このリリースのその他の追加と変更を反映するために、テストが追加および変更されました。 さらに、次の変更が行われました。 (TBR) =over 4 =item * =begin original 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. (L