名前

perldelta - what is new for perl v5.40.0

perl5400delta - perl v5.40.0 での変更点

説明

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

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

コアの拡張

New __CLASS__ Keyword

(新しい __CLASS__ キーワード)

When using the new class feature, code inside a method, ADJUST block or field initializer expression is now permitted to use the new __CLASS__ keyword. This yields a class name, similar to __PACKAGE__, but whereas that gives the compile-time package that the code appears in, the __CLASS__ keyword is aware of the actual run-time class that the object instance is a member of. This makes it useful for method dispatch on that class, especially during constructors, where access to $self is not permitted.

新しい class 機能を使う場合、メソッド内のコード、ADJUST ブロックまたは フィールド初期化式は、新しい __CLASS__ キーワードを使えるようになりました。 これにより、__PACKAGE__ に似たクラス名が生成されますが、コードが 表示されるコンパイル時パッケージが生成されるのに対して、 __CLASS__ キーワードは、オブジェクトインスタンスがメンバである実際の 実行時クラスを認識します。 これにより、特に $self へのアクセスが許可されていないコンストラクタで、 そのクラスのメソッドディスパッチに便利になります。

For more information, see "__CLASS__" in perlfunc.

さらなる詳細については、"__CLASS__" in perlfunc を参照してください。

:reader attribute for field variables

(フィールド変数のための :reader 属性)

When using the class feature, field variables can now take a :reader attribute. This requests that an accessor method be automatically created that simply returns the value of the field variable from the given instance.

class 機能を使うとき、フィールド変数は :reader 属性を 取ることができるようになりました。 これは、指定されたインスタンスのフィールド値を返すだけの変数を自動的に 作成するように要求します。

    field $name :reader;

Is equivalent to

これは次と同等です:

    field $name;
    method name () { return $name; }

An alternative name can also be provided:

別名も提供できます:

    field $name :reader(get_name);

For more detail, see ":reader" in perlclass.

さらなる詳細については、":reader" in perlclass を参照してください。

Permit a space in -M command-line option

(-M コマンドラインオプションにスペースを許すように)

When processing command-line options, perl now allows a space between the -M switch and the name of the module after it.

コマンド行オプションを処理するとき、perl は -M オプションとその後の モジュール名の間にスペースを入れることができるようになりました。

    $ perl -M Data::Dumper=Dumper -E 'say Dumper [1,2,3]'

This matches the existing behaviour of the -I option.

これは、既存の -I オプションの振る舞いと一致します。

Restrictions to use VERSION declarations

(use VERSION 宣言の制限)

In Perl 5.36, a deprecation warning was added when downgrading a use VERSION declaration from one above version 5.11, to below. This has now been made a fatal error.

Perl 5.36 では、use VERSION 宣言をバージョン 5.11 より上のものから下のものに 降格する際に、非推奨警告が追加されました。 これは今回致命的エラーになりました。

Additionally, it is now a fatal error to issue a subsequent use VERSION declaration when another is in scope, when either version is 5.39 or above. This is to avoid complications surrounding imported lexical functions from builtin. A deprecation warning has also been added for any other subsequent use VERSION declaration below version 5.39, to warn that it will no longer be permitted in Perl version 5.44.

さらに、どちらかのバージョンが 5.39 以上で、別のバージョンがスコープ内に あるとき、引き続く use VERSION 宣言を発行することは致命的エラーになりました。 これは、builtin からインポートされたレキシカル関数を取り巻く複雑さを 避けるためです。 その他のバージョン 5.39 未満の引き続く use VERSION 宣言に対しても、 Perl バージョン 5.44 では許されなくなることを 警告するはいしよてい警告が追加されました。

New builtin::inf and builtin::nan functions (experimental)

(新しい builtin::inf 関数と builtin::nan 関数 (実験的))

Two new functions, inf and nan, have been added to the builtin namespace. These act like constants that yield the floating-point infinity and Not-a-Number value respectively.

二つの新しい関数、infnanbuiltin 名前空間に追加されました。 これらは、それぞれ浮動小数点数の無限大と非数値を生成する定数のように動作します。

New ^^ logical xor operator

(新しい ^^ 排他的論理和演算子)

Perl has always had three low-precedence logical operators and, or and xor, as well as three high-precedence bitwise versions &, ^ and |. Until this release, while the medium-precedence logical operators of && and || were also present, there was no exclusive-or equivalent. This release of Perl adds the final ^^ operator, completing the set.

Perl には、優先度の低い三つの論理演算子(and, or, xor)と、優先度の高い 三つのビット単位のバージョン(&, ^, |) が常にありました。 このリリースまでは、&&|| の中優先度の論理演算子もありましたが、 排他的論理和の同等物はありませんでした。 このリリースの Perl では、最後の^^演算子が追加され、集合が完成しました。

    $x ^^ $y and say "One of x or y is true, but not both";

try/catch feature is no longer experimental

(try/catch 機能はもはや実験的ではありません)

Prior to this release, the try/catch feature for handling errors was considered experimental. Introduced in Perl version 5.34.0, this is now considered a stable language feature and its use no longer prints a warning. It still must be enabled with the 'try' feature.

このリリースより前では、エラーを扱うための try/catch 昨日は 実験的と考えられていました。 Perl バージョン 5.34.0 で導入されたこれは、安定した言語機能として 考えられるようになり、使ってももはや警告を表示しなくなりました。 未だに 'try' 機能 で有効にしなければなりません。

"Try Catch Exception Handling" in perlsyn を参照してください。

for iterating over multiple values at a time is no longer experimental

(for で一度に複数の値を反復するのはもはや実験的ではありません)

Prior to this release, iterating over multiple values at a time with for was considered experimental. Introduced in Perl version 5.36.0, this is now considered a stable language feature and its use no longer prints a warning. See "Compound Statements" in perlsyn.

このリリースより前では、for で一度に複数の値を反復するのは実験的と 考えられていました。 Perl バージョン 5.36.0 で導入されたこれは、安定した言語機能として 考えられるようになり、使ってももはや警告を表示しなくなりました。 "Compound Statements" in perlsyn を参照してください。

builtin module is no longer experimental

(builtin モジュールはもはや実験的ではありません)

Prior to this release, the builtin module and all of its functions were considered experimental. Introduced in Perl version 5.36.0, this module is now considered stable its use no longer prints a warning. However, several of its functions are still considered experimental.

このリリースより前では、builtin モジュールとその全ての関数は 実験的と考えられていました。 Perl バージョン 5.36.0 で導入されたこれは、安定した言語機能として 考えられるようになり、使ってももはや警告を表示しなくなりました。 しかし、この関数のいくつかは、未だに実験的と考えられています。

The :5.40 feature bundle adds try

(:5.40 機能の束は try を追加します)

The latest version feature bundle now contains the recently-stablized feature try. As this feature bundle is used by the -E commandline switch, these are immediately available in -E scripts.

最新バージョンの機能の束には、最近安定化された機能 try が 含まれることになりました。 この機能の束は -E コマンドラインオプションによって使われるため、これらは -E スクリプトですぐに使えます。

use v5.40; imports builtin functions

(use v5.40; は builtin 関数をインポートします)

In addition to importing a feature bundle, use v5.40; (or later versions) imports the corresponding builtin version bundle.

use v5.40; (または以降のバージョン) は、機能の束をインポートすることに 加えて、対応する buildtin のバージョンの束 を インポートします。

セキュリティ

CVE-2023-47038 - 不正なユーザー定義 Unicode 特性によるバッファ末尾を超えた書き込み

This vulnerability was reported directly to the Perl security team by Nathan Mills the.true.nathan.mills@gmail.com.

この脆弱性は、Nathan Mills the.true.nathan.mills@gmail.com によって Perl セキュリティチームに直接報告されました。

A crafted regular expression when compiled by perl 5.30.0 through 5.38.0 can cause a one-byte attacker controlled buffer overflow in a heap allocated buffer.

巧妙に細工された正規表現を perl 5.30.0 から 5.38.0 でコンパイルすると、 ヒープに割り当てられたバッファで、攻撃者が制御する 1 バイトの バッファオーバーフローが発生する可能性があります。

CVE-2023-47039 - Perl での Windows バイナリハイジャック脆弱性

This vulnerability was reported to the Intel Product Security Incident Response Team (PSIRT) by GitHub user ycdxsb https://github.com/ycdxsb/WindowsPrivilegeEscalation. PSIRT then reported it to the Perl security team.

この脆弱性は、 Intel Product Security Incident Response Team (PSIRT) が、GitHub ユーザーの ycdxsb https://GitHub.com/ycdxsb/WindowsPrivilegeEscalation から報告を受け、 PSIRT から Perl セキュリティチームに報告されました。

Perl for Windows relies on the system path environment variable to find the shell (cmd.exe). When running an executable which uses Windows Perl interpreter, Perl attempts to find and execute cmd.exe within the operating system. However, due to path search order issues, Perl initially looks for cmd.exe in the current working directory.

