名前

perldelta - what is new for perl v5.36.0

perl5360delta - perl v5.36.0 での変更点

説明

This document describes differences between the 5.34.0 release and the 5.36.0 release.

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

コアの拡張

use v5.36

As always, use v5.36 turns on the feature bundle for that version of Perl.

いつも通り、use v5.36 は、このバージョンの Perl のための 機能の束をオンにします。

The 5.36 bundle enables the signatures 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.

5.36 の束は signatures 機能を有効にします。 Perl バージョン 5.20.0 で導入され、それから何回か変更された サブルーチンシグネチャは、もはや実験的とは扱われなくなりました。 これは安定版の言語機能として扱われ、もはや警告を出さなくなりました。

    use v5.36;

    sub add ($x, $y) {
      return $x + $y;
    }

Despite this, certain elements of signatured subroutines remain experimental; see below.

これにも関わらず、サブルーチンシグネチャのいくつかの要素はまだ 実験的なままです; 以降を参照してください。

The 5.36 bundle enables the isa 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 "Class Instance Operator" in perlop.

5.36 の束は isa 機能を有効にします。 Perl バージョン 5.32.0 で導入されたこの演算子は、それから 変更されていません。 この演算子は安定した言語機能とみなされます。 さらなる詳細については "Class Instance Operator" in perlop を 参照してください。

