名前

perldelta - what is new for perl v5.32.0

perl5320delta - perl v5.32.0 での変更点

説明

This document describes differences between the 5.30.0 release and the 5.32.0 release.

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

If you are upgrading from an earlier release such as 5.28.0, first read perl5300delta, which describes differences between 5.28.0 and 5.30.0.

5.28.0 のような以前のリリースから更新する場合は、まず 5.28.0 と 5.30.0 の違いについて記述している perl5300delta を読んでください。

コアの拡張

isa 演算子

A new experimental infix operator called isa tests whether a given object is an instance of a given class or a class derived from it:

isa という名前の新しい実験的な二項演算子は、 与えられたオブジェクトが指定されたクラスまたはその派生クラスの インスタンスかどうかをテストします:

    if( $obj isa Package::Name ) { ... }

さらなる詳細については "Class Instance Operator" in perlop を参照してください。

Unicode 13.0 対応

詳しくは https://www.unicode.org/versions/Unicode13.0.0/ を 参照してください。

連鎖比較機能

Some comparison operators, as their associativity, chain with some operators of the same precedence (but never with operators of different precedence).

一部の比較演算子は、その結合性により、同じ優先順位を持ついくつかの 演算子と 連鎖 します (しかし異なった優先順位を持つ演算子と 連鎖することはありません)。

    if ( $x < $y <= $z ) {...}

behaves exactly like:

これは正確に次のように振る舞います:

    if ( $x < $y && $y <= $z ) {...}

(assuming that "$y" is as simple a scalar as it looks.)

("$y" は見た目通りに単純なスカラと仮定します。)

You can read more about this in perlop under "Operator Precedence and Associativity" in perlop.

perlop"Operator Precedence and Associativity" in perlop で これについてさらに読むことができます。

New Unicode properties Identifier_Status and Identifier_Type supported

(新しい Unicode 特性 Identifier_StatusIdentifier_Type に対応)

Unicode is in the process of revising its regular expression requirements: https://www.unicode.org/draft/reports/tr18/tr18.html. As part of that they are wanting more properties to be exposed, ones that aren't part of the strict UCD (Unicode character database). These two are used for examining inputs for security purposes. Details on their usage is at https://www.unicode.org/reports/tr39/proposed.html.

Unicode は正規表現要件の見直し作業中です: https://www.unicode.org/draft/reports/tr18/tr18.html。 この一環として、厳密な UCD (Unicode character database) の一部ではない、 より多くの特性を露出させるように求めています。 これら二つはセキュリティ上の理由で入力を検査するために使われています。 これらの使用法の詳細は https://www.unicode.org/reports/tr39/proposed.html にあります。

It is now possible to write qr/\p{Name=...}/, or qr!\p{na=/(SMILING|GRINNING) FACE/}!

(qr/\p{Name=...}/qr!\p{na=/(SMILING|GRINNING) FACE/}! と書けるようになりました)

The Unicode Name property is now accessible in regular expression patterns, as an alternative to \N{...}. A comparison of the two methods is given in "Comparison of \N{...} and \p{name=...}" in perlunicode.

\N{...} の代替策として、Unicode Name 特性が正規表現パターン中で アクセス可能になりました。 二つの手法の比較は "Comparison of \N{...} and \p{name=...}" in perlunicode にあります。

The second example above shows that wildcard subpatterns are also usable in this property. See "Wildcards in Property Values" in perlunicode.

前述の 2 番目の例は、この特性でワイルドカード部分パターンも使えることを 示しています。 "Wildcards in Property Values" in perlunicode を参照してください。

Improvement of POSIX::mblen(), mbtowc, and wctomb

(POSIX::mblen(), mbtowc, wctomb の改良)

The POSIX::mblen(), mbtowc, and wctomb functions now work on shift state locales and are thread-safe on C99 and above compilers when executed on a platform that has locale thread-safety; the length parameters are now optional.

POSIX::mblen(), mbtowc, wctomb 関数は、 状態遷移ロケールで動作するようになり、 ロケールがスレッドセーフなプログラムで実行されるとき、 C99 以上のコンパイラではスレッドセーフになりました; 長さの引数はオプションになりました。

These functions are always executed under the current C language locale. (See perllocale.) Most locales are stateless, but a few, notably the very rarely encountered ISO 2022, maintain a state between calls to these functions. Previously the state was cleared on every call, but now the state is not reset unless the appropriate parameter is undef.

これらの関数は常に現在の C 言語のロケールの基で実行されます。 (perllocale を参照してください。) ほとんどのロケールはステートレスですが、いくつかのロケール、 特にとても稀に遭遇する ISO 2022 は、これらの関数の呼び出し間で 状態を維持します。 以前はこの状態は呼び出し毎にクリアされていましたが、 指定された引数が undef でない限り、この状態はリセットされなくなりました。

On threaded perls, the C99 functions mbrlen(3), mbrtowc(3), and wcrtomb(3), when available, are substituted for the plain functions. This makes these functions thread-safe when executing on a locale thread-safe platform.

スレッド対応 perl で、C99 関数 mbrlen(3), mbrtowc(3), wcrtomb(3) が利用可能なら、通常の関数を置き換えます。 これにより、ロケールがスレッドセーフなプラットフォームで実行されたとき、 これらの関数もスレッドセーフになります。

The string length parameters in mblen and mbtowc are now optional; useful only if you wish to restrict the length parsed in the source string to less than the actual length.

mblenmbtowc での文字列の長さの引数はオプションになりました; ソース文字列をパースする長さを実際の長さよりも短く制限したい場合にのみ 有用です。

アルファアサートはもはや実験的ではなくなりました

See "(*pla:pattern)" in perlre, "(*plb:pattern)" in perlre, "(*nla:pattern)" in perlre>, and "(*nlb:pattern)" in perlre. Use of these no longer generates a warning; existing code that disables the warning category experimental::alpha_assertions will continue to work without any changes needed. Enabling the category has no effect.

"(*pla:pattern)" in perlre, "(*plb:pattern)" in perlre, "(*nla:pattern)" in perlre>, "(*nlb:pattern)" in perlre を参照してください。 これらの使用はもはや警告を出力しません; 警告カテゴリ experimental::alpha_assertions を無効にする既存のコードは 何の変更の必要もなく動き続けます。 このカテゴリを有効にしても何も起きません。

用字並びはもはや実験的ではなくなりました

See "Script Runs" in perlre. Use of these no longer generates a warning; existing code that disables the warning category experimental::script_run will continue to work without any changes needed. Enabling the category has no effect.

"Script Runs" in perlre を参照してください。 これらの使用はもはや警告を出力しません; 警告カテゴリ experimental::script_run を無効にする既存のコードは 何の変更の必要もなく動き続けます。 このカテゴリを有効にしても何も起きません。

機能チェックがより速くなりました

