perl5380delta
perl5361delta
perl5360delta
perl5341delta
perl5340delta
perl5321delta
perl5320delta
perl5303delta
perl5302delta
perl5301delta
perl5300delta
perl5283delta
perl5282delta
perl5281delta
perl5280delta
perl5263delta
perl5262delta
perl5261delta
perl5260delta
perl5244delta
perl5243delta
perl5242delta
perl5241delta
perl5240delta
perl5224delta
perl5223delta
perl5222delta
perl5221delta
perl5220delta
perl5203delta
perl5202delta
perl5201delta
perl5200delta
perl5184delta
perl5182delta
perl5181delta
perl5180delta
perl5163delta
perl5162delta
perl5161delta
perl5160delta
perl5144delta
perl5143delta
perl5142delta
perl5141delta
perl5140delta
perl5125delta
perl5124delta
perl5123delta
perl5122delta
perl5100delta
perl5101delta
perl5121delta
perl5120delta
perl5120delta
perl5100delta
perl5101delta
perl58delta
perl582delta
perl587delta
perl581delta
perl586delta
perl588delta
perl584delta
perl585delta
perl583delta
perl58delta
perl582delta
perl587delta
perl581delta
perl586delta
perl588delta
perl584delta
perl585delta
perl583delta
perl58delta
perl582delta
perl581delta
perl584delta
perl583delta
perl58delta
- 名前
- 説明
- コアの拡張
- New
__CLASS__
Keyword :reader
attribute for field variables- Permit a space in
-M
command-line option - Restrictions to
use VERSION
declarations - New
builtin::inf
andbuiltin::nan
functions (experimental) - New
^^
logical xor operator try
/catch
feature is no longer experimentalfor
iterating over multiple values at a time is no longer experimentalbuiltin
module is no longer experimental- The
:5.40
feature bundle addstry
use v5.40;
imports builtin functions
- New
- セキュリティ
- 互換性のない変更
- 廃止予定
- 性能改善
- モジュールとプラグマ
- 文書
- 診断メッセージ
- 設定とコンパイル
- テスト
- プラットフォーム対応
- 内部の変更
- バグ修正の抜粋
- 既知の問題
- 以前のリリースの訂正
- 謝辞
- バグ報告
- 感謝を伝える
- SEE ALSO
名前¶
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.
二つの新しい関数、inf
と nan
が builtin
名前空間に追加されました。 これらは、それぞれ浮動小数点数の無限大と非数値を生成する定数のように動作します。
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 [email protected]
.
この脆弱性は、Nathan Mills [email protected]
によって 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.exe
を C:\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
には影響しません。
不明なパッケージの 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 から継承しており、クラス UNIVERSAL が import
メソッドを定義しているためです。 以前の perl ではそのようなメソッドは定義されておらず、代わりに import
と unimport
のメソッド呼び出しは、そのようなメソッドが定義されていない場合に エラーを投げないように特別扱いされていました。
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
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;
廃止予定¶
-
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
andarchname
baked into the module to ensure Errno is loaded by the perl that built it are now more comprehensively escaped. [GH #21135]モジュールを構築した perl によって Errno が確実にロードされるように モジュールに組み込まれた
osvers
とarchname
が、より包括的に エスケープされるようになりました。 [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'stime_t
type is larger than 32 bits. [GH #21551]mktime
関数は、プラットフォームのtime_t
型が 32 ビットより 大きい場合でも、32 ビットプラットフォームで正しく動作するようになりました。 [GH #21551]The
T_SIGNO
andT_FD
typemap entries have been fixed so they work with any variable name, rather than just the hardcodedsig
andfd
.T_SIGNO
とT_FD
の typemap エントリが修正され、ハードコードされたsig
とfd
だけでなく、任意の変数名で動作するようになりました。The mappings for
Mode_t
,pid_t
,Uid_t
,Gid_t
andTime_t
have been updated to be integer types; previously they wereNV
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
, andvform
, 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¶
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()
andsv_sweep_arenas()
(which only exist onDEBUGGING
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
exampleDumpvalue
の例から間接オブジェクト構文が削除されました。
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 documentedWindows で名前の最後に
.
を使ったときの奇妙な振る舞いについて 文書化されました。
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
ordetail
, 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
を実行しようとしました。-
(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]
-
(D deprecated::missing_import_called_with_args) You called the
import()
orunimport()
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 ownimport
orunimport
method.これが発生するもう一つの一般的な理由は、
Exporter
を使わないか、 独自のimport
またはunimport
メソッドを定義していないクラス定義または パッケージから、誤ってシンボルをインポートまたは インポート解除しようとした場合です。
既存の診断メッセージの変更¶
Name "%s::%s" used only once: possible typo
This warning now honors being marked as fatal. [GH #13814]
この警告は致命的とマークされるようになりました。 [GH #13814]
-
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 wordperl
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;
-
This warning is now slightly more accurate in cases involving
length
,pop
,shift
, orsplice
:この警告は、
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 forpop
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
returnsundef
, it no longer unconditionally blames its first argument. This was misleading becausesplice
can returnundef
even if none of its arguments containundef
.つまり、
splice
がundef
を返す場合、 もはや最初の引数を無条件に非難しなくなりました。splice
は、その引数にundef
が含まれていなくてもundef
を 返すことがあるため、これは誤解を招くものでした。 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" 警告のための ヒューリスティックをチェックするときに、この警告が誤って 表示されないようになりました。
設定とコンパイル¶
-
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 changeLC_TIME
andLC_NUMERIC
to Dutch, while leavingLC_CTYPE
andLC_COLLATE
set to English indefinitely.)また、さまざまなロケールカテゴリが、実際に異なるロケールに対して独立して 設定できるかどうかもテストされます(これがほしいと思われる一つの例として、 あなたがオランダに住んで働いている西カナダ人とします。
LC_MONETARY
ロケールを現在住んでいる場所に設定し、 ロケールの他の部分はネイティブの英語の値を保持することができます。 その後、オランダ語に少し慣れてきて、同僚とのコミュニケーションを 良くするために、LC_TIME
とLC_NUMERIC
をオランダ語に変更し、LC_CTYPE
とLC_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 viaDevel::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 aNULL
-terminated list of child op pointers, and constructs a new checkedLISTOP
to contain them all. This is simpler than creating a new plainOP_LIST
, adding each child individually, and finally callingop_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 theG_USEHINTS
flag, which uses the hints such as strict and features fromPL_curcop
instead of the default, which is to use default hints, e.g. nouse vX.XX;
, no strict, default features.eval_sv()
API がG_USEHINTS
フラグを受け入れるようになりました; このフラグは、デフォルトではなく、PL_curcop
の strict や features などのヒントを使います; デフォルトでは、nouse 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 性や機能に 対応する必要があります。
-
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 hencedXSARGS
now declareAX
anditems
asStack_off_t
rather thanSSize_t
. This reverts back to compatibility with pre-64-bit stack support for default builds of perl whereStack_off_t
isI32
. [GH #21782]dAX
,dITEMS
, そしてdXSARGS
は、AX
とitems
をSSize_t
ではなくStack_off_t
として宣言するようになりました。 これにより、Stack_off_t
がI32
である 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 achar *
, so that programmers don't have to concern themselves with the UTF-8ness of the result. This new function is now the preferred interface forXS
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 optionglibc には文書化されていない querylocale() と同等の関数がありますが、 これは私たちの経験から信頼できることが示されています。 この関数を使うと、perl が独自の記録を保持する必要がなくなるため、 より効率的で正確であることが保証されます。 この関数の使用は、
NO_NL_LOCALE_NAME
ビルドオプションを 定義することで無効にできます。
バグ修正の抜粋¶
-
The delimiter
SYRIAC COLON SKEWED LEFT/RIGHT
pair has been removed from the ones recognized by theextra_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 theextra_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 thanSSize_t
orSTRLEN
/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
unshift
ed and resized array will now always be initialized. [GH #21265]unshift
されてサイズ変更された配列の末尾要素は、 常に初期化されるようになりました。 [GH #21265] -
Make
use 5.036
respect the -X flaguse 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 theDB
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 ofeval 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 theConfigure
command-line.これを有効にするには、
-Accflags=-DPERL_STACK_OFFSET_SSIZET
または 同等のものをConfigure
コマンドラインに追加します。 -
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 adbstate
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 likename1 / 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)
パターンが後に続く+
量指定子に適用される最適化に関する 正規表現エンジンのバグが修正されました。 -
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);
-
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");
-
-
prepare_export_lexical() was separately saving
PL_comppad
andPL_curpad
, this could result inPL_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_comppad
とPL_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 ファイル。