The 5.36 bundle also disables the features indirect, and multidimensional. These will forbid, respectively: the use of "indirect" method calls (like $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 feature, but the short version is: this is a bit like having more use strict turned on, disabling features that cause more trouble than they're worth.

5.36 の束はまた、indirect, multidimensional の各機能を 無効 にしました。 これらはそれぞれ、次のものを禁止します: ($x = new Class; のような) 「間接」メソッド呼び出し; 疎らな多次元配列をシミュレートするためのハッシュキーとしての リスト式の使用。 これらの変更の詳細は feature にありますが、短く言うと; これは use strict をもっと有効にしたものに少し似ていて、 有効性よりも大きな問題を引き起こす機能を無効にします。

Furthermore, use v5.36 will also enable warnings as if you'd written use warnings.

さらに、use v5.36 は、use warnings を書いたかのように警告も 有効にします。

Finally, with this release, the experimental switch 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.

最後に、このリリースでは、v5.10 で導入されてから全ての機能の束に含まれていた 実験的な switch 機能は、v5.36 の束では取り除かれました。 (私たちの助言に反して) これを使いたい場合、明示的に有効にする必要があります。

-g コマンドラインオプション

A new command-line flag, -g, is available. It is a simpler alias for -0777.

新しいコマンドラインフラグである -g が利用可能です。 これは -0777 と似たような別名です。

For more information, see "-g" in perlrun.

さらなる情報については、"-g" in perlrun を参照してください。

Unicode 14.0 に対応しました

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

正規表現集合はもはや実験的ではなくなりました

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 "Extended Bracketed Character Classes" in perlrecharclass.

このリリースより前では、正規表現集合機能 (公式名は「拡張大かっこ文字クラス」 ("Extended Bracketed Character Classes") は実験的と考えられていました。 Perl バージョン 5.18.0 で導入され、 それから数回修正されたこれは、 安定版の言語機能として考えられるようになり、 もはや警告は表示されません。 "Extended Bracketed Character Classes" in perlrecharclass を参照してください。

可変長後方参照はもはやほとんど実験的ではなくなりました

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

このリリースの前では、あらゆる形式の可変長後方参照は、 実験的であると考えられてきました。 このリリースで、実験的なステータスは、捕捉かっこを含む後方参照のみに 縮小されました。 これは、次の場合に

    "aaz"=~/(?=z)(?<=(a|aa))/

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.

マッチングと $1 への代入は "a" になるか "aa" になるかがはっきりしていないからです。 現在の所、これは可能な最大の選択肢である "aa" にマッチングします。 構文全体が、マッチングするべき時にだけマッチングするようになったことには 自信がありますが、現在の「最長マッチング」の振る舞いを維持することには 自信がありません。

SIGFPE はもはや遅れません

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 $SIG{FPE} handler, e.g. so that die can report the line in perl that triggered it.

浮動小数点数例外は、SIGSEGV のようなその他の「失敗」系と同様に 直ちに配送されるようになりました。 つまり、そのようなシグナルを $SIG{FPE} ハンドラで捕捉する機会が 少なくとも 1 回あるということです; 例えば、die はそれを引き起こした perl での行を報告できます。

安定したブール値の追跡

The "true" and "false" boolean values, often accessed by constructions like !!0 and !!1, as well as being returned from many core functions and operators, now remember their boolean nature even through assignment into variables. The new function is_bool() in builtin can check whether a value has boolean nature.

しばしば !!0 and !!1 としてアクセスされ、 多くのコア関数と演算子から返される、「真」と「偽」のブール値は、 変数への代入を通してもブール値としての性質を保つようになりました。 builtin の新しい関数 is_bool() で、値がブール値の性質を 持つかかどうかをチェックできるようになりました。

This is likely to be useful when interoperating with other languages or data-type serialisation, among other places.

これは、色々な用途の中でも、他の言語やデータ型直列化との相互運用に 有用でしょう。

一度に複数の値で反復する (実験的)

You can now iterate over multiple values at a time by specifying a list of lexicals within parentheses. For example,

かっこの中にレキシカル変数のリストを指定することで、 一回当たり複数の値を反復できるようになりました。 例えば:

    for my ($key, $value) (%hash) { ... }
    for my ($left, $right, $gripping) (@moties) { ... }

Prior to perl v5.36, attempting to specify a list after for my was a syntax error.

perl v5.36 より前では、for my の後でリストを指定しようとすると 文法エラーでした。

This feature is currently experimental and will cause a warning of category experimental::for_list. For more detail see "Compound Statements" in perlsyn. See also "builtin::indexed" in this document, which is a handy companion to n-at-a-time foreach.

この機能は今のところ実験的で、 experimental::for_list カテゴリの警告を引き起こします。 さらなる情報については "Compound Statements" in perlsyn を参照してください。 一度に n 回の foreach の便利ツールである、この文書の "builtin::indexed" も参照してください。

builtin 関数 (実験的)

A new core module builtin has been added, which provides documentation for new always-present functions that are built into the interpreter.

新しいコアモジュール builtin が追加されました; これは、インタプリタ組み込みの、常に存在する関数の文書を提供します。

    say "Reference type of arrays is ", builtin::reftype([]);

It also provides a lexical import mechanism for providing short name versions of these functions.

これはまた、これらの関数の短い名前版を提供するためのレキシカルな インポート機構を提供します。

    use builtin 'reftype';
    say "Reference type of arrays is ", reftype([]);

This builtin function mechanism and the functions it provides are all currently experimental. We expect that builtin 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 builtin over time.

この組み込み関数機構とそれが提供する関数は、現在の所全て 実験的 です。 builtin 自体は近い将来実験的であるのをやめる予定ですが、 その中の個々の関数は現行の基準で安定版になる予定です。 その他の関数は、時間とともに builtin に追加される予定です。

For details, see builtin, but here's a summary of builtin functions in v5.36:

詳しくは builtin を参照してください; しかし、以下は v5.36 の組み込み関数の要約です:

builtin::trim

This function treats its argument as a string, returning the result of removing all white space at its beginning and ending.

この関数は、引数を文字列として扱い、 その先頭と末尾の空白を削除した結果を返します。

builtin::indexed

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 foreach syntax with multiple iterator variables to iterate over an array or list, while also tracking the index of each item:

この関数は、引数リストの 2 倍の大きさのリストを返します; それぞれのアイテムは、リストの中のインデックスが前に付きます。 これは主に、配列やリストに対して、ここのアイテムのインデックスも 追跡しながら反復するために、 複数の反復子変数を使うという、 新しい foreach 文法 を使うときに有効です:

    use builtin 'indexed';

    foreach my ($index, $val) (indexed @array) {
        ...
    }
builtin::true, builtin::false, builtin::is_bool

true and false 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. is_bool will tell you whether a value was known to have been created as a boolean.

truefalse は、ブール値の真と偽の値を返します。 Perl は perl のままで、ブール値の厳密な型はありませんが、 これらの値はブール値として作られたことを知っています。 is_bool は、ある値がブール値として作られたということが 分かっているかどうかを返します。

builtin::weaken, builtin::unweaken, builtin::is_weak

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 perlref.) These can take the place of some similar routines in Scalar::Util.

これらの関数はそれぞれ次のことを行います: リファレンスを弱める; リファレンスを強める; リファレンスが弱いかどうかを返す。 (弱いリファレンスは、ガベージコレクションの目的では考慮されません。 perlref を参照してください。) これらは Scalar::Util にある似たようなルーチンの代わりになります。

builtin::blessed, builtin::refaddr, builtin::reftype

These functions provide more data about references (or non-references, actually!) and can take the place of similar routines found in Scalar::Util.

これらの関数は、リファレンス(実際には非リファレンスも!)に関する さらなる情報を提供し、Scalar::Util にある似たようなルーチンの 代わりになります。

builtin::ceil, builtin::floor

ceil returns the smallest integer greater than or equal to its argument. floor returns the largest integer less than or equal to its argument. These can take the place of similar routines found in POSIX.

ceil は、引数の値以上の最小の整数を返します。 floor は、引数の値以下の最大の整数を返します。 これらは POSIX にある似たような関数を置き換えられます。

defer blocks (experimental)

(defer ブロック (実験的)

This release adds support for defer blocks, which are blocks of code prefixed by the defer modifier. They provide a section of code which runs at a later time, during scope exit.

このリリースでは、defer 修飾子を前置したコードのブロックである defer ブロックの対応が追加されました。 これらは後で、スコープの終了時に実行されるコード節を提供します。

In brief, when a defer 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 containing the defer block is exited before the block is reached, it will not be run.

手短に言うと、実行時に defer ブロックに到達したとき、 その中身は、囲んでいるスコープが終了したときに実行できるように取って 置かれます。 (他にも理由はありますが) defer ブロックを 含んでいる ブロックが、 そのブロックに到達する前に終了した場合、実行されない、という点で、 UNITCHECK と異なります。

defer 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.

defer ブロックは、オブジェクトのデストラクタによって実行される コードブロックを渡される「スコープガード」オブジェクトを 置き換えることができます。

For more information, see "defer blocks" in perlsyn.

さらなる情報については、"defer blocks" in perlsyn を参照してください。

try/catch can now have a finally block (experimental)

(try/catch は finally を使えるようになりました (実験的))

The experimental try/catch syntax has been extended to support an optional third block introduced by the finally keyword.

実験的な try/catch 構文は、finally キーワードで導入される オプションの 3 番目のブロックに対応するように拡張されました。

    try {
        attempt();
        print "Success\n";
    }
    catch ($e) {
        print "Failure\n";
    }
    finally {
        print "This happens regardless\n";
    }

This provides code which runs at the end of the try/catch construct, even if aborted by an exception or control-flow keyword. They are similar to defer blocks.

これは、try/catch 構文の最後に、 たとえ例外または制御フローキーワードによって中断されても、 実行するコードを提供します。 これらは defer ブロックに似ています。

For more information, see "Try Catch Exception Handling" in perlsyn.

さらなる情報については、"Try Catch Exception Handling" in perlsyn を 参照してください。

クォート風演算子での非 ASCII 区切り文字 (実験的)

Perl traditionally has allowed just four pairs of string/pattern delimiters: ( ) { } [ ] and < >, all in the ASCII range. Unicode has hundreds more possibilities, and using this feature enables many of them. When enabled, you can say qr« » for example, or use utf8; q𝄃string𝄂. See "The 'extra_paired_delimiters' feature" in feature for details.

Perl は伝統的に文字列/パターンの区切り文字として 4 組だけを 許していました: ( ), { }, [ ], < > で、全て ASCII の範囲です。 Unicode にはさらに数百の可能性があり、 この機能を使うことでその多くを有効にします。 有効にすると、例えば qr« »use utf8; q𝄃string𝄂 のように できます。 詳しくは "The 'extra_paired_delimiters' feature" in feature を 参照してください。

@_ はシグネチャサブルーチンの中では実験的になりました

Even though subroutine signatures are now stable, use of the legacy arguments array (@_) with a subroutine that has a signature remains experimental, with its own warning category. Silencing the experimental::signatures warning category is not sufficient to dismiss this. The new warning is emitted with the category name experimental::args_array_with_signatures.

サブルーチンシグネチャは安定版になったにも関わらず、 シグネチャを持つサブルーチンで伝統的な引数配列 (@_) を使うのは実験的 のまま で、独自の警告カテゴリを持ちます。 experimental::signatures 警告カテゴリだけでは これを抑制するには不十分です。 新しい警告は experimental::args_array_with_signatures という カテゴリ名で出力されます。

Any subroutine that has a signature and tries to make use of the defaults argument array or an element thereof (@_ or $_[INDEX]), either explicitly or implicitly (such as shift or pop with no argument) will provoke a warning at compile-time:

シグネチャを持っていて、デフォルト引き数配列またはその要素 (@_ または $_[INDEX]) を、明示的または (引数なしの shift または pop のように) 暗黙的に使おうとするサブルーチンは、コンパイル時に警告を発生させます:

    use v5.36;

    sub f ($x, $y = 123) {
      say "The first argument is $_[0]";
    }

    Use of @_ in array element with signatured subroutine is experimental
    at file.pl line 4.

The behaviour of code which attempts to do this is no longer specified, and may be subject to change in a future version.

これをしようとするコードの振る舞いはもはや不定で、 将来のバージョンで変わるかもしれません。

互換性のない変更

物理的に空のソートはコンパイル時エラーになりました

    @a = sort @empty; # unaffected
    @a = sort;        # now a compile-time error
    @a = sort ();     # also a compile-time error

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 sort.

裸のソートは、空リストを作るための奇妙な方法でした; これはコンパイル時に croak するようになりました。 この変更は、将来 sort で行うかもしれない拡張のために文法上の空きを 作っておくためのものです。

廃止予定

use VERSION (where VERSION is below v5.11) after use v5.11 is deprecated

(use v5.11 の後での use VERSION (VERSION は v5.11 より前) は廃止予定です)

When in the scope of use v5.11 or later, a use vX line where X is lower than v5.11 will now issue a warning:

use v5.11 以降のスコープ内では、 use vX の行 (X は v5.11 未満) は警告を出すようになりました:

    Downgrading a use VERSION declaration to below v5.11 is deprecated

For example:

例えば:

    use v5.14;
    say "The say statement is permitted";
    use v5.8;                               # This will print a warning
    print "We must use print\n";

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 unless it had previously been disabled. In other words:

これは、Perl チームはこの場合の振る舞いを変更する計画があるからです。 Perl v5.12 (および v5.11 の一部) から、 strict は 事前に無効にされていない限り 有効になります。 言い換えると:

    no strict;
    use v5.12;  # will not enable strict, because "no strict" preceded it
    $x = 1;     # permitted, despite no "my" declaration

In the future, this behavior will be eliminated and use VERSION will always enable strict for versions v5.12 and later.

将来、この振る舞いは取り除かれ、 use VERSION は、バージョン v5.12 以降の場合は、常に strict を 有効にします。

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.

この方法でバージョンを混ぜたいコードは、 異なったバージョンの範囲がレキシカルに確実に分離されるように、 ブロック文法をによるレキシカルスコープを使うべきです。

    {
        use v5.14;
        say "The say statement is permitted";
    }

    {
        use v5.8;                           # No warning is emitted
        print "We must use print\n";
    }

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.

もちろん、これはおそらくあなたが必要なものではないでしょう! 最初のブロックがコンパイルされると、あなたは perl v5.14.0 以降を 使うということです。

性能改善

  • 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.

    C11 スレッドローカルストレージのコンパイラ対応を調査して、 利用可能な場合は、 スレッド付き Perl ビルドのための API 呼び出しを行う XS 拡張のための「暗黙のコンテキスト」でこれを使います。 これは、POSIX スレッド固有のストレージに比べて、C レベルの関数呼び出しを ほとんど必要としません。 C11 の手法が利用できない場合は pthreads の手法を使い続けます。

    Configure run with the defaults will build an unthreaded Perl (which is slightly faster), but most operating systems ship a threaded Perl.

    デフォルトで実行した Configure は (少し高速な) スレッドなし Perl を ビルドしますが、ほとんどのオペレーティングシステムはスレッド付き Perl を出荷しています。

  • Perl can now be configured to no longer allocate keys for large hashes from the shared string table.

    大きなハッシュに対してはもはや共有文字列テーブルから キーを割り当てないように設定できるようになりました。

    The same internal datatype (PVHV) is used for all of

    次の全てについて同じ内部データ型 (PVHV) が使われます:

    • Symbol tables

      シンボルテーブル

    • Objects (by default)

      (デフォルトでは) オブジェクト

    • Associative arrays

      連想配列

    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.

    共有文字列テーブルは本来、オブジェクトとして使われる bless されたハッシュの 性能向上のために追加されました; 全てのオブジェクト実体は同じキーを持つので、それらの間でメモリを共有する 最適化があるからです。 これはまた、派生クラスが同じキー (典型的にはメソッド名) を持つ シンボルテーブルにも意味があり、またメソッド呼び出しのために 構築された OP 木もメモリを共有できます。 共有文字列テーブルは、おおまかにはハッシュキーのキャッシュのように 振る舞います。

    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.

    しかしハッシュについては実際には - キーに値をマッピングする - 連想配列 として 使われます; 典型的にはキーは他のハッシュで再利用されません。 例えば、"seen" ハッシュはオブジェクト ID (またはアドレス) をキーとして使い、 論理的にはこれらのキーは他のハッシュで繰り返されません。

    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. Worse - 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.

    これらの「1 回だけ使う」キーを共有文字列テーブルに保管すると、 利点なしに CPU と RAM の使用量が増加します。 このようなキーに対して、共有文字列テーブルは、ヒット率 0% の キャッシュのように振る舞います。 ここに全てのキーを保存すると、共有文字列テーブルの合計サイズが増加し、 それに連れてサイズ変更する回数も増加します。 さらに悪いことに - (プリフォークサーバのように) 子プロセスのための「コピーオンライト」メモリを持つ環境の場合、 共有文字列テーブルで使われるメモリページは、子プロセスがハッシュを 操作するにつれて急速にコピーする必要性が発生します。 従って、共有文字列テーブルのほとんどが そのような 1 ヶ所でしか使われないキーの場合、 perl インタプリタの中で再利用する利点はなく、 より多くのページを OS がコピーすることによる高いコストがあることになります。

    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 -Accflags='-DPERL_USE_UNSHARED_KEYS_IN_LARGE_HASHES' to your Configure 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.

    perl インタプリタは、(オブジェクトやシンボルテーブルでない)「大きな」 ハッシュに対して共有ハッシュキーを無効化するように設定できるようになりました。 そうするためには、Configure-Accflags='-DPERL_USE_UNSHARED_KEYS_IN_LARGE_HASHES' を追加してください。 「大きな」は発見的です -- 現在の所、 ハッシュへのキーの追加が追加のストレージの割り当てを引き起こし、 ハッシュが 42 以上のキーを持つときに、共有は無効化されます。

    This might 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.

    これは、同じキーを共有する複数の大きなハッシュを含む (bless されない) データ構造を作るプログラムでは、メモリ使用量が少し増える かもしれません。 しかし一般的に、私たちによるテストは、先に記述した特定の条件では 利点が上回り、それ以外のコードでは影響がないことを示唆しています。

  • In certain scenarios, creation of new scalars is now noticeably faster.

    ある種のシナリオでは、新しいスカラの作成は著しく高速なりました。

    For example, the following code is now executing ~30% faster:

    例えば、次のコードは実行が約 30% 高速になりました:

        $str = "A" x 64;
        for (0..1_000_000) {
            @svs = split //, $str
        }

    (You can read more about this one in [perl #19414].)

    (これに関する詳細は [perl #19414] で読めます。)

モジュールとプラグマ

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

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

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

  • Attribute::Handlers has been upgraded from version 1.01 to 1.02.

    Attribute::Handlers はバージョン 1.01 から 1.02 に更新されました。

  • attributes has been upgraded from version 0.33 to 0.34.

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

  • B has been upgraded from version 1.82 to 1.83.

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

  • B::Concise has been upgraded from version 1.004 to 1.006.

    B::Concise はバージョン 1.004 から 1.006 に更新されました。

  • B::Deparse has been upgraded from version 1.56 to 1.64.

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

  • bignum has been upgraded from version 0.51 to 0.65.

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

  • charnames has been upgraded from version 1.48 to 1.50.

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

  • Compress::Raw::Bzip2 has been upgraded from version 2.101 to 2.103.

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

  • Compress::Raw::Zlib has been upgraded from version 2.101 to 2.105.

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

  • CPAN has been upgraded from version 2.28 to 2.33.

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

  • Data::Dumper has been upgraded from version 2.179 to 2.184.

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

  • DB_File has been upgraded from version 1.855 to 1.857.

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

  • Devel::Peek has been upgraded from version 1.30 to 1.32.

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

  • Devel::PPPort has been upgraded from version 3.62 to 3.68.

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

  • diagnostics has been upgraded from version 1.37 to 1.39.

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

  • Digest has been upgraded from version 1.19 to 1.20.

    Digest はバージョン 1.19 から 1.20 に更新されました。

  • DynaLoader has been upgraded from version 1.50 to 1.52.

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

  • Encode has been upgraded from version 3.08 to 3.17.

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

  • Errno has been upgraded from version 1.33 to 1.36.

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

  • experimental has been upgraded from version 0.024 to 0.028.

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

  • Exporter has been upgraded from version 5.76 to 5.77.

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

  • ExtUtils::MakeMaker has been upgraded from version 7.62 to 7.64.

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

  • ExtUtils::Miniperl has been upgraded from version 1.10 to 1.11.

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

  • ExtUtils::ParseXS has been upgraded from version 3.43 to 3.45.

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

  • ExtUtils::Typemaps has been upgraded from version 3.43 to 3.45.

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

  • Fcntl has been upgraded from version 1.14 to 1.15.

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

  • feature has been upgraded from version 1.64 to 1.72.

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

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

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

  • File::Copy has been upgraded from version 2.35 to 2.39.

    File::Copy はバージョン 2.35 から 2.39 に更新されました。

  • File::Fetch has been upgraded from version 1.00 to 1.04.

    File::Fetch はバージョン 1.00 から 1.04 に更新されました。

  • File::Find has been upgraded from version 1.39 to 1.40.

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

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

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

  • File::Spec has been upgraded from version 3.80 to 3.84.

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

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

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

  • FindBin has been upgraded from version 1.52 to 1.53.

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

  • GDBM_File has been upgraded from version 1.19 to 1.23.

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

  • Hash::Util has been upgraded from version 0.25 to 0.28.

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

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

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

  • HTTP::Tiny has been upgraded from version 0.076 to 0.080.

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

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

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

  • if has been upgraded from version 0.0609 to 0.0610.

    if はバージョン 0.0609 から 0.0610 に更新されました。

  • IO has been upgraded from version 1.46 to 1.50.

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

  • IO-Compress has been upgraded from version 2.102 to 2.106.

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

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

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

  • JSON::PP has been upgraded from version 4.06 to 4.07.

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

  • libnet has been upgraded from version 3.13 to 3.14.

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

  • Locale::Maketext has been upgraded from version 1.29 to 1.31.

    Locale::Maketext はバージョン 1.29 から 1.31 に更新されました。

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

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

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

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

  • Math::BigRat has been upgraded from version 0.2614 to 0.2621.

    Math::BigRat はバージョン 0.2614 から 0.2621 に更新されました。

  • Module::CoreList has been upgraded from version 5.20210520 to 5.20220520.

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

  • mro has been upgraded from version 1.25_001 to 1.26.

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

  • NEXT has been upgraded from version 0.68 to 0.69.

    NEXT はバージョン 0.68 から 0.69 に更新されました。

  • Opcode has been upgraded from version 1.50 to 1.57.

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

  • open has been upgraded from version 1.12 to 1.13.

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

  • overload has been upgraded from version 1.33 to 1.35.

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

  • perlfaq has been upgraded from version 5.20210411 to 5.20210520.

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

  • PerlIO has been upgraded from version 1.11 to 1.12.

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

  • Pod::Functions has been upgraded from version 1.13 to 1.14.

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

  • Pod::Html has been upgraded from version 1.27 to 1.33.

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

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

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

  • POSIX has been upgraded from version 1.97 to 2.03.

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

  • re has been upgraded from version 0.41 to 0.43.

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

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

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

  • sigtrap has been upgraded from version 1.09 to 1.10.

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

  • Socket has been upgraded from version 2.031 to 2.033.

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

  • sort has been upgraded from version 2.04 to 2.05.

    sort はバージョン 2.04 から 2.05 に更新されました。

  • Storable has been upgraded from version 3.23 to 3.26.

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

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

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

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

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

  • Test::Simple has been upgraded from version 1.302183 to 1.302190.

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

  • Text::ParseWords has been upgraded from version 3.30 to 3.31.

    Text::ParseWords はバージョン 3.30 から 3.31 に更新されました。

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

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

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

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

  • threads has been upgraded from version 2.26 to 2.27.

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

  • threads::shared has been upgraded from version 1.62 to 1.64.

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

  • Tie::Handle has been upgraded from version 4.2 to 4.3.

    Tie::Handle はバージョン 4.2 から 4.3 に更新されました。

  • Tie::Hash has been upgraded from version 1.05 to 1.06.

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

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

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

  • Tie::SubstrHash has been upgraded from version 1.00 to 1.01.

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

  • Time::HiRes has been upgraded from version 1.9767 to 1.9770.

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

  • Unicode::Collate has been upgraded from version 1.29 to 1.31.

    Unicode::Collate はバージョン 1.29 から 1.31 に更新されました。

  • Unicode::Normalize has been upgraded from version 1.28 to 1.31.

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

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

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

  • UNIVERSAL has been upgraded from version 1.13 to 1.14.

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

  • version has been upgraded from version 0.9928 to 0.9929.

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

  • VMS::Filespec has been upgraded from version 1.12 to 1.13.

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

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

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

  • warnings has been upgraded from version 1.51 to 1.58.

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

  • Win32 has been upgraded from version 0.57 to 0.59.

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

  • XS::APItest has been upgraded from version 1.16 to 1.22.

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

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

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

  • XSLoader has been upgraded from version 0.30 to 0.31.

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

文書

新しい文書

Porting/vote_admin_guide.pod

This document provides the process for administering an election or vote within the Perl Core Team.

この文書は、Perl Core Team の中での選挙や投票を運営する手続きを 提供しています。

既存の文書の変更

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

  • 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.

    いくつかの整理が行われ、(以前はたくさんあった) 文書化されていない関数の 80% 以上について、文書化されたか、不適切に API とされていたと みなすかが行われました。

    As always, Patches Welcome!

    いつも通り、パッチを歓迎します!

perldeprecation

  • notes the new location for functions moved from Pod::Html to Pod::Html::Util that are no longer intended to be used outside of core.

    もはやコアの外側で使われることを想定していないため、Pod::Html から Pod::Html::Util に移動した関数の新しい位置について記しました。

perlexperiment

  • notes the :win32 IO pseudolayer is removed (this happened in 5.35.2).

    :win32 IO 疑似層が削除されたこと (これは 5.35.2 で起きました) を 記しました。

perlgov

  • The election process has been finetuned to allow the vote to be skipped if there are no more candidates than open seats.

    選挙手続きは、立候補者数が定数を超えない場合に投票を省略できるように 微調整されました。

  • A special election is now allowed to be postponed for up to twelve weeks, for example until a normal election.

    特別投票は、最大 12 週間、例えば通常投票まで延期できることになりました。

perlop

  • now notes that an invocant only needs to be an object or class name for method calls, not for subroutine references.

    呼び出し元は、メソッド呼び出しの場合にのみオブジェクトまたは クラス名である必要があり、サブルーチンリファレンスではそうでないことを 記しました。

perlre

  • Updated to discourage the use of the /d regexp modifier.

    /d 正規表現修飾子の使用を非推奨にするように更新しました。

perlrun

  • -? is now a synonym for -h

    -?-h の同義語になりました

  • -g is now a synonym for -0777

    -g-0777 の同義語になりました

診断メッセージ

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

新しい警告メッセージ

新しいエラー

  • Can't "%s" out of a "defer" block

    (F) An attempt was made to jump out of the scope of a defer block by using a control-flow statement such as return, goto or a loop control. This is not permitted.

    (F) return, goto やループ制御のようなフロー制御文を使って、 遅延ブロックのスコープから飛び出そうとしました。 これは許されていません。

  • Can't modify %s in %s (for scalar assignment to undef)

    Attempting to perform a scalar assignment to undef, for example via undef = $foo;, previously triggered a fatal runtime error with the message "Modification of a read-only value attempted." 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".

    undef = $foo; のように、undef にスカラを代入しようとしました; これは以前は "Modification of a read-only value attempted" という致命的な実行時エラーを引き起こしていました。 このような代入の試行を実行時の前に検出するのはより有用なので、 これはコンパイル時エラーになり、 "Can't modify undef operator in scalar assignment" という メッセージなりました。

  • panic: newFORLOOP, %s

    The parser failed an internal consistency check while trying to parse a foreach loop.

    パーサは、foreach ループをパースしようとしている間の内部一貫性チェックに 失敗しました。

新しい警告

  • Built-in function '%s' is experimental

    A call is being made to a function in the builtin:: namespace, which is currently experimental.

    builtin:: 名前空間の関数を呼び出しました; これは現在の所実験的です。

  • defer is experimental

    The defer block modifier is experimental. If you want to use the feature, disable the warning with no warnings 'experimental::defer', but know that in doing so you are taking the risk that your code may break in a future Perl version.

    The defer ブロック修飾子は実験的です。 この機能を使いたいけれども、そうすることで将来の Perl バージョンで 変更されるかもしれない実験的機能を使うリスクを取ることを分かっている場合は、 no warnings 'experimental::defer' で警告を無効にしてください。

  • Downgrading a use VERSION declaration to below v5.11 is deprecated

    This warning is emitted on a use VERSION statement that requests a version below v5.11 (when the effects of use strict would be disabled), after a previous declaration of one having a larger number (which would have enabled these effects)

    この警告は、(use strict が有効のとき) 先により大きい値で宣言した後、 (use strict が無効のとき) v5.11 より小さいバージョンを要求する use VERSION 文で出力されます。

  • for my (...) is experimental

    This warning is emitted if you use for to iterate multiple values at a time. This syntax is currently experimental and its behaviour may change in future releases of Perl.

    この警告は、一度に複数の値を繰り返すために for を使うと発生します。 この文法は現在の所実験的で、その振る舞いは将来のリリースの Perl で 変更されるかもしれません。

  • Implicit use of @_ in %s with signatured subroutine is experimental

    An expression that implicitly involves the @_ arguments array was found in a subroutine that uses a signature.

    暗黙に @_ 引数に関連する式が、シグネチャを使うサブルーチン内に 見つかりました。

  • Use of @_ in %s with signatured subroutine is experimental

    An expression involving the @_ arguments array was found in a subroutine that uses a signature.

    @_ 引数配列に関係する式が、シグネチャを使っているサブルーチンの中で 見つかりました。

  • Wide character in $0

    Attempts to put wide characters into the program name ($0) now provoke this warning.

    プログラム名 ($0) にワイド文字を入れようとすると、 この警告が出るようになりました。

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

  • '/' does not take a repeat count in %s

    This warning used to not include the in %s.

    この警告は、in %s を含んでいませんでした。

  • Subroutine %s redefined

    Localized subroutine redefinitions no longer trigger this warning.

    ローカル化されたサブルーチンの再定義は、もはやこの警告を 引き起こさなくなりました。

  • unexpected constant lvalue entersub entry via type/targ %d:%d" now has a panic prefix

    This makes it consistent with other checks of internal consistency when compiling a subroutine.

    これは、サブルーチンをコンパイルするときのその他の内部一貫性のチェックと 一貫性を持つようになりました。

  • Useless use of sort in scalar context is now in the new scalar category.

    When sort is used in scalar context, it provokes a warning that doing this is not useful. This warning used to be in the void category. A new category for warnings about scalar context has now been added, called scalar.

    sort がスカラコンテキストで使われると、 そうすることは役に立たないという警告が発生します。 この警告は void カテゴリにありました。 scalar という名前の、スカラコンテキストに関する新しい警告が 追加されました。

  • Removed a number of diagnostics

    多くの診断メッセージを削除

    Many diagnostics that have been removed from the perl core across many years have now also been removed from the documentation.

    何年間にもわたって perl コアから削除されてきた多くの診断メッセージが、 文書 からも 削除されました。

設定とコンパイル

  • 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.

    Perl C ソースコードは、私たちがターゲットとしている全てのコンパイラが 対応していることが確認されたいくつかの C99 機能を使うようになりました。 つまり、Perl のヘッダは C99 では正当だけれども C89 では正当でない コードを含むようになりました。

    This may cause problems for some XS modules that unconditionally add -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 <$] < 5.035005>.

    これは、gcc や clang でコンパイルするときに -Werror=declaration-after-statement を無条件に C コンパイラフラグに 追加している、一部の XS モジュールで問題を引き起こすかもしれません。 初期のバージョンの Perl は、ある種の C99 の機能、 特に宣言とコードの混合を厳密に拒否するとても古いコンパイラに 対応していたので、 XS モジュール作者にとって、自分のコードがこれに違反していないかを 検査することには意味があります。 しかし、そうすることはこれらの初期のバージョンの Perl でのみ可能なので、 それらのモジュールはこのフラグを <$] < 5.035005> の場合でのみ 追加するように変更する必要があります。

  • The makedepend step is now run in parallel by using make

    makedepend のステップは make を使うことで並列に実行されるようになりました

    When using MAKEFLAGS=-j8, this significantly reduces the time required for:

    MAKEFLAGS=-j8 を使うと、次のものに必要な時間が大幅に削減されます:

        sh ./makedepend MAKE=make cflags
  • Configure now tests whether #include <xlocale.h> is required to use the POSIX 1003 thread-safe locale functions or some related extensions. This prevents problems where a non-public xlocale.h is removed in a library update, or xlocale.h isn't intended for public use. (github #18936)

    Configure は、POSIX 1003 のスレッドセーフなロケール関数や 関連する拡張を使うのに #include <xlocale.h> が必要かどうかを テストするようになりました。 ライブラリ更新で非公式の xlocale.h が削除されたり、 xlocale.h が公的な使用を想定していない場合の問題を防ぎます。 (github #18936)

テスト

Tests were added and changed to reflect the other additions and changes in this release.

このリリースのその他の追加と変更を反映してテストが追加、変更されました。

プラットフォーム対応

Windows

  • Support for old MSVC++ (pre-VC12) has been removed

    古い MSVC++ (VC12 以前) の対応が削除されました

    These did not support C99 and hence can no longer be used to compile perl.

    これらは C99 に対応していないので、もはや perl をコンパイルするのには 使えません。

  • Support for compiling perl on Windows using Microsoft Visual Studio 2022 (containing Visual C++ 14.3) has been added.

    (Visual C++ 14.3 を含む) Microsoft Visual Studio 2022 を 使った Windows での perl のコンパイルへの対応が追加されました。

  • The :win32 IO layer has been removed. This experimental replacement for the :unix layer never reached maturity in its nearly two decades of existence.

    :win32 IO 層が削除されました。 この実験的な :unix 層の置換物は、約 20 年存在していた間にも 成熟することはありませんでした。

VMS

keys %ENV on VMS returns consistent results

On VMS entries in the %ENV hash are loaded from the OS environment on first access, hence the first iteration of %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 %ENV in scalar context, meaning that scalar %ENV would return 0 if called before any other %ENV access, or would only return the count of keys accessed if there had been no iteration.

VMS では、%ENV ハッシュのエントリは 最初のアクセスで OS 環境から読み込まれるので、 %ENV の最初の反復は、全ての可能なキーを見つけるために環境変数全体が スキャンされる必要がありました。 この初期化は完全な反復では常に正しく行われていましたが、 以前はスカラコンテキストでの %ENV では起きていなかったので、 scalar %ENV とすると、それより前に %ENV アクセスがないと 0 を返し、 反復がない場合、アクセスされたキーの数だけを返していました。

These bugs are now fixed - %ENV and keys %ENV in scalar context now return the correct result - the count of all keys in the environment.

これらのバグは修正されました; スカラコンテキストでの %ENVkeys %ENV は正しい結果、つまり環境変数の全てのキーの数を 返すようになりました。

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

AT&T UWIN

UWIN is a UNIX compatibility layer for Windows. It was last released in 2012 and has been superseded by Cygwin these days.

UWIN は Windows のための UNIX 互換層です。 最後のリリースは 2012 年で、最近は Cygwin に置き換えられています。

DOS/DJGPP

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.

DJGPP は、DOS で動作する 32-bit x86 システムへの GNU ツールチェーンの移植です。 最後に知られている、ここで Perl をビルドしようとする試みは 5.20 に 対してのもので、miniperl をビルドしただけでした。

NetWare

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.

Novell NetWare の対応コードは削除されました。 NetWare は Novell によるサーバオペレーティングシステムです。 この移植版が最後に更新されたのは 2002 年 7 月で、 プラットフォーム自体も 2009 年 5 月です。

Unrelated changes accidentally broke the build for the NetWare port in September 2009, and in 12 years no-one has reported this.

2009 年 9 月に、無関係な変更が偶然 NetWare でのビルドを壊していましたが、 12 年間誰もこれを報告しませんでした。

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

z/OS

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.

この更新では、EBCDIC 静的/動的と 31 ビット/64 ビットアドレッシング モードの Perl をビルドできるようになりました。 通過するテストの数は、これらの更新の前の基準と一貫しています。

These changes also provide the base support to be able to provide ASCII static/dynamic and 31-bit/64-bit addressing mode Perl.

これらの変更は、ASCII 静的/動的と 31 ビット/64 ビットアドレッシング モードの Perl を提供できる基本的な機能を提供します。

The z/OS (previously called OS/390) README was updated to describe ASCII and EBCDIC builds.

(以前は OS/390 と呼ばれていた) z/OS の README は、 ASCII ビルドと EBCDIC ビルドを記述するために更新されました。

内部の変更

  • 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.

    Perl 5.8 での PERL_OBJECT の削除以降、PERL_IMPLICIT_CONTEXT と MULTIPLICITY は同義語で、互いに交換可能になっていました。 コードの単純化のために、全ての PERL_IMPLICIT_CONTEXT は MULTIPLICITY に置き換えられました。

    PERL_IMPLICIT_CONTEXT will remain defined for compatibility with XS modules.

    XS モジュールの互換性のために、PERL_IMPLICIT_CONTEXT も定義されたままです。

  • The API constant formerly named G_ARRAY, indicating list context, has now been renamed to a more accurate G_LIST. A compatibilty macro G_ARRAY has been added to allow existing code to work unaffected. New code should be written using the new constant instead. This is supported by Devel::PPPort version 3.63.

    リストコンテキストを示すための、以前は G_ARRAY という名前だった API 定数は、より正確な G_LIST に名前が変更されました。 既存のコードが影響なく動作できるようにするために、 互換性のためのマクロ G_ARRAY が追加されました。 しかし、新しいコードは新しい定数を使って書かれるべきです。 これは Devel::PPPort バージョン 3.63 で対応されました。

  • Macros have been added to perl.h to facilitate version comparisons: PERL_GCC_VERSION_GE, PERL_GCC_VERSION_GT, PERL_GCC_VERSION_LE and PERL_GCC_VERSION_LT.

    バージョン比較を助けるためのマクロが perl.h に追加されました: PERL_GCC_VERSION_GE, PERL_GCC_VERSION_GT, PERL_GCC_VERSION_LE, PERL_GCC_VERSION_LT

    Inline functions have been added to embed.h to determine the position of the least significant 1 bit in a word: lsbit_pos32 and lsbit_pos64.

    ワードの中の最下位の 1 のビットの位置を決定するためのインライン関数が embed.h に追加されました: lsbit_pos32lsbit_pos64

  • Perl_ptr_table_clear 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.

    Perl_ptr_table_clear は削除されました。 これは (2011 年リリースの) v5.14.0 から廃止予定とされていて、 CPAN で使っているコードはありません。

  • Added new boolean macros and functions. See "Stable boolean tracking" for related information and perlapi for documentation.

    新しいブール値マクロと関数が追加されました。 関連する情報については "Stable boolean tracking" を、 文書については perlapi を参照してください。

    • sv_setbool

    • sv_setbool_mg

    • SvIsBOOL

  • Added 4 missing functions for dealing with RVs:

    RVs を扱うための四つの不足していた関数が追加されました:

    • sv_setrv_noinc

    • sv_setrv_noinc_mg

    • sv_setrv_inc

    • sv_setrv_inc_mg

  • xs_handshake()'s two failure modes now provide distinct messages.

    xs_handshake() の二つの失敗モードは、異なるメッセージを 出力するようになりました。

  • Memory for hash iterator state (struct xpvhv_aux) is now allocated as part of the hash body, instead of as part of the block of memory allocated for the main hash array.

    ハッシュ反復子状態 (struct xpvhv_aux) のメモリは、 メインハッシュ配列のために割り当てられたメモリブロックの一部ではなく、 ハッシュ本体の一部として割り当てられるようになりました。

  • A new phase_name() interface provides access to the name for each interpreter phase (i.e., PL_phase value).

    新しい phase_name() インターフェースは、それぞれのインタプリタフェーズの 名前 (つまり PL_phase の値) へのアクセスを提供します。

  • The pack behavior of U has changed for EBCDIC.

    packU の振る舞いは EBCDIC で変更されました。

  • New equality-test functions sv_numeq and sv_streq have been added, along with ..._flags-suffixed variants. These expose a simple and consistent API to perform numerical or string comparison which is aware of operator overloading.

    新しい等価性テスト関数である sv_numeqsv_streq が、 ..._flags 接尾辞付きの変種と共に追加されました。 これらは、演算子オーバーロードを考慮に入れた数値比較および文字列比較を行う 簡単で一貫性のある API を公開します。

  • Reading the string form of an integer value no longer sets the flag SVf_POK. The string form is still cached internally, and still re-read directly by the macros SvPV(sv) etc (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 might break, but such code likely is already buggy if passed some other values, such as floating point values or objects with string overloading.

    整数値の文字列形式を読み込んでも、もはや SVf_POK フラグを 設定しなくなりました。 文字列形式は内部ではキャッシュされるままで、 SvPV(sv) などのマクロ (C 関数を呼び出さないマクロ) によって 直接再読込されるままです。 値を得るために既に API を呼び出している XS コードは、 この変更の影響を受けません。 API を使わずにフラグに直接アクセスしている XS コードは、壊れる かもしれません が、そのようなコードはおそらく既に、文字列 オーバーロードされた浮動小数点数やオブジェクトのようなその他の値を渡すと バグがあります。

    This small change permits code (such as JSON serializers) to reliably determine between

    この小さい変更は (JSON 直列化器のような) コードが、次のものを 安定して決定できるようになります:

    • a value that was initially written as an integer, but then read as a string

      最初に整数として 書き込み されたけれども、その後文字列として 読み込み された値:

          my $answer = 42;
          print "The answer is $answer\n";
    • that same value that was initially written as a string, but then read as an integer

      最初に文字列として 書き込み されたけれども、その後整数として 読み込み された同じ値:

          my $answer = "42";
          print "That doesn't look right\n"
              unless $answer == 6 * 9;

    For the first case (originally written as an integer), we now have:

    最初の場合 (最初に整数として書き込まれた場合)、次のようになります:

        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

    For the second (originally written as a string), we now have:

    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

    (One can't rely on the presence or absence of the flag SVf_IsCOW to determine the history of operations on a scalar.)

    (スカラの操作の履歴を決定するために、 SVf_IsCOW の有無に依存することはできません。)

    Previously both cases would be indistinguishable, with all 4 flags set:

    以前はどちらの場合でも四つ全てのフラグが設定されるので、 区別できませんでした:

        SV = PVIV(0x55d4d62edaf0) at 0x55d4d62f0930
          REFCNT = 1
          FLAGS = (IOK,POK,pIOK,pPOK)
          IV = 42
          PV = 0x55d4d62e1740 "42"\0
          CUR = 2
          LEN = 10

    (and possibly SVf_IsCOW, but not always)

    (そして SVf_IsCOW があるかもしれませんが常にではありません)

    This now means that if XS code really needs to determine which form a value was first written as, it should implement logic roughly

    つまり、ある値が最初にどの形式で書かれたかを決定する必要が 本当に あるなら、これはおおよそ次のようなロジックを実装するべきです:

        if (flags & SVf_IOK|SVf_NOK) && !(flags & SVf_POK)
            serialize as number
        else if (flags & SVf_POK)
            serialize as string
        else
            the existing guesswork ...

    Note that this doesn't cover "dualvars" - scalars that report different values when asked for their string form or number form (such as $!). Most serialization formats cannot represent such duplicity.

    これは「二重変数」 (($! のような)文字列形式と数値形式で異なる値を報告するスカラ) には 対応していないことに注意してください。 ほとんどの直列化は、そのような二重性を表現できません。

    The existing guesswork remains because as well as dualvars, values might be undef, 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.

    二重変数の他にも、値は undef、リファレンス、オーバーロードされた リファレンス、型グロブなど、Perl 自身は表現できるけれども、 外部形式に 1 対 1 でマッピングできないものかもしれないので、 既存の推量 は残っています; 従って、 ある程度の近似やカプセル化が必要です。

  • sv_dump (and Devel::Peek’s Dump 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 not affect any other diagnostic interfaces like pv_display.

    sv_dump (および Devel::PeekDump 関数) は、 PV の高位ビットオクテットを 8 進数ではなく 16 進数として エスケープするようになりました。 ほとんどの人は 8 進数より 16 進数の方が素早く理解できるので、 これによりダンプが少し読みやすくなったはずです。 これは pv_display のようなその他の診断インターフェースには 影響 しません

バグ修正の抜粋

  • utime() now correctly sets errno/$! when called on a closed handle.

    utime() は、閉じたハンドルに対して呼び出されたときに 正しく errno/$! を設定するようになりました。

  • 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 #18660)

    setsockopt() の OPTVAL 引数のフラグは、 マジックが呼び出される前にチェックされていたので、 数値が pack されたバッファ、あるいはその逆として扱われることがありました。 これはまた UTF-8 フラグを無視していたので、 昇格された SV の内部表現を setsockopt() システムコールに渡す バイト列として扱うことがありました。 (github #18660)

  • Only set IOKp, not IOK on $) and $(. This was issue #18955: This will prevent serializers from serializing these variables as numbers (which loses the additional groups). This restores behaviour from 5.16

    $) と $( は IOK ではなく IOKp のみを設定するようになりました。 これは #18955 です: これは直列化器がこれらの変数を (追加のグループが失われる) 数値として 直列化するのを防ぎます。 これは 5.16 の振る舞いを復元します。

  • Use of the mktables debugging facility would cause perl to croak since v5.31.10; this problem has now been fixed.

    mktables デバッグ機能を使うと、v5.31.10 から perl に croak を 引き起こしていました; この問題は修正されました。

  • makedepend logic is now compatible with BSD make (fixes GH #19046).

    makedepend のロジックは BSD make と互換性があるようになりました (GH #19046 を修正しました)。

  • Calling untie on a tied hash that is partway through iteration now frees the iteration state immediately.

    反復の途中の tie されたハッシュに対して untie を呼び出すと、 反復状態を直ちに解放するようになりました。

    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 NEXTKEY. 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

    tie されたハッシュを反復すると、 perl は、反復状態を追跡するために現在のハッシュキーのコピーを保管します; この保管されたコピーは NEXTKEY への 2 番目の引数として渡されます。 この内部状態は、tie されたハッシュの反復が完了するか、 ハッシュが破壊された直後に解放されます; しかし、実装のミスにより、ハッシュが untie された場合には 解放されていませんでした。 この場合、キーの内部コピーは、次のものの中で一番早い時点まで 維持されます:

    1. tie was called again on the same hash

      tie が同じハッシュに対して再び呼び出された

    2. The (now untied) hash was iterated (ie passed to any of keys, values or each)

      (untie された) ハッシュが反復された (つまり、keys, values, each のいずれかに渡された)。

    3. The hash was destroyed.

      ハッシュが破壊された。

    This inconsistency is now fixed - the internal state is now freed immediately by untie.

    この非一貫性は修正されました - 内部状態は untie の直後に解放されるようになりました。

    As the precise timing of this behaviour can be observed with pure Perl code (the timing of DESTROY on objects returned from FIRSTKEY and NEXTKEY) it's just possible that some code is sensitive to it.

    この振る舞いの正確なタイミングは、 (FIRSTKEYNEXTKEY から返されたオブジェクトの DESTROY の タイミング) ピュア Perl コードで観測できます; コードによってはこれを検出することが可能というだけです。

  • The Internals::getcwd() function added for bootstrapping miniperl in perl 5.30.0 is now only available in miniperl. [github #19122]

    perl 5.30.0 で miniperl をブートストラッピングするために追加された The Internals::getcwd() 関数は、miniperl でのみ利用可能になりました。 [github #19122]

  • Setting a breakpoint on a BEGIN or equivalently a use statement could cause a memory write to a freed dbstate op. [GH #19198]

    BEGIN や等価な use 文にブレークポイントを設定すると、 解放された dbstate op へのメモリ書き込みを引き起こすことがありました。 [GH #19198]

  • When bareword filehandles are disabled, the parser was interpreting any bareword as a filehandle, even when immediatey followed by parens.

    裸の単語のファイルハンドルが無効のとき、パーサは、たとえかっこが 引き続いていても、全ての裸の単語をファイルハンドルとして解釈していました。

以前のリリースの訂正

  • perl5300delta mistakenly identified a CVE whose correct identification is CVE-2015-1592.

    perl5300delta は CVE の識別子を誤っていました; 正しい識別子は CVE-2015-1592 です。

おくやみ

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.

1996 年から 2002 年の間に少なくとも 66 コミットを Perl 5 コア配布に行った Raun "Spider" Boardman (CPAN では SPIDB) は、2021 年 5 月 24 日に COVID の 合併症で亡くなりました。 お悔やみ申し上げます。

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 Bad Movie Night 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.

David H. Adler (DHA) は 2021 年 11 月 16 日に亡くなりました。 1997 年、David は最初の Perl ユーザーグループである NY.pm を共同設立し、 1998 年には、世界中のその他のユーザーグループの設立を助ける Perl Mongers を共同設立しました。 彼は北米とヨーロッパの両方の Perl conference に頻繁に出席し、 それらのカンファレンスでの Bad Movie Night 式典の主催者として よく知られていました。 彼はまた、コミュニティ貢献に対する White Camel 賞の運営を含む貢献を Perl Foundation にしていました。 お悔やみ申し上げます。

謝辞

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.

Perl 5.36.0 は、Perl 5.34.0 以降、82 人の作者によって、 2,000 のファイルに約 250,000 行の変更を加えて、 約 1 年間開発されてきました。

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.

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

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, Михаил Козачков.

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

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

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

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

For a more complete list of all of Perl's historical contributors, please

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

バグ報告

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

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

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

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

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

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

感謝を伝える

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

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

    perlthanks

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

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

SEE ALSO

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

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

The INSTALL file for how to build Perl.

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

The README file for general stuff.

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

The Artistic and Copying files for copyright information.

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