perl5400delta
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
- 名前
- 説明
- コアの拡張
- More CORE:: subs
- New pragma
source::encoding
- New
:writer
attribute on field variables - New
any
andall
operators - Apostrophe as a global name separator can be disabled
- Lexical method declaration using
my method
- Lexical method invocation operator
->&
- Switch and Smart Match operator kept, behind a feature
- Unicode 16.0 supported
- Assigning logical xor
^^=
operator
- Security
- 互換性のない変更
- 性能改善
- モジュールとプラグマ
- 文書
- 診断メッセージ
- Utility Changes
- 設定とコンパイル
- テスト
- プラットフォーム対応
- 内部の変更
- バグ修正の抜粋
- Obituaries
- 謝辞
- バグ報告
- 感謝を伝える
- SEE ALSO
名前¶
perldelta - what is new for perl v5.42.0
perl5420delta - perl v5.42.0 での変更点
説明¶
This document describes differences between the 5.42.0 release and the 5.40.0 release.
この文書は 5.42.0 リリースと 5.40.0 リリースの変更点を記述しています。
コアの拡張¶
More CORE:: subs¶
chdir
has been added as a subroutine to the CORE::
namespace.
chdir
がサブルーチンとしてCORE:: 名前空間に追加されました。
Previously, code like &CORE::chdir($dir)
or my $ref = \&CORE::chdir; $ref->($dir)
would throw an error saying &CORE::chdir cannot be called directly
. These cases are now fully supported.
以前は、&CORE::chdir($dir)
や my $ref = \&CORE::chdir; $ref->($dir)
の ようなコードは、&CORE::chdir cannot be called directly
というエラーを 投げていました。 このような場合は、今では完全に対応しています。
New pragma source::encoding
¶
This allows you to declare that the portion of a program for the remainder of the lexical scope of this pragma is encoded either entirely in ASCII (for use source::encoding 'ascii'
) or if UTF-8 is allowed as well (for use source::encoding 'utf8'
). No other encodings are accepted. The second form is entirely equivalent to use utf8
, and may be used interchangeably with that.
これにより、このプラグマのレキシカルスコープの残りの部分のプログラム部分が 完全に ASCII (use source::encoding 'ascii'
の場合)または UTF-8 も許可されている場合(use source::encoding 'utf8'
の場合)の いずれかでエンコードされることを宣言できます。 他のエンコーディングは受け入れられません。 2 番目の形式は完全に use utf8
と等価であり、これと同じ意味で 使えます。
The purpose of this pragma is to catch cases early where you forgot to specify use utf8
.
このプラグマの目的は、use utf8
の指定を忘れたケースを早期に 検出することです。
use source::encoding 'ascii'
is automatically enabled within the lexical scope of a use v5.41.0
or higher.
use source::encoding 'ascii'
は、use v5.41.0
以降の レキシカルスコープ内では自動的に有効になります。
no source::encoding
turns off all this checking for the remainder of its lexical scope. The meaning of non-ASCII characters is then undefined.
no source::encoding
は、そのレキシカルスコープの残りの部分について、 このチェックをすべてオフにします。 そして非 ASCII 文字の意味は未定義です。
New :writer
attribute on field variables¶
Classes defined using use feature 'class'
are now able to automatically create writer accessors for scalar fields, by using the :writer
attribute, similar to the way that :reader
already creates reader accessors.
:reader
がすでに読み込みアクセサを作成しているのと同様に、 :writer
属性を使って :use feature'class'
で定義されたクラスが スカラフィールドの書き込みアクセサを自動的に作成できるようになりました。
class Point {
field $x :reader :writer :param;
field $y :reader :writer :param;
}
my $p = Point->new( x => 20, y => 40 );
$p->set_x(60);
New any
and all
operators¶
Two new experimental features have been added, which introduce the list-processing operators any
and all
.
二つの新しい実験的機能が追加されました; リスト処理演算子 any
と all
です。
use v5.42;
use feature 'keyword_all';
no warnings 'experimental::keyword_all';
my @numbers = ...
if ( all { $_ % 2 == 0 } @numbers ) {
say "All the numbers are even";
}
These keywords operate similarly to grep
except that they only ever return true or false, testing if any (or all) of the elements in the list make the testing block yield true. Because of this they can short-circuit, avoiding the need to test any further elements if a given element determines the eventual result.
これらのキーワードは grep
と同様に動作しますが、真または偽のみを返し、 リスト内のいずれか(またはすべて)の要素がテストブロックの結果を 真にするかどうかをテストする点が異なります。 このため、これらは短絡することができ、特定の要素が最終的な結果を決定した場合に、 それ以上の要素をテストする必要がなくなります。
These are inspired by the same-named functions in the List::Util module, except that they are implemented as direct core operators, and thus perform faster, and do not produce an additional subroutine call stack frame for invoking the code block.
これらは、List::Util モジュールの同じ名前の関数から着想を得たものですが、 直接コア演算子として実装されているため、より高速に実行され、 コードブロックを呼び出すための追加のサブルーチン呼び出しスタックフレームを 生成しない点が異なります。
The feature flags enabling those keywords have been named keyword_any
and keyword_all
to avoid confusion with the ability of the feature
module to refer to all of its features by using the :all
export tag. [GH #23104]
これらのキーワードを有効にする機能フラグは、:all
エクスポートタグを使って すべての機能を参照する feature
モジュールの機能との混乱を避けるために、 keyword_any
および keyword_all
という 名前が付けられています。 [GH #23104]
The related experimental warning flags are consequently named experimental::keyword_any
and experimental::keyword_all
.
したがって、関連する実験的な警告フラグは、 experimental::keyword_any
と experimental::keyword_all
および experimental::keyword_any
およびexperimental::keyword_all
という 名前になります。
Apostrophe as a global name separator can be disabled¶
This was deprecated in Perl 5.38 and removed as scheduled in perl 5.41.3, but after some discussion has been reinstated by default.
これは Perl 5.38 では非推奨であり、予定通り perl 5.41.3 では削除されましたが、 いくつかの議論の後、デフォルトで復活しました。
This can be controlled with the apostrophe_as_package_separator
feature which is enabled by default, but is disabled from the 5.41 feature bundle onwards.
これは apostrophe_as_package_separator
機能で制御できます; この機能はデフォルトで有効になっていますが、5.41 以降の機能の束では 無効になっています。
If you want to disable use within your own code you can explicitly disable the feature:
自身のコード内での使用を無効にしたい場合は、この機能を明示的に 無効にすることができます:
no feature "apostrophe_as_package_separator";
Note that disabling this feature only prevents use of apostrophe as a package separator within code; symbolic references still treat '
as ::
with the feature disabled:
この機能を無効にすると、コード内のパッケージ区切り文字として アポストロフィが使用できなくなるだけです; この機能を無効にしても、シンボリック参照は '
を ::
として扱います。
my $symref = "My'Module'Var";
# default features
my $x = $My'Module'Var; # fine
no feature "apostrophe_as_package_separator";
no strict "refs";
my $y = $$symref; # like $My::Module::Var
my $z = $My'Module'Var; # syntax error
Lexical method declaration using my method
¶
Like sub
since Perl version 5.18, method
can now be prefixed with the my
keyword. This declares a subroutine that has lexical, rather than package visibility. See perlclass for more detail.
Perlバージョン 5.18 以降の sub
と同様に、method
の前に my
キーワードを付けることができるようになりました。 これは、パッケージの可視性ではなく、レキシカルな可視性を 持つサブルーチンを宣言します。 さらなる詳細については、perlclass を参照してください。
Lexical method invocation operator ->&
¶
Along with the ability to declare methods lexically, this release also permits invoking a lexical subroutine as if it were a method, bypassing the usual name-based method resolution.
メソッドをレキシカルに宣言する機能に加えて、このリリースでは、通常の 名前ベースのメソッド解決を迂回して、メソッドであるかのように レキシカルサブルーチンを呼び出すこともできます。
Combined with lexical method declaration, these two new abilities create the effect of having private methods.
レキシカルメソッド宣言と組み合わせることで、これら二つ新しい機能は プライベートメソッドを持つ効果を生み出します。
Switch and Smart Match operator kept, behind a feature¶
The "switch" feature and the smartmatch operator, ~~
, were introduced in v5.10. Their behavior was significantly changed in v5.10.1. When the "experiment" system was added in v5.18.0, switch and smartmatch were retroactively declared experimental. Over the years, proposals to fix or supplement the features have come and gone.
"switch" 機能と、スマートマッチング演算子 ~~
は、v5.10 で導入されました。 これらの振る舞いは v5.10.1 で大きく変更されました。 「実験的」制度が v5.18.0 で追加されたとき、 switch とスマートマッチングは、遡及的に実験的と宣言されました。 長年にわたって、機能を修正または補完する提案が現れては消えていきました。
They were deprecated in Perl v5.38.0 and scheduled for removal in Perl v5.42.0. After extensive discussion their removal has been indefinitely postponed. Using them no longer produces a deprecation warning.
これらは Perl v5.38.0 では非推奨であり、Perl v5.42.0 では削除が 予定されていました。 広範な議論の後、これらの削除は無期限に延期されました。 これらを使っても、非推奨の警告は生成されなくなりました。
Switch itself still requires the switch
feature, which is enabled by default for feature bundles from v5.9.5 through to v5.34. Switch remains disabled in feature bundles 5.35 and later, but can be separately enabled:
switch 自体は依然として switch
機能を必要とします; この機能は、v5.9.5 から v5.34 までの機能の束ではデフォルトで 有効になっています。 switch は 5.35 以降の機能の束では無効のままですが、個別に 有効にすることができます:
# no switch here
use v5.10;
# switch here
use v5.36;
# no switch here
use feature "switch";
# switch here
Smart match now requires the smartmatch
feature, which is enabled by default and included in all feature bundles up to 5.40. It is disabled for the 5.41 feature bundle and later, but can be separately enabled:
スマートマッチングでは、smartmatch
機能が必要になりました; この機能はデフォルトで有効になっており、5.40 までのすべての機能の束に 含まれています。 5.41 以降の機能の束では無効になっていますが、個別に有効にすることができます。
# smartmatch here
use v5.41;
# no smartmatch here
use feature "smartmatch";
# smartmatch here
Unicode 16.0 supported¶
Perl now supports Unicode 16.0 https://www.unicode.org/versions/Unicode16.0.0/ including the changes introduced in 15.1 https://www.unicode.org/versions/Unicode15.1.0/.
Perl は、Unicode 15.1 https://www.unicode.org/versions/Unicode15.1.0/ で 導入された変更を含め、 16.0 https://www.unicode.org/versions/Unicode16.0.0/ に 対応するようになりました。
Assigning logical xor ^^=
operator¶
Perl 5.40.0 introduced the logical medium-precedence exclusive-or operator ^^
. It was not noticed at the time that the assigning variant ^^=
was also missing. This is now added.
Perl 5.40.0 では、論理中置排他的論理和演算子 ^^
が導入されました。 この時点では、代入版 ^^=
も欠落していることに気づきませんでした。 これが追加されました。
Security¶
[CVE-2024-56406] Heap buffer overflow vulnerability with tr//¶
A heap buffer overflow vulnerability was discovered in Perl.
Perl でヒープバッファオーバーフローの脆弱性が発見されました。
When there are non-ASCII bytes in the left-hand-side of the tr
operator, S_do_trans_invmap()
can overflow the destination pointer d
.
tr
演算子の左側に非 ASCII バイトがある場合、S_do_trans_invmap()
は 宛先ポインタ d
をオーバーフローさせることがあります。
$ perl -e '$_ = "\x{FF}" x 1000000; tr/\xFF/\x{100}/;'
Segmentation fault (core dumped)
It is believed that this vulnerability can enable Denial of Service or Arbitrary Code Execution attacks on platforms that lack sufficient defenses.
この脆弱性により、十分な防御機能を備えていないプラットフォームで サービス拒否攻撃や任意コード実行攻撃が発生する可能性があると 考えられています。
This problem was discovered by Nathan Mills and assigned [CVE-2024-56406] by the CPAN Security Group.
この問題は Nathan Mills によって発見され、 CPAN Security Group によって[CVE-2024-56406] が 割り当てられました。
The patch to fix this issue (87f42aa0e0096e9a346c9672aa3a0bd3bef8c1dd) is applicable to all perls that are vulnerable, including those out-of-support.
この問題を修正するパッチ(87f42aa0e0096e9a346c9672aa3a0bd3bef8c1dd) は、サポート対象外のものを含め、 脆弱な全ての Perl に適用できます。
[CVE-2025-40909] Perl threads have a working directory race condition where file operations may target unintended paths¶
Perl thread cloning had a working directory race condition where file operations may target unintended paths. Perl 5.42 will no longer chdir to each handle.
Perl スレッドのクローン化には、ファイル操作が意図しないパスを ターゲットにする可能性がある作業ディレクトリの競合状態がありました。 Perl 5.42 では、各ハンドルへの chdir がなくなりました。
This problem was discovered by Vincent Lefèvre via [GH #23010] and assigned [CVE-2025-40909] by the CPAN Security Group.
この問題は、[GH #23010] を介して Vincent Lefèvreによって発見され、 CPAN Security Groupによって [CVE-2025-40909]が 割り当てられました。
修正は、[GH #23019] および [GH #23361] を通じて 提供されました。
互換性のない変更¶
Removed containing function references for functions without eval¶
Perl 5.40 reintroduced unconditional references from functions to their containing functions to fix a bug introduced in Perl 5.18 that broke the special behaviour of eval EXPR
in package DB
which is used by the debugger.
Perl 5.40 では、デバッガで使用されるパッケージ DB
内の eval EXPR
の 特殊な動作を破壊する Perl 5.18 で導入されたバグを修正するために、 関数からその関数を含む関数への無条件参照が再導入されました。
In some cases this change led to circular reference chains between closures and other existing references, resulting in memory leaks.
場合によっては、この変更により、クロージャと他の既存の参照との間で 循環参照チェーンが発生し、メモリリークを引き起こしていました。
この変更は元に戻され、 [GH #22547] は修正されましたが、 [GH #19370] は再び 壊れました。
This means the reference loops won't occur, and that lexical variables and functions from enclosing functions may not be visible in the debugger.
これは、参照ループが発生しないこと、および囲んでいる関数からの レキシカル変数および関数がデバッガで表示されない可能性があることを 意味します。
Note that calling eval EXPR
in a function unconditionally causes a function to reference its enclosing functions as it always has.
関数内でeval EXPR
を呼び出すと、常にそうであるように、 無条件にその関数を囲む関数を参照することに注意してください。
性能改善¶
-
Constant-folded strings are now shareable via the Copy-on-Write mechanism. [GH #22163]
定数畳み込みされた文字列は、コピーオンライト機構経由で 共有できるようになりました。 [GH #22163]
The following code would previously have allocated eleven string buffers, each containing one million "A"s:
次のコードでは、以前はそれぞれ 100 万個の "A" を含む 11 個の文字列バッファが 割り当てられていました:
my @scalars; push @scalars, ("A" x 1_000_000) for 0..9;
Now a single buffer is allocated and shared between a CONST OP and the ten scalar elements of
@scalars
.これは、単一のバッファが割り当てられ、CONST OP と
@scalars
の 10 個の スカラ要素との間で共有されるようになりました。Note that any code using this sort of constant to simulate memory leaks (perhaps in test files) must now permute the string in order to trigger a string copy and the allocation of separate buffers. For example,
("A" x 1_000_000).time
might be a suitable small change.(おそらくテストファイル内の)この種の定数を使ってメモリーリークを シミュレートするコードは、文字列のコピーと個別のバッファの 割当てを引き起こすために、文字列を変更しなければならなくなったことに 注意してください。 たとえば、
("A" x 1_000_000).time
は、適切な小さな変更でしょう。 -
tr///
now runs at the same speed regardless of the internal representation of its operand, as long as the only characters being translated are ASCII-range, for exampletr/A-Z/a-z/
. Previously, if the internal encoding was UTF-8, a slower, more general implementation was used.tr///
は、変換される文字がtr/A-Z/a-z/
のように ASCII 範囲である限り、 オペランドの内部表現に関係なく同じ速度で実行されるようになりました。 以前は、内部エンコーディングが UTF-8 の場合、より低速でより一般的な 実装が使われていました。 -
Code that uses the
indexed
function from the builtin module to generate a list of index/value pairs out of an array or list which is then passed into a two-variableforeach
list to unpack those again is now optimised to be more efficient.builtin モジュールの
indexed
関数を使って、配列またはリストから インデックス/値の組のリストを生成し、それを 2 変数のforeach
リストに 渡して再度展開するコードが、より効率的になるように 最適化されるようになりました。my @array = (...); foreach my ($idx, $val) (builtin::indexed @array) { ... }
foreach my ($idx, $val) (builtin::indexed LIST...) { ... }
In particular, a temporary list twice the size of the original is no longer generated. Instead, the loop iterates down the original array or list in-place directly, in the same way that
foreach (@array)
orforeach (LIST)
would do.特に、元のサイズの 2 倍の一時的なリストは生成されなくなりました。 代わりに、ループは、
foreach (@array)
またはforeach (LIST)
が 行うのと同じ方法で、元の配列またはリストを直接反復します。 -
The peephole optimizer recognises the following zero-offset
substr
patterns and swaps in a new dedicated operator (OP_SUBSTR_LEFT
). [GH #22785]覗き穴最適化器は、次のゼロオフセット
substr
パターンを認識し、 新しい専用演算子 (OP_SUBSTR_LEFT
) に交換します。 [GH #22785]substr($x, 0, ...) substr($x, 0, ..., '')
-
The stringification of integers by "print" in perlfunc and "say" in perlfunc, when coming from an
SVt_IV
, is now more efficient. [GH #22927]"print" in perlfunc と "say" in perlfunc による整数の文字列化は、
SVt_IV
から来る場合、より効率的になりました。 [GH #22927] -
String reversal from a single argument, when the string buffer is not "swiped", is now done in a single pass and is noticeably faster. The extent of the improvement is compiler & hardware dependent. [GH #23012]
文字列バッファが「掃き出し」されていない場合、単一の引数からの文字列反転が 単一のパスで行われるようになり、著しく高速になりました。 改善の程度はコンパイラとハードウェアに依存します。 [GH #23012]
モジュールとプラグマ¶
更新されたモジュールとプラグマ¶
-
Archive::Tar has been upgraded from version 3.02_001 to 3.04.
Archive::Tar はバージョン 3.02_001 から 3.04 に更新されました。
-
B::Deparse has been upgraded from version 1.76 to 1.85.
B::Deparse はバージョン 1.76 から 1.85 に更新されました。
-
Benchmark has been upgraded from version 1.25 to 1.27.
Benchmark はバージョン 1.25 から 1.27 に更新されました。
-
builtin has been upgraded from version 0.014 to 0.019.
builtin はバージョン 0.014 から 0.019 に更新されました。
-
Compress::Raw::Bzip2 has been upgraded from version 2.212 to 2.213.
Compress::Raw::Bzip2 はバージョン 2.212 から 2.213 に更新されました。
-
Compress::Raw::Zlib has been upgraded from version 2.212 to 2.213.
Compress::Raw::Zlib はバージョン 2.212 から 2.213 に更新されました。
-
Config::Perl::V has been upgraded from version 0.36 to 0.38.
Config::Perl::V はバージョン 0.36 から 0.38 に更新されました。
-
CPAN has been upgraded from version 2.36 to 2.38.
CPAN はバージョン 2.36 から 2.38 に更新されました。
-
CPAN::Meta::YAML has been upgraded from version 0.018 to 0.020.
CPAN::Meta::YAML はバージョン 0.018 から 0.020 に更新されました。
-
Data::Dumper has been upgraded from version 2.189 to 2.192.
Data::Dumper はバージョン 2.189 から 2.192 に更新されました。
-
DB has been upgraded from version 1.08 to 1.09.
DB はバージョン 1.08 から 1.09 に更新されました。
-
DBM_Filter has been upgraded from version 0.06 to 0.07.
DBM_Filter はバージョン 0.06 から 0.07 に更新されました。
-
Devel::Peek has been upgraded from version 1.34 to 1.36.
Devel::Peek はバージョン 1.34 から 1.36 に更新されました。
-
Devel::PPPort has been upgraded from version 3.72 to 3.73.
Devel::PPPort はバージョン 3.72 から 3.73 に更新されました。
-
Digest::MD5 has been upgraded from version 2.58_01 to 2.59.
Digest::MD5 はバージョン 2.58_01 から 2.59 に更新されました。
-
DynaLoader has been upgraded from version 1.56 to 1.57.
DynaLoader はバージョン 1.56 から 1.57 に更新されました。
-
experimental has been upgraded from version 0.032 to 0.035.
experimental はバージョン 0.032 から 0.035 に更新されました。
-
Exporter has been upgraded from version 5.78 to 5.79.
Exporter はバージョン 5.78 から 5.79 に更新されました。
-
ExtUtils::CBuilder has been upgraded from version 0.280240 to 0.280242.
ExtUtils::CBuilder はバージョン 0.280240 から 0.280242 に更新されました。
-
ExtUtils::MakeMaker has been upgraded from version 7.70 to 7.76.
ExtUtils::MakeMaker はバージョン 7.70 から 7.76 に更新されました。
-
ExtUtils::ParseXS has been upgraded from version 3.51 to 3.57.
ExtUtils::ParseXS はバージョン 3.51 から 3.57 に更新されました。
-
ExtUtils::Typemaps has been upgraded from version 3.51 to 3.57.
ExtUtils::Typemaps はバージョン 3.51 から 3.57 に更新されました。
-
Fcntl has been upgraded from version 1.18 to 1.20.
Fcntl はバージョン 1.18 から 1.20 に更新されました。
-
feature has been upgraded from version 1.89 to 1.97.
feature はバージョン 1.89 から 1.97 に更新されました。
-
fields has been upgraded from version 2.25 to 2.27.
fields はバージョン 2.25 から 2.27 に更新されました。
-
File::Spec has been upgraded from version 3.90 to 3.94.
File::Spec はバージョン 3.90 から 3.94 に更新されました。
-
Getopt::Long has been upgraded from version 2.57 to 2.58.
Getopt::Long はバージョン 2.57 から 2.58 に更新されました。
-
HTTP::Tiny has been upgraded from version 0.088 to 0.090.
HTTP::Tiny はバージョン 0.088 から 0.090 に更新されました。
-
IO::Compress has been upgraded from version 2.212 to 2.213.
IO::Compress はバージョン 2.212 から 2.213 に更新されました。
-
IO::Socket::IP has been upgraded from version 0.42 to 0.43.
IO::Socket::IP はバージョン 0.42 から 0.43 に更新されました。
-
IPC::Open3 has been upgraded from version 1.22 to 1.24.
IPC::Open3 はバージョン 1.22 から 1.24 に更新されました。
-
locale has been upgraded from version 1.12 to 1.13.
locale はバージョン 1.12 から 1.13 に更新されました。
-
Math::BigInt has been upgraded from version 2.003002 to 2.005002.
Math::BigInt はバージョン 2.003002 から 2.005002 に更新されました。
-
Math::BigInt::FastCalc has been upgraded from version 0.5018 to 0.5020.
Math::BigInt::FastCalc はバージョン 0.5018 から 0.5020 に更新されました。
-
Math::Complex has been upgraded from version 1.62 to 1.63.
Math::Complex はバージョン 1.62 から 1.63 に更新されました。
-
Memoize has been upgraded from version 1.16 to 1.17.
Memoize はバージョン 1.16 から 1.17 に更新されました。
-
Module::CoreList has been upgraded from version 5.20240609 to 5.20250702.
Module::CoreList はバージョン 5.20240609 から 5.20250702 に更新されました。
-
NDBM_File has been upgraded from version 1.17 to 1.18.
NDBM_File はバージョン 1.17 から 1.18 に更新されました。
-
ODBM_File has been upgraded from version 1.18 to 1.20.
ODBM_File はバージョン 1.18 から 1.20 に更新されました。
-
Opcode has been upgraded from version 1.65 to 1.69.
Opcode はバージョン 1.65 から 1.69 に更新されました。
-
overload has been upgraded from version 1.37 to 1.40.
overload はバージョン 1.37 から 1.40 に更新されました。
-
parent has been upgraded from version 0.241 to 0.244.
parent はバージョン 0.241 から 0.244 に更新されました。
-
perlfaq has been upgraded from version 5.20240218 to 5.20250619.
perlfaq はバージョン 5.20240218 から 5.20250619 に更新されました。
-
Pod::Usage has been upgraded from version 2.03 to 2.05.
Pod::Usage はバージョン 2.03 から 2.05 に更新されました。
-
podlators has been upgraded from version 5.01_02 to v6.0.2.
podlators はバージョン 5.01_02 から v6.0.2 に更新されました。
-
POSIX has been upgraded from version 2.20 to 2.23.
POSIX はバージョン 2.20 から 2.23 に更新されました。
-
re has been upgraded from version 0.47 to 0.48.
re はバージョン 0.47 から 0.48 に更新されました。
-
Safe has been upgraded from version 2.46 to 2.47.
Safe はバージョン 2.46 から 2.47 に更新されました。
-
Scalar::Util has been upgraded from version 1.63 to 1.68_01.
Scalar::Util はバージョン 1.63 から 1.68_01 に更新されました。
-
Search::Dict has been upgraded from version 1.07 to 1.08.
Search::Dict はバージョン 1.07 から 1.08 に更新されました。
-
SelfLoader has been upgraded from version 1.27 to 1.28.
SelfLoader はバージョン 1.27 から 1.28 に更新されました。
-
sort has been upgraded from version 2.05 to 2.06.
sort はバージョン 2.05 から 2.06 に更新されました。
-
Storable has been upgraded from version 3.32 to 3.37.
Storable はバージョン 3.32 から 3.37 に更新されました。
-
strict has been upgraded from version 1.13 to 1.14.
strict はバージョン 1.13 から 1.14 に更新されました。
-
Term::Table has been upgraded from version 0.018 to 0.024.
Term::Table はバージョン 0.018 から 0.024 に更新されました。
-
Test::Harness has been upgraded from version 3.48 to 3.50.
Test::Harness はバージョン 3.48 から 3.50 に更新されました。
-
Test::Simple has been upgraded from version 1.302199 to 1.302210.
Test::Simple はバージョン 1.302199 から 1.302210 に更新されました。
-
Thread has been upgraded from version 3.05 to 3.06.
Thread はバージョン 3.05 から 3.06 に更新されました。
-
threads has been upgraded from version 2.40 to 2.43.
threads はバージョン 2.40 から 2.43 に更新されました。
-
threads::shared has been upgraded from version 1.69 to 1.70.
threads::shared はバージョン 1.69 から 1.70 に更新されました。
-
Tie::File has been upgraded from version 1.09 to 1.10.
Tie::File はバージョン 1.09 から 1.10 に更新されました。
-
Tie::RefHash has been upgraded from version 1.40 to 1.41.
Tie::RefHash はバージョン 1.40 から 1.41 に更新されました。
-
Time::HiRes has been upgraded from version 1.9777 to 1.9778.
Time::HiRes はバージョン 1.9777 から 1.9778 に更新されました。
-
Time::Piece has been upgraded from version 1.3401_01 to 1.36.
Time::Piece はバージョン 1.3401_01 から 1.36 に更新されました。
-
Unicode::UCD has been upgraded from version 0.78 to 0.81.
Unicode::UCD はバージョン 0.78 から 0.81 に更新されました。
-
utf8 has been upgraded from version 1.25 to 1.27.
utf8 はバージョン 1.25 から 1.27 に更新されました。
-
version has been upgraded from version 0.9930 to 0.9933.
version はバージョン 0.9930 から 0.9933 に更新されました。
-
VMS::Filespec has been upgraded from version 1.13 to 1.15.
VMS::Filespec はバージョン 1.13 から 1.15 に更新されました。
-
warnings has been upgraded from version 1.69 to 1.74.
warnings はバージョン 1.69 から 1.74 に更新されました。
-
Win32 has been upgraded from version 0.59 to 0.59_01.
Win32 はバージョン 0.59 から 0.59_01 に更新されました。
-
XS::APItest has been upgraded from version 1.36 to 1.43.
XS::APItest はバージョン 1.36 から 1.43 に更新されました。
文書¶
既存の文書の変更¶
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¶
-
Combined the documentation for several groups of related functions into single entries.
関連する関数のいくつかのグループの文書を一つのエントリにまとめました。
-
All forms of
gv_fetchmeth()
are now documented together.gv_fetchmeth()
のすべての形式が一緒に文書化されました。 -
gv_autoload4
is now documented withgv_autoload_pv
and additional notes added. The longPerl_
forms are now listed when available.gv_autoload4
は、gv_autoload_pv
と共に文書化され、 追加の注意事項が追加されました。 長いPerl_
形式は、利用可能な場合に一覧化されるようになりました。
perldata¶
-
Binary and octal floating-point constants (such as
012.345p-2
and0b101.11p-1
) are now documented. This feature was first introduced in perl 5.22.0 together with hexadecimal floating-point constants and had a few bug fixes in perl 5.28.0, but it was never formally documented. [GH #18664]2 進数および 8 進数の浮動小数点定数 (
012.345p-2
や0b101.11p-1
など) が 文書化されました。 この機能は、最初に perl 5.22.0 で 16 進数の浮動小数点定数とともに導入され、 perl 5.28.0 でいくつかのバグ修正が行われましたが、正式に 文書化されることはありませんでした。 [GH #18664]
perlfunc¶
-
Clarified the description of
ref
andreftype
in relation to built-in types and class names.組み込み型とクラス名に関連する
ref
とreftype
の記述を明確化しました。 -
Clarified that perl
sort
is stable (and has been since v5.8.0).perl
sort
が(v5.8.0 以降)安定していることを明確にしました。 -
The recommended alternatives to the
rand()
function were updated to modern modules recommended by the CPAN Security Group. [GH #22873]rand()
関数の推奨される代替関数は、 CPAN Security Group によって推奨される モダンなモジュールに更新されました。 [GH #22873]
perlgov¶
-
The list of Steering Council and Core Team members have been updated, following the conclusion of the latest election on 2024-07-17.
2024-07-17 の最新の選挙の終了を受けて、運営委員会とコアチームのメンバーの リストが更新されました。
perlguts¶
-
Added some description of "real"
AV
s compared to "fake"AV
s.「本物の」
AV
と「偽の」AV
の比較に関する説明を追加しました。 -
Documentation was updated to reflect that mixing
Newx
,Renew
, andSafefree
vsmalloc
,realloc
, andfree
are not allowed, and mixing pointers between the 2 classes of APIs is not allowed. Updates made in perlguts and perlclib.文書が更新され、
Newx
,Renew
,Safefree
とmalloc
,realloc
,free
の混在は許されず、二つのグループの API 間でのポインタの混在は 許されないことが反映されました。 更新は perlguts と perlclib に対して行われました。 -
Additional caveats have been added to the description of
TARG
.TARG
の説明に追加の警告が追加されました。
perlop¶
-
Portions of perlop are supposed to be ordered so that all the operators wth the same precedence are in a single section, and the sections are ordered so that the highest precedence operators appear first. This ordering has now been restored. Other reorganization was done to improve clarity, with more basic operations described before ones that depend on them.
perlop の一部は、同じ優先順位を持つすべての演算子が一つのの節内に あるように順序付けられ、セクションは最も優先順位の高い演算子が 最初に表示されるように順序付けられることを想定しています。 この順序は復元されました。 その他の再編成は、明確性を向上させるために行われ、より基本的な操作は、 それらに依存する操作の前に説明されるようになりました。
-
The documentation for here-docs has been cleaned up and reorganized. Indented here-docs were formerly documented separately, now the two types have interwoven documentation which is more compact, and easier to understand.
ヒヤドキュメントの文書は整理され、再編成されました。 インデントされたヒヤドキュメントは以前は別々に文書化されていましたが、 現在では二種類の文書が織り交ぜられており、よりコンパクトで 理解しやすくなっています。
-
The documentation of the
xor
operator has been expanded.xor
演算子の文書が拡張されました。 -
Outdated advice about using relational string operators in UTF-8 locales has been removed. Use Unicode::Collate for the best results, but these operators will give adequate results on many platforms.
UTF-8 ロケールでの関係文字列演算子の使用に関する 古いアドバイスは削除されました。 最良の結果を得るには Unicode::Collate を使いますが、これらの演算子は 多くのプラットフォームで適切な結果を提供します。
-
Normalized alignment of verbatim sections, fixing how they are displayed by some Pod viewers that strip indentation.
そのままの節のアライメントが正規化され、インデントを削除する一部の Pod ビューワでの表示方法が修正されました。
perlvar¶
-
Entries for
$#
and$*
have been amended to note that use of them result in a compilation error, not a warning.$#
および$*
のエントリについて、これらを使うと警告ではなく コンパイルエラーが発生するということを注意するように修正されました。
診断メッセージ¶
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 を参照してください。
新しい警告メッセージ¶
新しいエラー¶
Use of non-ASCII character 0x%X illegal when 'use source::encoding "ascii"' is in effect
(F) This pragma forbids non-ASCII characters within its scope.
(F) このプラグマは、そのスコープ内で非 ASCII 文字を禁止します。
Undefined subroutine &%s called, close to label '%s'
(F) The subroutine indicated hasn't been defined, or if it was, it has since been undefined.
(F) 示されたサブルーチンが定義されていないか、以前定義されていたとしても、 その後未定義になりました。
This error could also indicate a mistyped package separator, when a single colon was typed instead of two colons. For example,
Foo:bar()
would be parsed as the labelFoo
followed by an unqualified function name:foo: bar()
. [GH #22860]このエラーは、二つのコロンではなく一つのコロンが入力された場合に、 パッケージ区切り文字の入力ミスを示すこともあります。 たとえば、
Foo:bar()
は、ラベルFoo
の後に修飾されていない関数名が 続くものとして解析されます:foo: bar()
。 [GH #22860]
新しい警告¶
-
(S experimental::class) This warning is emitted if you use the
__CLASS__
keyword ofuse feature 'class'
. This keyword is currently experimental and its behaviour may change in future releases of Perl.(S experimental::class) この警告は、
use feature 'class'
の__CLASS__
キーワードを使った場合に発生します。 このキーワードは現在実験的なものであり、Perl の将来のリリースで動作が 変更される可能性があります。 %s() attempted on handle %s opened with open()
(W io) You called readdir(), telldir(), seekdir(), rewinddir() or closedir() on a handle that was opened with open(). If you want to use these functions to traverse the contents of a directory, you need to open the handle with opendir().
(W io) open() で開いたハンドルに対して readdir(), telldir(), seekdir(), rewinddir(), closedir() を呼び出しました。 ディレクトリの内容を走査するためにこれらの関数を使いたい場合、 opendir() でハンドルを開く必要があります。
Possible precedence problem between ! and %s
(W precedence) You wrote something like
(W precedence) 次のようなものを書きました:
!$x < $y # parsed as: (!$x) < $y !$x eq $y # parsed as: (!$x) eq $y !$x =~ /regex/ # parsed as: (!$x) =~ /regex/ !$obj isa Some::Class # parsed as: (!$obj) isa Some::Class
but because
!
has higher precedence than comparison operators,=~
, andisa
, this is interpreted as comparing/matching the logical negation of the first operand, instead of negating the result of the comparison/match.しかし、
!
は比較演算子=~
およびisa
よりも優先順位が高いため、 これは比較/マッチングの結果を否定するのではなく、最初のオペランドの論理否定を 比較/マッチングするものとして解釈されます。To disambiguate, either use a negated comparison/binding operator:
あいまいさをなくすには、否定された比較/束縛演算子を使うか:
$x >= $y $x ne $y $x !~ /regex/
... or parentheses:
かっこか:
!($x < $y) !($x eq $y) !($x =~ /regex/) !($obj isa Some::Class)
... or the low-precedence
not
operator:優先順位の低い
not
演算子を使います:not $x < $y not $x eq $y not $x =~ /regex/ not $obj isa Some::Class
(If you did mean to compare the boolean result of negating the first operand, parenthesize as
(!$x) < $y
,(!$x) eq $y
, etc.)(最初のオペランドを否定した真偽値の結果を比較することを意味していた場合は、
(!$x) < $y
,(!$x) eq $y
などのようにかっこで囲みます。)Note: this warning does not trigger for code like
!!$x == $y
, i.e. where double negation (!!
) is used as a convert-to-boolean operator.注: この警告は、
!!$x == $y
のようなコード、つまり、二重否定 (!!
) が 真偽値への変換演算子として使われてコードでは引き起こされません。
既存の診断メッセージの変更¶
%s() attempted on invalid dirhandle %s
This was consolidated from separate messages for readdir(), telldir(), seekdir(), rewinddir() and closedir() as part of refactoring for [GH #22394].
これは、[GH #22394] の リファクタリングの一部として、readdir(), telldir(), seekdir(), rewinddir(), losedir() の個別のメッセージから統合されました。
Useless use of %s in void context
This warning now triggers for use of a chained comparison like
0 < $x < 1
. [GH #22969]この警告は、
0 < $x < 1
のような連鎖比較の使用で 引き起こされるようになりました。 [GH #22969]-
Prevent this warning when accessing a function parameter in
@_
that is an lvalue reference to an untied hash element where the key was undefined. This warning is still produced at the point of call. [GH #22423]キーが未定義の tie されていないハッシュ要素への左辺値参照である
@_
の関数引数にアクセスするときに、 この警告が発生しないようになりました。 この警告は、呼び出しの時点では未だに生成されます。 [GH #22423]
Utility Changes¶
Porting/test-dist-modules.pl¶
-
Separate installation (without overwriting installed modules) is now the default.
個別インストール(インストールされたモジュールを上書きしない)が デフォルトになりました。
-
Documentation is significantly enhanced.
文書が大幅に強化されました。
設定とコンパイル¶
-
Fix compilation on platforms (e.g. "Gentoo Prefix") with only a C locale [GH #22569] Bug first reported downstream bugs.gentoo.org/939014
C ロケールのみを使用するプラットフォーム(例: "Gentoo Prefix") での コンパイルを修正しました [GH #22569]。 バグは最初にダウンストリーム bugs.gentoo.org/939014 で報告されました。
-
The (mostly undocumented) configuration macro
PERL_STRICT_CR
has been removed. When enabled (e.g. with./Configure -A ccflags=-DPERL_STRICT_CR
), it would make the perl parser throw a fatal error when it encountered a CR (carriage return) character in source files. The default (and now only) behavior of the perl parser is to strip CRs paired with newline characters and otherwise treat them as whitespace.(ほとんど文書化されていない) 設定マクロ
PERL_STRICT_CR
が削除されました。 これを (たとえば./Configure -A ccflags=-DPERL_STRICT_CR
で) 有効にすると、 ソースファイルで CR(キャリッジリターン)文字が検出されたときに、 perl パーサが致命的なエラーを投げるようになります。 perl パーサのデフォルトの(そして今では唯一の)動作は、改行文字と対になった CR を取り除き、それ以外の場合は空白として扱うことです。(
PERL_STRICT_CR
was originally introduced in perl 5.005 to optionally restore backward compatibility with perl 5.004, which had made CR in source files an error. Before that, CR was accepted, but retained literally in quoted multi-line constructs such as here-documents, even at the end of a line.)(
PERL_STRICT_CR
は、オプションでソースファイルの CR がエラーになった perl 5.004 との下位互換性を復元するために perl 5.005 で導入されました。 それ以前は、CR は受け入れられていましたが、ヒヤドキュメントのような 引用された複数行の構文では、行の末尾であっても文字通り保持されていました。) -
Similarly, the (even less documented) configuration macro
PERL_CR_FILTER
has been removed. When enabled, it would install a default source filter to strip carriage returns from source code before the parser proper got to see it.同様に、(さらに文書化されていない) 設定マクロ
PERL_CR_FILTER
が 削除されました。 有効にすると、デフォルトのソースフィルタがインストールされ、 パーサがソースコードを見る前にソースコードからキャリッジリターンを 取り除きます。
テスト¶
Tests were added and changed to reflect the other additions and changes in this release. Furthermore, these significant changes were made:
このリリースのその他の追加と変更を反映してテストが追加、変更されました。 さらに、主に以下のような変更が行われました:
-
A new t/run/todo.t test script was added as a place for TODO tests for known unfixed bugs. Patches are welcome to add to this file.
既知の修正されていないバグに対する TODO テストの場所として、 新しい t/run/todo.t テストスクリプトが追加されました。 このファイルに追加するパッチを歓迎します。
-
Added testing of the perl headers against the C++ compiler corresponding to the C compiler perl is being built with. [GH #22232]
perl をビルドしている C コンパイラに対応する C++ コンパイラに対する perl ヘッダのテストが追加されました。 [GH #22232]
プラットフォーム対応¶
プラットフォーム固有の注意¶
- arm64 Darwin
-
Fix arm64 darwin hints when using use64bitall with Configure [GH #22672]
Configure で use64bitall を使用するときの arm64 darwin のヒントを 修正しました。 [GH #22672]
- Android
-
[GH #22627] に関連して Android の perl_langinfo.h [GH #22650] を変更しました。
- Cygwin
-
cygwin.c: fix several silly/terrible C errors. [GH #22724]
cygwin.c: いくつかのばかげた/ひどい C エラーを修正しました。 [GH #22724]
Supply an explicit base address for
cygperl*.dll
that cannot conflict with those generated by--enable-auto-image-base
. [GH #22695][GH #22104]cygperl*.dll
に対して、--enable-auto-image-base
によって生成された ベースアドレスと競合しない明示的なベースアドレスを指定しました。 [GH #22695] [GH #22104] - MacOS (Darwin)
-
Collation of strings using locales on MacOS 15 (Darwin 24) and up has been turned off due to a failed assertion in its libc.
MacOS 15 (Darwin 24) 以降でロケールを使用した文字列の照合は、 libc でのアサーションの失敗によりオフになっています。
If earlier versions are also experiencing issues (such as failures in locale.t), you can explicitly disable locale collation by adding the
-Accflags=-DNO_LOCALE_COLLATE
option to your invocation of./Configure
, or just-DNO_LOCALE_COLLATE
to theccflags
andcppflags
variables in config.sh.以前のバージョンでも(locale.t での失敗など)問題が発生している場合は、
./Configure
の起動に-Accflags=-DNO_LOCALE_COLLATE
オプションを 追加するか、config.sh のccflags
およびcppflags
変数に-DNO_LOCALE_COLLATE
を追加することで、ロケール照合を明示的に 無効にすることができます。
内部の変更¶
-
The "
sv_strftime_ints
" in perlapi function is introduced. This is an enhanced version of "my_strftime
" in perlapi, which is retained for backwards compatibility. Both are to call strftime(3) when you have the year, month, hour, etc. The new function handles UTF8ness for you, and allows you to specify if you want the possibility of daylight savings time to be considered.my_strftime
never considers DST."
sv_strftime_ints
" in perlapi 関数が導入されました。 これは、下位互換性のために保持されている "my_strftime
" in perlapi の 拡張版です。 どちらも、年、月、時などがある場合に strftime(3) を呼び出します。 新しい関数は UTF-8 を処理し、夏時間の可能性を考慮するかどうかを指定できます。my_strftime
は DST を考慮しません。 -
The
bytes_to_utf8
,bytes_from_utf8
, andbytes_from_utf8_loc
functions are no longer experimental.bytes_to_utf8
,bytes_from_utf8
,bytes_from_utf8_loc
関数は 実験的なものではなくなりました。 -
Calls to call_argv() with the
G_DISCARD
flag set also ensure the SV parameters constructed from theargv
parameter are released beforecall_argv()
returns. Previously they were released on the next FREETMPS. [GH #22255]G_DISCARD
フラグが設定された call_argv() を 呼び出すと、argv
引数から構築された SV 引数が、call_argv()
が返る前に解放されます。 以前は、次の FREETMPS で解放されていました。 [GH #22255] -
When built with the
-DDEBUGGING
compile option, perl API functions that take pointers to distinct types of SVs (AVs, HVs or CVs) will check theSvTYPE()
of the passed values to ensure they are valid. Additionally, internal code within core functions that attempts to extract AVs, HVs or CVs from reference values passed in will also perform such checks.-DDEBUGGING
コンパイルオプションを使ってビルドされた場合、 異なるタイプの SV(AV, HV, CV) へのポインタを取る perl API 関数は、 渡された値のSvTYPE()
をチェックして、それらが有効であることを 確認します。 さらに、渡された参照値から AV, HV, CV を抽出しようとする コア関数内の内部コードも、このようなチェックを実行します。While this has been entirely tested by normal Perl CI testing, there may still be some corner-cases where these constraints are violated in otherwise-valid calls. These may require further investigation if they are found, and specific code to be adjusted to account for it.
これは通常の Perl CI テストによって完全にテストされていますが、 それ以外の有効な呼び出しでこれらの制約に違反するコーナーケースが まだいくつかある可能性があります。 これらが見つかった場合は、さらに調査し、それを考慮して特定のコードを 調整する必要があります。
-
The
op_dump()
function has been expanded to include additional information about the recentOP_METHSTART
andOP_INITFIELD
ops, as well as forOP_ARGCHECK
andOP_ARGELEM
which had not been done previously.op_dump()
関数が拡張され、最近のOP_METHSTART
およびOP_INITFIELD
op に関する追加情報と、これまで行われていなかったOP_ARGCHECK
およびOP_ARGELEM
に関する追加情報が 含まれるようになりました。 -
op_dump()
now also has the facility to print extra debugging information about custom operators, if those operators register a helper function via the newxop_dump
element of theXOP
structure. For more information, see the relevant additions to perlguts.op_dump()
には、カスタム演算子がXOP
構造体の新しいxop_dump
要素経由でヘルパー関数を登録する場合に、カスタム演算子に 関する追加のデバッグ情報を出力する機能も追加されました。 詳細については、perlguts への 関連する追加を参照してください。 -
New API functions are introduced to convert strings encoded in UTF-8 to their ordinal code point equivalent. These are safe to use by default, and generally more convenient to use than the existing ones.
UTF-8 でエンコードされた文字列を対応する序数符号位置に変換する新しい API 関数が導入されました。 これらはデフォルトで安全に使用でき、一般的に既存のものよりも便利です。
"
utf8_to_uv
" in perlapi and "utf8_to_uv_or_die
" in perlapi replace "utf8_to_uvchr
" in perlapi (which is retained for backwards compatibility), but you should convert to use the new forms, as likely you aren't using the old one safely."
utf8_to_uv
" in perlapi および "utf8_to_uv_or_die
" in perlapi は、"utf8_to_uvchr
" in perlapi (下位互換性のために保持されています) を 置き換えますが、古い形式を安全に使用していない可能性があるため、 新しい形式を使うように変換するべきです。To convert in the opposite direction, you can now use "
uv_to_utf8
" in perlapi. This is not a new function, but a new synonym for "uvchr_to_utf8
" in perlapi. It is added so you don't have to learn two sets of names.逆方向に変換するには、"
uv_to_utf8
" in perlapi を使えるようになりました。 これは新しい関数ではなく、"uvchr_to_utf8
" in perlapi の新しい同義語です。 二つの名前のセットを学習する必要がないように追加されました。There are also two new functions, "
strict_utf8_to_uv
" in perlapi and "c9strict_utf8_to_uv
" in perlapi which do the same thing except when the input string represents a code point that Unicode doesn't accept as legal for interchange, using either the strict original definition (strict_utf8_to_uv
), or the looser one given by Unicode Corrigendum #9 (c9strict_utf8_to_uv
). When the input string represents one of the restricted code points, these functions return the UnicodeREPLACEMENT CHARACTER
instead.また、"
strict_utf8_to_uv
" in perlapi と "c9strict_utf8_to_uv
" in perlapi という二つの新しい関数もあります; これらの関数は同じことを行いますが、入力文字列が、厳密な元の定義 (strict_utf8_to_uv
) または Unicode Corrigendum #9 によって与えられた、より緩やかな定義 (c9strict_utf8_to_uv
) のいずれかを使って、Unicode が交換に対して合法として 受け入れない符号位置を表す場合は異なります。 入力文字列が制限された符号位置の一つを表す場合、これらの関数は代わりに UnicodeREPLACEMENT CHARACTER
を返します。Also "
extended_utf8_to_uv
" in perlapi is a synonym forutf8_to_uv
, for use when you want to emphasize that the entire range of Perl extended UTF-8 is acceptable.また、"
extended_utf8_to_uv
" in perlapi はutf8_to_uv
の同義語であり、 Perl 拡張 UTF-8 の全範囲が受け入れられることを強調したい場合に使います。There are also replacement functions for the three more specialized conversion functions that you are unlikely to need to use. Again, the old forms are kept for backwards compatibility, but you should convert to use the new forms.
また、おそらく使う必要のない三つの特殊な変換関数に代わる関数もあります。 ここでも、下位互換性のために古い形式が保持されていますが、 新しい形式を使うように変換するべきです。
"
utf8_to_uv_flags
" in perlapi は、"utf8n_to_uvchr
" in perlapi を 置き換えます。"
utf8_to_uv_errors
" in perlapi は、"utf8n_to_uvchr_error
" in perlapi を 置き換えます。"
utf8_to_uv_msgs
" in perlapi は、"utf8n_to_uvchr_msgs
" in perlapi を 置き換えます。Also added are the inverse functions "
uv_to_utf8_flags
" in perlapi and "uv_to_utf8_msgs
" in perlapi, which are synonyms for the existing functions, "uvchr_to_utf8_flags
" in perlapi and "uvchr_to_utf8_flags_msgs
" in perlapi respectively. These are provided only so you don't have to learn two sets of names.また、逆関数 "
uv_to_utf8_flags
" in perlapi および "uv_to_utf8_msgs
" in perlapi も追加されています; これらは、それぞれ既存の関数 "uvchr_to_utf8_flags
" in perlapi および "uvchr_to_utf8_flags_msgs
" in perlapi の同義語です。 これらは、二つの名前のセットを学ぶ必要がないようにするためだけに 提供されています。 -
Three new API functions are introduced to convert strings encoded in UTF-8 to native bytes format (if possible). These are easier to use than the existing ones, and they avoid unnecessary memory allocations. The functions are "
utf8_to_bytes_overwrite
" in perlapi which is used when it is ok for the input string to be overwritten with the converted result; and "utf8_to_bytes_new_pv
" in perlapi and "utf8_to_bytes_temp_pv
" in perlapi when the original string must be preserved intact.utf8_to_bytes_temp_pv
returns the result in a temporary using perlapi/SAVEFREEPV
that will automatically be destroyed. Withutf8_to_bytes_new_pv
, you are responsible for freeing the newly allocated memory that is returned if the conversion is successful.UTF-8 でエンコードされた文字列を(可能であれば)ネイティブな バイト形式に変換するために、三つの新しい API 関数が導入されました。 これらは既存の関数よりも使いやすく、不要なメモリ割り当てを回避します。 関数は、変換結果で入力文字列を上書きしても問題がない場合に使われる "
utf8_to_bytes_overwrite
" in perlapi と、 元の文字列をそのまま保持する必要がある場合に使われる "utf8_to_bytes_new_pv
" in perlapi および "utf8_to_bytes_temp_pv
" in perlapi です。utf8_to_bytes_temp_pv
は、自動的に破棄される perlapi/SAVEFREEPV
を使って結果を一時的に返します。utf8_to_bytes_new_pv
では、変換が成功した場合に返される、新しく 割り当てられたメモリを解放する必要があります。The latter two functions are designed to replace "
bytes_from_utf8
" in perlapi which creates memory unnecessarily, or unnecessarily large.後者の二つの関数は、メモリを不必要に使ったり、不必要に大きく使ったりする "
bytes_from_utf8
" in perlapi を置き換えるために設計されています。 -
New API functions
valid_identifier_pve()
,valid_identifier_pvn()
andvalid_identifier_sv()
have been added, which test if a string would be considered by Perl to be a valid identifier name.新しいAPI関数
valid_identifier_pve()
,valid_identifier_pvn()
,valid_identifier_sv()
が追加されました; これらの関数は、文字列が Perl によって有効な識別子名と 見なされるかどうかをテストします。 -
When assigning from an SVt_IV into a SVt_NV (or vice versa), providing that both are "bodyless" types, Perl_sv_setsv_flags will now just change the destination type to match the source type. Previously, an SVt_IV would have been upgraded to a SVt_PVNV to store an NV, and an SVt_NV would have been upgraded to a SVt_PVIV to store an IV. This change prevents the need to allocate - and later free - the relevant body struct.
SVt_IV から SVt_NV (またはその逆)に割り当てる場合、両方が 「ボディレス」型であれば、Perl_sv_setsv_flags は宛先型を ソース型に一致するように変更します。 以前は、SVt_IV は NV を格納するために SVt_PVNV に昇格され、 SVt_NV は IV を格納するために SVt_PVIV に昇格されていました。 この変更により、関連するボディ構造体を割り当て、 後で解放する必要がなくなりました。
-
Two new API functions are introduced to convert strings encoded in native bytes format to UTF-8. These return the string unchanged if its UTF-8 representation is the same as the original. Otherwise, new memory is allocated to contain the converted string. This is in contrast to the existing "
bytes_to_utf8
" in perlapi which always allocates new memory. The new functions are "bytes_to_utf8_free_me
" in perlapi and "bytes_to_utf8_temp_pv
" in perlapi. "bytes_to_utf8_temp_pv
" in perlapi arranges for the new memory to automatically be freed. Withbytes_to_utf8_free_me
, you are responsible for freeing any newly allocated memory.ネイティブバイト形式でエンコードされた文字列を UTF-8 に変換するために、 二つの新しい API 関数が導入されました。 これらの関数は、UTF-8 表現が元の文字列と同じ場合は、 文字列を変更せずに返します。 それ以外の場合は、変換された文字列を含む新しいメモリが割り当てられます。 これは、常に新しいメモリを割り当てる既存の "
bytes_to_utf8
" in perlapi とは対照的です。 新しい関数は、"bytes_to_utf8_free_me
" in perlapi および"bytes_to_utf8_temp_pv
" in perlapi です。 "bytes_to_utf8_temp_pv
" in perlapi は、新しいメモリが 自動的に解放されるように調整します。bytes_to_utf8_free_me
は、新しく割り当てられたメモリを 解放する必要があります。 -
The way that subroutine signatures are parsed by the parser grammar has been changed.
サブルーチンシグネチャをパーサ文法で構文解析する方法が変更されました。
Previously, when parsing individual signature parameters, the parser would accumulate an
OP_ARGELEM
optree fragment for each parameter on the parser stack, collecting them in anOP_LIST
sequence, before finally building the complete argument handling optree itself, in a large action block defined directly in perly.y.以前は、個々のシグネチャ引数をパースする場合、パーサは、perly.y で 直接定義された大きなアクションブロック内に完全な引数処理 op 木自体を 最終的に構築する前に、パーサスタック上の各引数に対して
OP_ARGELEM
op 木フラグメントを蓄積し、それらをOP_LIST
シーケンスで収集していました。In the new approach, all the optree generation is handled by newly-defined functions in op.c which are called by the action blocks in the parser. These do not keep state on the parser stack, but instead in a dedicated memory structure referenced by the main
PL_parser
structure. This is intended to be largely opaque to other code, and accessed only via the new functions.新しい手法では、すべての op 木生成は、パーサ内のアクションブロックによって 呼び出される op.c 内の新しく定義された関数によって処理されます。 これらはパーサスタック上で状態を保持するのではなく、メインの
PL_parser
構造体によって参照される専用のメモリ構造内に保持されます。 これは、他のコードからほとんど不透明であり、新しい関数経由でのみ アクセスされることを意図しています。This new arrangement is intended to allow more flexible code generation and additional features to be developed in the future.
この新しい配置は、より柔軟なコード生成と将来開発される追加機能を 可能にすることを目的としています。
-
Three new API functions have been added to interact with the regexp global match position stored in an SV. These are
sv_regex_global_pos_get()
,sv_regex_global_pos_set()
andsv_regex_global_pos_clear()
. Using these API functions avoids XS modules needing to know about or interact directly with the way this position is currently stored, which involves thePERL_MAGIC_regex_global
magic type.SV に保存された正規表現のグローバルなマッチング位置と相互作用するために、 三つの新しい API 関数が追加されました。 これらは、
sv_regex_global_pos_get()
,sv_regex_global_pos_set()
,sv_regex_global_pos_clear()
です。 これらの API 関数を使うと、XSモジュールが、PERL_MAGIC_regex_global
マジカル型に関連する、この位置が現在保存されている 方法を認識したり、直接対話したりする必要がなくなります。 -
New
SvVSTRING
API macro新しい
SvVSTRING
API マクロA new API macro has been added, which is used to obtain the second string buffer out of a "vstring" SV, in a manner similar to the
SvPV
macro which obtains the regular string buffer out of a regular SV.通常の文字列バッファを通常の SV から取得する
SvPV
マクロと同様の方法で、 "vstring" SV から 2 番目の文字列バッファを取得するために使われる 新しい API マクロが追加されました。STRLEN len; const char *vstr_pv = SvVSTRING(sv, vstr_len);
"
SvVSTRING
" in perlapi を参照してください。
バグ修正の抜粋¶
-
Fix null pointer dereference in S_SvREFCNT_dec [GH #16627].
S_SvREFCNT_dec のヌルポインタの逆参照を修正しました [GH #16627]。
-
Fix feature 'class' Segmentation fault in DESTROY [GH #22278].
DESTROY の feature 'class' セグメンテーションフォルトを修正しました [GH #22278]。
-
chdir
now returns real booleans (as its documentation describes), not integers. This means the result of a failedchdir
now stringifies to''
, not'0'
.chdir
は、整数ではなく(文書で説明されているように)本当の真偽値を 返すようになりました。 これは、失敗したchdir
の結果が、'0'
ではなく''
に 文字列化されることを意味します。 -
Compound assignment operators return lvalues that can be further modified:
複合代入演算子は、さらに変更可能な左辺値を返します。
($x &= $y) += $z; # Equivalent to: # $x &= $y; # $x += $z;
However, the separate numeric/string bitwise operators provided by the
bitwise
feature,&= ^= |= &.= ^.= |.=
, did not return such lvalues:ただし、
bitwise
機能 で提供されている 独立した数値/文字列ビット単位演算子&= ^= |= &.= ^.= |.=
は、 このような左辺値を返していませんでした:use feature qw(bitwise); ($x &= $y) += $z; # Used to die: # Can't modify numeric bitwise and (&) in addition (+) at ...
This has been corrected. [GH #22412]
これは修正されました。 [GH #22412]
-
Starting in v5.39.8, "
strftime
" in POSIX would crash or produce odd errors (such asOut of memory in perl:util:safesysmalloc
) when given a format string that wasn't actually a string, but a number,undef
, or an object (even one with overloaded string conversion).v5.39.8 以降、"
strftime
" in POSIX では、フォーマット文字列が実際には 文字列ではなく、数値、undef
、またはオブジェクト(オーバーロードされた 文字列変換を持つものであっても)が与えられた場合、クラッシュしたり、 奇妙なエラー (Out of memory in perl:util:safesysmalloc
など)が 発生したりしていました。Now
strftime
stringifies its first argument, as before. [GH #22498]strftime
は以前と同様に最初の引数を文字列化するようになりました。 [GH #22498]Also, fix
POSIX::strftime()
[GH #22369].また、
POSIX::strftime()
も修正されました [GH #22369]。 -
pack("p", ...)
andpack("P", ...)
now SvPV_force() the supplied SV unless it is read only. This will remove CoW from the SV and prevents code that writes through the generated pointer from modifying the value of other SVs that happen the share the same CoWed string buffer.pack("p", ...)
とpack("P", ...)
は、読み込み専用でない限り、 指定された SV を SvPV_force() するようになりました。 これにより、SV から CoW が削除され、生成されたポインタを介して 書き込むコードが、同じ CoW 文字列バッファを共有する他の SV の値を 変更してしまうことを防ぎます。Note: this does not make
pack("p",... )
safe, if the SV is magical then any writes to the buffer will likely be discarded on the next read. [GH #22380]注意: これは
pack("p",... )
を安全にはしません; SV がマジカルな場合、バッファへの書き込みは次の読み取りで 破棄される可能性があります。 [GH #22380] -
Enforce
no feature "bareword_filehandles"
for bareword file handles that have strictness removed because they are used in open() with a "dup" mode, such as inopen my $fh, ">&", THISHANDLE
. [GH #22568]open my $fh, ">&", THISHANDLE
のように、"dup" モードで open() で使われているために strict 性が削除された裸の単語の ファイルハンドルに対して、no feature "bareword_filehandles"
を 強制します。 [GH #22568] -
Using
goto
to tail call, or using the call_sv() and related APIs to call, any of trim(), refaddr(), reftype(), ceil(), floor() or stringify() in thebuiltin::
package would crash or assert due to aTARG
handling bug. [GH #22542]goto
を使って末尾呼び出しを行うか、呼び出しに call_sv() および関連する API を使うと、builtin::
パッケージの trim(), refaddr(), reftype(), ceil(), floor(), stringify() のいずれかが、TARG
処理のバグにより クラッシュまたはアサートしていました。 [GH #22542] -
Fix sv_gets() to accept a
SSize_t
append offset instead ofI32
. This prevents integer overflows when appending to a largeSV
forreadpipe
akaqx//
andreadline
. https://www.perlmonks.org/?node_id=11161665I32
の代わりにSSize_t
追加オフセットを受け入れるように sv_gets() を修正しました。 これにより、readpipe
またの名をqx//
およびreadline
のために大きなSV
に追加するときに整数オーバーフローを 防ぐことができます。 https://www.perlmonks.org/?node_id=11161665 -
Fixed an issue where
utf8n_to_uvchr
failed to correctly identify certain invalid UTF-8 sequences as invalid. Specifically, sequences that start with continuation bytes or unassigned bytes could cause unexpected behavior or a panic. This fix ensures that such invalid sequences are now properly detected and handled. This correction also resolves related issues in modules that handle UTF-8 processing, such asEncode.pm
.utf8n_to_uvchr
が特定の無効な UTF-8 シーケンスを無効として 正しく識別できない問題が修正されました。 特に、継続バイトまたは割り当てられていないバイトで始まる シーケンスは、予期しない動作またはパニックを引き起こす可能性がありました。 この修正により、このような無効なシーケンスが適切に検出され、 処理されるようになります。 この修正により、Encode.pm
などの UTF-8 処理を処理するモジュールの 関連する問題も解決されます。 -
The perl parser would erroneously parse some POD directives as if they were
=cut
. Some other POD directives whose names start with cut, prematurely terminating an embedded POD section. The following cases were affected: cut followed by a digit (e.g.=cut2studio
), cut followed by an underscore (e.g.=cut_grass
), and in stringeval
, any identifier starting with cut (e.g.=cute
). [GH #22759]perl パーサは、一部の POD 指示子を
=cut
であるかのように誤って パースしていました。 名前が cut で始まる他のいくつかの POD 指示子は、埋め込まれた POD 節を途中で終了させていました。 次のケースが影響を受けました: cut の後に数字が続く(例:=cut2studio
)、 cut の後にアンダースコアが続く(例:=cut_grass
)、 文字列eval
では、cut で始まる任意の識別子(例:=cute
)。 [GH #22759] -
Builds with
-msse
and quadmath on 32-bit x86 systems would crash with a misaligned access early in the build. [GH #22577]32 ビット x86 システムで
-msse
と quadmath を使ったビルドを行うと、 ビルドの初期段階でアライメントがずれたアクセスによりクラッシュします。 [GH #22577] -
On threaded builds on POSIX-like systems, if the perl signal handler receives a signal, we now resend the signal to the main perl thread. Previously this would crash. [GH #22487]
POSIX ライクなシステムのスレッド化されたビルドでは、perl シグナルハンドラが シグナルを受信した場合、メインの perl スレッドにシグナルを 再送するようになりました。 以前はクラッシュしていました。 [GH #22487]
-
Declaring a lexically scoped array or hash using
state
within a subroutine and then immediately returning no longer triggers a "Bizarre copy of HASH/ARRAY in subroutine exit" error. [GH #18630]サブルーチン内で
state
を使ってレキシカルスコープの配列または ハッシュを宣言し、直後に返っても、 "Bizarre copy of HASH/ARRAY in subroutine exit" エラーが 発生しなくなりました。 [GH #18630] -
builtin::trim()
didn't properly clearTARG
which could result in out of date cached numeric versions of the value being used on a second evaluation. Properly clear any cached values. [GH #22784]builtin::trim()
はTARG
を適切にクリアしていませんでした; これにより、2 番目の評価で使われた値のキャッシュされた 数値版が古くなる可能性がありました。 キャッシュされた値を適切にクリアするようになりました。 [GH #22784] -
"shmread" in perlfunc and "shmwrite" in perlfunc are no longer limited to 31-bit values and can use all the available bits on a platform for their POS and SIZE arguments. [GH #22895]
"shmread" in perlfunc と "shmwrite" in perlfunc はもはや 31 ビット値に 制限されなくなり、POS 引数と SIZE 引数にプラットフォーム上で使用可能な すべてのビットを使えるようになりました。 [GH #22895]
-
"shmread" in perlfunc is now better behaved if VAR is not a plain string. If VAR is a tied variable, it calls
STORE
once; previously, it would also callFETCH
, but without using the result. If VAR is a reference, the referenced entity has its refcount properly decremented when VAR is turned into a string; previously, it would leak memory. [GH #22898]VAR がプレーンな文字列でない場合の "shmread" in perlfunc の動作が改善されました。 VAR が tie された変数の場合、
STORE
を 1 回呼び出します; 以前は、結果を使わないFETCH
も呼び出していました。 VAR がリファレンスの場合、VAR が文字列に変換されると、参照されるエンティティの 参照カウントが適切に減少します; 以前は、メモリリークしていました。 [GH #22898] -
The
$SIG{__DIE__}
and$SIG{__WARN__}
handlers can no longer be invoked recursively, either deliberately or by accident, as described in "%SIG" in perlvar. That is, when an exception (or warning) triggers a call to a$SIG{__DIE__}
(or$SIG{__WARN__}
) handler, further exceptions (or warnings) are processed directly, ignoring%SIG
until the original$SIG{__DIE__}
(or$SIG{__WARN__}
) handler call returns. [GH #14527], [GH #22984], [GH #22987]"%SIG" in perlvar で説明されているように、
$SIG{__DIE__}
および$SIG{__WARN__}
ハンドラは、意図的であるか偶発的であるかにかかわらず、 もはや再帰的に呼び出すことができなくなりました。 つまり、例外(または警告)によって$SIG{__DIE__}
(または$SIG{__WARN__}
)ハンドラの呼び出しが引き起こされると、 元の$SIG{__DIE__}
(または$SIG{__WARN__}
) ハンドラの呼び出しから 返るまで、%SIG
を無視して、それ以降の例外(または警告)が 直接処理されます。 [GH #14527], [GH #22984], [GH #22987] -
The
ObjectFIELDS()
for an object andxhv_class_fields
for the object's stash weren't always NULL or not-NULL, confusingsv_dump()
(and hence Devel::Peek'sDump()
) into crashing on an object with no defined fields in some cases. [GH #22959]オブジェクトの
ObjectFIELDS()
とオブジェクトのスタッシュのxhv_class_fields
は、常に NULL または非 NULL であるとは限らず、sv_dump()
(したがって Devel::Peek のDump()
) を混乱させ、 フィールドが定義されていないオブジェクトでクラッシュする場合がありました。 [GH #22959] -
When comparing strings when using a UTF-8 locale, the behavior was previously undefined if either or both contained an above-Unicode code point, such as 0x110000. Now all such code points will collate the same as the highest Unicode code point, U+10FFFF. [GH #22989]
UTF-8 ロケールを使って文字列を比較する場合、以前は、一方または両方に 0x110000 などの Unicode 以上の符号位置が含まれている場合の振る舞いは 未定義でした。 このような符号位置はすべて、最も高い Unicode 符号位置である U+10FFFF と同じように照合されるようになりました。 [GH #22989]
-
In regexes, the contents of
\g{...}
backreferences are now properly validated. Previously,\g{1 FOO}
was silently parsed as\g{1}
, ignoring everything after the first number. [GH #23050]正規表現内で、
\g{...}
後方参照の内容が適切に検証されるようになりました。 以前は、\g{1 FOO}
は暗黙に\g{1}
としてパースされ、 最初の数値以降はすべて無視されていました。 [GH #23050] -
A run-time pattern which contained a code block which recursed back to the same bit of code which ran that match, could cause a crash. [GH #22869]
マッチングを実行したコードの同じ部分に再帰したコードブロックを含む 実行時パターンは、クラッシュを引き起こす可能性がありました。 [GH #22869]
For example:
例えば:
my $r = qr/... (?{ foo() if ... }) .../; sub foo { $string =~ $r } foo()
-
In some cases an
eval
would not add integer parts to the source lines saved by the debugger. [GH #23151]場合によっては、
eval
がデバッガによって保存されたソース行に 整数部分を追加しないことがありました。 [GH #23151] -
In debugging mode, perl saves source lines from all files (plus an indication of whether each line is breakable) for use by the debugger. The internal storage format has been optimized to use less memory. This should save 24 bytes per stored line for 64-bit systems, more for
-Duselongdouble
or-Dusequadmath
builds. Discussed in [GH #23171].デバッグモードでは、perl はデバッガで使うためにすべてのファイルの ソース行(および各行がブレーク可能かどうかの印)を保存します。 内部ストレージ形式は、より少ないメモリを使うように最適化されます。 これにより、64 ビットシステムでは保存された行ごとに 24 バイトが節約され、
-Duselongdouble
または-Dusequadmath
ビルドではさらに節約されます。 [GH #23171] で 議論されています。 -
Ensure cloning the save stack for fork emulation doesn't duplicate freeing the RExC state. [GH #23022]
フォークエミュレーション用の保存スタックのクローンを作成しても、 RExC 状態の解放が重複しないようになりました。 [GH #23022]
-
Smartmatch against a code reference that uses a loop exit such as
last
would crash perl. [GH #16608]last
などのループ出口を使うコード参照に対してスマートマッチングを行うと、 perl がクラッシュしていました。 [GH #16608] -
Class initializers and
ADJUST
blocks, per perlclass, that calledlast
or other loop exits would crash perl. Same cause as for [GH #16608].perlclass によるクラス初期化子や
ADJUST
ブロックがlast
や 他のループ終了を呼び出すと、perl がクラッシュしていました。 [GH #16608] と同じ原因です。 -
Exceptions thrown and caught entirely within a
defer {}
orfinally {}
block no longer stop the outer run-loop.defer {}
またはfinally {}
ブロック内で完全にスローおよび キャッチされた例外は、外側の実行ループを停止しなくなりました。Code such as the following would stop running the contents of the
defer
block once the inner exception in the innertry
/catch
block was caught. This has now been fixed, and runs as expected. ([GH #23064]).次のようなコードは、内部
try
/catch
ブロックの内部例外が キャッチされると、defer
ブロックの内容の実行を停止していました。 これは現在修正されており、期待どおりに実行されます。 ([GH #23064])。defer { try { die "It breaks\n"; } catch ($e) { warn $e } say "This line would never run"; }
-
"readline" in perlfunc now clears the error flag if an error occurs when reading and that error is
EAGAIN
orEWOULDBLOCK
. This allows code that depended onreadline
to clear all errors to ignore these relatively harmless errors. [GH #22883]"readline" in perlfunc は、読み込み中にエラーが発生し、そのエラーが
EAGAIN
またはEWOULDBLOCK
である場合、エラーフラグを クリアするようになりました。 これにより、readline
に依存するコードがすべてのエラーをクリアして、 これらの比較的無害なエラーを無視できるようになります。 [GH #22883] -
open
automatically creates an anonymous temporary file when passedundef
as a filename:open
は、undef
をファイル名として渡すと、自動的に 匿名一時ファイルを作成します:open(my $fh, "+>", undef) or die ...
This is supposed to work only when the undefined value is the one returned by the
undef
function.これは、未定義値が
undef
関数によって返された値である場合にのみ 機能することになっています。In perls before 5.41.3, this caused a problem due to the fact that the same undefined value can be generated by lookups of non-existent hash keys or array elements, which can lead to bugs in user-level code (reported as [GH #22385]).
5.41.3 より前の perl では、存在しないハッシュキーや配列要素の照会によって 同じ未定義値が生成される可能性があり、ユーザレベルのコードで バグが発生する可能性があるため、これは問題を引き起こしていました ([GH #22385] として 報告されています)。
In 5.41.3, additional checks based on the syntax tree of the call site were added, which fixed this issue for some number of common cases, though not all of them, at the cost of breaking the ability of APIs that wrap
open
to expose its anonymous file mode. A notable example of such an API is autodie.5.41.3 では、コールサイトの構文木に基づくチェックが追加され、 すべてではないけれどもいくつかの一般的なケースでこの問題が修正されましたが、 その代償として、
open
をラップして匿名ファイルモードを公開する API の機能が破壊されました。 このような API の注目すべき例は、autodie です。This release reverts to the old problem in preference to the new one for the time being.
このリリースでは、当面の間、新しい問題よりも古い問題を優先して巻き戻します。
Obituaries¶
Abe Timmerman¶
Abe Timmerman (ABELTJE) passed away on August 15, 2024.
Abe Timmerman (ABELJE) は、2024 年 8 月 15 日に亡くなりました。
Since 2002, Abe built and maintained the Test::Smoke project: "a set of scripts and modules that try to run the Perl core tests on as many configurations as possible and combine the results into an easy to read report". Smoking Perl on as many platforms and configurations as possible has been instrumental in finding bugs and developing patches for those bugs.
2002 年以来、Abe は Test::Smoke プロジェクトを構築し、維持してきました: これは、「できるだけ多くの構成で Perl コアテストを実行し、結果を 読みやすいレポートに結合しようとするスクリプトとモジュールのセット」です。 できるだけ多くのプラットフォームと構成で Perl を smoke することは、 バグを見つけ、それらのバグに対するパッチを開発するのに役立ちました。
Abe was a regular attendee of the Perl Toolchain Summit (née Perl QA Hackathon), the Dutch Perl Workshop and the Amsterdam.pm user group meetings. With his kindness, his smile and his laugh, he helped make Perl and its community better.
Abeは、Perl Toolchain Summit (旧称 Perl QA Hackathon), Dutch Perl Workshop, Amsterdam.pm ユーザーグループミーティングに 定期的に参加していました。 彼の優しさと笑顔と笑いで、彼は Perl とそのコミュニティをより良くする 手助けをしました。
Abeltje's memorial card said "Grab every opportunity to have a drink of bubbly. This is an opportunity". We'll miss you Abe, and we'll have a drink of bubbly in your honor.
Abeltje のメモリアルカードには、「あらゆる機会をつかんで、 シャンパンを一杯飲みましょう。これがその機会です」と書かれていました。 私たちはあなたがいなくて寂しいです、 Abe, そして私たちはあなたの名誉のためにシャンパンを一杯飲みましょう。
Andrew Main¶
Andrew Main (ZEFRAM) passed away on March 10, 2025.
Andrew Main (ZEFRAM) は 2025 年 3 月 10 日に亡くなりました。
Zefram was a brilliant person, seemingly knowledgeable in everything and happy to impart his knowledge and share his striking insights with a gentle, technical demeanor that often failed to convey the genuine care with which he communicated.
Zefram は聡明な人で、あらゆることに精通しているように見え、 彼の知識を喜んで伝え、彼の印象的な洞察を穏やかで技術的な態度で共有しましたが、 彼が本当に心を込めてコミュニケーションしていたことが 伝わらないこともしばしばありました。
It would be impossible to overstate the impact that Zefram has had on both the language and culture of Perl over the years. From his countless contributions to the code-base, to his often quirky but always distinctive appearances at conferences and gatherings, his influence and memory are sure to endure long into the future.
Zefram が長年にわたって Perl の言語と文化の両方に与えてきた影響は、 いくら強調してもしすぎることはありません。 コードベースへの数え切れないほどの貢献から、 会議や集まりでのしばしば奇抜ではあるが常に特徴的な登場まで、 彼の影響力と記憶は将来にわたって長く続くことは間違いありません。
Zefram wished to have no designated memorial location in meatspace. His designated memorial location in cyberspace is http://www.fysh.org/~zefram/personal/.
Zefram は、現実空間に特定の追悼の場所を持たないことを望んでいました。 サイバー空間における彼の追悼の場所は http://www.fysh.org/~zefram/personal/ です。
謝辞¶
Perl 5.42.0 represents approximately 13 months of development since Perl 5.40.0 and contains approximately 280,000 lines of changes across 1,600 files from 65 authors.
Perl 5.42.0 は、Perl 5.40.0 以降、65 人の作者によって、 1,600 のファイルに約 280,000 行の変更を加えて、 約 13 ヶ月開発されてきました。
Excluding auto-generated files, documentation and release tools, there were approximately 94,000 lines of changes to 860 .pm, .t, .c and .h files.
自動生成ファイル、文書、リリースツールを除くと、860 の .pm, .t, .c, .h ファイルに約 94,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.42.0:
Perl は、活気のあるユーザーと開発者のコミュニティのおかげで 30 年を超えて 繁栄しています。 以下の人々が、Perl 5.42.0 になるための改良に貢献したことが分かっています:
Aaron Dill, Andrei Horodniceanu, Andrew Ruthven, Antanas Vaitkus, Aristotle Pagaltzis, Branislav Zahradník, brian d foy, Chad Granum, Chris 'BinGOs' Williams, Craig A. Berry, Dabrien 'Dabe' Murphy, Dagfinn Ilmari Mannsåker, Dan Book, Daniel Dragan, Dan Jacobson, David Cantrell, David Mitchell, E. Choroba, Ed J, Ed Sabol, Elvin Aslanov, Eric Herman, Erik Huelsmann, Gianni Ceccarelli, Graham Knop, hbmaclean, H.Merijn Brand, iabyn, James E Keenan, James Raspass, Johan Vromans, Karen Etheridge, Karl Williamson, Leon Timmermans, Lukas Mai, Marek Rouchal, Marin Tsanov, Mark Fowler, Masahiro Honma, Max Maischein, Paul Evans, Paul Johnson, Paul Marquess, Peter Eisentraut, Peter John Acklam, Philippe Bruhat (BooK), pyrrhlin, Reini Urban, Richard Leach, Robert Rothenberg, Robin Ragged, Russ Allbery, Scott Baker, Sergei Zhmylev, Sevan Janiyan, Sisyphus, Štěpán Němec, Steve Hay, TAKAI Kousuke, Thibault Duponchelle, Todd Rinaldo, Tony Cook, Unicode Consortium, Vladimír Marek, Yves Orton.
これはバージョンコントロール履歴から自動的に生成しているので、ほぼ確実に 不完全です。 特に、Perl バグトラッカーに問題を報告をしてくれた (とてもありがたい)貢献者の 名前を含んでいません。
Many of the changes included in this version originated in the CPAN modules included in Perl's core. We're grateful to the entire CPAN community for helping Perl to flourish.
このバージョンに含まれている変更の多くは、Perl コアに含まれている CPAN モジュール由来のものです。 私たちは Perl の発展を助けている CPAN コミュニティ全体に感謝します。
For a more complete list of all of Perl's historical contributors, please see the AUTHORS file in the Perl source distribution.
全ての Perl の歴史的な貢献者のより完全な一覧については、どうか Perl ソース 配布に含まれている AUTHORS を参照してください。
バグ報告¶
If you find what you think is a bug, you might check the perl bug database at https://github.com/Perl/perl5/issues. There may also be information at https://www.perl.org/, the Perl Home Page.
もしバグと思われるものを見つけたら、 https://github.com/Perl/perl5/issues にある perl バグデータベースを 確認してください。 Perl ホームページ、http://www.perl.org/ にも情報があります。
If you believe you have an unreported bug, please open an issue at https://github.com/Perl/perl5/issues. Be sure to trim your bug down to a tiny but sufficient test case.
もしまだ報告されていないバグだと確信したら、 https://github.com/Perl/perl5/issues にイシューを登録してください。 バグの再現スクリプトを十分小さく、しかし有効なコードに切りつめることを 意識してください。
If the bug you are reporting has security implications which make it inappropriate to send to a public issue tracker, then see "SECURITY VULNERABILITY CONTACT INFORMATION" in perlsec for details of how to report the issue.
報告しようとしているバグがセキュリティに関するもので、公開されている イシュートラッカーに送るのが不適切なものなら、バグの報告方法の詳細について "SECURITY VULNERABILITY CONTACT INFORMATION" in perlsec を参照してください。
感謝を伝える¶
If you wish to thank the Perl 5 Porters for the work we had done in Perl 5, you can do so by running the perlthanks
program:
もし Perl 5 でなされた作業について Perl 5 Porters に感謝したいと考えたなら、 perlthanks
プログラムを実行することでそうできます:
perlthanks
This will send an email to the Perl 5 Porters list with your show of thanks.
これは Perl 5 Porters メーリングリストにあなたの感謝の言葉をメールします。
SEE ALSO¶
The Changes file for an explanation of how to view exhaustive details on what changed.
変更点の完全な詳細を見る方法については Changes ファイル。
The INSTALL file for how to build Perl.
Perl のビルド方法については INSTALL ファイル。
The README file for general stuff.
一般的なことについては README ファイル。
The Artistic and Copying files for copyright information.
著作権情報については Artistic 及び Copying ファイル。