Windows 用の Perl は、シェル(cmd.exe)を見つけるためにシステムパス環境変数に 依存します。 Windows の Perl インタプリタを使う実行可能ファイルを実行する場合、Perl は オペレーティングシステム内の cmd.exe を見つけて実行しようとします。 しかし、パス検索順序の問題により、Perl は最初に現在の作業ディレクトリ内で cmd.exe を探します。

An attacker with limited privileges can exploit this behavior by placing cmd.exe in locations with weak permissions, such as C:\ProgramData. By doing so, when an administrator attempts to use this executable from these compromised locations, arbitrary code can be executed.

権限が制限された攻撃者は、cmd.exeC:\ProgramData などの弱い権限を 持つ場所に配置することで、この動作を不正利用できる可能性があります。 これにより、管理者がこれらの侵害された場所からこの実行可能ファイルを 使用しようとしたときに、任意のコードが実行される可能性があります。

互換性のない変更

reset EXPR はスカラに対して set-magic を呼び出すようになりました

Previously reset EXPR did not call set magic when clearing scalar variables. This meant that changes did not propagate to the underlying internal state where needed, such as for $^W, and did not result in an exception where the underlying magic would normally throw an exception, such as for $1.

以前の reset EXPR では、スカラ変数をクリアするときに set magic を 呼び出しませんでした。 これは、変更が $^W などの必要な場所で基礎となる内部状態に伝播されず、 $1 などの基礎となるマジックが通常例外を投げるような例外が発生しないことを 意味していました。

This means code that had no effect before may now actually have an effect, including possibly throwing an exception.

つまり、以前は何の効果もなかったコードが、実際には効果を持つようになり、 例外を投げる可能性もあります。

reset EXPR already called set magic when modifying arrays and hashes.

reset EXPR はすでに、配列とハッシュを変更するときに set magic を 呼び出しています。

This has no effect on plain reset used to reset one-match searches as with m?pattern?.

これは、m?pattern? と同様に、一回のマッチング検索をリセットするために使われる 単純な reset には影響しません。