Previously feature checks in the parser required a hash lookup when features were set outside of a feature bundle, this has been optimized to a bit mask check. [GH #17229]

以前は、機能が機能の束の外側で設定されていた場合、パーサでの機能チェックは ハッシュの検索が必要でした。 これは、ビットマスクチェックに最適化されました。 [GH #17229]

Perl は GitHub で開発されるようになりました

Perl is now developed on GitHub. You can find us at https://github.com/Perl/perl5.

Perl は GitHub で開発されるようになりました。 https://github.com/Perl/perl5 で見られます。

Non-security bugs should now be reported via GitHub. Security issues should continue to be reported as documented in perlsec.

非セキュリティバグは GitHub 経由で報告してください。 セキュリティ問題は引き続き perlsec に書かれている方法で報告してください。

コンパイルされたパターンは最適化される前にダンプされるようになりました

This is primarily useful for tracking down bugs in the regular expression compiler. This dump happens on -DDEBUGGING perls, if you specify -Drv on the command line; or on any perl if the pattern is compiled within the scope of use re qw(Debug DUMP_PRE_OPTIMIZE) or use re qw(Debug COMPILE EXTRA). (All but the second case display other information as well.)

これは主に正規表現コンパイラの中のバグを見つけ出すのに有用です。 このダンプは -DDEBUGGING perl でコマンドラインに -Drv を指定するか; パターンが use re qw(Debug DUMP_PRE_OPTIMIZE) または use re qw(Debug COMPILE EXTRA) のスコープの下でコンパイルされた場合は 全ての perl で発生します (2 番目以外の全ての場合は他の情報も表示されます。)

セキュリティ

[CVE-2020-10543] Buffer overflow caused by a crafted regular expression

A signed size_t integer overflow in the storage space calculations for nested regular expression quantifiers could cause a heap buffer overflow in Perl's regular expression compiler that overwrites memory allocated after the regular expression storage space with attacker supplied data.

ネストした正規表現量指定子の保管スペースの計算での 符号付き size_t 整数オーバーフローを引き起こすことがあります; これにより Perl の正規表現コンパイラが、 攻撃者が提供したデータの正規表現保管スペースの後ろに割り当てられた メモリを上書きするという、 ヒープバッファオーバーフローを引き起こすことがあります。

The target system needs a sufficient amount of memory to allocate partial expansions of the nested quantifiers prior to the overflow occurring. This requirement is unlikely to be met on 64-bit systems.

ターゲットシステムは、オーバーフローが起きる前に、ネストした量指定子の 部分的な十分な量のメモリが必要です。 この要求を 64 ビットシステムで満たすことはおそらくできないでしょう。

Discovered by: ManhND of The Tarantula Team, VinCSS (a member of Vingroup).

ManhND of The Tarantula Team, VinCSS (Vingroup のメンバー) によって 発見されました。

[CVE-2020-10878] Integer overflow via malformed bytecode produced by a crafted regular expression

Integer overflows in the calculation of offsets between instructions for the regular expression engine could cause corruption of the intermediate language state of a compiled regular expression. An attacker could abuse this behaviour to insert instructions into the compiled form of a Perl regular expression.

正規表現エンジンの命令の間でのオフセットの整数オーバーフローにより、 コンパイルされた正規表現の中間言語状態が破壊されることがあります。 攻撃者はこの振る舞いを、Perl 正規表現のコンパイルされた形式に命令を 挿入することに悪用できます。

Discovered by: Hugo van der Sanden and Slaven Rezic.

Hugo van der Sanden と Slaven Rezic によって発見されました。

[CVE-2020-12723] Buffer overflow caused by a crafted regular expression

Recursive calls to S_study_chunk() by Perl's regular expression compiler to optimize the intermediate language representation of a regular expression could cause corruption of the intermediate language state of a compiled regular expression.

正規表現の中間言語表現を最適化するために、 Perl の正規表現コンパイラが S_study_chunk() を再帰呼び出しすることで、 コンパイルされた正規表現の中間言語状態が破壊されることがあります。

Discovered by: Sergey Aleynikov.

Sergey Aleynikov によって発見されました。

追加の注意

An application written in Perl would only be vulnerable to any of the above flaws if it evaluates regular expressions supplied by the attacker. Evaluating regular expressions in this fashion is known to be dangerous since the regular expression engine does not protect against denial of service attacks in this usage scenario.

Perl で書かれたアプリケーションは、攻撃者によって提供された正規表現を 評価している場合にのみ、前述の不具合に対して脆弱です。 このような方法で正規表現を評価することは、危険であることが知られています; 正規表現エンジンはこのような使用シナリオでのサービス不能攻撃から 守られていないからです。

互換性のない変更

ある種のパターンマッチング機能は、Unicode 特性値ワイルドカード部分パターンのコンパイル時に禁止されるようになりました

These few features are either inappropriate or interfere with the algorithm used to accomplish this task. The complete list is in "Wildcards in Property Values" in perlunicode.

これらのほんの一部の機能は、不適切か、この作業を達成するのに 使われるアルゴリズムを妨害します。 完全なリストは "Wildcards in Property Values" in perlunicode にあります。

Unused functions POSIX::mbstowcs and POSIX::wcstombs are removed

(未使用関数 POSIX::mbstowcsPOSIX::wcstombs は削除されました)

These functions could never have worked due to a defective interface specification. There is clearly no demand for them, given that no one has ever complained in the many years the functions were claimed to be available, hence so-called "support" for them is now dropped.

これらの関数は、欠陥のあるインターフェース定義のために全く 動作していませんでした。 この関数が利用可能であると主張してから何年間も誰も苦情を言わなかったので、 明らかにこれらの需要はありません; 従ってこれらに対する「対応」は 削除されました。

A bug fix for (?[...]) may have caused some patterns to no longer compile

((?[...]) のバグ修正により、一部のパターンはもはやコンパイル出来なくなったかもしれません)

See "Selected Bug Fixes". The heuristics previously used may have let some constructs compile (perhaps not with the programmer's intended effect) that should have been errors. None are known, but it is possible that some erroneous constructs no longer compile.

"Selected Bug Fixes" を参照してください。 以前使われていた経験則では、エラーになるべき一部の構文が (おそらくプログラマの意図しない効果として)コンパイル出来ていたかもしれません。 現在知られているものはありませんが、一部の誤った構文がもはや コンパイル出来なくなった可能性があります。

\p{user-defined} properties now always override official Unicode ones

(\p{user-defined} 特性は常に公的な Unicode のものを上書きするようになりました)

Previously, if and only if a user-defined property was declared prior to the compilation of the regular expression pattern that contains it, its definition was used instead of any official Unicode property with the same name. Now, it always overrides the official property. This change could break existing code that relied (likely unwittingly) on the previous behavior. Without this fix, if Unicode released a new version with a new property that happens to have the same name as the one you had long been using, your program would break when you upgraded to a perl that used that new Unicode version. See "User-Defined Character Properties" in perlunicode. [GH #17205]

以前は、ユーザー定義特性がそれを含む正規表現パターンのコンパイルより 前に宣言された場合にのみ、 その定義は、同じ名前の公式 Unicode 特性の代わりに使われていました。 これは、常に公式特性を上書きするようになりました。 この変更は、以前の振る舞いに(おそらくうっかり)依存していた既存のコードを 壊すかもしれません。 この修正なしでは、もし Unicode が、たまたまあなたが長い間使っていたのと 同じ名前の新しい特性を持つ新しいバージョンをリリースすると、 あなたのプログラムは、その新しい Unicode バージョンを使う perl に アップグレードしたときに、壊れることになります。 "User-Defined Character Properties" in perlunicode を参照してください。 [GH #17205]

変更可能な変数は定数の中ではもはや許されなくなりました

Code like:

次のようなコードで:

    my $var;
    $sub = sub () { $var };

where $var is referenced elsewhere in some sort of modifiable context now produces an exception when the sub is defined.

$var が何らかの変更可能な内容へのリファレンスの場合、 サブルーチンが定義されたときに例外を出力するようになりました。

This error can be avoided by adding a return to the sub definition:

このエラーは、関数定義に return を追加することで避けられます:

    $sub = sub () { return $var };

This has been deprecated since Perl 5.22. [perl #134138]

これは Perl 5.22 から廃止予定でした。 [perl #134138]

Use of vec on strings with code points above 0xFF is forbidden

(0xFF を超える符号位置の文字列に対する vec の使用は禁止されました)

Such strings are represented internally in UTF-8, and vec is a bit-oriented operation that will likely give unexpected results on those strings. This was deprecated in perl 5.28.0.

このような文字列は内部では UTF-8 で表現されていて、 vec はビット指向演算なので、おそらくこれらの文字列に対しては 想定外の結果になります。 これは perl 5.28.0 で廃止予定になっていました。

0xFF を超える符号位置に対する文字列ビット単位演算子

Some uses of these were already illegal after a previous deprecation cycle. The remaining uses are now prohibited, having been deprecated in perl 5.28.0. See perldeprecation.

これらの使用法の一部は既に以前の廃止予定サイクルで不正なものになっていました。 perl 5.28.0 で廃止予定になっていた、残りの使用法も禁止されました。 perldeprecation を参照してください。

Sys::Hostname::hostname() does not accept arguments

(Sys::Hostname::hostname() は引数を許さなくなりました)

This usage was deprecated in perl 5.28.0 and is now fatal.

この使用法は perl 5.28.0 から廃止予定でしたが、致命的エラーになりました。

範囲演算子での単なる文字列 "0" は数値として扱われるようになりました

Previously a range "0" .. "-1" would produce a range of numeric strings from "0" through "99"; this now produces an empty list, just as 0 .. -1 does. This also means that "0" .. "9" now produces a list of integers, where previously it would produce a list of strings.

以前は、範囲 "0" .. "-1" は "0" から "99" までの数値文字列の範囲を 生成していました; これは 0 .. -1 と同様に空リストを 生成するようになりました。 また、"0" .. "9" は以前は文字列のリストを生成していましたが、 整数のリストを生成するようになりました。

This was due to a special case that treated strings starting with "0" as strings so ranges like "00" .. "03" produced "00", "01", "02", "03", but didn't specially handle the string "0". [perl #133695]

これは、先頭が "0" で始まる文字列を文字列として扱う特殊ケースのためで、 "00" .. "03" のような範囲は "00", "01", "02", "03" を生成しますが、 文字列 "0" は特に扱っていませんでした。 [perl #133695]

\K now disallowed in look-ahead and look-behind assertions

(\K は先読みと後読みの言明では許されなくなりました)

This was disallowed because it causes unexpected behaviour, and no-one could define what the desired behaviour should be. [perl #124256]

これは、想定外の振る舞いを引き起こし、望まれる振る舞いがどうあるべきか 誰も定義できなかったので、許されなくなりました。 [perl #124256]

性能改善

  • my_strnlen has been sped up for systems that don't have their own strnlen implementation.

    my_strnlen は、自身の strnlen 実装を持たないシステムで 高速化されました。

  • grok_bin_oct_hex (and so, grok_bin, grok_oct, and grok_hex) have been sped up.

    grok_bin_oct_hex (および grok_bin, grok_oct, grok_hex) は 高速化されました。

  • grok_number_flags has been sped up.

    grok_number_flags は高速化されました。

  • sort is now noticeably faster in cases such as sort {$a <=> $b} or sort {$b <=> $a}. [GH #17608]

    sort は、sort {$a <=> $b}sort {$b <=> $a} のような場合に 著しく速くなりました。 [GH #17608]

モジュールとプラグマ

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

  • Archive::Tar has been upgraded from version 2.32 to 2.36.

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

  • autodie has been upgraded from version 2.29 to 2.32.

    autodie はバージョン 2.29 から 2.32 に更新されました。

  • B has been upgraded from version 1.76 to 1.80.

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

  • B::Deparse has been upgraded from version 1.49 to 1.54.

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

  • Benchmark has been upgraded from version 1.22 to 1.23.

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

  • charnames has been upgraded from version 1.45 to 1.48.

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

  • Class::Struct has been upgraded from version 0.65 to 0.66.

    Class::Struct はバージョン 0.65 から 0.66 に更新されました。

  • Compress::Raw::Bzip2 has been upgraded from version 2.084 to 2.093.

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

  • Compress::Raw::Zlib has been upgraded from version 2.084 to 2.093.

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

  • CPAN has been upgraded from version 2.22 to 2.27.

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

  • DB_File has been upgraded from version 1.843 to 1.853.

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

  • Devel::PPPort has been upgraded from version 3.52 to 3.57.

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

    The test files generated on Win32 are now identical to when they are generated on POSIX-like systems.

    Win32 で生成されたテストファイルは、 POSIX 風システムで作成されたものと同じになりました。

  • diagnostics has been upgraded from version 1.36 to 1.37.

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

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

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

  • Dumpvalue has been upgraded from version 1.18 to 1.21.

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

    Previously, when dumping elements of an array and encountering an undefined value, the string printed would have been empty array. This has been changed to what was apparently originally intended: empty slot.

    以前は、配列の要素をダンプ中に未定義値に遭遇すると、 表示される文字列は empty array でした。 これは、おそらく最初に意図していたものに変更されました: empty slot

  • DynaLoader has been upgraded from version 1.45 to 1.47.

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

  • Encode has been upgraded from version 3.01 to 3.06.

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

  • encoding has been upgraded from version 2.22 to 3.00.

    encoding はバージョン 2.22 から 3.00 に更新されました。

  • English has been upgraded from version 1.10 to 1.11.

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

  • Exporter has been upgraded from version 5.73 to 5.74.

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

  • ExtUtils::CBuilder has been upgraded from version 0.280231 to 0.280234.

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

  • ExtUtils::MakeMaker has been upgraded from version 7.34 to 7.44.

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

  • feature has been upgraded from version 1.54 to 1.58.

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

    A new indirect feature has been added, which is enabled by default but allows turning off indirect object syntax.

    新しい indirect 機能が追加されました; これはデフォルトでは有効ですが、 間接オブジェクト文法 をオフに出来ます。

  • File::Find has been upgraded from version 1.36 to 1.37.

    File::Find はバージョン 1.36 から 1.37 に更新されました。

    On Win32, the tests no longer require either a file in the drive root directory, or a writable root directory.

    Win32 では、ファイルがドライブのルートディレクトリか書き込み可能な ルートディレクトリであることのテストはもはや要求されなくなりました。

  • File::Glob has been upgraded from version 1.32 to 1.33.

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

  • File::stat has been upgraded from version 1.08 to 1.09.

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

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

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

  • Getopt::Long has been upgraded from version 2.5 to 2.51.

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

  • Hash::Util has been upgraded from version 0.22 to 0.23.

    Hash::Util はバージョン 0.22 から 0.23 に更新されました。

    The Synopsis has been updated as the example code stopped working with newer perls. [GH #17399]

    例のコードが新しい perl で動作しなくなっていたので、概要が更新されました。 [GH #17399]

  • I18N::Langinfo has been upgraded from version 0.18 to 0.19.

    I18N::Langinfo はバージョン 0.18 から 0.19 に更新されました。

  • I18N::LangTags has been upgraded from version 0.43 to 0.44.

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

    Document the IGNORE_WIN32_LOCALE environment variable.

    IGNORE_WIN32_LOCALE 環境変数が文書化されました。

  • IO has been upgraded from version 1.40 to 1.43.

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

    IO::Socket no longer caches a zero protocol value, since this indicates that the implementation will select a protocol. This means that on platforms that don't implement SO_PROTOCOL for a given socket type the protocol method may return undef.

    IO::Socket はもはやプロトコルの値の 0 をキャッシュしなくなりました; なぜならこれは実装がプロトコルを選ぶことを示しているからです。 つまり、与えられたソケット型に対して SO_PROTOCOL が実装されていない プラットフォームでは、protocol メソッドは undef を 返すかもしれないということです。

    The supplied TO is now always honoured on calls to the send() method. [perl #133936]

    指定された TO は常に send() メソッドで効果を持つようになりました。 [perl #133936]

  • IO-Compress has been upgraded from version 2.084 to 2.093.

    IO-Compress はバージョン 2.084 から 2.093 に更新されました。

  • IPC::Cmd has been upgraded from version 1.02 to 1.04.

    IPC::Cmd はバージョン 1.02 から 1.04 に更新されました。

  • IPC::Open3 has been upgraded from version 1.20 to 1.21.

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

  • JSON::PP has been upgraded from version 4.02 to 4.04.

    JSON::PP はバージョン 4.02 から 4.04 に更新されました。

  • Math::BigInt has been upgraded from version 1.999816 to 1.999818.

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

  • Math::BigInt::FastCalc has been upgraded from version 0.5008 to 0.5009.

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

  • Module::CoreList has been upgraded from version 5.20190522 to 5.20200620.

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

  • Module::Load::Conditional has been upgraded from version 0.68 to 0.70.

    Module::Load::Conditional はバージョン 0.68 から 0.70 に更新されました。

  • Module::Metadata has been upgraded from version 1.000036 to 1.000037.

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

  • mro has been upgraded from version 1.22 to 1.23.

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

  • Net::Ping has been upgraded from version 2.71 to 2.72.

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

  • Opcode has been upgraded from version 1.43 to 1.47.

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

  • open has been upgraded from version 1.11 to 1.12.

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

  • overload has been upgraded from version 1.30 to 1.31.

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

  • parent has been upgraded from version 0.237 to 0.238.

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

  • perlfaq has been upgraded from version 5.20190126 to 5.20200523.

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

  • PerlIO has been upgraded from version 1.10 to 1.11.

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

  • PerlIO::encoding has been upgraded from version 0.27 to 0.28.

    PerlIO::encoding はバージョン 0.27 から 0.28 に更新されました。

  • PerlIO::via has been upgraded from version 0.17 to 0.18.

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

  • Pod::Html has been upgraded from version 1.24 to 1.25.

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

  • Pod::Simple has been upgraded from version 3.35 to 3.40.

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

  • podlators has been upgraded from version 4.11 to 4.14.

    podlators はバージョン 4.11 から 4.14 に更新されました。

  • POSIX has been upgraded from version 1.88 to 1.94.

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

  • re has been upgraded from version 0.37 to 0.40.

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

  • Safe has been upgraded from version 2.40 to 2.41.

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

  • Scalar::Util has been upgraded from version 1.50 to 1.55.

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

  • SelfLoader has been upgraded from version 1.25 to 1.26.

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

  • Socket has been upgraded from version 2.027 to 2.029.

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

  • Storable has been upgraded from version 3.15 to 3.21.

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

    Use of note() from Test::More is now optional in tests. This works around a circular dependency with Test::More when installing on very old perls from CPAN.

    Test::More からの note() の使用はテストでオプションになりました。 これは、CPAN からとても古い perl にインストールしたときの Test::More の 循環参照を回避します。

    Vstring magic strings over 2GB are now disallowed.

    2GB を超える Vstring マジック文字列は許されなくなりました。

    Regular expressions objects weren't properly counted for object id purposes on retrieve. This would corrupt the resulting structure, or cause a runtime error in some cases. [perl #134179]

    正規表現オブジェクトは取得の目的のためのオブジェクト ID が適切に カウントされていませんでした。 これは結果の構造体を壊したり、場合によっては実行時エラーを 引き起こすことがありました。 [perl #134179]

  • Sys::Hostname has been upgraded from version 1.22 to 1.23.

    Sys::Hostname はバージョン 1.22 から 1.23 に更新されました。

  • Sys::Syslog has been upgraded from version 0.35 to 0.36.

    Sys::Syslog はバージョン 0.35 から 0.36 に更新されました。

  • Term::ANSIColor has been upgraded from version 4.06 to 5.01.

    Term::ANSIColor はバージョン 4.06 から 5.01 に更新されました。

  • Test::Simple has been upgraded from version 1.302162 to 1.302175.

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

  • Thread has been upgraded from version 3.04 to 3.05.

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

  • Thread::Queue has been upgraded from version 3.13 to 3.14.

    Thread::Queue はバージョン 3.13 から 3.14 に更新されました。

  • threads has been upgraded from version 2.22 to 2.25.

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

  • threads::shared has been upgraded from version 1.60 to 1.61.

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

  • Tie::File has been upgraded from version 1.02 to 1.06.

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

  • Tie::Hash::NamedCapture has been upgraded from version 0.10 to 0.13.

    Tie::Hash::NamedCapture はバージョン 0.10 から 0.13 に更新されました。

  • Tie::Scalar has been upgraded from version 1.04 to 1.05.

    Tie::Scalar はバージョン 1.04 から 1.05 に更新されました。

  • Tie::StdHandle has been upgraded from version 4.5 to 4.6.

    Tie::StdHandle はバージョン 4.5 から 4.6 に更新されました。

  • Time::HiRes has been upgraded from version 1.9760 to 1.9764.

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

    Removed obsolete code such as support for pre-5.6 perl and classic MacOS. [perl #134288]

    5.6 より前の perl やクラシック MacOS の対応のためのような古いコードが 削除されました。 [perl #134288]

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

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

  • Unicode::Normalize has been upgraded from version 1.26 to 1.27.

    Unicode::Normalize はバージョン 1.26 から 1.27 に更新されました。

  • Unicode::UCD has been upgraded from version 0.72 to 0.75.

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

  • VMS::Stdio has been upgraded from version 2.44 to 2.45.

    VMS::Stdio はバージョン 2.44 から 2.45 に更新されました。

  • warnings has been upgraded from version 1.44 to 1.47.

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

  • Win32 has been upgraded from version 0.52 to 0.53.

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

  • Win32API::File has been upgraded from version 0.1203 to 0.1203_01.

    Win32API::File はバージョン 0.1203 から 0.1203_01 に更新されました。

  • XS::APItest has been upgraded from version 1.00 to 1.09.

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

削除されたモジュールとプラグマ

  • Pod::Parser has been removed from the core distribution. It still is available for download from CPAN. This resolves [perl #119439].

    Pod::Parser はコア配布から削除されました。 これは依然として CPAN からダウンロードすることで利用可能です。 これは [perl #119439] を解決します。

文書

既存の文書の変更

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:

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

perldebguts

  • Simplify a few regnode definitions

    いくつかの regnode 定義の単純化

    Update BOUND and NBOUND definitions.

    BOUNDNBOUND の定義の更新

  • Add ANYOFHs regnode

    ANYOFHs regnode の追加

    This node is like ANYOFHb, but is used when more than one leading byte is the same in all the matched code points.

    このノードは ANYOFHb と同様ですが、全てのマッチングした符号位置について 先頭の 2 バイト以上が等しい場合に使われます。

    ANYOFHb is used to avoid having to convert from UTF-8 to code point for something that won't match. It checks that the first byte in the UTF-8 encoded target is the desired one, thus ruling out most of the possible code points.

    ANYOFHb は、何かマッチングしないものに対して UTF-8 から符号位置に 変換する必要性を避けるために使われます。 これは、UTF-8 エンコードされたターゲットの最初のバイトが 求められているものかをチェックすることで、可能性のある符号位置の ほとんどを除外します。

perlapi

  • sv_2pvbyte updated to mention it will croak if the SV cannot be downgraded.

    sv_2pvbyte は、SV が降格できないときに croak することについて 言及するように更新されました。

  • sv_setpvn updated to mention that the UTF-8 flag will not be changed by this function, and a terminating NUL byte is guaranteed.

    sv_setpvn は、UTF-8 フラグはこの関数によって変更されないこと、 および末尾の NUL が保証されていることについて言及するように更新されました。

  • Documentation for PL_phase has been added.

    PL_phase の文書が追加されました。

  • The documentation for grok_bin, grok_oct, and grok_hex has been updated and clarified.

    grok_bin, grok_oct, grok_hex の文書が更新および明確化されました。

perldiag

  • Add documentation for experimental 'isa' operator

    実験的な 'isa' 演算子の文書の追加

    (S experimental::isa) This warning is emitted if you use the (isa) operator. This operator is currently experimental and its behaviour may change in future releases of Perl.

    (S experimental::isa) この警告は、(isa) 演算子を使うと発生します。 この演算子は現在のところ実験的であり、振る舞いは将来のリリースの Perl で 変更されるかもしれません。

perlfunc

caller

Like __FILE__ and __LINE__, the filename and line number returned here may be altered by the mechanism described at "Plain Old Comments (Not!)" in perlsyn.

__FILE____LINE__ と同様、 ここに返されたファイル名と行番号は "Plain Old Comments (Not!)" in perlsyn で記述された機構によって 置き換えることができます。

__FILE__

It can be altered by the mechanism described at "Plain Old Comments (Not!)" in perlsyn.

これは "Plain Old Comments (Not!)" in perlsyn で記述された機構によって 置き換えることができます。

__LINE__

It can be altered by the mechanism described at "Plain Old Comments (Not!)" in perlsyn.

これは "Plain Old Comments (Not!)" in perlsyn で記述された機構によって 置き換えることができます。

return

Now mentions that you cannot return from do BLOCK.

do BLOCK から帰れないことに言及しました。

open

The open() section had been renovated significantly.

open() の節は大きく刷新されました。

perlguts

  • No longer suggesting using perl's malloc. Modern system malloc is assumed to be much better than perl's implementation now.

    もはや perl の malloc を使うことを提案しなくなりました。 今ではモダンなシステムの malloc は perl の実装より遙かに良いものであると 仮定されます。

  • Documentation about embed.fnc flags has been removed. embed.fnc now has sufficient comments within it. Anyone changing that file will see those comments first, so entries here are now redundant.

    embed.fnc フラグに関する文書が削除されました。 embed.fnc は十分なコメントを内部に持つようになりました。 このファイルを変更しようとする人は最初にコレラのコメントを見ることになるので、 ここでの項目は冗長になりました。

  • Updated documentation for UTF8f

    UTF8f の文書の更新

  • Added missing =for apidoc lines

    不足していた =for apidoc 行の追加

perlhacktips

  • The differences between Perl strings and C strings are now detailed.

    Perl の文字列と C の文字列との違いを詳しく述べるようになりました。

perlintro

  • The documentation for the repetition operator x have been clarified. [GH #17335]

    繰り返し演算子 x の文書が明確化されました。 [GH #17335]

perlipc

  • The documentation surrounding open and handle usage has been modernized to prefer 3-arg open and lexical variables instead of barewords.

    open とハンドル使用法周りの文書は、3 引数 open および、 裸の単語ではなくレキシカル変数を使うように近代化されました。

  • Various updates and fixes including making all examples strict-safe and replacing -w with use warnings.

    全ての例を strict 安全にして、-wuse warnings に置き換えることを 含む様々な更新と修正。

perlop

  • 'isa' operator is experimental

    'isa' 演算子は実験的

    This is an experimental feature and is available when enabled by use feature 'isa'. It emits a warning in the experimental::isa category.

    これは実験的機能で、use feature 'isa' で有効化されたときに 利用可能です。 これは experimental::isa カテゴリの警告を出力します。

perlpod

  • Details of the various stacks within the perl interpreter are now explained here.

    perl インタプリタ内部の様々なスタックの詳細はここで 説明されるようになりました。

  • Advice has been added regarding the usage of Z<>.

    Z<> の使用法に関する助言が追加されました。

perlport

  • Update timegm example to use the correct year format 1970 instead of 70. [GH #16431]

    年のフォーマットとして 70 ではなく正しい 1970 を使うように timegm の例が更新されました。 [GH #16431]

perlreref

  • Fix some typos.

    いくつかのタイプミスの修正。

perlvar

  • Now recommends stringifying $] and comparing it numerically.

    $] を文字列化して数値として比較することを勧めるようになりました。

perlapi, perlintern

  • Documentation has been added for several functions that were lacking it before.

    以前はなかったいくつかの関数の文書が追加されました。

perlxs

  • Suggest using libffi for simple library bindings.

    単純なライブラリバインディングには libffi を使うように 勧めるようになりました。

POSIX

  • setlocale warning about threaded builds updated to note it does not apply on Perl 5.28.X and later.

    スレッド対応ビルドに関する setlocale の警告は、 Perl 5.28.X 以降には適用されないことに触れるように更新されました。

  • Posix::SigSet->new(...) updated to state it throws an error if any of the supplied signals cannot be added to the set.

    Posix::SigSet->new(...) は、 指定されたシグナルのどれも集合に追加できない場合はエラーが 投げられることを示すために更新されました。

Additionally, the following selected changes have been made:

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

  • Links to the now defunct https://search.cpan.org site now point at the equivalent https://metacpan.org URL. [GH #17393]

    今はなき https://search.cpan.org サイトへのリンクは、 等価な https://metacpan.org URL を指すようになりました。 [GH #17393]

  • The man page for ExtUtils::XSSymSet is now only installed on VMS, which is the only platform the module is installed on. [GH #17424]

    ExtUtils::XSSymSet の man ページは、このモジュールがインストールされる 唯一のプラットフォームである VMS でのみインストールされるようになりました。 [GH #17424]

  • URLs have been changed to https:// and stale links have been updated.

    URL は https:// に変更され、古いリンクは更新されました。

    Where applicable, the URLs in the documentation have been moved from using the http:// protocol to https://. This also affects the location of the bug tracker at https://rt.perl.org.

    適切な場所では、文書中の URL は http:// プロトコルから https:// に 変更されました。 これはまたバグトラッカーの場所 https://rt.perl.org にも影響を与えます。

  • Some links to OS/2 libraries, Address Sanitizer and other system tools had gone stale. These have been updated with working links.

    OS/2 ライブラリ、Address Sanitizer およびその他のシステムツールへのリンクの 一部は古いものでした。 これらは動作するリンクに更新されました。

  • Some links to old email addresses on perl5-porters had gone stale. These have been updated with working links.

    perl5-porters の古い E メールアドレスへのリンクの一部は古いものでした。 これらは動作するリンクに更新されました。

診断メッセージ

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

新しい警告メッセージ

新しいエラー

新しい警告

  • Code point 0x%X is not Unicode, and not portable

    This is actually not a new message, but it is now output when the warnings category portable is enabled.

    これは実際には新しいメッセージではありませんが、 portable が有効なときに出力されるようになりました。

    When raised during regular expression pattern compilation, the warning has extra text added at the end marking where precisely in the pattern it occurred.

    正規表現中のコンパイル中に発生したとき、この警告はパターンのどの位置で 発生したかを示すマークを末尾に追加した文章を出力します。

  • Non-hex character '%c' terminates \x early. Resolved as "%s"

    This replaces a warning that was much less specific, and which gave false information. This new warning parallels the similar already-existing one raised for \o{}.

    これは、より具体性がなく、間違った情報を与えていた警告を置き換えます。 この新しい警告は、\o{} に関して既に存在している同様の警告に 並ぶものです。

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

  • Character following "\c" must be printable ASCII

    ...now has extra text added at the end, when raised during regular expression pattern compilation, marking where precisely in the pattern it occurred.

    これは正規表現中のコンパイル中に発生したとき、パターンのどの位置で 発生したかを示すマークを末尾に追加した文章を出力するようになりました。

  • Use "%s" instead of "%s"

    ...now has extra text added at the end, when raised during regular expression pattern compilation, marking where precisely in the pattern it occurred.

    これは正規表現中のコンパイル中に発生したとき、パターンのどの位置で 発生したかを示すマークを末尾に追加した文章を出力するようになりました。

  • Sequence "\c{" invalid

    ...now has extra text added at the end, when raised during regular expression pattern compilation, marking where precisely in the pattern it occurred.

    これは正規表現中のコンパイル中に発生したとき、パターンのどの位置で 発生したかを示すマークを末尾に追加した文章を出力するようになりました。

  • "\c%c" is more clearly written simply as "%s"

    ...now has extra text added at the end, when raised during regular expression pattern compilation, marking where precisely in the pattern it occurred.

    これは正規表現中のコンパイル中に発生したとき、パターンのどの位置で 発生したかを示すマークを末尾に追加した文章を出力するようになりました。

  • Non-octal character '%c' terminates \o early. Resolved as "%s"

    ...now includes the phrase "terminates \o early", and has extra text added at the end, when raised during regular expression pattern compilation, marking where precisely in the pattern it occurred. In some instances the text of the resolution has been clarified.

    これは正規表現中のコンパイル中に発生したとき、"terminates \o early" という 文言と、パターンのどの位置で 発生したかを示すマークを末尾に追加した文章を出力するようになりました。 一部の場合では、解決法の文章が明確化されました。

  • '%s' resolved to '\o{%s}%d'

    As of Perl 5.32, this message is no longer generated. Instead, "Non-octal character '%c' terminates \o early. Resolved as "%s"" in perldiag is used instead.

    Perl 5.32 から、このメッセージは生成されなくなりました。 代わりに、 "Non-octal character '%c' terminates \o early. Resolved as "%s"" in perldiag が使われます。

  • Use of code point 0x%s is not allowed; the permissible max is 0x%X

    Some instances of this message previously output the hex digits A, B, C, D, E, and F in lower case. Now they are all consistently upper case.

    一部の場合では、以前は 16 進数 A, B, C, D, E, F が小文字で出力されていました。i これらは一貫して大文字になりました。

  • The following three diagnostics have been removed, and replaced by Expecting interpolated extended charclass in regex; marked by <-- HERE in m/%s/ : Expecting close paren for nested extended charclass in regex; marked by <-- HERE in m/%s/, Expecting close paren for wrapper for nested extended charclass in regex; marked by <-- HERE in m/%s/, and Expecting '(?flags:(?[...' in regex; marked by <-- HERE in m/%s/.

    以下の三つの診断メッセージは削除され、 Expecting interpolated extended charclass in regex; marked by <-- HERE in m/%s/ : Expecting close paren for nested extended charclass in regex; marked by <-- HERE in m/%s/, Expecting close paren for wrapper for nested extended charclass in regex; marked by <-- HERE in m/%s/, Expecting '(?flags:(?[...' in regex; marked by <-- HERE in m/%s/ に 置き換えられました。

  • The Code point 0x%X is not Unicode, and not portable warning removed the line Code points above 0xFFFF_FFFF require larger than a 32 bit word. as code points that large are no longer legal on 32-bit platforms.

    この大きさの符号位置はもはや 32 ビットプラットフォームでは 有効ではなくなったので、 Code point 0x%X is not Unicode, and not portable 警告から Code points above 0xFFFF_FFFF require larger than a 32 bit word. という 行が削除されました。

  • Can't use global %s in %s

    This error message has been slightly reformatted from the original Can't use global %s in "%s", and in particular misleading error messages like Can't use global $_ in "my" are now rendered as Can't use global $_ in subroutine signature.

    エラーメッセージは、 Can't use global %s in "%s" から少し変更され、 特に Can't use global $_ in "my" のような誤解を招くメッセージは Can't use global $_ in subroutine signature と表示されるようになりました。

  • Constants from lexical variables potentially modified elsewhere are no longer permitted

    This error message replaces the former Constants from lexical variables potentially modified elsewhere are deprecated. This will not be allowed in Perl 5.32 to reflect the fact that this previously deprecated usage has now been transformed into an exception. The message's classification has also been updated from D (deprecated) to F (fatal).

    このエラーメッセージは、 以前廃止予定だった使用法が例外に変更されたことを反映して、 Constants from lexical variables potentially modified elsewhere are deprecated. This will not be allowed in Perl 5.32 から置き換えられました。 また、このメッセージのクラス分けは、D (deprecated) から F (fatal) に 変更されました。

    "Incompatible Changes" も参照してください。

  • \N{} here is restricted to one character is now emitted in the same circumstances where previously \N{} in inverted character class or as a range end-point is restricted to one character was.

    以前 \N{} in inverted character class or as a range end-point is restricted to one character が出力されていた状況では、 \N{} here is restricted to one character が出力されるようになりました。

    This is due to new circumstances having been added in Perl 5.30 that weren't covered by the earlier wording.

    これは、以前の言葉遣いでは対応できない Perl 5.30 で追加された状況のためです。

ツールの変更

perlbug

  • The bug tracker homepage URL now points to GitHub.

streamzip

  • This is a new utility, included as part of an IO::Compress::Base upgrade.

    これは新しいツールで、IO::Compress::Base の更新の一部として 含まれるようになりました。

    streamzip creates a zip file from stdin. The program will read data from stdin, compress it into a zip container and, by default, write a streamed zip file to stdout.

    streamzip は標準入力から zip ファイルを作ります。 プログラムは標準入力からデータを読み込み、zip コンテナに圧縮して、 デフォルトでは、標準出力にストリーム zip ファイルを出力します。

設定とコンパイル

Configure

  • For clang++, add #include <stdlib.h> to Configure's probes for futimes, strtoll, strtoul, strtoull, strtouq, otherwise the probes would fail to compile.

    clang++ のために、 futimes, strtoll, strtoul, strtoull, strtouq のための Configure のプローブに #include <stdlib.h> を追加しました; さもなければプローブはコンパイルに失敗します。

  • Use a compile and run test for lchown to satisfy clang++ which should more reliably detect it.

    clang++ がより確実に検出できるように、 lchown のためのコンパイルとテスト実行を使います。

  • For C++ compilers, add #include <stdio.h> to Configure's probes for getpgrp and setpgrp as they use printf and C++ compilers may fail compilation instead of just warning.

    C++ コンパイラのために、getpgrpsetpgrp のための Configure のプローブに #include <stdio.h> を追加しました; これらは printf を使っていて、C++ コンパイラは単に警告を出すのではなく コンパイルに失敗するからです。

  • Check if the compiler can handle inline attribute.

    コンパイラがインライン属性を扱えるかをチェックします。

  • Check for character data alignment.

    文字データアライメントをチェックします。

  • Configure now correctly handles gcc-10. Previously it was interpreting it as gcc-1 and turned on -fpcc-struct-return.

    Configure は正しく gcc-10 を扱えるようになりました。 以前はこれは gcc-1 と解釈され、-fpcc-struct-return が 有効になっていました。

  • Perl now no longer probes for d_u32align, defaulting to define on all platforms. This check was error-prone when it was done, which was on 32-bit platforms only. [perl #133495]

    Perl はもはや d_u32align をプローブしなくなり、全ての プラットフォームで define がデフォルトになりました。 このチェックは、32 ビットプラットフォームだけで成功したときに エラーを起こしがちでした。 [perl #133495]

  • Documentation and hints for building perl on Z/OS (native EBCDIC) have been updated. This is still a work in progress.

    Z/OS (ネイティブ EBCDIC) で perl をビルドするための文書とヒントが 更新されました。 これはまだ作業中です。

  • A new probe for malloc_usable_size has been added.

    malloc_usable_size のための新しいプローブが追加されました。

  • Improvements in Configure to detection in C++ and clang++. Work ongoing by Andy Dougherty. [perl #134171]

    C++ と clang++ での検出のための Configure の改善。 作業は Andy Dougherty によって継続中です。 [perl #134171]

  • autodoc.pl

    This tool that regenerates perlintern and perlapi has been overhauled significantly, restoring consistency in flags used in embed.fnc and Devel::PPPort and allowing removal of many redundant =for apidoc entries in code.

    この、perlinternperlapi を再生成するツールは大幅に見直され、 embed.fncDevel::PPPort で使われているフラグの一貫性が復元され、 コード中の多くの冗長な =for apidoc を削除できるようになりました。

  • The ECHO macro is now defined. This is used in a dtrace rule that was originally changed for FreeBSD, and the FreeBSD make apparently predefines it. The Solaris make does not predefine ECHO which broke this rule on Solaris. [perl #134218]

    ECHO が定義されるようになりました。 これは元々 FreeBSD で変更された dtrace 規則で使われており、 もちろん FreeBSD の make はこれを事前定義しています。 Solaris の make は、Solaris でのこの規則を壊す ECHO を事前定義しません。 [perl #134218]

  • Bison versions 3.1 through 3.4 are now supported.

    Bison バージョン 3.1 から 3.4 に対応しました。

テスト

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

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

  • t/run/switches.t no longer uses (and re-uses) the tmpinplace/ directory under t/. This may prevent spurious failures. [GH #17424]

    t/run/switches.t はもはや t/ の下の tmpinplace/ ディレクトリを 使用(および再使用)しなくなりました。 これは誤った失敗を防ぎます。 [GH #17424]

  • Various bugs in POSIX::mbtowc were fixed. Potential races with other threads are now avoided, and previously the returned wide character could well be garbage.

    POSIX::mbtowc の様々なバグが修正されました。 他のスレッドとの競合の可能性が排除され、以前は返されたワイド文字が ごみになっていることがありました。

  • Various bugs in POSIX::wctomb were fixed. Potential races with other threads are now avoided, and previously it would segfault if the string parameter was shared or hadn't been pre-allocated with a string of sufficient length to hold the result.

    POSIX::wctomb の様々なバグが修正されました。 他のスレッドとの競合の可能性が排除され、また文字列引数が 共有されていたり結果を保持するのに十分な長さの文字列が事前に 割り当てられていない場合、セグメンテーションフォルトを起こしていました。

  • Certain test output of scalars containing control characters and Unicode has been fixed on EBCDIC.

    制御文字や Unicode を含むスカラを出力する一部のテストは EBCDIC で 修正されました。

  • t/charset_tools.pl: Avoid some work on ASCII platforms.

    t/charset_tools.pl: ASCII プラットフォームで動作しないようになりました。

  • t/re/regexp.t: Speed up many regex tests on ASCII platform

    t/re/regexp.t: ASCII プラットフォームでの多くの正規表現テストが高速化しました。

  • t/re/pat.t: Skip tests that don't work on EBCDIC.

    t/re/pat.t: EBCDIC で動作しないテストをスキップします。

プラットフォーム対応

廃止されたプラットフォーム

Windows CE

Support for building perl on Windows CE has now been removed.

Windows CE で perl をビルドする対応は削除されました。

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

Linux

cc will be used to populate plibpth if cc is clang. [perl #134189]

ccclang のとき、ccplibpth を使っていました。 [perl #134189]

NetBSD 8.0

Fix compilation of Perl on NetBSD 8.0 with g++. [GH #17381]

NetBSD 8.0 で g++ を使った Perl のコンパイルを修正しました。 [GH #17381]

Windows
  • The configuration for ccflags and optimize are now separate, as with POSIX platforms. [GH #17156]

    POSIX プラットフォームと同様、 ccflagsoptimize の設定は分離されました。 [GH #17156]

  • Support for building perl with Visual C++ 6.0 has now been removed.

    Visual C++ 6.0 で perl をビルドする対応は削除されました。

  • The locale tests could crash on Win32 due to a Windows bug, and separately due to the CRT throwing an exception if the locale name wasn't validly encoded in the current code page.

    Win32 でのロケールテストは、Windows のバグおよび、 ロケール名が現在のコードページで適切にエンコードされていないと CRT が例外を投げるという別の問題により、クラッシュすることがありました。

    For the second we now decode the locale name ourselves, and always decode it as UTF-8. [perl #133981]

    2 番目の問題のために、ロケール名は自分自身でデコードし、 常にそれを UTF-8 としてデコードするようになりました。 [perl #133981]

  • t/op/magic.t could fail if environment variables starting with FOO already existed.

    FOO で始まる環境変数が既に存在しているとき、 t/op/magic.t が失敗することがありました。

  • MYMALLOC (PERL_MALLOC) build has been fixed.

    MYMALLOC (PERL_MALLOC) ビルドは修正されました。

Solaris
  • Configure will now find recent versions of the Oracle Developer Studio compiler, which are found under /opt/developerstudio*.

    Configure は、/opt/developerstudio* の下にある、 最近のバージョンの Oracle Developer Studio コンパイラを探すようになりました。

  • Configure now uses the detected types for gethostby* functions, allowing Perl to once again compile on certain configurations of Solaris.

    Configuregethostby* 関数で検出された型を使うようになりました; これにより、Perl が再び Solaris のある種の設定で コンパイル出来るようになりました。

VMS
  • With the release of the patch kit C99 V2.0, VSI has provided support for a number of previously-missing C99 features. On systems with that patch kit installed, Perl's configuration process will now detect the presence of the header stdint.h and the following functions: fpclassify, isblank, isless, llrint, llrintl, llround, llroundl, nearbyint, round, scalbn, and scalbnl.

    パッチキット C99 V2.0 のリリースにより、 VSI は以前は不足していた多くの C99 機能の対応を提供するようになりました。 このパッチキットがインストールされているシステムでは、 Perl の設定プロセスは、stdint.h ヘッダおよびつぎの関数の存在を 検出するようになりました: fpclassify, isblank, isless, llrint, llrintl, llround, llroundl, nearbyint, round, scalbn, scalbnl.

  • -Duse64bitint is now the default on VMS.

    -Duse64bitint は VMS でデフォルトになりました。

z/OS

Perl 5.32 has been tested on z/OS 2.4, with the following caveats:

Perl 5.32 は z/OS 2.4 でテストされていますが、以下の問題があります:

  • Only static builds (the default) build reliably

    (デフォルトの)静的ビルドのみが安定しています。

  • When using locales, z/OS does not handle the LC_MESSAGES category properly, so when compiling perl, you should add the following to your Configure options

    ロケールを使うとき、z/OS は LC_MESSAGES カテゴリと適切に扱えないので、 perl をコンパイルするとき、次の Configure オプションを追加するべきです:

     ./Configure <other options> -Accflags=-DNO_LOCALE_MESSAGES
  • z/OS does not support locales with threads, so when compiling a threaded perl, you should add the following to your Configure options

    z/OS はスレッドでのロケールに対応していないので、スレッド対応 perl を ビルドするときに、次の Configure オプションを追加するべきです:

     ./Configure <other Configure options> -Accflags=-DNO_LOCALE
  • Some CPAN modules that are shipped with perl fail at least one of their self-tests. These are: Archive::Tar, Config::Perl::V, CPAN::Meta, CPAN::Meta::YAML, Digest::MD5, Digest::SHA, Encode, ExtUtils::MakeMaker, ExtUtils::Manifest, HTTP::Tiny, IO::Compress, IPC::Cmd, JSON::PP, libnet, MIME::Base64, Module::Metadata, PerlIO::via-QuotedPrint, Pod::Checker, podlators, Pod::Simple, Socket, and Test::Harness.

    perl と共に出荷される CPAN モジュールの一部は、そのセルフテストの 少なくとも一つが失敗します。 そのモジュールは: Archive::Tar, Config::Perl::V, CPAN::Meta, CPAN::Meta::YAML, Digest::MD5, Digest::SHA, Encode, ExtUtils::MakeMaker, ExtUtils::Manifest, HTTP::Tiny, IO::Compress, IPC::Cmd, JSON::PP, libnet, MIME::Base64, Module::Metadata, PerlIO::via-QuotedPrint, Pod::Checker, podlators, Pod::Simple, Socket, and Test::Harness.

    The causes of the failures range from the self-test itself is flawed, and the module actually works fine, up to the module doesn't work at all on EBCDIC platforms.

    失敗の理由は、モジュールは実際には正しく動くけれどもセルフテスト自身に 欠陥があるものから、モジュールが EBCDIC プラットフォームでは全く動かない 場合まで様々です。

内部の変更

  • savepvn's len parameter is now a Size_t instead of an I32 since we can handle longer strings than 31 bits.

    savepvn の len 引数は、I32 ではなく Size_t になりました; 31 ビットを超える長さの文字列を扱えるからです。

  • The lexer (Perl_yylex() in toke.c) was previously a single 4100-line function, relying heavily on goto and a lot of widely-scoped local variables to do its work. It has now been pulled apart into a few dozen smaller static functions; the largest remaining chunk (yyl_word_or_keyword()) is a little over 900 lines, and consists of a single switch statement, all of whose case groups are independent. This should be much easier to understand and maintain.

    字句解析器 (toke.cPerl_yylex()) は、以前は単一の 4100 行の関数で、 動作するために goto および大量の広いスコープを持ったローカル変数に とても依存していました。 これは数十のより小さい静的関数の関数に分割されました; 残った最大の塊 (yyl_word_or_keyword()) は 900 行を少し超える程度で、 単一の switch 文で構成されており、全ての case グループは 独立しています。 これで理解と保守が大幅に容易になったはずです。

  • The OS-level signal handlers and type (Sighandler_t) used by the perl core were declared as having three parameters, but the OS was always told to call them with one argument. This has been fixed by declaring them to have one parameter. See the merge commit v5.31.5-346-g116e19abbf for full details.

    perl コアで使われている OS レベルシグナルハンドラと型 (Sighandler_t) は 3 引数を持つとして宣言されていましたが、 OS は常に 1 引数で呼び出すとしていました。 これは、1 引数として宣言するように修正されました。 完全な詳細についてはマージコミット v5.31.5-346-g116e19abbf を 参照してください。

  • The code that handles tr/// has been extensively revised, fixing various bugs, especially when the source and/or replacement strings contain characters whose code points are above 255. Some of the bugs were undocumented, one being that under some circumstances (but not all) with /s, the squeezing was done based on the source, rather than the replacement. A documented bug that got fixed was [perl #125493].

    tr/// を扱うコードは広範囲に見直され、様々なバグが修正されました; 特にソース文字列や置換文字列に 255 を超える符号位置の文字が含まれている 場合です。 これらのバグの一部は文書化されておらず、 一部は(しかし全てではない) /s の状況の下で起こり、 圧縮が置換文字列ではなくソース文字列を基として行われていました。 修正されたバグの文書は [perl #125493] です。

  • A new macro for XS writers dealing with UTF-8-encoded Unicode strings has been created "UTF8_CHK_SKIP" in perlapi that is safer in the face of malformed UTF-8 input than "UTF8_SKIP" in perlapi (but not as safe as "UTF8_SAFE_SKIP" in perlapi). It won't read past a NUL character. It has been backported in Devel::PPPort 3.55 and later.

    UTF-8 エンコードされた Unicode 文字列を扱う XS 作者のための 新しいマクロ "UTF8_CHK_SKIP" in perlapi が作成されました; これは、不正な UTF-8 入力に直面したとき、"UTF8_SKIP" in perlapi より 安全です (しかし "UTF8_SAFE_SKIP" in perlapi ほど安全ではありません)。 これは NUL 文字を超えて読むことはありません。 これは Devel::PPPort 3.55 以降にバックポートされました。

  • Added the PL_curstackinfo->si_cxsubix field. This records the stack index of the most recently pushed sub/format/eval context. It is set and restored automatically by cx_pushsub(), cx_popsub() etc., but would need to be manually managed if you do any unusual manipulation of the context stack.

    PL_curstackinfo->si_cxsubix フィールドが追加されました。 これは一番最近プッシュされたサブルーチン/フォーマット/evalコンテキストの スタックインデックスを記録します。 これは cx_pushsub(), cx_popsub() などによって自動的に設定および 復旧されますが、コンテキストスタックに普通でない操作を行った場合は 手動で管理する必要があるでしょう。

  • Various macros dealing with character type classification and changing case where the input is encoded in UTF-8 now require an extra parameter to prevent potential reads beyond the end of the buffer. Use of these has generated a deprecation warning since Perl 5.26. Details are in "In XS code, use of various macros dealing with UTF-8." in perldeprecation

    UTF-8 でエンコードされている入力に対して文字型のクラス分けや 大文字小文字変換を扱う様々なマクロは、 バッファの末尾を超えて読み込む可能性を避けるために追加の引数が必要になりました。 これらの使用は Perl 5.26 から廃止予定警告が出ていました。 詳細は "In XS code, use of various macros dealing with UTF-8." in perldeprecation に あります。

  • A new parser function parse_subsignature() allows a keyword plugin to parse a subroutine signature while use feature 'signatures' is in effect. This allows custom keywords to implement semantics similar to regular sub declarations that include signatures. [perl #132474]

    新しいパーサ関数 parse_subsignature() は、 use feature 'signatures' が有効のときに、 サブルーチンシグネチャをパースするキーワードプラグインが可能になります。 これにより、シグネチャを含む通常の sub 宣言と似た文法を実装する カスタムキーワードが可能になります。 [perl #132474]

  • Since on some platforms we need to hold a mutex when temporarily switching locales, new macros (STORE_LC_NUMERIC_SET_TO_NEEDED_IN, WITH_LC_NUMERIC_SET_TO_NEEDED and WITH_LC_NUMERIC_SET_TO_NEEDED_IN) have been added to make it easier to do this safely and efficiently as part of [perl #134172].

    一部のプラットフォームでは一時的にロケールを切り替えるときに ミューテックスを保持する必要があるので、 [perl #134172] の 一部として、これを安全かつ効率的により簡単に行うために、 新しいマクロ (STORE_LC_NUMERIC_SET_TO_NEEDED_IN, WITH_LC_NUMERIC_SET_TO_NEEDED, WITH_LC_NUMERIC_SET_TO_NEEDED_IN) が 追加されました。

  • The memory bookkeeping overhead for allocating an OP structure has been reduced by 8 bytes per OP on 64-bit systems.

    OP 構造を割り当てるためのメモリ管理のオーバーヘッドは、 64 ビットシステムの OP では 8 バイト減少しました。

  • eval_pv() no longer stringifies the exception when croak_on_error is true. [perl #134175]

    eval_pv() は、croak_on_error が真のときにもはや 例外を文字列化しなくなりました。 [perl #134175]

  • The PERL_DESTRUCT_LEVEL environment variable was formerly only honoured on perl binaries built with DEBUGGING support. It is now checked on all perl builds. Its normal use is to force perl to individually free every block of memory which it has allocated before exiting, which is useful when using automated leak detection tools such as valgrind.

    PERL_DESTRUCT_LEVEL 環境変数は、以前は DEBUGGING 対応で ビルドされたバイナリでのみ有効でした。 これは全ての perl ビルドでチェックするようになりました。 この通常の使用法は、終了前に割り当てられたメモリのブロックを個々に 解放することを perl に強制するもので、 valgrind のような自動リーク検出ツールを使うときに有用です。

  • The API eval_sv() now accepts a G_RETHROW flag. If this flag is set and an exception is thrown while compiling or executing the supplied code, it will be rethrown, and eval_sv() will not return. [perl #134177]

    API eval_sv() は G_RETHROW フラグを受け付けるようになりました。 このフラグがセットされていて、指定されたコードのコンパイル中や 実行中に例外が投げられた場合、 再スローされ、eval_sv() は返りません。 [perl #134177]

  • As part of the fix for [perl #2754] perl_parse() now returns non-zero if exit(0) is called in a BEGIN, UNITCHECK or CHECK block.

    [perl #2754] の修正の 一部として、perl_parse() は、 exit(0) が BEGIN, UNITCHECK, CHECK ブロックのいずれかから 呼ばれたときには非 0 を返すようになりました。

  • Most functions which recursively walked an op tree during compilation have been made non-recursive. This avoids SEGVs from stack overflow when the op tree is deeply nested, such as $n == 1 ? "one" : $n == 2 ? "two" : .... (especially in code which is auto-generated).

    コンパイル中に op 木を再帰的に探索していたほとんどの関数は 再帰しなくなりました。 これにより、(特に自動生成された場合に) op 木が $n == 1 ? "one" : $n == 2 ? "two" : .... のように深くネストしている場合に、 スタックオーバーフローにより SEGV するのを回避します。

    This is particularly noticeable where the code is compiled within a separate thread, as threads tend to have small stacks by default.

    スレッドはデフォルトで比較的少ないスタックしか持っていないので、 これはコードが別々のスレッドでコンパイルされたときに特に顕著です。

バグ修正の抜粋

  • Previously "require" in perlfunc would only treat the special built-in SV &PL_sv_undef as a value in %INC as if a previous require has failed, treating other undefined SVs as if the previous require has succeeded. This could cause unexpected success from require e.g., on local %INC = %INC;. This has been fixed. [GH #17428]

    以前の "require" in perlfunc は、 特殊なビルドイン SV &PL_sv_undef%INC の値としてある場合にのみ前回の require が失敗したものとして扱い、 その他の未定義の SV がある場合は以前の require は成功したものとして 扱っていました。 これは local %INC = %INC; のような場合に想定外に require が 成功することがありました。 これは修正されました。 [GH #17428]

  • (?{...}) eval groups in regular expressions no longer unintentionally trigger "EVAL without pos change exceeded limit in regex" [GH #17490].

    正規表現の (?{...}) eval グループはもはや 想定外に "EVAL without pos change exceeded limit in regex" を 引き起こさなくなりました。 [GH #17490].

  • (?[...]) extended bracketed character classes do not wrongly raise an error on some cases where a previously-compiled such class is interpolated into another. The heuristics previously used have been replaced by a reliable method, and hence the diagnostics generated have changed. See "Diagnostics".

    (?[...]) 拡張大かっこ文字クラスは、事前にコンパイルされていた クラスが他のものに挿入された一部の場合で間違ってエラーを 発生させなくなりました。 以前使われていた経験則はより信頼性のある手法に置き換えられたので、 生成される診断メッセージが変更されました。 "Diagnostics" を参照してください。

  • The debug display (say by specifying -Dr or use re (with appropriate options) of compiled Unicode property wildcard subpatterns no longer has extraneous output.

    ((適切なオプション付きの -Druse re を指定することによる) コンパイルされた Unicode 特性ワイルドカート部分パターンの デバッグ表示は、もはや余分な出力をしなくなりました。

  • Fix an assertion failure in the regular expression engine. [GH #17372]

    正規表現エンジンのアサート失敗が修正されました。 [GH #17372]

  • Fix coredump in pp_hot.c after B::UNOP_AUX::aux_list(). [GH #17301]

    B::UNOP_AUX::aux_list() の後の pp_hot.c のコアダンプが修正されました。 [GH #17301]

  • Loading IO is now threadsafe. [GH #14816]

    IO の読み込みはスレッドセーフになりました。 [GH #14816]

  • \p{user-defined} overrides official Unicode [GH #17025]

    \p{user-defined} は公式な Unicode を上書きします [GH #17025]

    Prior to this patch, the override was only sometimes in effect.

    このパッチ以前では、上書きは一部の場合にのみ有効でした。

  • Properly handle filled /il regnodes and multi-char folds

    埋まっている /il regnode と複数文字畳み込みを適切に扱えるようになりました

  • Compilation error during make minitest [GH #17293]

    make minitest 中のコンパイルエラー [GH #17293]

  • Move the implementation of %-, %+ into core.

    %-, %+ の実装はコアに移りました。

  • Read beyond buffer in grok_inf_nan [GH #17370]

    grok_inf_nan のバッファを超えた読み込み [GH #17370]

  • Workaround glibc bug with LC_MESSAGES [GH #17081]

    LC_MESSAGES に関する glibc バグの回避 [GH #17081]

  • printf() or sprintf() with the %n format could cause a panic on debugging builds, or report an incorrectly cached length value when producing SVfUTF8 flagged strings. [GH #17221]

    printf()sprintf()%n フォーマットは、 デバッグビルドでは panic したり、 SVfUTF8 フラグ付きの文字列を生成するときに誤ったキャッシュされた長さを 報告していました。 [GH #17221]

  • The tokenizer has been extensively refactored. [GH #17241] [GH #17189]

    字句解析器は広範囲にリファクタリングされました。 [GH #17241] [GH #17189]

  • use strict "subs" is now enforced for bareword constants optimized into a multiconcat operator. [GH #17254]

    multiconcat 演算子に最適化された裸の単語定数は use strict "subs" が強制されるようになりました。 [GH #17254]

  • A memory leak in regular expression patterns has been fixed. [GH #17218]

    正規表現パターンのメモリリークが修正されました。 [GH #17218]

  • Perl no longer treats strings starting with "0x" or "0b" as hex or binary numbers respectively when converting a string to a number. This reverts a change in behaviour inadvertently introduced in perl 5.30.0 intended to improve precision when converting a string to a floating point number. [perl #134230]

    Perl はもはや、文字列から数値に変換するときに、"0x" や "0b" で始まっている 文字列をそれぞれ 16 進数や 2 進数と扱わなくなりました。 これは、文字列から浮動小数点数に変換するときの精度を改善することを 目的として、perl 5.30.0 で不注意によって導入された振る舞いの変更を 元に戻します。 [perl #134230]

  • Matching a non-SVf_UTF8 string against a regular expression containing unicode literals could leak a SV on each match attempt. [perl #134390]

    Unicode リテラルを含む正規表現に対して非 SVf_UTF8 文字列を マッチングさせると、マッチングを試行する毎に SV が リークすることがありました。 [perl #134390]

  • Overloads for octal and binary floating point literals were always passed a string with a 0x prefix instead of the appropriate 0 or 0b prefix. [perl #125557]

    8 進および 2 進浮動小数点数リテラルのオーバーロードでは、 適切な 0 および 0b 接頭辞ではなく、 常に 0x 接頭辞付きの文字列が渡されていました。 [perl #125557]

  • $@ = 100; die; now correctly propagates the 100 as an exception instead of ignoring it. [perl #134291]

    $@ = 100; die; は、100 を無視することなく、正しく例外として 伝搬するようになりました。 [perl #134291]

  • 0 0x@ no longer asserts in S_no_op(). [perl #134310]

    0 0x@ はもはや S_no_op() でアサートしなくなりました。 [perl #134310]

  • Exceptions thrown while $@ is read-only could result in infinite recursion as perl tried to update $@, which throws another exception, resulting in a stack overflow. Perl now replaces $@ with a copy if it's not a simple writable SV. [perl #134266]

    $@ が読み込み専用のときに例外が投げられると、 perl が $@ を更新しようとして新しい例外が発生するので、 無限再帰を起こしてスタックオーバーフローとなることがありました。, Perl は、$@ が単純な書き込み可能な SV ではない場合、 コピーで置き換えるようになりました。 [perl #134266]

  • Setting $) now properly sets supplementary group ids if you have the necessary privileges. [perl #134169]

    $) への設定は、適切な権限があれば、正しく補助グループ ID を 設定するようになりました。 [perl #134169]

  • close() on a pipe now preemptively clears the PerlIO object from the IO SV. This prevents a second attempt to close the already closed PerlIO object if a signal handler calls die() or exit() while close() is waiting for the child process to complete. [perl #122112]

    パイプに対する close() は、IO SV からの PerlIO オブジェクトを予防的に クリアするようになりました。 これは、シグナルハンドラが die() または exit() を呼び出した一方、 close() は子プロセスの完了を待っている場合に、 既に閉じた PerlIO オブジェクトを再び閉じようとすることを防ぎます。 [perl #122112]

  • sprintf("%.*a", -10000, $x) would cause a buffer overflow due to mishandling of the negative precision value. [perl #134008]

    sprintf("%.*a", -10000, $x) は、負数の精度の扱いの誤りにより バッファオーバーフローを引き起こすことがありました。 [perl #134008]

  • scalar() on a reference could cause an erroneous assertion failure during compilation. [perl #134045]

    リファレンスに対する scalar() はコンパイル中に誤ったアサート失敗を 引き起こすことがありました。 [perl #134045]

  • %{^CAPTURE_ALL} is now an alias to %- as documented, rather than incorrectly an alias for %+. [perl #131867]

    %{^CAPTURE_ALL} は、誤って %+ の別名になっていましたが、 文書通り %- の別名になりました。 [perl #131867]

  • %{^CAPTURE} didn't work if @{^CAPTURE} was mentioned first. Similarly for %{^CAPTURE_ALL} and @{^CAPTURE_ALL}, though @{^CAPTURE_ALL} currently isn't used. [perl #134193]

    @{^CAPTURE} に先に言及されていた場合、 %{^CAPTURE} は動作していませんでした。 Similarly for %{^CAPTURE_ALL}@{^CAPTURE_ALL} でも同様でしたが、 現在 @{^CAPTURE_ALL} は使われていません。 [perl #134193]

  • Extraordinarily large (over 2GB) floating point format widths could cause an integer overflow in the underlying call to snprintf(), resulting in an assertion. Formatted floating point widths are now limited to the range of int, the return value of snprintf(). [perl #133913]

    (2GB を超える) 異常に大きい浮動小数点数幅は、 基となる snprintf() の整数オーバーフローを引き起こし、 アサートとなっていました。 フォーマットされた浮動小数点数幅は、snprintf() の返り値である int の幅に制限されました。 [perl #133913]

  • Parsing the following constructs within a sub-parse (such as with "${code here}" or s/.../code here/e) has changed to match how they're parsed normally:

    "${code here}"s/.../code here/e のような) 部分パースの中の次のような構文のパースは、通常通りパースされたときと 一致するように変更されました:

    • print $fh ... no longer produces a syntax error.

      print $fh ... はもはや文法エラーにならなくなりました。

    • Code like s/.../ ${time} /e now properly produces an "Ambiguous use of ${time} resolved to $time at ..." warning when warnings are enabled.

      s/.../ ${time} /e のようなコードは、警告が有効の場合に 適切に "Ambiguous use of ${time} resolved to $time at ..." 警告を出力するようになりました。

    • @x {"a"} (with the space) in a sub-parse now properly produces a "better written as" warning when warnings are enabled.

      部分パースでの (スペース付きの) @x {"a"} は、 警告が有効の場合に適切に "better written as" 警告を出力するようになりました。

    • Attributes can now be used in a sub-parse. [perl #133850]

      属性を部分パースの中で使えるようになりました。 [perl #133850]

  • Incomplete hex and binary literals like 0x and 0b are now treated as if the x or b is part of the next token. [perl #134125]

    0x0b のような不完全な 16 進または 2 進リテラルは、 xb は次のトークンの一部であるかのように扱われるようになりました。 [perl #134125]

  • A spurious ) in a subparse, such as in s/.../code here/e or "...${code here}", no longer confuses the parser.

    s/.../code here/e"...${code here}" のような 部分パース中の誤った ) はもはやパーサを混乱させなくなりました。

    Previously a subparse was bracketed with generated ( and ) tokens, so a spurious ) would close the construct without doing the normal subparse clean up, confusing the parser and possible causing an assertion failure.

    以前は部分パースは生成された ( および ) トークンで囲まれていたので、 誤った ) は通常の部分パースの後片付けをせずに構文を閉じることになり、 パーサを混乱させて、アサート失敗となる場合がありました。

    Such constructs are now surrounded by artificial tokens that can't be included in the source. [perl #130585]

    このような構文は、ソース中に含むことのできない人工的な トークンで囲まれるようになりました。 [perl #130585]

  • Reference assignment of a sub, such as \&foo = \&bar;, silently did nothing in the main:: package. [perl #134072]

    \&foo = \&bar; のようなサブルーチンへのリファレンス代入は、 main:: パッケージでは暗黙に何もしていませんでした。 [perl #134072]

  • sv_gets() now recovers better if the target SV is modified by a signal handler. [perl #134035]

    sv_gets() は、ターゲット SV がシグナルハンドラによって変更されたときに よりよく回復するようになりました。 [perl #134035]

  • readline @foo now evaluates @foo in scalar context. Previously it would be evaluated in list context, and since readline() pops only one argument from the stack, the stack could underflow, or be left with unexpected values on the stack. [perl #133989]

    readline @foo@foo をスカラコンテキストで評価するようになりました。 以前は、これはリストコンテキストとして評価され、 readline() はスタックから一つの引数しかポップしないので、 スタックがアンダーフローしたり、スタックに想定外の値が残ったりしていました。 [perl #133989]

  • Parsing incomplete hex or binary literals was changed in 5.31.1 to treat such a literal as just the 0, leaving the following x or b to be parsed as part of the next token. This could lead to some silent changes in behaviour, so now incomplete hex or binary literals produce a fatal error. [perl #134125]

    不完全な 16 進や 2 進のリテラルは、単なる 0 のリテラルと扱われるように 5.31.1 で変更されました。 これは暗黙の振る舞いの変更を引き起こすことがあったので、 不完全な 16 進または 2 進リテラルは致命的エラーを出力するようになりました。 [perl #134125]

  • eval_pv()'s croak_on_error flag will now throw even if the exception is a false overloaded value. [perl #134177]

    eval_pv() の croak_on_error フラグは、例え例外が 偽のオーバーロードされた値でも例外を投げるようになりました。 [perl #134177]

  • INIT blocks and the program itself are no longer run if exit(0) is called within a BEGIN, UNITCHECK or CHECK block. [perl #2754]

    INIT とプログラム自身は、 exit(0) が BEGIN, UNITCHECK, CHECK ブロックの中で呼ばれると、 もはや実行されなくなりました。 [perl #2754]

  • open my $fh, ">>+", undef now opens the temporary file in append mode: writes will seek to the end of file before writing. [perl #134221]

    open my $fh, ">>+", undef は追記モードで一時ファイルを開くようになりました: 書き込むと書き込みの前にファイルの末尾にシークします。 [perl #134221]

  • Fixed a SEGV when searching for the source of an uninitialized value warning on an op whose subtree includes an OP_MULTIDEREF. [perl #134275]

    副ツリーに OP_MULTIDEREF を含む op に関する未定義値警告を検索するときの SEGV を修正しました。 [perl #134275]

Obituary

Jeff Goff (JGOFF or DrForr), an integral part of the Perl and Raku communities and a dear friend to all of us, has passed away on March 13th, 2020. DrForr was a prominent member of the communities, attending and speaking at countless events, contributing to numerous projects, and assisting and helping in any way he could.

Perl と Raku のコミュニティの不可欠な部分であり、私たち全ての 親友であった Jeff Goff (JGOFF あるいは DrForr) は、 2020 年 3 月 13 日に亡くなりました。 DrForr はコミュニティの突出したメンバーであり、 数え切れないほどのイベントで参加や登壇を行い、 数多くのプロジェクト貢献し、 彼のできるあらゆる方法で支援や助力をしていました。

His passing leaves a hole in our hearts and in our communities and he will be sorely missed.

彼の死によって私たちの心とコミュニティには穴が空いたようで、 とても残念です。

Acknowledgements

Perl 5.32.0 represents approximately 13 months of development since Perl 5.30.0 and contains approximately 220,000 lines of changes across 1,800 files from 89 authors.

Perl 5.32.0 は、Perl 5.30.0 以降、89 人の作者によって、 1,800 のファイルに約 220,000 行の変更を加えて、 約 13 ヶ月開発されてきました。

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

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

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

Aaron Crane, Alberto Simões, Alexandr Savca, Andreas König, Andrew Fresh, Andy Dougherty, Ask Bjørn Hansen, Atsushi Sugawara, Bernhard M. Wiedemann, brian d foy, Bryan Stenson, Chad Granum, Chase Whitener, Chris 'BinGOs' Williams, Craig A. Berry, Dagfinn Ilmari Mannsåker, Dan Book, Daniel Dragan, Dan Kogai, Dave Cross, Dave Rolsky, David Cantrell, David Mitchell, Dominic Hargreaves, E. Choroba, Felipe Gasper, Florian Weimer, Graham Knop, Håkon Hægland, Hauke D, H.Merijn Brand, Hugo van der Sanden, Ichinose Shogo, James E Keenan, Jason McIntosh, Jerome Duval, Johan Vromans, John Lightsey, John Paul Adrian Glaubitz, Kang-min Liu, Karen Etheridge, Karl Williamson, Leon Timmermans, Manuel Mausz, Marc Green, Matthew Horsfall, Matt Turner, Max Maischein, Michael Haardt, Nicholas Clark, Nicolas R., Niko Tyni, Pali, Paul Evans, Paul Johnson, Paul Marquess, Peter Eisentraut, Peter John Acklam, Peter Oliver, Petr Písař, Renee Baecker, Ricardo Signes, Richard Leach, Russ Allbery, Samuel Smith, Santtu Ojanperä, Sawyer X, Sergey Aleynikov, Sergiy Borodych, Shirakata Kentaro, Shlomi Fish, Sisyphus, Slaven Rezic, Smylers, Stefan Seifert, Steve Hay, Steve Peters, Svyatoslav, Thibault Duponchelle, Todd Rinaldo, Tomasz Konojacki, Tom Hukins, Tony Cook, Unicode Consortium, VanL, Vickenty Fesunov, Vitali Peil, Yves Orton, Zefram.

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 http://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 ファイル。