=encoding utf8 =head1 NAME =begin original perldelta - what is new for perl v5.36.0 =end original perl5360delta - perl v5.36.0 での変更点 =head1 DESCRIPTION =begin original This document describes differences between the 5.34.0 release and the 5.36.0 release. =end original この文書は 5.34.0 リリースと 5.36.0 リリースの変更点を記述しています。 =head1 Core Enhancements (コアの拡張) =head2 C =begin original As always, C turns on the feature bundle for that version of Perl. =end original いつも通り、C は、このバージョンの Perl のための 機能の束をオンにします。 =begin original The 5.36 bundle enables the C feature. Introduced in Perl version 5.20.0, and modified several times since, the subroutine signatures feature is now no longer considered experimental. It is now considered a stable language feature and no longer prints a warning. =end original 5.36 の束は C 機能を有効にします。 Perl バージョン 5.20.0 で導入され、それから何回か変更された サブルーチンシグネチャは、もはや実験的とは扱われなくなりました。 これは安定版の言語機能として扱われ、もはや警告を出さなくなりました。 use v5.36; sub add ($x, $y) { return $x + $y; } =begin original Despite this, certain elements of signatured subroutines remain experimental; see below. =end original これにも関わらず、サブルーチンシグネチャのいくつかの要素はまだ 実験的なままです; 以降を参照してください。 =begin original The 5.36 bundle enables the C feature. Introduced in Perl version 5.32.0, this operator has remained unchanged since then. The operator is now considered a stable language feature. For more detail see L. =end original 5.36 の束は C 機能を有効にします。 Perl バージョン 5.32.0 で導入されたこの演算子は、それから 変更されていません。 この演算子は安定した言語機能とみなされます。 さらなる詳細については L を 参照してください。 =begin original The 5.36 bundle also I the features C, and C. These will forbid, respectively: the use of "indirect" method calls (like C<$x = new Class;>); the use of a list expression as a hash key to simulate sparse multidimensional arrays. The specifics of these changes can be found in L, but the short version is: this is a bit like having more C turned on, disabling features that cause more trouble than they're worth. =end original 5.36 の束はまた、C, C の各機能を I<無効> にしました。 これらはそれぞれ、次のものを禁止します: (C<$x = new Class;> のような) 「間接」メソッド呼び出し; 疎らな多次元配列をシミュレートするためのハッシュキーとしての リスト式の使用。 これらの変更の詳細は L にありますが、短く言うと; これは C をもっと有効にしたものに少し似ていて、 有効性よりも大きな問題を引き起こす機能を無効にします。 =begin original Furthermore, C will also enable warnings as if you'd written C. =end original さらに、C は、C を書いたかのように警告も 有効にします。 =begin original Finally, with this release, the experimental C feature, present in every feature bundle since they were introduced in v5.10, has been removed from the v5.36 bundle. If you want to use it (against our advice), you'll have to enable it explicitly. =end original 最後に、このリリースでは、v5.10 で導入されてから全ての機能の束に含まれていた 実験的な C 機能は、v5.36 の束では取り除かれました。 (私たちの助言に反して) これを使いたい場合、明示的に有効にする必要があります。 =head2 -g command-line flag (-g コマンドラインオプション) =begin original A new command-line flag, -g, is available. It is a simpler alias for -0777. =end original 新しいコマンドラインフラグである -g が利用可能です。 これは -0777 と似たような別名です。 =begin original For more information, see L. =end original さらなる情報については、L を参照してください。 =head2 Unicode 14.0 is supported (Unicode 14.0 に対応しました) =begin original See L for details. =end original 詳しくは L を 参照してください。 =head2 regex sets are no longer considered experimental (正規表現集合はもはや実験的ではなくなりました) =begin original Prior to this release, the regex sets feature (officially named "Extended Bracketed Character Classes") was considered experimental. Introduced in Perl version 5.18.0, and modified several times since, this is now considered a stable language feature and its use no longer prints a warning. See L. =end original このリリースより前では、正規表現集合機能 (公式名は「拡張大かっこ文字クラス」 ("Extended Bracketed Character Classes") は実験的と考えられていました。 Perl バージョン 5.18.0 で導入され、 それから数回修正されたこれは、 安定版の言語機能として考えられるようになり、 もはや警告は表示されません。 L を参照してください。 =head2 Variable length lookbehind is mostly no longer considered experimental (可変長後方参照はもはやほとんど実験的ではなくなりました) =begin original Prior to this release, any form of variable length lookbehind was considered experimental. With this release the experimental status has been reduced to cover only lookbehind that contains capturing parenthesis. This is because it is not clear if =end original このリリースの前では、あらゆる形式の可変長後方参照は、 実験的であると考えられてきました。 このリリースで、実験的なステータスは、捕捉かっこを含む後方参照のみに 縮小されました。 これは、次の場合に "aaz"=~/(?=z)(?<=(a|aa))/ =begin original should match and leave $1 equaling "a" or "aa". Currently it will match the longest possible alternative, "aa". While we are confident that the overall construct will now match only when it should, we are not confident that we will keep the current "longest match" behavior. =end original マッチングと $1 への代入は "a" になるか "aa" になるかがはっきりしていないからです。 現在の所、これは可能な最大の選択肢である "aa" にマッチングします。 構文全体が、マッチングするべき時にだけマッチングするようになったことには 自信がありますが、現在の「最長マッチング」の振る舞いを維持することには 自信がありません。 =head2 SIGFPE no longer deferred (SIGFPE はもはや遅れません) =begin original Floating-point exceptions are now delivered immediately, in the same way as other "fault"-like signals such as SIGSEGV. This means one has at least a chance to catch such a signal with a C<$SIG{FPE}> handler, e.g. so that C can report the line in perl that triggered it. =end original 浮動小数点数例外は、SIGSEGV のようなその他の「失敗」系と同様に 直ちに配送されるようになりました。 つまり、そのようなシグナルを C<$SIG{FPE}> ハンドラで捕捉する機会が 少なくとも 1 回あるということです; 例えば、C はそれを引き起こした perl での行を報告できます。 =head2 Stable boolean tracking (安定したブール値の追跡) =begin original The "true" and "false" boolean values, often accessed by constructions like C and C, as well as being returned from many core functions and operators, now remember their boolean nature even through assignment into variables. The new function C in L can check whether a value has boolean nature. =end original しばしば C and C としてアクセスされ、 多くのコア関数と演算子から返される、「真」と「偽」のブール値は、 変数への代入を通してもブール値としての性質を保つようになりました。 L の新しい関数 C で、値がブール値の性質を 持つかかどうかをチェックできるようになりました。 =begin original This is likely to be useful when interoperating with other languages or data-type serialisation, among other places. =end original これは、色々な用途の中でも、他の言語やデータ型直列化との相互運用に 有用でしょう。 =head2 iterating over multiple values at a time (experimental) (一度に複数の値で反復する (実験的)) =begin original You can now iterate over multiple values at a time by specifying a list of lexicals within parentheses. For example, =end original かっこの中にレキシカル変数のリストを指定することで、 一回当たり複数の値を反復できるようになりました。 例えば: for my ($key, $value) (%hash) { ... } for my ($left, $right, $gripping) (@moties) { ... } =begin original Prior to perl v5.36, attempting to specify a list after C was a syntax error. =end original perl v5.36 より前では、C の後でリストを指定しようとすると 文法エラーでした。 =begin original This feature is currently experimental and will cause a warning of category C. For more detail see L. See also L in this document, which is a handy companion to n-at-a-time foreach. =end original この機能は今のところ実験的で、 C カテゴリの警告を引き起こします。 さらなる情報については L を参照してください。 一度に n 回の foreach の便利ツールである、この文書の L も参照してください。 =head2 builtin functions (experimental) (builtin 関数 (実験的)) =begin original A new core module L has been added, which provides documentation for new always-present functions that are built into the interpreter. =end original 新しいコアモジュール L が追加されました; これは、インタプリタ組み込みの、常に存在する関数の文書を提供します。 say "Reference type of arrays is ", builtin::reftype([]); =begin original It also provides a lexical import mechanism for providing short name versions of these functions. =end original これはまた、これらの関数の短い名前版を提供するためのレキシカルな インポート機構を提供します。 use builtin 'reftype'; say "Reference type of arrays is ", reftype([]); =begin original This builtin function mechanism and the functions it provides are all currently B. We expect that C itself will cease to be experimental in the near future, but that individual functions in it may become stable on an ongoing basis. Other functions will be added to C over time. =end original この組み込み関数機構とそれが提供する関数は、現在の所全て B<実験的> です。 C 自体は近い将来実験的であるのをやめる予定ですが、 その中の個々の関数は現行の基準で安定版になる予定です。 その他の関数は、時間とともに C に追加される予定です。 =begin original For details, see L, but here's a summary of builtin functions in v5.36: =end original 詳しくは L を参照してください; しかし、以下は v5.36 の組み込み関数の要約です: =over 4 =item builtin::trim =begin original This function treats its argument as a string, returning the result of removing all white space at its beginning and ending. =end original この関数は、引数を文字列として扱い、 その先頭と末尾の空白を削除した結果を返します。 =item builtin::indexed =begin original This function returns a list twice as big as its argument list, where each item is preceded by its index within that list. This is primarily useful for using the new C syntax with multiple iterator variables to iterate over an array or list, while also tracking the index of each item: =end original この関数は、引数リストの 2 倍の大きさのリストを返します; それぞれのアイテムは、リストの中のインデックスが前に付きます。 これは主に、配列やリストに対して、ここのアイテムのインデックスも 追跡しながら反復するために、 複数の反復子変数を使うという、 新しい C 文法 を使うときに有効です: use builtin 'indexed'; foreach my ($index, $val) (indexed @array) { ... } =item builtin::true, builtin::false, builtin::is_bool =begin original C and C return boolean true and false values. Perl is still perl, and doesn't have strict typing of booleans, but these values will be known to have been created as booleans. C will tell you whether a value was known to have been created as a boolean. =end original C と C は、ブール値の真と偽の値を返します。 Perl は perl のままで、ブール値の厳密な型はありませんが、 これらの値はブール値として作られたことを知っています。 C は、ある値がブール値として作られたということが 分かっているかどうかを返します。 =item builtin::weaken, builtin::unweaken, builtin::is_weak =begin original These functions will, respectively: weaken a reference; strengthen a reference; and return whether a reference is weak. (A weak reference is not counted for garbage collection purposes. See L.) These can take the place of some similar routines in L. =end original これらの関数はそれぞれ次のことを行います: リファレンスを弱める; リファレンスを強める; リファレンスが弱いかどうかを返す。 (弱いリファレンスは、ガベージコレクションの目的では考慮されません。 L を参照してください。) これらは L にある似たようなルーチンの代わりになります。 =item builtin::blessed, builtin::refaddr, builtin::reftype =begin original These functions provide more data about references (or non-references, actually!) and can take the place of similar routines found in L. =end original これらの関数は、リファレンス(実際には非リファレンスも!)に関する さらなる情報を提供し、L にある似たようなルーチンの 代わりになります。 =item builtin::ceil, builtin::floor =begin original C returns the smallest integer greater than or equal to its argument. C returns the largest integer less than or equal to its argument. These can take the place of similar routines found in L. =end original C は、引数の値以上の最小の整数を返します。 C は、引数の値以下の最大の整数を返します。 これらは L にある似たような関数を置き換えられます。 =back =head2 C blocks (experimental) (C ブロック (実験的) =begin original This release adds support for C blocks, which are blocks of code prefixed by the C modifier. They provide a section of code which runs at a later time, during scope exit. =end original このリリースでは、C 修飾子を前置したコードのブロックである C ブロックの対応が追加されました。 これらは後で、スコープの終了時に実行されるコード節を提供します。 =begin original In brief, when a C block is reached at runtime, its body is set aside to be run when the enclosing scope is exited. It is unlike a UNITCHECK (among other reasons) in that if the block I the C block is exited before the block is reached, it will not be run. =end original 手短に言うと、実行時に C ブロックに到達したとき、 その中身は、囲んでいるスコープが終了したときに実行できるように取って 置かれます。 (他にも理由はありますが) C ブロックを I<含んでいる> ブロックが、 そのブロックに到達する前に終了した場合、実行されない、という点で、 UNITCHECK と異なります。 =begin original C blocks can be used to take the place of "scope guard" objects where an object is passed a code block to be run by its destructor. =end original C ブロックは、オブジェクトのデストラクタによって実行される コードブロックを渡される「スコープガード」オブジェクトを 置き換えることができます。 =begin original For more information, see L. =end original さらなる情報については、L を参照してください。 =head2 try/catch can now have a C block (experimental) (try/catch は C を使えるようになりました (実験的)) =begin original The experimental C/C syntax has been extended to support an optional third block introduced by the C keyword. =end original 実験的な C/C 構文は、C キーワードで導入される オプションの 3 番目のブロックに対応するように拡張されました。 try { attempt(); print "Success\n"; } catch ($e) { print "Failure\n"; } finally { print "This happens regardless\n"; } =begin original This provides code which runs at the end of the C/C construct, even if aborted by an exception or control-flow keyword. They are similar to C blocks. =end original これは、C/C 構文の最後に、 たとえ例外または制御フローキーワードによって中断されても、 実行するコードを提供します。 これらは C ブロックに似ています。 =begin original For more information, see L. =end original さらなる情報については、L を 参照してください。 =head2 non-ASCII delimiters for quote-like operators (experimental) (クォート風演算子での非 ASCII 区切り文字 (実験的)) =begin original Perl traditionally has allowed just four pairs of string/pattern delimiters: S> S> S> and S >>>, all in the ASCII range. Unicode has hundreds more possibilities, and using this feature enables many of them. When enabled, you can say S> for example, or S>. See L for details. =end original Perl は伝統的に文字列/パターンの区切り文字として 4 組だけを 許していました: S>, S>, S>, S >>> で、全て ASCII の範囲です。 Unicode にはさらに数百の可能性があり、 この機能を使うことでその多くを有効にします。 有効にすると、例えば S> や S> のように できます。 詳しくは L を 参照してください。 =head2 @_ is now experimental within signatured subs (@_ はシグネチャサブルーチンの中では実験的になりました) =begin original Even though subroutine signatures are now stable, use of the legacy arguments array (C<@_>) with a subroutine that has a signature I experimental, with its own warning category. Silencing the C warning category is not sufficient to dismiss this. The new warning is emitted with the category name C. =end original サブルーチンシグネチャは安定版になったにも関わらず、 シグネチャを持つサブルーチンで伝統的な引数配列 (C<@_>) を使うのは実験的 I<のまま> で、独自の警告カテゴリを持ちます。 C 警告カテゴリだけでは これを抑制するには不十分です。 新しい警告は C という カテゴリ名で出力されます。 =begin original Any subroutine that has a signature and tries to make use of the defaults argument array or an element thereof (C<@_> or C<$_[INDEX]>), either explicitly or implicitly (such as C or C with no argument) will provoke a warning at compile-time: =end original シグネチャを持っていて、デフォルト引き数配列またはその要素 (C<@_> または C<$_[INDEX]>) を、明示的または (引数なしの C または C のように) 暗黙的に使おうとするサブルーチンは、コンパイル時に警告を発生させます: use v5.36; sub f ($x, $y = 123) { say "The first argument is $_[0]"; } =begin original Z<> =end original Z<> Use of @_ in array element with signatured subroutine is experimental at file.pl line 4. =begin original The behaviour of code which attempts to do this is no longer specified, and may be subject to change in a future version. =end original これをしようとするコードの振る舞いはもはや不定で、 将来のバージョンで変わるかもしれません。 =head1 Incompatible Changes (互換性のない変更) =head2 A physically empty sort is now a compile-time error (物理的に空のソートはコンパイル時エラーになりました) @a = sort @empty; # unaffected @a = sort; # now a compile-time error @a = sort (); # also a compile-time error =begin original A bare sort used to be a weird way to create an empty list; now it croaks at compile time. This change is intended to free up some of the syntax space for possible future enhancements to C. =end original 裸のソートは、空リストを作るための奇妙な方法でした; これはコンパイル時に croak するようになりました。 この変更は、将来 C で行うかもしれない拡張のために文法上の空きを 作っておくためのものです。 =head1 Deprecations (廃止予定) =head2 C (where VERSION is below v5.11) after C is deprecated (C の後での C (VERSION は v5.11 より前) は廃止予定です) =begin original When in the scope of C or later, a C line where I is lower than v5.11 will now issue a warning: =end original C 以降のスコープ内では、 C の行 (I は v5.11 未満) は警告を出すようになりました: Downgrading a use VERSION declaration to below v5.11 is deprecated =begin original For example: =end original 例えば: use v5.14; say "The say statement is permitted"; use v5.8; # This will print a warning print "We must use print\n"; =begin original This is because the Perl team plans to change the behavior in this case. Since Perl v5.12 (and parts of v5.11), strict is enabled I. In other words: =end original これは、Perl チームはこの場合の振る舞いを変更する計画があるからです。 Perl v5.12 (および v5.11 の一部) から、 strict は I<事前に無効にされていない限り> 有効になります。 言い換えると: no strict; use v5.12; # will not enable strict, because "no strict" preceded it $x = 1; # permitted, despite no "my" declaration =begin original In the future, this behavior will be eliminated and C will I enable strict for versions v5.12 and later. =end original 将来、この振る舞いは取り除かれ、 C は、バージョン v5.12 以降の場合は、I<常に> strict を 有効にします。 =begin original Code which wishes to mix versions in this manner should use lexical scoping with block syntax to ensure that the differently versioned regions remain lexically isolated. =end original この方法でバージョンを混ぜたいコードは、 異なったバージョンの範囲がレキシカルに確実に分離されるように、 ブロック文法をによるレキシカルスコープを使うべきです。 { use v5.14; say "The say statement is permitted"; } { use v5.8; # No warning is emitted print "We must use print\n"; } =begin original Of course, this is probably not something you ever need to do! If the first block compiles, it means you're using perl v5.14.0 or later. =end original もちろん、これはおそらくあなたが必要なものではないでしょう! 最初のブロックがコンパイルされると、あなたは perl v5.14.0 以降を 使うということです。 =head1 Performance Enhancements (性能改善) =over 4 =item * =begin original We now probe for compiler support for C11 thread local storage, and where available use this for "implicit context" for XS extensions making API calls for a threaded Perl build. This requires fewer function calls at the C level than POSIX thread specific storage. We continue to use the the pthreads approach if the C11 approach is not available. =end original C11 スレッドローカルストレージのコンパイラ対応を調査して、 利用可能な場合は、 スレッド付き Perl ビルドのための API 呼び出しを行う XS 拡張のための「暗黙のコンテキスト」でこれを使います。 これは、POSIX スレッド固有のストレージに比べて、C レベルの関数呼び出しを ほとんど必要としません。 C11 の手法が利用できない場合は pthreads の手法を使い続けます。 =begin original F run with the defaults will build an unthreaded Perl (which is slightly faster), but most operating systems ship a threaded Perl. =end original デフォルトで実行した F は (少し高速な) スレッドなし Perl を ビルドしますが、ほとんどのオペレーティングシステムはスレッド付き Perl を出荷しています。 =item * =begin original Perl can now be configured to no longer allocate keys for large hashes from the shared string table. =end original 大きなハッシュに対してはもはや共有文字列テーブルから キーを割り当てないように設定できるようになりました。 =begin original The same internal datatype (C) is used for all of =end original 次の全てについて同じ内部データ型 (C) が使われます: =over 4 =item * =begin original Symbol tables =end original シンボルテーブル =item * =begin original Objects (by default) =end original (デフォルトでは) オブジェクト =item * =begin original Associative arrays =end original 連想配列 =back =begin original The shared string table was originally added to improve performance for blessed hashes used as objects, because every object instance has the same keys, so it is an optimisation to share memory between them. It also makes sense for symbol tables, where derived classes will have the same keys (typically method names), and the OP trees built for method calls can also share memory. The shared string table behaves roughly like a cache for hash keys. =end original 共有文字列テーブルは本来、オブジェクトとして使われる bless されたハッシュの 性能向上のために追加されました; 全てのオブジェクト実体は同じキーを持つので、それらの間でメモリを共有する 最適化があるからです。 これはまた、派生クラスが同じキー (典型的にはメソッド名) を持つ シンボルテーブルにも意味があり、またメソッド呼び出しのために 構築された OP 木もメモリを共有できます。 共有文字列テーブルは、おおまかにはハッシュキーのキャッシュのように 振る舞います。 =begin original But for hashes actually used as associative arrays - mapping keys to values - typically the keys are not re-used in other hashes. For example, "seen" hashes are keyed by object IDs (or addresses), and logically these keys won't repeat in other hashes. =end original しかしハッシュについては実際には - キーに値をマッピングする - 連想配列 として 使われます; 典型的にはキーは他のハッシュで再利用されません。 例えば、"seen" ハッシュはオブジェクト ID (またはアドレス) をキーとして使い、 論理的にはこれらのキーは他のハッシュで繰り返されません。 =begin original Storing these "used just once" keys in the shared string table increases CPU and RAM use for no gain. For such keys the shared string table behaves as a cache with a 0% hit rate. Storing all the keys there increases the total size of the shared string table, as well as increasing the number of times it is resized as it grows. B - in any environment that has "copy on write" memory for child process (such as a pre-forking server), the memory pages used for the shared string table rapidly need to be copied as the child process manipulates hashes. Hence if most of the shared string table is such that keys are used only in one place, there is no benefit from re-use within the perl interpreter, but a high cost due to more pages for the OS to copy. =end original これらの「1 回だけ使う」キーを共有文字列テーブルに保管すると、 利点なしに CPU と RAM の使用量が増加します。 このようなキーに対して、共有文字列テーブルは、ヒット率 0% の キャッシュのように振る舞います。 ここに全てのキーを保存すると、共有文字列テーブルの合計サイズが増加し、 それに連れてサイズ変更する回数も増加します。 B<さらに悪いことに> - (プリフォークサーバのように) 子プロセスのための「コピーオンライト」メモリを持つ環境の場合、 共有文字列テーブルで使われるメモリページは、子プロセスがハッシュを 操作するにつれて急速にコピーする必要性が発生します。 従って、共有文字列テーブルのほとんどが そのような 1 ヶ所でしか使われないキーの場合、 perl インタプリタの中で再利用する利点はなく、 より多くのページを OS がコピーすることによる高いコストがあることになります。 =begin original The perl interpreter can now be Configured to disable shared hash keys for "large" hashes (that are neither objects nor symbol tables). To do so, add C<-Accflags='-DPERL_USE_UNSHARED_KEYS_IN_LARGE_HASHES'> to your F options. "Large" is a heuristic -- currently the heuristic is that sharing is disabled when adding a key to a hash triggers allocation of more storage, and the hash has more than 42 keys. =end original perl インタプリタは、(オブジェクトやシンボルテーブルでない)「大きな」 ハッシュに対して共有ハッシュキーを無効化するように設定できるようになりました。 そうするためには、F に C<-Accflags='-DPERL_USE_UNSHARED_KEYS_IN_LARGE_HASHES'> を追加してください。 「大きな」は発見的です -- 現在の所、 ハッシュへのキーの追加が追加のストレージの割り当てを引き起こし、 ハッシュが 42 以上のキーを持つときに、共有は無効化されます。 =begin original This B cause slightly increased memory usage for programs that create (unblessed) data structures that contain multiple large hashes that share the same keys. But generally our testing suggests that for the specific cases described it is a win, and other code is unaffected. =end original これは、同じキーを共有する複数の大きなハッシュを含む (bless されない) データ構造を作るプログラムでは、メモリ使用量が少し増える B<かもしれません>。 しかし一般的に、私たちによるテストは、先に記述した特定の条件では 利点が上回り、それ以外のコードでは影響がないことを示唆しています。 =item * =begin original In certain scenarios, creation of new scalars is now noticeably faster. =end original ある種のシナリオでは、新しいスカラの作成は著しく高速なりました。 =begin original For example, the following code is now executing ~30% faster: =end original 例えば、次のコードは実行が約 30% 高速になりました: $str = "A" x 64; for (0..1_000_000) { @svs = split //, $str } =begin original (You can read more about this one in L<[perl #19414]|https://github.com/Perl/perl5/pull/19414>.) =end original (これに関する詳細は L<[perl #19414]|https://github.com/Perl/perl5/pull/19414> で読めます。) =back =head1 Modules and Pragmata (モジュールとプラグマ) =head2 Updated Modules and Pragmata (更新されたモジュールとプラグマ) =over 4 =item * =begin original L has been upgraded from version 2.38 to 2.40. =end original L はバージョン 2.38 から 2.40 に更新されました。 =item * =begin original L has been upgraded from version 1.01 to 1.02. =end original L はバージョン 1.01 から 1.02 に更新されました。 =item * =begin original L has been upgraded from version 0.33 to 0.34. =end original L はバージョン 0.33 から 0.34 に更新されました。 =item * =begin original L has been upgraded from version 1.82 to 1.83. =end original L はバージョン 1.82 から 1.83 に更新されました。 =item * =begin original L has been upgraded from version 1.004 to 1.006. =end original L はバージョン 1.004 から 1.006 に更新されました。 =item * =begin original L has been upgraded from version 1.56 to 1.64. =end original L はバージョン 1.56 から 1.64 に更新されました。 =item * =begin original L has been upgraded from version 0.51 to 0.65. =end original L はバージョン 0.51 から 0.65 に更新されました。 =item * =begin original L has been upgraded from version 1.48 to 1.50. =end original L はバージョン 1.48 から 1.50 に更新されました。 =item * =begin original L has been upgraded from version 2.101 to 2.103. =end original L はバージョン 2.101 から 2.103 に更新されました。 =item * =begin original L has been upgraded from version 2.101 to 2.105. =end original L はバージョン 2.101 から 2.105 に更新されました。 =item * =begin original L has been upgraded from version 2.28 to 2.33. =end original L はバージョン 2.28 から 2.33 に更新されました。 =item * =begin original L has been upgraded from version 2.179 to 2.184. =end original L はバージョン 2.179 から 2.184 に更新されました。 =item * =begin original L has been upgraded from version 1.855 to 1.857. =end original L はバージョン 1.855 から 1.857 に更新されました。 =item * =begin original L has been upgraded from version 1.30 to 1.32. =end original L はバージョン 1.30 から 1.32 に更新されました。 =item * =begin original L has been upgraded from version 3.62 to 3.68. =end original L はバージョン 3.62 から 3.68 に更新されました。 =item * =begin original L has been upgraded from version 1.37 to 1.39. =end original L はバージョン 1.37 から 1.39 に更新されました。 =item * =begin original L has been upgraded from version 1.19 to 1.20. =end original L はバージョン 1.19 から 1.20 に更新されました。 =item * =begin original L has been upgraded from version 1.50 to 1.52. =end original L はバージョン 1.50 から 1.52 に更新されました。 =item * =begin original L has been upgraded from version 3.08 to 3.17. =end original L はバージョン 3.08 から 3.17 に更新されました。 =item * =begin original L has been upgraded from version 1.33 to 1.36. =end original L はバージョン 1.33 から 1.36 に更新されました。 =item * =begin original L has been upgraded from version 0.024 to 0.028. =end original L はバージョン 0.024 から 0.028 に更新されました。 =item * =begin original L has been upgraded from version 5.76 to 5.77. =end original L はバージョン 5.76 から 5.77 に更新されました。 =item * =begin original L has been upgraded from version 7.62 to 7.64. =end original L はバージョン 7.62 から 7.64 に更新されました。 =item * =begin original L has been upgraded from version 1.10 to 1.11. =end original L はバージョン 1.10 から 1.11 に更新されました。 =item * =begin original L has been upgraded from version 3.43 to 3.45. =end original L はバージョン 3.43 から 3.45 に更新されました。 =item * =begin original L has been upgraded from version 3.43 to 3.45. =end original L はバージョン 3.43 から 3.45 に更新されました。 =item * =begin original L has been upgraded from version 1.14 to 1.15. =end original L はバージョン 1.14 から 1.15 に更新されました。 =item * =begin original L has been upgraded from version 1.64 to 1.72. =end original L はバージョン 1.64 から 1.72 に更新されました。 =item * =begin original L has been upgraded from version 1.1006 to 1.1007. =end original L はバージョン 1.1006 から 1.1007 に更新されました。 =item * =begin original L has been upgraded from version 2.35 to 2.39. =end original L はバージョン 2.35 から 2.39 に更新されました。 =item * =begin original L has been upgraded from version 1.00 to 1.04. =end original L はバージョン 1.00 から 1.04 に更新されました。 =item * =begin original L has been upgraded from version 1.39 to 1.40. =end original L はバージョン 1.39 から 1.40 に更新されました。 =item * =begin original L has been upgraded from version 1.33 to 1.37. =end original L はバージョン 1.33 から 1.37 に更新されました。 =item * =begin original L has been upgraded from version 3.80 to 3.84. =end original L はバージョン 3.80 から 3.84 に更新されました。 =item * =begin original L has been upgraded from version 1.09 to 1.12. =end original L はバージョン 1.09 から 1.12 に更新されました。 =item * =begin original L has been upgraded from version 1.52 to 1.53. =end original L はバージョン 1.52 から 1.53 に更新されました。 =item * =begin original L has been upgraded from version 1.19 to 1.23. =end original L はバージョン 1.19 から 1.23 に更新されました。 =item * =begin original L has been upgraded from version 0.25 to 0.28. =end original L はバージョン 0.25 から 0.28 に更新されました。 =item * =begin original L has been upgraded from version 1.21 to 1.26. =end original L はバージョン 1.21 から 1.26 に更新されました。 =item * =begin original L has been upgraded from version 0.076 to 0.080. =end original L はバージョン 0.076 から 0.080 に更新されました。 =item * =begin original L has been upgraded from version 0.19 to 0.21. =end original L はバージョン 0.19 から 0.21 に更新されました。 =item * =begin original L has been upgraded from version 0.0609 to 0.0610. =end original L はバージョン 0.0609 から 0.0610 に更新されました。 =item * =begin original L has been upgraded from version 1.46 to 1.50. =end original L はバージョン 1.46 から 1.50 に更新されました。 =item * =begin original IO-Compress has been upgraded from version 2.102 to 2.106. =end original IO-Compress はバージョン 2.102 から 2.106 に更新されました。 =item * =begin original L has been upgraded from version 1.21 to 1.22. =end original L はバージョン 1.21 から 1.22 に更新されました。 =item * =begin original L has been upgraded from version 4.06 to 4.07. =end original L はバージョン 4.06 から 4.07 に更新されました。 =item * =begin original libnet has been upgraded from version 3.13 to 3.14. =end original libnet はバージョン 3.13 から 3.14 に更新されました。 =item * =begin original L has been upgraded from version 1.29 to 1.31. =end original L はバージョン 1.29 から 1.31 に更新されました。 =item * =begin original L has been upgraded from version 1.999818 to 1.999830. =end original L はバージョン 1.999818 から 1.999830 に更新されました。 =item * =begin original L has been upgraded from version 0.5009 to 0.5012. =end original L はバージョン 0.5009 から 0.5012 に更新されました。 =item * =begin original L has been upgraded from version 0.2614 to 0.2621. =end original L はバージョン 0.2614 から 0.2621 に更新されました。 =item * =begin original L has been upgraded from version 5.20210520 to 5.20220520. =end original L はバージョン 5.20210520 から 5.20220520 に更新されました。 =item * =begin original L has been upgraded from version 1.25_001 to 1.26. =end original L はバージョン 1.25_001 から 1.26 に更新されました。 =item * =begin original L has been upgraded from version 0.68 to 0.69. =end original L はバージョン 0.68 から 0.69 に更新されました。 =item * =begin original L has been upgraded from version 1.50 to 1.57. =end original L はバージョン 1.50 から 1.57 に更新されました。 =item * =begin original L has been upgraded from version 1.12 to 1.13. =end original L はバージョン 1.12 から 1.13 に更新されました。 =item * =begin original L has been upgraded from version 1.33 to 1.35. =end original L はバージョン 1.33 から 1.35 に更新されました。 =item * =begin original L has been upgraded from version 5.20210411 to 5.20210520. =end original L はバージョン 5.20210411 から 5.20210520 に更新されました。 =item * =begin original L has been upgraded from version 1.11 to 1.12. =end original L はバージョン 1.11 から 1.12 に更新されました。 =item * =begin original L has been upgraded from version 1.13 to 1.14. =end original L はバージョン 1.13 から 1.14 に更新されました。 =item * =begin original L has been upgraded from version 1.27 to 1.33. =end original L はバージョン 1.27 から 1.33 に更新されました。 =item * =begin original L has been upgraded from version 3.42 to 3.43. =end original L はバージョン 3.42 から 3.43 に更新されました。 =item * =begin original L has been upgraded from version 1.97 to 2.03. =end original L はバージョン 1.97 から 2.03 に更新されました。 =item * =begin original L has been upgraded from version 0.41 to 0.43. =end original L はバージョン 0.41 から 0.43 に更新されました。 =item * =begin original L has been upgraded from version 1.55 to 1.62. =end original L はバージョン 1.55 から 1.62 に更新されました。 =item * =begin original L has been upgraded from version 1.09 to 1.10. =end original L はバージョン 1.09 から 1.10 に更新されました。 =item * =begin original L has been upgraded from version 2.031 to 2.033. =end original L はバージョン 2.031 から 2.033 に更新されました。 =item * =begin original L has been upgraded from version 2.04 to 2.05. =end original L はバージョン 2.04 から 2.05 に更新されました。 =item * =begin original L has been upgraded from version 3.23 to 3.26. =end original L はバージョン 3.23 から 3.26 に更新されました。 =item * =begin original L has been upgraded from version 1.23 to 1.24. =end original L はバージョン 1.23 から 1.24 に更新されました。 =item * =begin original L has been upgraded from version 3.43 to 3.44. =end original L はバージョン 3.43 から 3.44 に更新されました。 =item * =begin original L has been upgraded from version 1.302183 to 1.302190. =end original L はバージョン 1.302183 から 1.302190 に更新されました。 =item * =begin original L has been upgraded from version 3.30 to 3.31. =end original L はバージョン 3.30 から 3.31 に更新されました。 =item * =begin original L has been upgraded from version 2013.0523 to 2021.0814. =end original L はバージョン 2013.0523 から 2021.0814 に更新されました。 =item * =begin original L has been upgraded from version 2013.0523 to 2021.0814. =end original L はバージョン 2013.0523 から 2021.0814 に更新されました。 =item * =begin original L has been upgraded from version 2.26 to 2.27. =end original L はバージョン 2.26 から 2.27 に更新されました。 =item * =begin original L has been upgraded from version 1.62 to 1.64. =end original L はバージョン 1.62 から 1.64 に更新されました。 =item * =begin original L has been upgraded from version 4.2 to 4.3. =end original L はバージョン 4.2 から 4.3 に更新されました。 =item * =begin original L has been upgraded from version 1.05 to 1.06. =end original L はバージョン 1.05 から 1.06 に更新されました。 =item * =begin original L has been upgraded from version 1.05 to 1.06. =end original L はバージョン 1.05 から 1.06 に更新されました。 =item * =begin original L has been upgraded from version 1.00 to 1.01. =end original L はバージョン 1.00 から 1.01 に更新されました。 =item * =begin original L has been upgraded from version 1.9767 to 1.9770. =end original L はバージョン 1.9767 から 1.9770 に更新されました。 =item * =begin original L has been upgraded from version 1.29 to 1.31. =end original L はバージョン 1.29 から 1.31 に更新されました。 =item * =begin original L has been upgraded from version 1.28 to 1.31. =end original L はバージョン 1.28 から 1.31 に更新されました。 =item * =begin original L has been upgraded from version 0.75 to 0.78. =end original L はバージョン 0.75 から 0.78 に更新されました。 =item * =begin original L has been upgraded from version 1.13 to 1.14. =end original L はバージョン 1.13 から 1.14 に更新されました。 =item * =begin original L has been upgraded from version 0.9928 to 0.9929. =end original L はバージョン 0.9928 から 0.9929 に更新されました。 =item * =begin original L has been upgraded from version 1.12 to 1.13. =end original L はバージョン 1.12 から 1.13 に更新されました。 =item * =begin original L has been upgraded from version 2.45 to 2.46. =end original L はバージョン 2.45 から 2.46 に更新されました。 =item * =begin original L has been upgraded from version 1.51 to 1.58. =end original L はバージョン 1.51 から 1.58 に更新されました。 =item * =begin original L has been upgraded from version 0.57 to 0.59. =end original L はバージョン 0.57 から 0.59 に更新されました。 =item * =begin original L has been upgraded from version 1.16 to 1.22. =end original L はバージョン 1.16 から 1.22 に更新されました。 =item * =begin original L has been upgraded from version 0.18 to 0.19. =end original L はバージョン 0.18 から 0.19 に更新されました。 =item * =begin original L has been upgraded from version 0.30 to 0.31. =end original L はバージョン 0.30 から 0.31 に更新されました。 =back =head1 Documentation (文書) =head2 New Documentation (新しい文書) =head3 F =begin original This document provides the process for administering an election or vote within the Perl Core Team. =end original この文書は、Perl Core Team の中での選挙や投票を運営する手続きを 提供しています。 =head2 Changes to Existing Documentation (既存の文書の変更) =begin original We have attempted to update the documentation to reflect the changes listed in this document. If you find any we have missed, open an issue at L. =end original 私たちはこの文書で挙げられた変更を反映するように文書を更新しようとしています。 もし抜けている物を発見したら、 L でイシューを開いてください。 =begin original Additionally, the following selected changes have been made: =end original それに加えて、以下のような変更が行われました。 =head3 L =over 4 =item * =begin original This has been cleaned up some, and more than 80% of the (previously many) undocumented functions have now either been documented or deemed to have been inappropriately marked as API. =end original いくつかの整理が行われ、(以前はたくさんあった) 文書化されていない関数の 80% 以上について、文書化されたか、不適切に API とされていたと みなすかが行われました。 =begin original As always, Patches Welcome! =end original いつも通り、パッチを歓迎します! =back =head3 L =over 4 =item * =begin original notes the new location for functions moved from L to L that are no longer intended to be used outside of core. =end original もはやコアの外側で使われることを想定していないため、L から L に移動した関数の新しい位置について記しました。 =back =head3 L =over 4 =item * =begin original notes the C<:win32> IO pseudolayer is removed (this happened in 5.35.2). =end original C<:win32> IO 疑似層が削除されたこと (これは 5.35.2 で起きました) を 記しました。 =back =head3 L =over 4 =item * =begin original The election process has been finetuned to allow the vote to be skipped if there are no more candidates than open seats. =end original 選挙手続きは、立候補者数が定数を超えない場合に投票を省略できるように 微調整されました。 =item * =begin original A special election is now allowed to be postponed for up to twelve weeks, for example until a normal election. =end original 特別投票は、最大 12 週間、例えば通常投票まで延期できることになりました。 =back =head3 L =over 4 =item * =begin original now notes that an invocant only needs to be an object or class name for method calls, not for subroutine references. =end original 呼び出し元は、メソッド呼び出しの場合にのみオブジェクトまたは クラス名である必要があり、サブルーチンリファレンスではそうでないことを 記しました。 =back =head3 L =over 4 =item * =begin original Updated to discourage the use of the /d regexp modifier. =end original /d 正規表現修飾子の使用を非推奨にするように更新しました。 =back =head3 L =over 4 =item * =begin original B<-?> is now a synonym for B<-h> =end original B<-?> は B<-h> の同義語になりました =item * =begin original B<-g> is now a synonym for B<-0777> =end original B<-g> は B<-0777> の同義語になりました =back =head1 Diagnostics (診断メッセージ) =begin original The following additions or changes have been made to diagnostic output, including warnings and fatal error messages. For the complete list of diagnostic messages, see L. =end original 次のような追加と変更が、警告や致命的エラーメッセージを含む診断出力に 行われました。 診断メッセージの完全な一覧については、L を参照してください。 =head2 New Diagnostics (新しい警告メッセージ) =head3 New Errors (新しいエラー) =over 4 =item * L =begin original (F) An attempt was made to jump out of the scope of a defer block by using a control-flow statement such as C, C or a loop control. This is not permitted. =end original (F) C, C やループ制御のようなフロー制御文を使って、 遅延ブロックのスコープから飛び出そうとしました。 これは許されていません。 =item * L (for scalar assignment to C) =begin original Attempting to perform a scalar assignment to C, for example via C, previously triggered a fatal runtime error with the message "L." It is more helpful to detect such attempted assignments prior to runtime, so they are now compile time errors, resulting in the message "Can't modify undef operator in scalar assignment". =end original C のように、C にスカラを代入しようとしました; これは以前は "L" という致命的な実行時エラーを引き起こしていました。 このような代入の試行を実行時の前に検出するのはより有用なので、 これはコンパイル時エラーになり、 "Can't modify undef operator in scalar assignment" という メッセージなりました。 =item * L =begin original The parser failed an internal consistency check while trying to parse a C loop. =end original パーサは、C ループをパースしようとしている間の内部一貫性チェックに 失敗しました。 =back =head3 New Warnings (新しい警告) =over 4 =item * L =begin original A call is being made to a function in the C namespace, which is currently experimental. =end original C 名前空間の関数を呼び出しました; これは現在の所実験的です。 =item * L =begin original The C block modifier is experimental. If you want to use the feature, disable the warning with C, but know that in doing so you are taking the risk that your code may break in a future Perl version. =end original The C ブロック修飾子は実験的です。 この機能を使いたいけれども、そうすることで将来の Perl バージョンで 変更されるかもしれない実験的機能を使うリスクを取ることを分かっている場合は、 C で警告を無効にしてください。 =item * L =begin original This warning is emitted on a C statement that requests a version below v5.11 (when the effects of C would be disabled), after a previous declaration of one having a larger number (which would have enabled these effects) =end original この警告は、(C が有効のとき) 先により大きい値で宣言した後、 (C が無効のとき) v5.11 より小さいバージョンを要求する C 文で出力されます。 =item * L =begin original This warning is emitted if you use C to iterate multiple values at a time. This syntax is currently experimental and its behaviour may change in future releases of Perl. =end original この警告は、一度に複数の値を繰り返すために C を使うと発生します。 この文法は現在の所実験的で、その振る舞いは将来のリリースの Perl で 変更されるかもしれません。 =item * L =begin original An expression that implicitly involves the C<@_> arguments array was found in a subroutine that uses a signature. =end original 暗黙に C<@_> 引数に関連する式が、シグネチャを使うサブルーチン内に 見つかりました。 =item * L =begin original An expression involving the C<@_> arguments array was found in a subroutine that uses a signature. =end original C<@_> 引数配列に関係する式が、シグネチャを使っているサブルーチンの中で 見つかりました。 =item * L =begin original Attempts to put wide characters into the program name (C<$0>) now provoke this warning. =end original プログラム名 (C<$0>) にワイド文字を入れようとすると、 この警告が出るようになりました。 =back =head2 Changes to Existing Diagnostics (既存の診断メッセージの変更) =over 4 =item * L<'E' does not take a repeat count in %s|perldiag/"'/' does not take a repeat count in %s"> =begin original This warning used to not include the C. =end original この警告は、C を含んでいませんでした。 =item * L =begin original Localized subroutine redefinitions no longer trigger this warning. =end original ローカル化されたサブルーチンの再定義は、もはやこの警告を 引き起こさなくなりました。 =item * Ltarg %d:%d"|perldiag/"panic: unexpected constant lvalue entersub entry via type/targ %d:%d"> now has a panic prefix =begin original This makes it consistent with other checks of internal consistency when compiling a subroutine. =end original これは、サブルーチンをコンパイルするときのその他の内部一貫性のチェックと 一貫性を持つようになりました。 =item * L is now in the new C category. =begin original When C is used in scalar context, it provokes a warning that doing this is not useful. This warning used to be in the C category. A new category for warnings about scalar context has now been added, called C. =end original C がスカラコンテキストで使われると、 そうすることは役に立たないという警告が発生します。 この警告は C カテゴリにありました。 C という名前の、スカラコンテキストに関する新しい警告が 追加されました。 =item * =begin original Removed a number of diagnostics =end original 多くの診断メッセージを削除 =begin original Many diagnostics that have been removed from the perl core across many years have now I been removed from the documentation. =end original 何年間にもわたって perl コアから削除されてきた多くの診断メッセージが、 文書 I<からも> 削除されました。 =back =head1 Configuration and Compilation (設定とコンパイル) =over 4 =item * =begin original The Perl C source code now uses some C99 features, which we have verified are supported by all compilers we target. This means that Perl's headers now contain some code that is legal in C99 but not C89. =end original Perl C ソースコードは、私たちがターゲットとしている全てのコンパイラが 対応していることが確認されたいくつかの C99 機能を使うようになりました。 つまり、Perl のヘッダは C99 では正当だけれども C89 では正当でない コードを含むようになりました。 =begin original This may cause problems for some XS modules that unconditionally add C<-Werror=declaration-after-statement> to their C compiler flags if compiling with gcc or clang. Earlier versions of Perl support long obsolete compilers that are strict in rejecting certain C99 features, particularly mixed declarations and code, and hence it makes sense for XS module authors to audit that their code does not violate this. However, doing this is now only possible on these earlier versions of Perl, hence these modules need to be changed to only add this flag for C<<$] < 5.035005>>. =end original これは、gcc や clang でコンパイルするときに C<-Werror=declaration-after-statement> を無条件に C コンパイラフラグに 追加している、一部の XS モジュールで問題を引き起こすかもしれません。 初期のバージョンの Perl は、ある種の C99 の機能、 特に宣言とコードの混合を厳密に拒否するとても古いコンパイラに 対応していたので、 XS モジュール作者にとって、自分のコードがこれに違反していないかを 検査することには意味があります。 しかし、そうすることはこれらの初期のバージョンの Perl でのみ可能なので、 それらのモジュールはこのフラグを C<<$] < 5.035005>> の場合でのみ 追加するように変更する必要があります。 =item * =begin original The makedepend step is now run in parallel by using make =end original makedepend のステップは make を使うことで並列に実行されるようになりました =begin original When using MAKEFLAGS=-j8, this significantly reduces the time required for: =end original MAKEFLAGS=-j8 を使うと、次のものに必要な時間が大幅に削減されます: sh ./makedepend MAKE=make cflags =item * =begin original F now tests whether C<< #include >> is required to use the POSIX 1003 thread-safe locale functions or some related extensions. This prevents problems where a non-public F is removed in a library update, or F isn't intended for public use. (github L<#18936|https://github.com/Perl/perl5/pull/18936>) =end original F は、POSIX 1003 のスレッドセーフなロケール関数や 関連する拡張を使うのに C<< #include >> が必要かどうかを テストするようになりました。 ライブラリ更新で非公式の F が削除されたり、 F が公的な使用を想定していない場合の問題を防ぎます。 (github L<#18936|https://github.com/Perl/perl5/pull/18936>) =back =head1 Testing (テスト) =begin original Tests were added and changed to reflect the other additions and changes in this release. =end original このリリースのその他の追加と変更を反映してテストが追加、変更されました。 =head1 Platform Support (プラットフォーム対応) =head2 Windows =over 4 =item * =begin original Support for old MSVC++ (pre-VC12) has been removed =end original 古い MSVC++ (VC12 以前) の対応が削除されました =begin original These did not support C99 and hence can no longer be used to compile perl. =end original これらは C99 に対応していないので、もはや perl をコンパイルするのには 使えません。 =item * =begin original Support for compiling perl on Windows using Microsoft Visual Studio 2022 (containing Visual C++ 14.3) has been added. =end original (Visual C++ 14.3 を含む) Microsoft Visual Studio 2022 を 使った Windows での perl のコンパイルへの対応が追加されました。 =item * =begin original The :win32 IO layer has been removed. This experimental replacement for the :unix layer never reached maturity in its nearly two decades of existence. =end original :win32 IO 層が削除されました。 この実験的な :unix 層の置換物は、約 20 年存在していた間にも 成熟することはありませんでした。 =back =head2 VMS =over 4 =item C on VMS returns consistent results =begin original On VMS entries in the C<%ENV> hash are loaded from the OS environment on first access, hence the first iteration of C<%ENV> requires the entire environment to be scanned to find all possible keys. This initialisation had always been done correctly for full iteration, but previously was not happening for C<%ENV> in scalar context, meaning that C would return 0 if called before any other C<%ENV> access, or would only return the count of keys accessed if there had been no iteration. =end original VMS では、C<%ENV> ハッシュのエントリは 最初のアクセスで OS 環境から読み込まれるので、 C<%ENV> の最初の反復は、全ての可能なキーを見つけるために環境変数全体が スキャンされる必要がありました。 この初期化は完全な反復では常に正しく行われていましたが、 以前はスカラコンテキストでの C<%ENV> では起きていなかったので、 C とすると、それより前に C<%ENV> アクセスがないと 0 を返し、 反復がない場合、アクセスされたキーの数だけを返していました。 =begin original These bugs are now fixed - C<%ENV> and C in scalar context now return the correct result - the count of all keys in the environment. =end original これらのバグは修正されました; スカラコンテキストでの C<%ENV> と C は正しい結果、つまり環境変数の全てのキーの数を 返すようになりました。 =back =head2 Discontinued Platforms (廃止されたプラットフォーム) =over 4 =item AT&T UWIN =begin original UWIN is a UNIX compatibility layer for Windows. It was last released in 2012 and has been superseded by Cygwin these days. =end original UWIN は Windows のための UNIX 互換層です。 最後のリリースは 2012 年で、最近は Cygwin に置き換えられています。 =item DOS/DJGPP =begin original DJGPP is a port of the GNU toolchain to 32-bit x86 systems running DOS. The last known attempt to build Perl on it was on 5.20, which only got as far as building miniperl. =end original DJGPP は、DOS で動作する 32-bit x86 システムへの GNU ツールチェーンの移植です。 最後に知られている、ここで Perl をビルドしようとする試みは 5.20 に 対してのもので、miniperl をビルドしただけでした。 =item NetWare =begin original Support code for Novell NetWare has been removed. NetWare was a server operating system by Novell. The port was last updated in July 2002, and the platform itself in May 2009. =end original Novell NetWare の対応コードは削除されました。 NetWare は Novell によるサーバオペレーティングシステムです。 この移植版が最後に更新されたのは 2002 年 7 月で、 プラットフォーム自体も 2009 年 5 月です。 =begin original Unrelated changes accidentally broke the build for the NetWare port in September 2009, and in 12 years no-one has reported this. =end original 2009 年 9 月に、無関係な変更が偶然 NetWare でのビルドを壊していましたが、 12 年間誰もこれを報告しませんでした。 =back =head2 Platform-Specific Notes (プラットフォーム固有の注意) =over 4 =item z/OS =begin original This update enables us to build EBCDIC static/dynamic and 31-bit/64-bit addressing mode Perl. The number of tests that pass is consistent with the baseline before these updates. =end original この更新では、EBCDIC 静的/動的と 31 ビット/64 ビットアドレッシング モードの Perl をビルドできるようになりました。 通過するテストの数は、これらの更新の前の基準と一貫しています。 =begin original These changes also provide the base support to be able to provide ASCII static/dynamic and 31-bit/64-bit addressing mode Perl. =end original これらの変更は、ASCII 静的/動的と 31 ビット/64 ビットアドレッシング モードの Perl を提供できる基本的な機能を提供します。 =begin original The z/OS (previously called OS/390) README was updated to describe ASCII and EBCDIC builds. =end original (以前は OS/390 と呼ばれていた) z/OS の README は、 ASCII ビルドと EBCDIC ビルドを記述するために更新されました。 =back =head1 Internal Changes (内部の変更) =over 4 =item * =begin original Since the removal of PERL_OBJECT in Perl 5.8, PERL_IMPLICIT_CONTEXT and MULTIPLICITY have been synonymous and they were being used interchangeably. To simplify the code, all instances of PERL_IMPLICIT_CONTEXT have been replaced with MULTIPLICITY. =end original Perl 5.8 での PERL_OBJECT の削除以降、PERL_IMPLICIT_CONTEXT と MULTIPLICITY は同義語で、互いに交換可能になっていました。 コードの単純化のために、全ての PERL_IMPLICIT_CONTEXT は MULTIPLICITY に置き換えられました。 =begin original PERL_IMPLICIT_CONTEXT will remain defined for compatibility with XS modules. =end original XS モジュールの互換性のために、PERL_IMPLICIT_CONTEXT も定義されたままです。 =item * =begin original The API constant formerly named C, indicating list context, has now been renamed to a more accurate C. A compatibilty macro C has been added to allow existing code to work unaffected. New code should be written using the new constant instead. This is supported by C version 3.63. =end original リストコンテキストを示すための、以前は C という名前だった API 定数は、より正確な C に名前が変更されました。 既存のコードが影響なく動作できるようにするために、 互換性のためのマクロ C が追加されました。 しかし、新しいコードは新しい定数を使って書かれるべきです。 これは C バージョン 3.63 で対応されました。 =item * =begin original Macros have been added to F to facilitate version comparisons: C, C, C and C. =end original バージョン比較を助けるためのマクロが F に追加されました: C, C, C, C。 =begin original Inline functions have been added to F to determine the position of the least significant 1 bit in a word: C and C. =end original ワードの中の最下位の 1 のビットの位置を決定するためのインライン関数が F に追加されました: C と C。 =item * =begin original C has been deleted. This has been marked as deprecated since v5.14.0 (released in 2011), and is not used by any code on CPAN. =end original C は削除されました。 これは (2011 年リリースの) v5.14.0 から廃止予定とされていて、 CPAN で使っているコードはありません。 =item * =begin original Added new boolean macros and functions. See L for related information and L for documentation. =end original 新しいブール値マクロと関数が追加されました。 関連する情報については L を、 文書については L を参照してください。 =over 4 =item * sv_setbool =item * sv_setbool_mg =item * SvIsBOOL =back =item * =begin original Added 4 missing functions for dealing with RVs: =end original RVs を扱うための四つの不足していた関数が追加されました: =over 4 =item * sv_setrv_noinc =item * sv_setrv_noinc_mg =item * sv_setrv_inc =item * sv_setrv_inc_mg =back =item * =begin original C's two failure modes now provide distinct messages. =end original C の二つの失敗モードは、異なるメッセージを 出力するようになりました。 =item * =begin original Memory for hash iterator state (C) is now allocated as part of the hash body, instead of as part of the block of memory allocated for the main hash array. =end original ハッシュ反復子状態 (C) のメモリは、 メインハッシュ配列のために割り当てられたメモリブロックの一部ではなく、 ハッシュ本体の一部として割り当てられるようになりました。 =item * =begin original A new phase_name() interface provides access to the name for each interpreter phase (i.e., PL_phase value). =end original 新しい phase_name() インターフェースは、それぞれのインタプリタフェーズの 名前 (つまり PL_phase の値) へのアクセスを提供します。 =item * =begin original The C behavior of C has changed for EBCDIC. =end original C の C の振る舞いは EBCDIC で変更されました。 =item * =begin original New equality-test functions C and C have been added, along with C<..._flags>-suffixed variants. These expose a simple and consistent API to perform numerical or string comparison which is aware of operator overloading. =end original 新しい等価性テスト関数である C と C が、 C<..._flags> 接尾辞付きの変種と共に追加されました。 これらは、演算子オーバーロードを考慮に入れた数値比較および文字列比較を行う 簡単で一貫性のある API を公開します。 =item * =begin original Reading the string form of an integer value no longer sets the flag C. The string form is still cached internally, and still re-read directly by the macros C I (inline, without calling a C function). XS code that already calls the APIs to get values will not be affected by this change. XS code that accesses flags directly instead of using API calls to express its intent I break, but such code likely is already buggy if passed some other values, such as floating point values or objects with string overloading. =end original 整数値の文字列形式を読み込んでも、もはや C フラグを 設定しなくなりました。 文字列形式は内部ではキャッシュされるままで、 C などのマクロ (C 関数を呼び出さないマクロ) によって 直接再読込されるままです。 値を得るために既に API を呼び出している XS コードは、 この変更の影響を受けません。 API を使わずにフラグに直接アクセスしている XS コードは、壊れる I<かもしれません> が、そのようなコードはおそらく既に、文字列 オーバーロードされた浮動小数点数やオブジェクトのようなその他の値を渡すと バグがあります。 =begin original This small change permits code (such as JSON serializers) to reliably determine between =end original この小さい変更は (JSON 直列化器のような) コードが、次のものを 安定して決定できるようになります: =over 4 =item * =begin original a value that was initially B as an integer, but then B as a string =end original 最初に整数として B<書き込み> されたけれども、その後文字列として B<読み込み> された値: my $answer = 42; print "The answer is $answer\n"; =item * =begin original that same value that was initially B as a string, but then B as an integer =end original 最初に文字列として B<書き込み> されたけれども、その後整数として B<読み込み> された同じ値: my $answer = "42"; print "That doesn't look right\n" unless $answer == 6 * 9; =back =begin original For the first case (originally written as an integer), we now have: =end original 最初の場合 (最初に整数として書き込まれた場合)、次のようになります: use Devel::Peek; my $answer = 42; Dump ($answer); my $void = "$answer"; print STDERR "\n"; Dump($answer) SV = IV(0x562538925778) at 0x562538925788 REFCNT = 1 FLAGS = (IOK,pIOK) IV = 42 SV = PVIV(0x5625389263c0) at 0x562538925788 REFCNT = 1 FLAGS = (IOK,pIOK,pPOK) IV = 42 PV = 0x562538919b50 "42"\0 CUR = 2 LEN = 10 =begin original For the second (originally written as a string), we now have: =end original 2 番目の場合 (最初に文字列として書き込まれた場合)、次のようになります: use Devel::Peek; my $answer = "42"; Dump ($answer); my $void = $answer == 6 * 9; print STDERR "\n"; Dump($answer)' SV = PV(0x5586ffe9bfb0) at 0x5586ffec0788 REFCNT = 1 FLAGS = (POK,IsCOW,pPOK) PV = 0x5586ffee7fd0 "42"\0 CUR = 2 LEN = 10 COW_REFCNT = 1 SV = PVIV(0x5586ffec13c0) at 0x5586ffec0788 REFCNT = 1 FLAGS = (IOK,POK,IsCOW,pIOK,pPOK) IV = 42 PV = 0x5586ffee7fd0 "42"\0 CUR = 2 LEN = 10 COW_REFCNT = 1 =begin original (One can't rely on the presence or absence of the flag C to determine the history of operations on a scalar.) =end original (スカラの操作の履歴を決定するために、 C の有無に依存することはできません。) =begin original Previously both cases would be indistinguishable, with all 4 flags set: =end original 以前はどちらの場合でも四つ全てのフラグが設定されるので、 区別できませんでした: SV = PVIV(0x55d4d62edaf0) at 0x55d4d62f0930 REFCNT = 1 FLAGS = (IOK,POK,pIOK,pPOK) IV = 42 PV = 0x55d4d62e1740 "42"\0 CUR = 2 LEN = 10 =begin original (and possibly C, but not always) =end original (そして C があるかもしれませんが常にではありません) =begin original This now means that if XS code I needs to determine which form a value was first written as, it should implement logic roughly =end original つまり、ある値が最初にどの形式で書かれたかを決定する必要が I<本当に> あるなら、これはおおよそ次のようなロジックを実装するべきです: if (flags & SVf_IOK|SVf_NOK) && !(flags & SVf_POK) serialize as number else if (flags & SVf_POK) serialize as string else the existing guesswork ... =begin original Note that this doesn't cover "dualvars" - scalars that report different values when asked for their string form or number form (such as C<$!>). Most serialization formats cannot represent such duplicity. =end original これは「二重変数」 ((C<$!> のような)文字列形式と数値形式で異なる値を報告するスカラ) には 対応していないことに注意してください。 ほとんどの直列化は、そのような二重性を表現できません。 =begin original I remains because as well as dualvars, values might be C, references, overloaded references, typeglobs and other things that Perl itself can represent but do not map one-to-one into external formats, so need some amount of approximation or encapsulation. =end original 二重変数の他にも、値は C、リファレンス、オーバーロードされた リファレンス、型グロブなど、Perl 自身は表現できるけれども、 外部形式に 1 対 1 でマッピングできないものかもしれないので、 I<既存の推量> は残っています; 従って、 ある程度の近似やカプセル化が必要です。 =item * =begin original C (and L’s C function) now escapes high-bit octets in the PV as hex rather than octal. Since most folks understand hex more readily than octal, this should make these dumps a bit more legible. This does B affect any other diagnostic interfaces like C. =end original C (および L の C 関数) は、 PV の高位ビットオクテットを 8 進数ではなく 16 進数として エスケープするようになりました。 ほとんどの人は 8 進数より 16 進数の方が素早く理解できるので、 これによりダンプが少し読みやすくなったはずです。 これは C のようなその他の診断インターフェースには 影響 B<しません>。 =back =head1 Selected Bug Fixes (バグ修正の抜粋) =over 4 =item * =begin original utime() now correctly sets errno/C<$!> when called on a closed handle. =end original utime() は、閉じたハンドルに対して呼び出されたときに 正しく errno/C<$!> を設定するようになりました。 =item * =begin original The flags on the OPTVAL parameter to setsockopt() were previously checked before magic was called, possibly treating a numeric value as a packed buffer or vice versa. It also ignored the UTF-8 flag, potentially treating the internal representation of an upgraded SV as the bytes to supply to the setsockopt() system call. (github L<#18660|https://github.com/Perl/perl5/issues/18660>) =end original setsockopt() の OPTVAL 引数のフラグは、 マジックが呼び出される前にチェックされていたので、 数値が pack されたバッファ、あるいはその逆として扱われることがありました。 これはまた UTF-8 フラグを無視していたので、 昇格された SV の内部表現を setsockopt() システムコールに渡す バイト列として扱うことがありました。 (github L<#18660|https://github.com/Perl/perl5/issues/18660>) =item * =begin original Only set IOKp, not IOK on $) and $(. This was issue L<#18955|https://github.com/Perl/perl5/issues/18955>: This will prevent serializers from serializing these variables as numbers (which loses the additional groups). This restores behaviour from 5.16 =end original $) と $( は IOK ではなく IOKp のみを設定するようになりました。 これは L<#18955|https://github.com/Perl/perl5/issues/18955> です: これは直列化器がこれらの変数を (追加のグループが失われる) 数値として 直列化するのを防ぎます。 これは 5.16 の振る舞いを復元します。 =item * =begin original Use of the C debugging facility would cause perl to croak since v5.31.10; this problem has now been fixed. =end original C デバッグ機能を使うと、v5.31.10 から perl に croak を 引き起こしていました; この問題は修正されました。 =item * =begin original C logic is now compatible with BSD make (fixes L). =end original C のロジックは BSD make と互換性があるようになりました (L を修正しました)。 =item * =begin original Calling C on a tied hash that is partway through iteration now frees the iteration state immediately. =end original 反復の途中の tie されたハッシュに対して C を呼び出すと、 反復状態を直ちに解放するようになりました。 =begin original Iterating a tied hash causes perl to store a copy of the current hash key to track the iteration state, with this stored copy passed as the second parameter to C. This internal state is freed immediately when tie hash iteration completes, or if the hash is destroyed, but due to an implementation oversight, it was not freed if the hash was untied. In that case, the internal copy of the key would persist until the earliest of =end original tie されたハッシュを反復すると、 perl は、反復状態を追跡するために現在のハッシュキーのコピーを保管します; この保管されたコピーは C への 2 番目の引数として渡されます。 この内部状態は、tie されたハッシュの反復が完了するか、 ハッシュが破壊された直後に解放されます; しかし、実装のミスにより、ハッシュが untie された場合には 解放されていませんでした。 この場合、キーの内部コピーは、次のものの中で一番早い時点まで 維持されます: =over 4 =item 1 =begin original C was called again on the same hash =end original C が同じハッシュに対して再び呼び出された =item 2 =begin original The (now untied) hash was iterated (ie passed to any of C, C or C) =end original (untie された) ハッシュが反復された (つまり、C, C, C のいずれかに渡された)。 =item 3 =begin original The hash was destroyed. =end original ハッシュが破壊された。 =back =begin original This inconsistency is now fixed - the internal state is now freed immediately by C. =end original この非一貫性は修正されました - 内部状態は C の直後に解放されるようになりました。 =begin original As the precise timing of this behaviour can be observed with pure Perl code (the timing of C on objects returned from C and C) it's just possible that some code is sensitive to it. =end original この振る舞いの正確なタイミングは、 (C と C から返されたオブジェクトの C の タイミング) ピュア Perl コードで観測できます; コードによってはこれを検出することが可能というだけです。 =item * =begin original The C function added for bootstrapping miniperl in perl 5.30.0 is now only available in miniperl. [github #19122] =end original perl 5.30.0 で miniperl をブートストラッピングするために追加された The C 関数は、miniperl でのみ利用可能になりました。 [github #19122] =item * =begin original Setting a breakpoint on a BEGIN or equivalently a C statement could cause a memory write to a freed C op. [L] =end original BEGIN や等価な C 文にブレークポイントを設定すると、 解放された C op へのメモリ書き込みを引き起こすことがありました。 [L] =item * =begin original When bareword filehandles are disabled, the parser was interpreting any bareword as a filehandle, even when immediatey followed by parens. =end original 裸の単語のファイルハンドルが無効のとき、パーサは、たとえかっこが 引き続いていても、全ての裸の単語をファイルハンドルとして解釈していました。 =back =head1 Errata From Previous Releases (以前のリリースの訂正) =over 4 =item * =begin original L mistakenly identified a CVE whose correct identification is CVE-2015-1592. =end original L は CVE の識別子を誤っていました; 正しい識別子は CVE-2015-1592 です。 =back =head1 Obituaries (おくやみ) =begin original Raun "Spider" Boardman (SPIDB on CPAN), author of at least 66 commits to the Perl 5 core distribution between 1996 and 2002, passed away May 24, 2021 from complications of COVID. He will be missed. =end original 1996 年から 2002 年の間に少なくとも 66 コミットを Perl 5 コア配布に行った Raun "Spider" Boardman (CPAN では SPIDB) は、2021 年 5 月 24 日に COVID の 合併症で亡くなりました。 お悔やみ申し上げます。 =begin original David H. Adler (DHA) passed away on November 16, 2021. In 1997, David co-founded NY.pm, the first Perl user group, and in 1998 co-founded Perl Mongers to help establish other user groups across the globe. He was a frequent attendee at Perl conferences in both North America and Europe and well known for his role in organizing I celebrations at those conferences. He also contributed to the work of the Perl Foundation, including administering the White Camel awards for community service. He will be missed. =end original David H. Adler (DHA) は 2021 年 11 月 16 日に亡くなりました。 1997 年、David は最初の Perl ユーザーグループである NY.pm を共同設立し、 1998 年には、世界中のその他のユーザーグループの設立を助ける Perl Mongers を共同設立しました。 彼は北米とヨーロッパの両方の Perl conference に頻繁に出席し、 それらのカンファレンスでの I 式典の主催者として よく知られていました。 彼はまた、コミュニティ貢献に対する White Camel 賞の運営を含む貢献を Perl Foundation にしていました。 お悔やみ申し上げます。 =head1 Acknowledgements (謝辞) =begin original Perl 5.36.0 represents approximately a year of development since Perl 5.34.0 and contains approximately 250,000 lines of changes across 2,000 files from 82 authors. =end original Perl 5.36.0 は、Perl 5.34.0 以降、82 人の作者によって、 2,000 のファイルに約 250,000 行の変更を加えて、 約 1 年間開発されてきました。 =begin original Excluding auto-generated files, documentation and release tools, there were approximately 190,000 lines of changes to 1,300 .pm, .t, .c and .h files. =end original 自動生成ファイル、文書、リリースツールを除くと、1,300 の .pm, .t, .c, .h ファイルに約 190,000 行の変更を加えました。 =begin original 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.36.0: =end original Perl は、活気のあるユーザーと開発者のコミュニティのおかげで 30 年を超えて 繁栄しています。 以下の人々が、Perl 5.36.0 になるための改良に貢献したことが分かっています: Alyssa Ross, Andrew Fresh, Aristotle Pagaltzis, Asher Mancinelli, Atsushi Sugawara, Ben Cornett, Bernd, Biswapriyo Nath, Brad Barden, Bram, Branislav Zahradník, brian d foy, Chad Granum, Chris 'BinGOs' Williams, Christian Walde (Mithaldu), Christopher Yeleighton, Craig A. Berry, cuishuang, Curtis Poe, Dagfinn Ilmari Mannsåker, Dan Book, Daniel Laügt, Dan Jacobson, Dan Kogai, Dave Cross, Dave Lambley, David Cantrell, David Golden, David Marshall, David Mitchell, E. Choroba, Eugen Konkov, Felipe Gasper, François Perrad, Graham Knop, H.Merijn Brand, Hugo van der Sanden, Ilya Sashcheka, Ivan Panchenko, Jakub Wilk, James E Keenan, James Raspass, Karen Etheridge, Karl Williamson, Leam Hall, Leon Timmermans, Magnus Woldrich, Matthew Horsfall, Max Maischein, Michael G Schwern, Michiel Beijen, Mike Fulton, Neil Bowers, Nicholas Clark, Nicolas R, Niyas Sait, Olaf Alders, Paul Evans, Paul Marquess, Petar-Kaleychev, Pete Houston, Renee Baecker, Ricardo Signes, Richard Leach, Robert Rothenberg, Sawyer X, Scott Baker, Sergey Poznyakoff, Sergey Zhmylove, Sisyphus, Slaven Rezic, Steve Hay, Sven Kirmess, TAKAI Kousuke, Thibault Duponchelle, Todd Rinaldo, Tomasz Konojacki, Tomoyuki Sadahiro, Tony Cook, Unicode Consortium, Yves Orton, Михаил Козачков. =begin original 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. =end original これはバージョンコントロール履歴から自動的に生成しているので、ほぼ確実に 不完全です。 特に、Perl バグトラッカーに問題を報告をしてくれた (とてもありがたい)貢献者の 名前を含んでいません。 =begin original 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. =end original このバージョンに含まれている変更の多くは、Perl コアに含まれている CPAN モジュール由来のものです。 私たちは Perl の発展を助けている CPAN コミュニティ全体に感謝します。 =begin original For a more complete list of all of Perl's historical contributors, please =end original 全ての Perl の歴史的な貢献者のより完全な一覧については、どうか Perl ソース 配布に含まれている F を参照してください。 =head1 Reporting Bugs (バグ報告) =begin original If you find what you think is a bug, you might check the perl bug database at L. There may also be information at L, the Perl Home Page. =end original もしバグと思われるものを見つけたら、 L にある perl バグデータベースを 確認してください。 Perl ホームページ、L にも情報があります。 =begin original If you believe you have an unreported bug, please open an issue at L. Be sure to trim your bug down to a tiny but sufficient test case. =end original もしまだ報告されていないバグだと確信したら、 L にイシューを登録してください。 バグの再現スクリプトを十分小さく、しかし有効なコードに切りつめることを 意識してください。 =begin original If the bug you are reporting has security implications which make it inappropriate to send to a public issue tracker, then see L for details of how to report the issue. =end original 報告しようとしているバグがセキュリティに関するもので、公開されている イシュートラッカーに送るのが不適切なものなら、バグの報告方法の詳細について L を参照してください。 =head1 Give Thanks (感謝を伝える) =begin original 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 C program: =end original もし Perl 5 でなされた作業について Perl 5 Porters に感謝したいと考えたなら、 C プログラムを実行することでそうできます: perlthanks =begin original This will send an email to the Perl 5 Porters list with your show of thanks. =end original これは Perl 5 Porters メーリングリストにあなたの感謝の言葉をメールします。 =head1 SEE ALSO =begin original The F file for an explanation of how to view exhaustive details on what changed. =end original 変更点の完全な詳細を見る方法については F ファイル。 =begin original The F file for how to build Perl. =end original Perl のビルド方法については F ファイル。 =begin original The F file for general stuff. =end original 一般的なことについては F ファイル。 =begin original The F and F files for copyright information. =end original 著作権情報については F 及び F ファイル。 =begin meta Translate: SHIRAKATA Kentaro Status: completed =end meta =cut