[GH #20763]

不明なパッケージの import メソッドを呼び出すと警告が発生します

Historically, it has been possible to call the import or unimport method of any class, including ones which have not been defined, with an argument and not experience an error. For instance, this code will not throw an error in Perl 5.38:

歴史的には、定義されていないクラスも含めて、任意のクラスの import または unimport メソッドを引数付きで呼び出すことができ、エラーは 発生しませんでした。 たとえば、次のコードは Perl 5.38 ではエラーを投げません。

    Class::That::Does::Not::Exist->import("foo");

However, as of Perl 5.39.1 this is deprecated and will issue a warning. Note that calling these methods with no arguments continues to silently succeed and do nothing. For instance,

しかし、Perl 5.39.1 からこれは廃止予定になり、警告が起こります。 引数なしでこれらのメソッドを呼び出しても、暗黙に成功し、 何もしないままであることに注意してください。 例えば:

    Class::That::Does::Not::Exist->import();

will continue to not throw an error. This is because every class implicitly inherits from the class UNIVERSAL which now defines an import method. In older perls there was no such method defined, and instead the method calls for import and unimport were special cased to not throw errors if there was no such method defined.

これはエラーを投げません。 これは、全てのクラスが暗黙にクラス UNIVERSAL から継承しており、クラス UNIVERSALimport メソッドを定義しているためです。 以前の perl ではそのようなメソッドは定義されておらず、代わりに importunimport のメソッド呼び出しは、そのようなメソッドが定義されていない場合に エラーを投げないように特別扱いされていました。

This change has been added because it makes it easier to detect case typos in use statements when running on case-insensitive file systems. For instance, on Windows or other platforms with case-insensitive file systems on older perls the following code

この変更が追加されたのは、大文字小文字を区別しないファイルシステムで 実行するときに、use 文の大文字小文字のタイプミスをより簡単に 検出できるようにするためです。 例えば、大文字小文字を区別しないファイルシステムを使う Windows または その他のプラットフォームで 古い perl を使うと、次のコードは:

    use STRICT 'refs';

would silently do nothing as the module is actually called strict.pm, not STRICT.pm, so it would be loaded but its import method would never be called. It will also detect cases where a user passes an argument when using a package that does not provide its own import, for instance most "pure" class definitions do not define an import method.

モジュールは実際には STRICT.pm ではなく strict.pm を呼び出されるため、 モジュールはロードされますが、そのインポートメソッドは呼び出されないので、 何もしません。 また、独自のインポートを提供しないパッケージを使っているときに、 ユーザが引数を渡す場合も検出されます; たとえば、ほとんどの「純粋な」クラス定義ではインポートメソッドが 定義されていません。

return no longer allows an indirect object

(return はもはや間接オブジェクトを受け付けません)

The return operator syntax now rejects indirect objects. In most cases this would compile and even run, but wasn't documented and could produce confusing results, for example:

return 演算子の構文で、間接オブジェクトが拒否されるようになりました。 ほとんどの場合、これはコンパイルされて実行されますが、文書化されておらず、 例えば次のような混乱した結果になる可能性があります:

  # note that sum hasn't been defined
  sub sum_positive {
    return sum grep $_ > 0, @_;
    # unexpectedly parsed as:
    #   return *sum, grep $_ > 0, @_;
    # ... with the bareword acting like an extra (typeglob) argument
  }
  say for sum_positive(-1, 2, 3)

produced:

これは次を生成します:

  *main::sum
  2
  3

[GH #21716]

Class barewords no longer resolved as file handles in method calls under no feature "bareword_filehandles"

(no feature "bareword_filehandles" の下でのメソッド呼び出しでは、クラスの裸の単語はもはやファイルハンドルとして解決されなくなりました)

Under no feature "bareword_filehandles" bareword file handles continued to be resolved in method calls:

no feature "bareword_filehandles" の下で、裸の単語のファイルハンドルは メソッド呼び出しでは引き続き解決されていました:

    open FH, "<", $somefile or die;
    no feature 'bareword_filehandles';
    FH->binmode;

This has been fixed, so the:

この問題は修正されたので:

    FH->binmode;

will attempt to resolve FH as a class, typically resulting in a runtime error.

これは FH をクラスとして解決しようとし、典型的には 実行時エラーとなります。

The standard file handles such as STDOUT continue to be resolved as a handle:

STDOUTなどの標準のファイルハンドルは、引き続きハンドルとして解決されます。

    no feature 'bareword_filehandles';
    STDOUT->flush; # continues to work

Note that once perl resolves a bareword name as a class it will continue to do so:

一旦 perl がある裸の単語をクラスとして解決すると、それは継続して 行われることに注意してください:

    package SomeClass {
        sub somemethod{}
    }
    open SomeClass, "<", "somefile" or die;
    # SomeClass resolved as a handle
    SomeClass->binmode;
    {
        no feature "bareword_filehandles";
        SomeClass->somemethod;
    }
    # SomeClass resolved as a class
    SomeClass->binmode;

[GH #19426]

廃止予定

  • Using goto to jump from an outer scope into an inner scope is deprecated and will be removed completely in Perl 5.42. [GH #21601]

    goto を使って外部スコープから内部スコープにジャンプすることは 廃止予定で、Perl 5.42 では完全に削除される予定です。 [GH #21601]

性能改善

  • The negation OPs have been modified to support the generic TARGMY optimization. [GH #21442]

    否定 OP は、一般的な TARGMY 最適化に対応するように修正されました。 [GH #21442]

モジュールとプラグマ

新しいモジュールとプラグマ

  • Term::Table 0.018 has been added to the Perl core.

    Term::Table 0.018 が Perl コアに追加されました。

    This module is a dependency of Test2::Suite.

    このモジュールは、Test2::Suite の依存関係です。

  • Test2::Suite 0.000162 has been added to the Perl core.

    Test2::Suite 0.000162 が Perl コアに追加されました。

    This distribution contains a comprehensive set of test tools for writing unit tests. It is the successor to Test::More and similar modules. Its inclusion in the Perl core means that CPAN module tests can be written using this suite of tools without extra dependencies.

    この配布には、単体テストを作るための包括的なテストツールの集合が 含まれています。 これは、Test::More および同様のモジュールの後継です。 Perl コアに含まれているため、CPAN モジュールテストは、追加の依存関係なしに このツールスイートを使って作成できます。

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

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

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

  • attributes has been upgraded from version 0.35 to 0.36.

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

  • autodie has been upgraded from version 2.36 to 2.37.

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

  • B has been upgraded from version 1.88 to 1.89.

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

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

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

  • Benchmark has been upgraded from version 1.24 to 1.25.

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

  • bignum has been upgraded from version 0.66 to 0.67.

    bignum はバージョン 0.66 から 0.67 に更新されました。

  • builtin has been upgraded from version 0.008 to 0.014.

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

    builtin now accepts a version bundle as an input argument, requesting it to import all of the functions that are considered a stable part of the module at the given Perl version. For example:

    builtin は、入力引数としてバージョンバンドルを受け入れ、指定された Perl バージョンでモジュールの安定した部分と見なされる全ての関数を インポートするよう要求します。 例えば:

        use builtin ':5.40';

    Added the load_module() builtin function as per PPC 0006.

    PPC 0006 に 従って、load_module() 組み込み関数が追加されました。

  • bytes has been upgraded from version 1.08 to 1.09.

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

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

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

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

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

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

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

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

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

  • DB_File has been upgraded from version 1.858 to 1.859.

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

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

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

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

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

  • diagnostics has been upgraded from version 1.39 to 1.40.

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

  • DynaLoader has been upgraded from version 1.54 to 1.56.

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

  • Encode has been upgraded from version 3.19 to 3.21.

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

  • Errno has been upgraded from version 1.37 to 1.38.

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

    The osvers and archname baked into the module to ensure Errno is loaded by the perl that built it are now more comprehensively escaped. [GH #21135]

    モジュールを構築した perl によって Errno が確実にロードされるように モジュールに組み込まれた osversarchname が、より包括的に エスケープされるようになりました。 [GH #21135]

  • experimental has been upgraded from version 0.031 to 0.032.

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

  • Exporter has been upgraded from version 5.77 to 5.78.

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

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

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

  • ExtUtils::Manifest has been upgraded from version 1.73 to 1.75.

    ExtUtils::Manifest はバージョン 1.73 から 1.75 に更新されました。

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

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

  • Fcntl has been upgraded from version 1.15 to 1.18.

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

    The old module documentation stub has been greatly expanded and revised.

    古いモジュール文書のスタブが大幅に拡張され、改訂されました。

    Adds support for the O_TMPFILE flag on Linux.

    Linux での O_TMPFILE フラグの対応が追加されました。

  • feature has been upgraded from version 1.82 to 1.89.

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

    It now documents the :all feature bundle, and suggests a reason why you may not wish to use it.

    :all 機能の束について文書化し、この束を使いたくないかもしれない 理由を示します。

  • fields has been upgraded from version 2.24 to 2.25.

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

  • File::Compare has been upgraded from version 1.1007 to 1.1008.

    File::Compare はバージョン 1.1007 から 1.1008 に更新されました。

  • File::Find has been upgraded from version 1.43 to 1.44.

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

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

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

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

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

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

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

  • FindBin has been upgraded from version 1.53 to 1.54.

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

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

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

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

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

    Documentation and test improvements only; no change in functionality.

    文書とテストの改善のみ; 機能の変更はありません。

  • Hash::Util has been upgraded from version 0.30 to 0.32.

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

  • Hash::Util::FieldHash has been upgraded from version 1.26 to 1.27.

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

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

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

  • I18N::Langinfo has been upgraded from version 0.22 to 0.24.

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

    It now handles the additional locale categories that Linux defines beyond those in the POSIX Standard.

    POSIX 標準で定義されている以外に、Linux が定義する追加の ロケールカテゴリを扱うようになりました。

    This fixes what is returned for the ALT_DIGITS item, which has never before worked properly in Perl.

    これにより、ALT_DIGITS 項目に返される内容が修正されます; これは、これまで Perl では正しく動作していませんでした。

  • IO has been upgraded from version 1.52 to 1.55.

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

    Fixed IO::Handle/blocking on Windows, which has been non-functional since IO 1.32. [GH #17455]

    IO 1.32 以降機能しなくなっていた Windows の IO::Handle/blocking が修正されました。 [GH #17455]

  • IO-Compress has been upgraded from version 2.204 to 2.212.

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

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

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

  • IO::Zlib has been upgraded from version 1.14 to 1.15.

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

  • locale has been upgraded from version 1.10 to 1.12.

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

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

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

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

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

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

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

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

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

  • mro has been upgraded from version 1.28 to 1.29.

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

  • NDBM_File has been upgraded from version 1.16 to 1.17.

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

  • Opcode has been upgraded from version 1.64 to 1.65.

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

  • perl5db.pl has been upgraded from version 1.77 to 1.78.

    perl5db.pl はバージョン 1.77 から 1.78 に更新されました。

    Made parsing of the l command arguments saner. [GH #21350]

    l コマンド引数のパースをよりまともにしました。 [GH #21350]

  • perlfaq has been upgraded from version 5.20210520 to 5.20240218.

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

  • PerlIO::encoding has been upgraded from version 0.30 to 0.31.

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

  • PerlIO::scalar has been upgraded from version 0.31 to 0.32.

    PerlIO::scalar はバージョン 0.31 から 0.32 に更新されました。

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

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

  • Pod::Checker has been upgraded from version 1.75 to 1.77.

    Pod::Checker はバージョン 1.75 から 1.77 に更新されました。

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

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

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

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

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

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

  • POSIX has been upgraded from version 2.13 to 2.20.

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

    The mktime function now works correctly on 32-bit platforms even if the platform's time_t type is larger than 32 bits. [GH #21551]

    mktime 関数は、プラットフォームの time_t 型が 32 ビットより 大きい場合でも、32 ビットプラットフォームで正しく動作するようになりました。 [GH #21551]

    The T_SIGNO and T_FD typemap entries have been fixed so they work with any variable name, rather than just the hardcoded sig and fd.

    T_SIGNOT_FD の typemap エントリが修正され、ハードコードされた sigfd だけでなく、任意の変数名で動作するようになりました。

    The mappings for Mode_t, pid_t, Uid_t, Gid_t and Time_t have been updated to be integer types; previously they were NV floating-point.

    Mode_t, pid_t, Uid_t, Gid_t, Time_t のマッピングは、 整数型に更新されました; 以前は NV 浮動小数点型でした。

    Adjusted the signbit() on NaN test to handle the unusual bit pattern returned for NaN by Oracle Developer Studio's compiler. [GH #21533]

    Oracle Developer Studio のコンパイラによって NaN に対して返される異常な ビットパターンを扱うために、NaN テストの signbit() が調整されました。 [GH #21533]

  • re has been upgraded from version 0.44 to 0.47.

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

  • Safe has been upgraded from version 2.44 to 2.46.

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

  • SelfLoader has been upgraded from version 1.26 to 1.27.

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

  • Socket has been upgraded from version 2.036 to 2.038.

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

  • strict has been upgraded from version 1.12 to 1.13.

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

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

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

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

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

  • Text::Tabs has been upgraded from version 2021.0814 to 2024.001.

    Text::Tabs はバージョン 2021.0814 から 2024.001 に更新されました。

  • Text::Wrap has been upgraded from version 2021.0814 to 2024.001.

    Text::Wrap はバージョン 2021.0814 から 2024.001 に更新されました。

  • threads has been upgraded from version 2.36 to 2.40.

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

    An internal error has been made slightly more verbose (Out of memory in perl:threads:ithread_create).

    内部エラーがもう少し詳しくなりました (Out of memory in perl:threads:ithread_create)。

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

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

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

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

    Old compatibility code for perl 5.005 that was no longer functional has been removed.

    もはや機能しない perl 5.005 の古い互換コードは削除されました。

  • Time::gmtime has been upgraded from version 1.04 to 1.05.

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

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

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

  • Time::Local has been upgraded from version 1.30 to 1.35.

    Time::Local はバージョン 1.30 から 1.35 に更新されました。

  • Time::localtime has been upgraded from version 1.03 to 1.04.

    Time::localtime はバージョン 1.03 から 1.04 に更新されました。

  • Time::tm has been upgraded from version 1.00 to 1.01.

    Time::tm はバージョン 1.00 から 1.01 に更新されました。

  • UNIVERSAL has been upgraded from version 1.15 to 1.17.

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

  • User::grent has been upgraded from version 1.04 to 1.05.

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

  • User::pwent has been upgraded from version 1.02 to 1.03.

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

  • version has been upgraded from version 0.9929 to 0.9930.

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

  • warnings has been upgraded from version 1.65 to 1.69.

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

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

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

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

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

文書

既存の文書の変更

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

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

Additionally, the following selected changes have been made:

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

perlapi

  • Corrected the documentation for Perl_form, form_nocontext, and vform, which claimed that any later call to one of them will destroy the previous returns from any. This hasn't been true since 5.6.0, except it does remain true if these are called during global destruction. With that caveat, the return of each of these is a fresh string in a temporary that will automatically be freed by a call to "FREETMPS" in perlapi or at at places such as statement boundaries.

    Perl_form, form_nocontext, vform の文書を 修正しました; これらのいずれかを後で呼び出すと、いずれかからの以前の 返り値が破棄されると主張していました。 これは 5.6.0 以降は真実ではありません; 但しこれらがグローバル破壊中に 呼び出された場合は真実のままです。 この点に注意してください; これらのそれぞれの返り値は、"FREETMPS" in perlapi への呼び出しによって、 または文境界などの場所で自動的に解放される一時的な新しい文字列です。

  • Several internal functions now have documentation - the various newSUB functions, newANONLIST(), newANONHASH(), newSVREF() and similar.

    さまざまな newSUB 関数、newANONLIST(), newANONHASH(), newSVREF() など、いくつかの内部関数に文書が追加されました。

perlclass

  • Added a list of known bugs in the experimental class feature.

    実験的な class 機能での既知のバグの一覧が追加されました。

perlfunc

  • The documentation for local, my, our, and state, has been updated to include examples and descriptions of their effects within a statement.

    local, my, our, state の 文書が更新され、一つの文の中にその効果の例と説明が追加されました。

perlguts

  • A new section has been added which describes the experimental reference-counted argument stack build option (PERL_RC_STACK).

    実験的な、参照カウントされる引数スタックのビルドオプション (PERL_RC_STACK) を記述する新しい節が追加されました。

perlclib

  • Extensive guidance has been added for interfacing with the standard C library, including many more functions to avoid, and how to cope with locales and threads.

    より多くの避けるべき関数や、ロケールとスレッドとの付き合い方といった、 標準 C ライブラリとの接続に関する幅広いガイドが追加されました。

perlhacktips

  • Document we can't use compound literals or array designators due to C++ compatibility. [GH #21073]

    C++ の互換性のため、複合リテラルや配列指定子は使えないことを文書化しました。 [GH #21073]

  • Document new functions sv_mark_arenas() and sv_sweep_arenas() (which only exist on DEBUGGING builds)

    新しい関数 sv_mark_arenas()sv_sweep_arenas()(これらは DEBUGGING ビルドにのみ存在します)を文書化しました。

  • Added brief documentation for some tools useful when developing perl itself on Windows or Cygwin.

    Windows や Cygwin 上で perl 自身を開発する際に役立ついくつかのツールの 簡単な説明を追加しました。

perllol

  • Removed indirect object syntax in Dumpvalue example

    Dumpvalue の例から間接オブジェクト構文が削除されました。

perlre

  • Removed statement suggesting /p is a no-op.

    /p が何もしないことを示唆する文が削除されました。

perlref

  • Documented ref assignment in list context (as part of the refaliasing feature)

    (refaliasing 機能の一部としての)リストコンテキスト内のリファレンス代入を 文書化しました。

perlop

  • The section on the empty pattern // has been amended to mention that the current dynamic scope is used to find the last successful match.

    空のパターン // の節が修正され、現在の動的スコープが最後の成功した マッチングを見つけるために使われることに言及しました。

perlport

  • The -S file test has been meaningful on Win32 since 5.37.6

    -S のファイルテストは、5.37.6 から Win32 で有効になっています。

  • The -l file test is now meaningful on Win32

    -l ファイルテストが Win32 で有効になりました。

  • Some strange behaviour with . at the end of names under Windows has been documented

    Windows で名前の最後に . を使ったときの奇妙な振る舞いについて 文書化されました。

perlvar

  • Added documentation for an alternative to ${^CAPTURE}

    ${^CAPTURE} の代替に関する文書が追加されました。

診断メッセージ

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

新しい警告メッセージ

新しいエラー

  • Cannot use __CLASS__ outside of a method or field initializer expression

    (F) A __CLASS__ expression yields the class name of the object instance executing the current method, and therefore it can only be placed inside an actual method (or method-like expression, such as a field initializer expression).

    (F) __CLASS__ 式は、現在のメソッドを実行するオブジェクトインスタンスの クラス名を生成するので、実際のメソッド(または、フィールド初期化式などの メソッド風の式)の中にのみ配置できます。

  • get_layers: unknown argument '%s'

    (F) You called PerlIO::get_layers() with an unknown argument. Legal arguments are provided in key/value pairs, with the keys being one of input, output or detail, followed by a boolean.

    (F) あなたは未知の引数 でPerlIO::get_layers() を呼び出しました。 有効な引数はキーと値のペアで提供され、キーは input, output, detail のいずれかで、その後に真偽値が続きます。

  • UNIVERSAL does not export anything

    (F) You asked UNIVERSAL to export something, but UNIVERSAL is the base class for all classes and contains no exportable symbols.

    (F) UNIVERSAL に何かをエクスポートするように要求しましたが、 UNIVERSAL はすべてのクラスの基底クラスであり、 エクスポート可能なシンボルを含んでいません。

  • Builtin version bundle "%s" is not supported by Perl

    (F) You attempted to use builtin :ver for a version number that is either older than 5.39 (when the ability was added), or newer than the current perl version.

    (F) バージョン番号が 5.39 (機能が追加されたとき)より古いか、 現在の perl バージョンより新しいバージョン番号に対して use builtin :ver を実行しようとしました。

  • Invalid version bundle "%s"

    (F) A version number that is used to specify an import bundle during a use builtin ... statement must be formatted as :MAJOR.MINOR with an optional third component, which is ignored. Each component must be a number of 1 to 3 digits. No other characters are permitted. The value that was specified does not conform to these rules.

    (F) use builtin ... 文中にインポートバンドルを指定するために 使われるバージョン番号は、:MAJOR.MINOR として フォーマットしなければなりません。 オプションの 3 番目のコンポーネントは無視されます。 各コンポーネントは 1 から 3 桁の数字でなければなりません。 他の文字は使えません。 指定された値はこれらの規則に従っていません。

  • Missing comma after first argument to return

    (F) While certain operators allow you to specify a filehandle or an "indirect object" before the argument list, return isn't one of them.

    (F) 特定の演算子では、引数リストの前にファイルハンドルまたは 「間接オブジェクト」を指定できますが、return はその一つではありません。

  • Out of memory during vec in lvalue context

    (F) An attempt was made to extend a string beyond the largest possible memory allocation by assigning to vec() called with a large second argument.

    (F) 大きな 2 番目の引数で呼び出された vec() に代入することによって、 可能な最大のメモリ割り当てを超えて文字列を拡張しようとしました。

    (This case used to throw a generic Out of memory! error.)

    (このケースでは、以前は一般的な Out of memory! エラーが投げられていました。)

  • Cannot create an object of incomplete class "%s"

    (F) An attempt was made to create an object of a class where the start of the class definition has been seen, but the class has not been completed.

    (F) クラス定義の開始が確認されたクラスのオブジェクトを作成しようとしましたが、 クラスが完了していません。

    This can happen for a failed eval, or if you attempt to create an object at compile time before the class is complete:

    これは、失敗した eval、またはクラスが完了する前のコンパイル時にオブジェクトを 作成しようとした場合に発生する可能性があります。

      eval "class Foo {"; Foo->new; # error
      class Bar { BEGIN { Bar->new } }; # error

    Previously perl would assert or crash. [GH #22159]

    これまでの perl はアサートやクラッシュを起こしていました。 [GH #22159]

新しい警告

  • Forked open '%s' not meaningful in <>

    (S inplace) You had |- or -| in @ARGV and tried to use <> to read from it.

    (S inplace) @ARGV|- または -| があり、<> を使って それを読み取ろうとしました。

    Previously this would fork and produce a confusing error message. [GH #21176]

    これまでは、これが分岐して紛らわしいエラーメッセージが表示されていました。 [GH #21176]

  • Attempt to call undefined %s method with arguments ("%s"%s) via package "%s" (Perhaps you forgot to load the package?)

    (D deprecated::missing_import_called_with_args) You called the import() or unimport() method of a class that has no import method defined in its inheritance graph, and passed an argument to the method. This is very often the sign of a misspelled package name in a use or require statement that has silently succeeded due to a case insensitive file system.

    (D deprecated::missing_import_called_with_args) 継承グラフに インポートメソッドが定義されていないクラスの import() または unimport() メソッドを呼び出し、そのメソッドに引数を渡しました。 これは多くの場合、use 文または require 文の中で、大文字と小文字を区別しない ファイルシステムのために暗黙的に成功したパッケージ名のスペルミスの兆候です。

    Another common reason this may happen is when mistakenly attempting to import or unimport a symbol from a class definition or package which does not use Exporter or otherwise define its own import or unimport method.

    これが発生するもう一つの一般的な理由は、Exporter を使わないか、 独自の import または unimport メソッドを定義していないクラス定義または パッケージから、誤ってシンボルをインポートまたは インポート解除しようとした場合です。

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

  • Name "%s::%s" used only once: possible typo

    This warning now honors being marked as fatal. [GH #13814]

    この警告は致命的とマークされるようになりました。 [GH #13814]

  • Out of memory in perl:%s

    There used to be several places in the perl core that would print a generic Out of memory! message and abort when memory allocation failed, giving no indication which program it was that ran out of memory. These have been modified to include the word perl and the general area of the allocation failure, e.g. Out of memory in perl:util:safesysrealloc. [GH #21672]

    Perl コアには以前、一般的な Out of memory! メッセージを出力して、 メモリ割り当てが失敗したときにメモリを使い果たしたプログラムを表示せずに 中断する場所がいくつかありました。 これらは、perl という語と割り当て失敗の一般的な領域を含むように 修正されました; 例えば、Out of memory in perl:util:safesysrealloc。 [GH #21672]

  • Possible precedence issue with control flow operator (%s)

    This warning now mentions the name of the control flow operator that triggered the diagnostic (e.g. return, exit, die, etc).

    この警告では、診断を引き起こした制御フロー演算子の名前 (return, exit, die など)が示されるようになりました。

    It also covers more cases: Previously, the warning was only triggered if a low-precedence logical operator (like and, or, xor) was involved. Now it is also shown for misleading code like this:

    また、より多くの状況に対応するようになりました: これまでは、(and, or, xor のような)優先順位の低い論理演算子が 含まれている場合にのみ警告が発生していました。 次のような誤解を招くコードにも表示されるようになりました:

        exit $x ? 0 : 1;  # actually parses as: exit($x) ? 0 : 1;
        exit $x == 0;     # actually parses as: exit($x) == 0;
  • Use of uninitialized value%s

    This warning is now slightly more accurate in cases involving length, pop, shift, or splice:

    この警告は、length, pop, shift, splice に関する場合に、 さらに若干正確になりました:

        my $x;
        length($x) == 0
        # Before:
        #  Use of uninitialized value $x in numeric eq (==) at ...
        # Now:
        #  Use of uninitialized value length($x) in numeric eq (==) at ...

    That is, the warning no longer implies that $x was used directly as an operand of ==, which it wasn't.

    つまり、この警告は、$x== のオペランドとして直接使われたことを 意味するものではもはやなくなりました。

    Similarly:

    同様に:

        my @xs;
        shift @xs == 0
        # Before:
        #  Use of uninitialized value within @xs in numeric eq (==) at ...
        # Now:
        #  Use of uninitialized value shift(@xs) in numeric eq (==) at ...

    This is more accurate because there never was an undef within @xs as the warning implied. (The warning for pop works analogously.)

    以前の警告が暗示していたように @xs の中身が undef である 訳ではないので、これはより正確です。 (pop の警告も同様に動作します。)

    Finally:

    最後に:

        my @xs = (1, 2, 3);
        splice(@xs, 0, 0) == 0
        # Before:
        #  Use of uninitialized value within @xs in numeric eq (==) at ...
        # Now:
        #  Use of uninitialized value in numeric eq (==) at ...

    That is, in cases where splice returns undef, it no longer unconditionally blames its first argument. This was misleading because splice can return undef even if none of its arguments contain undef.

    つまり、spliceundef を返す場合、 もはや最初の引数を無条件に非難しなくなりました。 splice は、その引数に undef が含まれていなくても undef を 返すことがあるため、これは誤解を招くものでした。

    [GH #21930]

  • Old package separator "'" deprecated

    Prevent this warning appearing spuriously when checking the heuristic for the You need to quote "%s" warning.

    You need to quote "%s" 警告のための ヒューリスティックをチェックするときに、この警告が誤って 表示されないようになりました。

    [GH #22145]

設定とコンパイル

  • microperl, long broken and of unclear present purpose, has been removed as promised in Perl 5.18.

    Perl 5.18 で約束されたように、 長い間壊れていて現在の目的が不明確な microperl は削除されました。

  • Fix here-doc used for code to probe LC_ALL syntax for disparate locales introduced in 5.39.2. [GH #21451]

    5.39.2 で導入された、異なるロケールのための LC_ALL 構文を 調べるためのコードのために使われていた日やドキュメントが修正されました。 [GH #21451]

  • You can now separately enable high water mark checks for non-DEBUGGING or disable them for DEBUGGING builds with -Accflags=-DPERL_USE_HWM or -Accflags=-DPERL_NO_HWM respectively. The default remains the same. [GH #16607]

    -Accflags=-DPERL_USE_HWM または -Accflags=-DPERL_NO_HWM を使った、 非 DEBUGGING ビルドの High Watermark チェックを個別に有効または 無効にできるようになりました。 デフォルトは同じです。 [GH #16607]

テスト

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

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

  • Update nm output parsing for Darwin in t/porting/libperl.t to handle changes in the output of nm on Darwin. [GH #21117]

    Darwin での nm の出力の変更を扱うために、 t/porting/libperl.t 内の Darwin のための nm の出力のパースを更新しました。 [GH #21117]

  • t/op/magic.t would fail when ps was the BusyBox implementation, since that doesn't support the -p flag and otherwise ignores a process id on the command-line. This caused TEST failures on BusyBox systems such as Alpine Linux. [GH #17542]

    ps が BusyBox の実装である場合、t/op/magic.t は失敗します。 これは、-p フラグに対応しておらず、コマンドライン上のプロセス ID が 無視されるためです。 これにより、Alpine Linux などの BusyBox システムで TEST エラーを 引き起こししていました。 [GH #17542]

  • porting/globvar.t now uses the more portable nm -P ... to fetch the names defined in an object file. The parsing of the names found in the object is now separated from processing them to handle the duplication between local and global definitions on AIX. [GH #21637]

    porting/globvar.t は、オブジェクトファイルで定義された名前を フェッチするために、より移植性の高い nm -P ... を 使うようになりました。 オブジェクト内で見つかった名前の解析は、AIX 上のローカル定義と グローバル定義の間の重複を扱うための処理から分離されました。 [GH #21637]

  • A test was added to lib/locale_threads.t that extensively stress tests locale handling. It turns out that the libc implementations on various platforms have bugs in this regard, including Linux, Windows, *BSD derivatives including Darwin, and others. Experimental versions of this test have been used in the past few years to find bugs in the Perl implementation and in those platforms, as well as to develop workarounds in the Perl implementation, where feasible, for the platform bugs. Multiple bug report tickets have been filed against platforms, and some have been fixed. The test checks that platforms that purport to support thread-safe locale handling actually do so (and that perl works properly on those that do; The read-only variable ${^SAFE_LOCALES} is set to 1 if perl thinks the platform can handle this, whatever the platform's documentation says).

    lib/locale_threads.t に、 ロケールの扱いを詳細にテストするテストが追加されました。 Linux, Windows, Darwin などの *BSD 派生物など、さまざまな プラットフォームでの libc 実装には、この点に関してバグがあることが 判明しています。 このテストの実験版は、過去数年間、Perl 実装とそれらの プラットフォームのバグを発見するため、 また、可能な場合には、プラットフォームのバグに対する Perl 実装の 回避策を開発するために使われてきました。 プラットフォームに対して複数のバグレポートチケットが提出され、 いくつかが修正されています。 このテストでは、スレッドセーフなロケール処理をサポートすることを意図した プラットフォームが実際にそうしていることを チェックします(また、スレッドセーフなロケール処理をサポートしている プラットフォームで perl が正しく動作することもチェックします; プラットフォームの文書にどのように記されているかに関わらず、 perl がプラットフォームがこれを処理できると判断した場合は、 読み取り専用変数 ${^SAFE_LOCALES} が 1 に設定されます)。

    Also tested for is if the various locale categories can indeed be set independently to disparate locales. (An example of where you might want to do this is if you are a Western Canadian living and working in Holland. You likely will want to have the LC_MONETARY locale be set to where you are living, but have the other parts of your locale retain your native English values. Later, as you get a bit more comfortable with Dutch, and in order to communicate better with your colleagues, you might want to change LC_TIME and LC_NUMERIC to Dutch, while leaving LC_CTYPE and LC_COLLATE set to English indefinitely.)

    また、さまざまなロケールカテゴリが、実際に異なるロケールに対して独立して 設定できるかどうかもテストされます(これがほしいと思われる一つの例として、 あなたがオランダに住んで働いている西カナダ人とします。 LC_MONETARY ロケールを現在住んでいる場所に設定し、 ロケールの他の部分はネイティブの英語の値を保持することができます。 その後、オランダ語に少し慣れてきて、同僚とのコミュニケーションを 良くするために、LC_TIMELC_NUMERIC をオランダ語に変更し、 LC_CTYPELC_COLLATE を無期限に 英語に設定したままにすることができます)。

  • The test t/porting/libperl.t will no longer run in maint releases. This test is sensitive to changes in the output of nm on various platforms, and tarballs aren't updated as we update this test in blead. [GH #21677]

    テスト t/porting/libperl.t は、メンテナンスリリースでは もはや実行されません。 このテストは、さまざまなプラットフォームでの nm の出力の変化に 敏感であり、blead でこのテストを更新しても tarball は更新されません。 [GH #21677]

プラットフォーム対応

新しいプラットフォーム

Serenity OS

Out of the box support for Serenity OS was added.

すぐに使える Serenity OS 対応が追加されました。

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

Windows

Eliminated several header build warnings under MSVC with /W4 to reduce noise for embedders. [GH #21031]

/W4 を使用した MSVC でのいくつかのヘッダビルド警告を削除し、 埋め込み用のノイズを低減しました。 [GH #21031]

Work around a bug in most 32-bit Mingw builds, where the generated code, including the code in the gcc support library, assumes 16-byte stack alignment, which 32-bit Windows does not preserve. [GH #21313]

ほとんどの 32 ビット Mingw ビルドのバグを回避しました; これは、gcc サポートライブラリ内のコードを含む生成されたコードは、 32 ビット Windows では保持されない 16 バイトのスタックアライメントを 前提としているというものです。 [GH #21313]

Enable copysign, signbit, acosh, asinh, atanh, exp2, tgamma in the bundled configuration used for MSVC. [GH #21610]

MSVC に使われる組み込みの設定で、 copysign, signbit, acosh, asinh, atanh, exp2, tgamma を有効にしました。 [GH #21610]

The build process no longer supports Visual Studio 2013. This was failing to build at a very basic level and there have been no reports of such failures. [GH #21624]

ビルドプロセスは Visual Studio 2013 に対応しなくなりました。 これは非常に基本的なレベルでのビルドに失敗しており、そのような 失敗の報告はありませんでした。 [GH #21624]

Linux

The hints file has been updated to handle the Intel oneAPI DPC++/C++ compiler.

ヒントファイルが更新され、Intel oneAPI DPC++/C++ コンパイラを 扱えるようになりました。

MacOS/Darwin

Don't set MACOSX_DEPLOYMENT_TARGET when building on OS X 10.5. [GH #21367]

Mac OSX 10.5 上でビルドする場合は、MACOSX_DEPLOYMENT_TARGET を 設定しなくなりました。 [GH #21367]

VMS

Fixed the configure "installation prefix" prompt to accept a string rather than yes/no.

configure の "installation prefix" プロンプトが、yes/no ではなく文字列を 受け入れるように修正されました。

Fixed compilation by defining proper value for perl_lc_all_category_positions_init.

perl_lc_all_category_positions_init に適切な値を定義することで、 コンパイルが修正されました。

Increased buffer size when reading config_H.SH to fix compilation under clang.

config_H.SH を読み込む際のバッファサイズを増やし、clang の下での コンパイルを修正しました。

Oracle Developer Studio (Solaris, Oracle Linux)

Due to an apparent code generation bug, the default optimization level for the Oracle Developer Studio (formerly Sun Workshop) compiler is now -xO1. [GH #21535]

明らかなコード生成のバグにより、Oracle Developer Studio(以前の Sun Workshop)コンパイラのデフォルトの最適化レベルは -xO1 になりました。 [GH #21535]

内部の変更

  • PERL_RC_STACK build option added.

    PERL_RC_STACK ビルドオプションが追加されました。

    This new build option is highly experimental and is not enabled by default. Perl can be built with it by using the Configure option -Accflags='-DPERL_RC_STACK'.

    この新しいビルドオプションは非常に実験的なものであり、デフォルトでは 有効になっていません。 Configure オプション -Accflags='-DPERL_RC_STACK' を使うことで、 このオプションを使って Perl をビルドできます。

    It makes the argument stack bump the reference count of SVs pushed onto it. It is mostly functional, but currently slow and incomplete.

    これは、引数スタックにプッシュされた SV の参照カウントをバンプさせます。 ほとんどは機能しますが、現在は遅く不完全です。

    It is intended in the long term that this build option will become the default option, and then finally the only option; but this will be many releases away.

    長期的には、このビルドオプションがデフォルトオプションになり、 最終的には唯一のオプションになることが意図されています; しかしこれには多くのリリースがかかる予定です。

    In particular, there is currently no support within XS code for using these new features. So under this build option, all XS functions are called via a backwards-compatibility wrapper which slows down such calls.

    特に、現在 XS コード内でこれらの新機能を使うためのサポートがありません。 そのため、このビルドオプションの下では、すべての XS 関数は下位互換性のある ラッパーを介して呼び出されるため、そのような呼び出しが遅くなります。

    In future releases, better support for XS code is intended to be added. It is expected that straightforward XS code will eventually be able to make use of a reference-counted stack without modification, with any heavy lifting being handled by the XS compiler (xsubpp) and the macros which it outputs. But code which implements PP() functions will eventually have to be modified to use a new PP API: rpp_foo() rather than PUSHs() etc. But this new API is not yet stable, nor has it yet been back-ported via Devel::PPPort.

    将来のリリースでは、XS コードのサポートが強化される予定です。 単純な XS コードは、最終的には修正なしで参照カウントされたスタックを 利用できるようになり、重い処理は XS コンパイラ(xsubpp)とそれが出力する マクロによって処理されることが期待されています。 しかし、PP() 関数を実装するコードは、最終的には新しい PP API を使うように 修正する必要があります: PUSHs() などではなく rpp_foo() です。 しかし、この新しい API はまだ安定しておらず、Devel::PPPort を介して バックポートされてもいません。

    See perlguts for more details.

    さらなる詳細については、 perlguts を参照してください。

  • A new API function has been added that simplifies C (or XS) code that creates LISTOP optree fragments. newLISTOPn() is a variadic function that takes a NULL-terminated list of child op pointers, and constructs a new checked LISTOP to contain them all. This is simpler than creating a new plain OP_LIST, adding each child individually, and finally calling op_convert_list() in most code fragments.

    LISTOP op 木要素を作る C(または XS)コードを簡略化する、新しい API 関数が追加されました。 newLISTOPn() は、NULL で終端された子 op ポインタのリストを取り、 それら全てを含む新しいチェック済み LISTOP を構築する可変関数です。 これは、新しいプレーンな OP_LIST を作成し、それぞれの子を個別に追加し、 最後にほとんどのコード要素で op_convert_list() を呼び出すよりも より簡単です。

  • The eval_sv() API now accepts the G_USEHINTS flag, which uses the hints such as strict and features from PL_curcop instead of the default, which is to use default hints, e.g. no use vX.XX;, no strict, default features.

    eval_sv() API が G_USEHINTS フラグを受け入れるようになりました; このフラグは、デフォルトではなく、PL_curcop の strict や features などのヒントを使います; デフォルトでは、no use vX.XX;, no strict, デフォルトの機能といった デフォルトのヒントを使います。

    Beware if you use this flag in XS code: your evaluated code will need to support whatever strictness or features are in effect at the point your XS function is called.

    XS コードでこのフラグを使う場合は注意してください: 評価されたコードは、XS 関数が呼び出された時点で有効な strict 性や機能に 対応する必要があります。

    [GH #21415]

  • PERL_VERSION_LE has been fixed to properly check for "less than or equal" rather than "less than".

    PERL_VERSION_LE が "less than" ではなく "less than or equal" を正しく チェックするように修正されました。

  • dAX, dITEMS and hence dXSARGS now declare AX and items as Stack_off_t rather than SSize_t. This reverts back to compatibility with pre-64-bit stack support for default builds of perl where Stack_off_t is I32. [GH #21782]

    dAX, dITEMS, そして dXSARGS は、AXitemsSSize_t ではなく Stack_off_t として宣言するようになりました。 これにより、Stack_off_tI32 である perl のデフォルトビルドに対する 64 ビット以前のスタックサポートとの互換性に戻ります。 [GH #21782]

  • A new function is now available to XS code, "sv_langinfo" in perlapi. This provides the same information as the existing "Perl_langinfo8" in perlapi, but returns an SV instead of a char *, so that programmers don't have to concern themselves with the UTF-8ness of the result. This new function is now the preferred interface for XS code to the nl_langinfo(3) libc function. From Perl space, this information continues to be provided by the I18N::Langinfo module.

    XS コードで "sv_langinfo" in perlapi という新しい関数が 利用可能になりました。 これは既存の "Perl_langinfo8" in perlapi と同じ情報を提供しますが、 char * の代わりに SV を返すので、プログラマは結果の UTF-8 性を 気にする必要がありません。 この新しい関数は、XS コードから nl_langinfo(3) libc 関数への 優先インタフェースになりました。 Perl 空間からは、この情報は引き続き I18N::Langinfo モジュールによって 提供されます。

  • glibc has an undocumented equivalent function to querylocale(), which our experience indicates is reliable. When this is function is used, it removes the need for perl to keep its own records, hence is more efficient and guaranteed to be accurate. Use of this function can be disabled by defining the NO_NL_LOCALE_NAME build option

    glibc には文書化されていない querylocale() と同等の関数がありますが、 これは私たちの経験から信頼できることが示されています。 この関数を使うと、perl が独自の記録を保持する必要がなくなるため、 より効率的で正確であることが保証されます。 この関数の使用は、NO_NL_LOCALE_NAME ビルドオプションを 定義することで無効にできます。

バグ修正の抜粋

  • The delimiter SYRIAC COLON SKEWED LEFT/RIGHT pair has been removed from the ones recognized by the extra_paired_delimiters feature. (See "Quote and Quote-like Operators" in perlop.) This is because those characters are normally written right-to-left, and this could be visually confusing [GH #22228]. The change was actually to forbid any right-to-left delimiters, but this pair is the only current instance that meets this criterion. By policy, this change means that the extra_paired_delimiters feature cannot be considered to have been stable long enough for its experimental status to be removed.

    区切り文字 SYRIC C COLON SKEWED LEFT/RIGHT の組は、 extra_paired_delimiters 機能で認識される組から削除されました ("Quote and Quote-like Operators" in perlop を参照)。 これは、これらの文字が通常右から左に書かれているため、視覚的に混乱する 可能性があるためです[GH #22228]。 この変更は、実際には右から左の区切り文字を禁止するためのものでしたが、 現在この基準を満たすのはこの組だけです。 ポリシー上、この変更は、extra_paired_delimiters 機能が実験的な状態を 終了するのに十分な期間安定していたとは考えられないことを意味します。

  • use 5.36; or later didn't enable the post parse reporting of Name "%s::%s" used only once: possible typo warnings when enabling warnings. [GH #21271]

    use 5.36; 以降では、警告を有効にしたときに、 Name "%s::%s" used only once: possible typo 警告の、パース後の報告が有効になっていませんでした。 [GH #21271]

  • Fix a crash or assertion when cleaning up a closure that refers to an outside our sub. [GH #21067]

    外部の our サブルーチンを参照するクロージャをクリーンアップするときの クラッシュやアサーションを修正しました。 [GH #21067]

  • Fixed a number of issues where I32 was used as a string offset or size rather than SSize_t or STRLEN/size_t [GH #21012]

    SSize_t または STRLEN/size_t ではなく、 I32 が文字列のオフセットまたはサイズとして使われる場合の 多くの問題が修正されました。 [GH #21012]

  • ~$str when $str was more than 2GB in size would do nothing or produce an incomplete result.

    $str のサイズが 2GB を超える場合、~$str は何も実行しなかったり、 不完全な結果を生成したりしていました。

  • String repeat, $str x $count, didn't handle $str over 2GB in size, throwing an error. Now such strings are repeated.

    文字列の繰り返し $str x $count は、サイズが 2GB を超える $str を処理できず、エラーが投げられていました。 このような文字列は繰り返されるようになりました。

  • Complex substitution after the 2GB point in a string could access incorrect or invalid offsets in the string.

    文字列内の 2GB よりの後の位置での複雑な置換は、文字列内の不正または 無効なオフセットにアクセスする可能性がありました。

  • sv_utf8_decode() would truncate the SVs pos() value. This wasn't visible via utf8::decode().

    sv_utf8_decode() は SV の pos() の値を切り捨てます。 これは utf8::decode() では見ることができませんでした。

  • When compiling a constant folded hash key, the length was truncated when creating the shared SV. Since hash keys over 2GB are not supported, throw a compilation error instead.

    定数折り畳みハッシュキーをコンパイルするとき、共有 SV の作成時に 長さが切り捨てられていました。 2GB を超えるハッシュキーには対応していないため、代わりに コンパイルエラーが投げられます。

  • msgrcv() incorrectly called get magic on the buffer SV and failed to call set magic on completion. [GH #21012]

    msgrcv() がバッファ SV に誤って get magic を呼び出し、完了時に set magic を呼び出していませんでした。 [GH #21012]

  • msgrcv() used the size parameter to resize the buffer before validating it. [GH #21012]

    msgrcv() は、size 引数を検証する前に、バッファのサイズを変更するために これを使っていました。 [GH #21012]

  • Inheriting from a class that was hierarchically an ancestor of the new class, eg. class A::B :isa(A) { ... } , would not attempt to load the parent class. [GH #21332]

    階層的に新しいクラスの祖先であるクラスから継承する場合、たとえば class A::B:isa(A){.} は親クラスをロードしようとしませんでした。 [GH #21332]

  • Declared references can now be used with state variables. [GH #21351]

    宣言されたリファレンスを state 変数で使えるようになりました。 [GH #21351]

  • Trailing elements in an unshifted and resized array will now always be initialized. [GH #21265]

    unshift されてサイズ変更された配列の末尾要素は、 常に初期化されるようになりました。 [GH #21265]

  • Make use 5.036 respect the -X flag

    use 5.036 が -X フラグを考慮するようになりました

    perl's -X flag disables all warnings globally, but «use 5.036» didn't respect that until now. [GH #21431]

    perl の -X フラグはすべての警告をグローバルに無効にしますが、 "use 5.036" は今までそれを考慮していませんでした。 [GH #21431]

  • Fixed an OP leak when an error was produced for initializer for a class field. [GH #20812]

    クラスフィールドの初期化処理でエラーが発生した場合の OP リークが修正されました。 [GH #20812]

  • Fixed a leak of the return value when smartmatching against a code reference.

    コードリファレンスに対してスマートマッチングする場合の 帰り値のリークが修正されました。

  • Fixed a slowdown in repeated substitution replacements using special variables, such as s/....x$1/g. It actually makes all string concatenations involving such "magic" variables less slow, but the slowdown was more noticeable on repeated substitutions due to extra memory usage that was only freed after the last iteration. The slowdown started in perl 5.28.0 - which generally sped up string concatenation but slowed down when using special variables. [GH #21360]

    s/....x$1/g のような特殊変数を使用した置換の繰り返しの速度低下が 修正されました。 実際には、このような「マジック」変数を含むすべての文字列連結の 速度低下が現象しますが、最後の反復後のみ解放される余分なメモリ使用量のために、 置換を繰り返すと速度低下がより顕著になりました。 速度低下は perl 5.28.0 で始まりました - これは一般的に文字列連結を高速化しましたが、特殊変数を使うと 速度が低下しました。 [GH #21360]

  • Lexical names from the enclosing scope in a lexical sub or closure weren't visible to code executed by calling eval EXPR; from the DB package. This was introduced in 5.18 in an attempt to prevent subs from retaining a reference to their outer scope, but this broke the special behaviour of eval EXPR; in package DB.

    DB パッケージから eval EXPR; を呼び出すことによって 実行されたコードでは、レキシカルサブルーチンまたはクロージャ内の 包含スコープからのレキシカル名は表示されませんでした。 これは、サブルーチンが外部スコープへの参照を保持しないようにするために 5.18 に導入されましたが、これにより DB パッケージ内の eval EXPR; の 特殊な動作が壊れました。

    This incidentally fixed a TODO test for B::Deparse. [GH #19370]

    これにより、B::Deparse の TODO テストが偶然修正されました。 [GH #19370]

  • Optionally support an argument stack over 2**32 entries on 64-bit platforms. This requires 32GB of memory just for the argument stack pointers itself, so you will require a significantly more memory to take advantage of this.

    オプションで、64ビットプラットフォームで 2**32 エントリを超える 引数スタックに対応します。 これには、引数スタックポインタ自体のためだけに 32 GB のメモリが 必要になるため、これを利用するには大幅に多くのメモリが必要になります。

    To enable this add -Accflags=-DPERL_STACK_OFFSET_SSIZET or equivalent to the Configure command-line.

    これを有効にするには、-Accflags=-DPERL_STACK_OFFSET_SSIZET または 同等のものを Configure コマンドラインに追加します。

    [GH #20917] [GH #21523]

  • Fixed various problems with join() where modifications to the separator could be handled inconsistently, or could access released memory. Changes to the separator from magic or overloading for values in the LIST no longer have an effect on the resulting joined string. [GH #21458]

    join() で、区切り文字の変更が一貫性なく処理されたり、解放されたメモリに アクセスしたりする可能性があるさまざまな問題が修正されました。 マジックまたは LIST 内の値のオーバーロードによる区切り文字の変更は、 結果の結合された文字列に影響しなくなりました。 [GH #21458]

  • Don't clear the integer flag IOK from lines in the @{"_<$sourcefile"} array when a dbstate op is removed for that line. This was broken when fixing [GH #19198]. [GH #21564]

    @{"_<$sourcefile"} 配列の行で dbstate op が削除されたときに、 その行の整数フラグ IOK をクリアしません。 これは [GH #19198] を 修正したときに壊れました。 [GH #21564]

  • Many bug fixes have been made for using locales under threads and in embedded perls. And workarounds for libc bugs have been added. As a result thread-safe locale handling is now the default under OpenBSD, and MingW when compiled with UCRT.

    スレッドの下や組み込みの perl でロケールを使うための多くのバグ修正が 行われました。 libc バグの回避策も追加されました。 その結果、OpenBSD および UCRT でコンパイルした MingW では、 スレッドセーフなロケール処理のデフォルトになりました。

    However, testing has shown that Darwin's implementation of thread-safe locale handling has bugs. So now Perl doesn't attempt to use the thread-safe operations when compiled on Darwin.

    しかし、テストの結果、Darwin のスレッドセーフなロケール処理の実装には バグがあることがわかりました。 そのため、Perl は Darwin でコンパイルされたときにスレッドセーフな操作を 使おうとしなくなりました。

    As before, you can check to see if your program is running with thread-safe locales by checking if the value of ${^SAFE_LOCALES} is 1.

    以前と同様、${^SAFE_LOCALES} の値が 1 かどうかをチェックすることで、 プログラムがスレッドセーフなロケールで実行されているかどうかを確認できます。

  • Various bugs have been fixed when perl is configured with -Accflags=-DNO_LOCALE_NUMERIC or any other locale category (or categories).

    perl が -Accflags=-DNO_LOCALE_NUMERIC またはその他のロケールカテゴリで 設定されている場合の様々なバグが修正されました。

  • Not all locale categories need be set to the same locale. Perl now works around bugs in the libc implementations of locale handling on some platforms that previously could result in mojibake.

    すべてのロケールカテゴリを同じロケールに設定する必要はありません。 Perl は、以前は文字化けになる可能性があった、いくつかのプラットフォームでの ロケール処理の libc 実装のバグを回避できるようになりました。

  • LC_ALL is represented in one of two ways when not all locale categories are set to the same locale. On some platforms, such as Linux and Windows, the representation is of the form of a series of 'category=locale-name' pairs. On other platforms, such as *BSD, the representation is positional like name1 / name2 / ... . name1 is always for a particular category as defined by the platform, as are the other names. The sequence that separates the names (the / above) also varies by platform. Previously, perl had problems with platforms that used the positional notation. This is now fixed.

    LC_ALL は、すべてのロケールカテゴリが同じロケールに設定されていない場合、 二つの方法のいずれかで表現されます。 Linux や Windows などの一部のプラットフォームでは、表現は一連の 'category=locale-name' の組の形式になります。 *BSD などの他のプラットフォームでは、表現は name1 / name2 / ... のような位置になります。 name1 は、他の名前と同様に、プラットフォームによって定義された特定の カテゴリを表します。 名前を区切る順序(前述の / )もプラットフォームによって異なります。 以前は、位置表記を使うプラットフォームで perl に問題がありました。 これは修正されました。

  • A bug has been fixed in the regexp engine with an optimisation that applies to the + quantifier where it was followed by a (*SKIP) pattern.

    (*SKIP) パターンが後に続く + 量指定子に適用される最適化に関する 正規表現エンジンのバグが修正されました。

    [GH #21534]

  • The tmps (mortal) stack now grows exponentially. Previously it grew linearly, so if it was growing incrementally, such as through many calls to sv_2mortal(), on a system where realloc() is O(size), the performance would be O(n*n). With exponential grows this changes to amortized O(n). [GH #21654]

    tmps(揮発性)スタックは指数関数的に増加するようになりました。 以前は直線的に増加していたので、realloc() が O(サイズ) のシステムで sv_2mortal() を何度も呼び出すなどして徐々に増加した場合、 パフォーマンスは O(n*n) になります。 指数関数的に増加すると、これは償却された O(n) に変わります。 [GH #21654]

  • Lexical subs now have a new stub in the pad for each recursive call into the containing function. This fixes two problems:

    レキシカルサブルーチンは、包含関数への各再帰呼び出しのパッドに 新しいスタブを持つようになりました。 これは次の二つの問題を解決します:

    • If the lexical sub called the containing function, a "Can't undef active subroutine" error would be thrown. For example:

      レキシカルサブルーチンが包含関数を呼び出すと、 "Can't undef active subroutine" というエラーが投げられます。 例えば:

          use v5.36.0;
          sub outer($oc) {
              my sub inner ($c) {
                   outer($c-1) if $c; # Can't undef active subroutine
              }
              inner($oc);
          }
          outer(2);

      [GH #18606]

    • If the lexical sub was called from a recursive call into the containing function, this would overwrite the bindings to the closed over variables in the lexical sub, so calls into the lexical sub from the outer recursive call would have access to the variables from the inner recursive call:

      レキシカルサブルーチンが再帰呼び出しから包含関数に呼び出された場合、 これはレキシカルサブルーチン内のクローズオーバー変数への束縛を 上書きするため、外部再帰呼び出しからレキシカルサブルーチンへの 呼び出しは内部変数からの変数にアクセスできるようになっていました:

          use v5.36.0;
          sub outer ($x) {
              my sub inner ($label) {
                  say "$label $x";
              }
              inner("first");
              outer("inner") if $x eq "outer";
              # this call to inner() sees the wrong $x
              inner("second");
          }
          outer("outer");

      [GH #21987]

  • prepare_export_lexical() was separately saving PL_comppad and PL_curpad, this could result in PL_curpad being restored to a no longer valid value, resulting in a panic when importing lexicals in some cases. [GH #21981]

    prepare_export_lexical() は PL_comppadPL_curpad を別々に 保存していました; これにより、PL_curpad がもはや有効でない値に復元され、 場合によってはレキシカル変数をインポートするときにパニックが 起きる可能性がありました。 [GH #21981]

  • A string eval() operation in the scope of a use VERSION declaration would sometimes emit spurious "Downgrading a use VERSION declaration" warnings due to an inconsistency in the way the version number was stored. This is now fixed. [GH #22121]

    use VERSION 宣言のスコープ内で文字列 eval() 操作を行うと、 バージョン番号の格納方法の矛盾のため、 "Downgrading a use VERSION declaration" という 誤った警告が表示されることがありました。 これは修正されました。 [GH #22121]

既知の問題

  • perlivp is missing streamzip on Windows

    (perlivp は Windows で streamzip がありません)

    The streamzip utility does not get installed on Windows but should get installed.

    streamzip ユーティリティは Windows にはインストールされませんが、 インストールされるする必要があります。

以前のリリースの訂正

  • perl5300delta has been updated to include the removal of the arybase module that happened at the same time as the removal of $[.

    perl5300delta は、$[ の削除と同時に行われた arybase モジュールの 削除を含むように更新されました。

謝辞

Perl 5.40.0 represents approximately 11 months of development since Perl 5.38.0 and contains approximately 160,000 lines of changes across 1,500 files from 75 authors.

Perl 5.40.0 は、Perl 5.38.0 以降、75 人の作者によって、 1,500 のファイルに約 160,000 行の変更を加えて、 約 11 ヶ月開発されてきました。

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

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

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

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

Abe Timmerman, Alexander Kanavin, Amory Meltzer, Aristotle Pagaltzis, Arne Johannessen, Beckett Normington, Bernard Quatermass, Bernd, Bruno Meneguele, Chad Granum, Chris 'BinGOs' Williams, Christoph Lamprecht, Craig A. Berry, Dagfinn Ilmari Mannsåker, Dan Book, Dan Church, Daniel Böhmer, Dan Jacobson, Dan Kogai, David Golden, David Mitchell, E. Choroba, Elvin Aslanov, Erik Huelsmann, Eugen Konkov, Gianni Ceccarelli, Graham Knop, Greg Kennedy, guoguangwu, Hauke D, H.Merijn Brand, Hugo van der Sanden, iabyn, Jake Hamby, Jakub Wilk, James E Keenan, James Raspass, Joe McMahon, Johan Vromans, John Karr, Karen Etheridge, Karl Williamson, Leon Timmermans, Lukas Mai, Marco Fontani, Marek Rouchal, Martijn Lievaart, Mathias Kende, Matthew Horsfall, Max Maischein, Nicolas Mendoza, Nicolas R, OpossumPetya, Paul Evans, Paul Marquess, Peter John Acklam, Philippe Bruhat (BooK), Raul E Rangel, Renee Baecker, Ricardo Signes, Richard Leach, Scott Baker, Sevan Janiyan, Sisyphus, Steve Hay, TAKAI Kousuke, Todd Rinaldo, Tomasz Konojacki, Tom Hughes, Tony Cook, William Lyu, x-yuri, Yves Orton, Zakariyya Mughal, Дилян Палаузов.

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

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

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

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

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

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

バグ報告

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

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

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

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

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

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

感謝を伝える

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

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

    perlthanks

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

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

SEE ALSO

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

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

The INSTALL file for how to build Perl.

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

The README file for general stuff.

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

The Artistic and Copying files for copyright information.

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

POD ERRORS

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

Around line 1899:

=back without =over

Around line 1918:

You forgot a '=back' before '=head3'