perldelta - what is new for perl v5.28.0

perl5280delta - perl v5.28.0 での変更点


This document describes differences between the 5.26.0 release and the 5.28.0 release.

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

If you are upgrading from an earlier release such as 5.24.0, first read perl5260delta, which describes differences between 5.24.0 and 5.26.0.

5.24.0 のような以前のリリースから更新する場合は、まず 5.24.0 と 5.26.0 の違いについて記述している perl5260delta を読んでください。


Unicode 10.0 対応

変更の一覧は http://www.unicode.org/versions/Unicode10.0.0 にあります。

delete on key/value hash slices

(キー/値ハッシュスライスに対する delete)

delete can now be used on key/value hash slices, returning the keys along with the deleted values. [perl #131328]

deleteキー/値のスライス に 使えるようになりました; 削除された値に関するキーを返します。 [perl #131328]


If you find it difficult to remember how to write certain of the pattern assertions, there are now alphabetic synonyms.

特定のパターンアサートの書き方を覚えるのが難しい場合、 英文字の同義語が使えるようになりました.

 CURRENT                NEW SYNONYMS
 ------                 ------------
 (?=...)        (*pla:...) or (*positive_lookahead:...)
 (?!...)        (*nla:...) or (*negative_lookahead:...)
 (?<=...)       (*plb:...) or (*positive_lookbehind:...)
 (?<!...)       (*nlb:...) or (*negative_lookbehind:...)
 (?>...)        (*atomic:...)

These are considered experimental, so using any of these will raise (unless turned off) a warning in the experimental::alpha_assertions category.

これは実験的と考えられているので、これらを使うと(オフにしない限り) experimental::alpha_assertions カテゴリの警告が発生します。

混合 Unicode 用字を検出可能になりました

A mixture of scripts, such as Cyrillic and Latin, in a string is often the sign of a spoofing attack. A new regular expression construct now allows for easy detection of these. For example, you can say

ある文字列の中で Cyrillic と Latin のような用字が混ざっているようなものは、 しばしばスプーフィング攻撃のサインとなります。 新しい正規表現構文はこれらを簡単に検出できるようになります。 例えば、次のようにすると:

 qr/(*script_run: \d+ \b )/x

And the digits matched will all be from the same set of 10. You won't get a look-alike digit from a different script that has a different value than what it appears to be.

マッチングする数字は 10 ある中の同じ集合の中のものになります。 見た目と異なる値を持つ異なった用字からの数字に見えるものには マッチングしません。



 qr/(*sr: \b \w+ \b )/x

makes sure that all the characters come from the same script.


You can also combine script runs with (?>...) (or *atomic:...)).

また、(?>...) (あるいは *atomic:...)) で用字を結合することも できます。

Instead of writing:



you can now run:


    # or

This is considered experimental, so using it will raise (unless turned off) a warning in the experimental::script_run category.

これは実験的と考えられるので、これらを使うと (オフにしない限り) experimental::script_run カテゴリの警告が発生します。

"Script Runs" in perlre を参照してください。

In-place editing with perl -i is now safer

(perl -i でのその場編集はより安全になりました)

Previously in-place editing (perl -i) would delete or rename the input file as soon as you started working on a new file.

以前は、その場編集 (perl -i) は、新しいファイルでの作業を開始すると すぐに入力ファイルは削除されたりリネームされたりしていました。

Without backups this would result in loss of data if there was an error, such as a full disk, when writing to the output file.

バックアップしていない場合、出力ファイルを書き込むときに ディスクフルのようなエラーが起きると、データを失うことになっていました。

This has changed so that the input file isn't replaced until the output file has been completely written and successfully closed.

これは、出力ファイルが完全に書き込まれ、閉じるのが成功するまで、 入力ファイルは置き換えられないように変更されました。

This works by creating a work file in the same directory, which is renamed over the input file once the output file is complete.

これは、同じディレクトリに作業用ファイルを作成し、出力ファイルが完成すると 入力ファイルにリネームされるという形で行われます。



  • Since this renaming needs to only happen once, if you create a thread or child process, that renaming will only happen in the original thread or process.

    このリネームは一度しか起きる必要がないため、スレッドや子プロセスを 作成した場合、このリネームは元のスレッドや プロセスでしか起こりません。

  • If you change directories while processing a file, and your operating system doesn't provide the unlinkat(), renameat() and fchmodat() functions, the final rename step may fail.

    ファイルの処理中にディレクトリを変更し、オペレーティングシステムが unlinkat(), renameat(), fchmodat() 関数を提供していない場合、 最後のリネームは失敗するかもしれません。

[perl #127663]

集合 state 変数の初期化

A persistent lexical array or hash variable can now be initialized, by an expression such as state @a = qw(x y z). Initialization of a list of persistent lexical variables is still not possible.

永続的なレキシカル配列やハッシュは、state @a = qw(x y z) のような式で 初期化できるようになりました。 永続的なレキシカル変数のリストの初期化はできないままです。

フルサイズの inode 番号

On platforms where inode numbers are of a type larger than perl's native integer numerical types, stat will preserve the full content of large inode numbers by returning them in the form of strings of decimal digits. Exact comparison of inode numbers can thus be achieved by comparing with eq rather than ==. Comparison with ==, and other numerical operations (which are usually meaningless on inode numbers), work as well as they did before, which is to say they fall back to floating point, and ultimately operate on a fairly useless rounded inode number if the real inode number is too big for the floating point format.

inode 番号が perl のネイティブの整数型より大きな型になっている プラットフォームの場合、 stat は、inode 番号を 10 進数の文字列で返すことで 大きい inode 番号を完全に保存します。 従って、inode 番号の正確な比較は == ではなく eq で比較することで 行われます。 == での比較や(通常 inode 番号に対しては意味のない) その他の数値演算では、以前と同様に動作します; これは浮動小数点数にフォールバックし、もし実際の inode 番号が浮動小数点数 型式にとって大きすぎると、究極的にはあまり意味のない、丸められた inode 番号に対して 操作することになります。

The sprintf %j format size modifier is now available with pre-C99 compilers

(sprintf%j フォーマットサイズ修飾子は C99 以前で利用可能になりました)

The actual size used depends on the platform, so remains unportable.


Close-on-exec フラグはアトミックに設定されます

When opening a file descriptor, perl now generally opens it with its close-on-exec flag already set, on platforms that support doing so. This improves thread safety, because it means that an exec initiated by one thread can no longer cause a file descriptor in the process of being opened by another thread to be accidentally passed to the executed program.

ファイル記述子を開くとき、プラットフォームが対応しているなら、 perl は一般的に close-on-exec フラグを設定した状態で開くようになりました。 これはスレッド安全性を改善します; なぜなら、あるスレッドで起動した exec は、 もはや他のスレッドで開かれたファイル記述子を間違って実行されたプログラムに 渡されることはないからです。

Additionally, perl now sets the close-on-exec flag more reliably, whether it does so atomically or not. Most file descriptors were getting the flag set, but some were being missed.

さらに、perl は、アトミックに行うかどうかに関わらず、より確実に close-on-exec フラグを設定するようになりました。 ほとんどのファイル記述子はこのフラグを設定していましたが、 漏れている場合がありました。


The new string-specific (&. |. ^. ~.) and number-specific (& | ^ ~) bitwise operators introduced in Perl 5.22 that are available within the scope of use feature 'bitwise' are no longer experimental. Because the number-specific ops are spelled the same way as the existing operators that choose their behaviour based on their operands, these operators must still be enabled via the "bitwise" feature, in either of these two ways:

Perl 5.22 から use feature 'bitwise' のスコープの中で利用可能だった 新しい文字列固有 (&. |. ^. ~.) および数値固有 (& | ^ ~) の ビット単位演算子はもはや実験的ではなくなりました。 数値固有の op は、オペランドによって振る舞いを変える既存の演算子と 同じように綴ります。 これらの演算子は次の二つの方法のどちらの「ビット単位」機能経由で 有効にしなければならないままです:

    use feature "bitwise";

    use v5.28; # "bitwise" now included

They are also now enabled by the -E command-line switch.

これらはまた -E コマンドラインオプションでも有効にできます。

The "bitwise" feature no longer emits a warning. Existing code that disables the "experimental::bitwise" warning category that the feature previously used will continue to work.

"bitwise" 機能はもはや警告を出さなくなりました。 以前使っていた "experimental::bitwise" 警告カテゴリを無効にしている 既存のコードはそのまま動作し続けます。

One caveat that module authors ought to be aware of is that the numeric operators now pass a fifth TRUE argument to overload methods. Any methods that check the number of operands may croak if they do not expect so many. XS authors in particular should be aware that this:

モジュール作者が気にする必要がある一つの問題は、数値演算子は オーバーロードされたメソッドの 5 番目の引数として TRUE を 渡すようになったということです。 オペランドの数をチェックするメソッドは、想定していない数が来るので croak するかもしれません。 次のようにしている XS 作者は:

    SV *
    bitop_handler (lobj, robj, swap)

may need to be changed to this:


    SV *
    bitop_handler (lobj, robj, swap, ...)


These systems include Windows starting with Visual Studio 2005, and in POSIX 2008 systems.

これらのシステムには Visual Studio 2005 以降の Windows と POSIX 2008 システムが含まれます。

The implication is that you are now free to use locales and change them in a threaded environment. Your changes affect only your thread. See "Multi-threaded operation" in perllocale

これにより、スレッド環境でも自由にロケールを使用および 変更できるようになりました。 変更は自身のスレッドにのみ影響を与えます。 "Multi-threaded operation" in perllocale を参照してください。

New read-only predefined variable ${^SAFE_LOCALES}

(新しい読み込み専用定期済み変数 ${^SAFE_LOCALES})

This variable is 1 if the Perl interpreter is operating in an environment where it is safe to use and change locales (see perllocale.) This variable is true when the perl is unthreaded, or compiled in a platform that supports thread-safe locale operation (see previous item).

この変数は、Perl インタプリタが、安全にロケールを使用および変更できる 環境で実行されている場合に 1 になります (perllocale を参照してください)。 この変数は、perl がスレッド対応でないか、スレッドセーフなロケール操作 (前述の項目を参照)に対応していないプラットフォームで コンパイルされている場合に真になります。


[CVE-2017-12837] 正規表現コンパイラのヒープバッファオーバーフロー

Compiling certain regular expression patterns with the case-insensitive modifier could cause a heap buffer overflow and crash perl. This has now been fixed. [perl #131582]

大文字小文字無視修飾子付きのある種の正規表現パターンをコンパイルすると ヒープバッファオーバーフローを引き起こし、perl が クラッシュすることがありました。 これは修正されました。 [perl #131582]

[CVE-2017-12883] 正規表現パーサのバッファの読み込み過ぎ

For certain types of syntax error in a regular expression pattern, the error message could either contain the contents of a random, possibly large, chunk of memory, or could crash perl. This has now been fixed. [perl #131598]

正規表現パターン中のある種の文法エラーにおいて、 エラーメッセージにランダムでおそらく大きなメモリの塊を表示したり、perl を クラッシュさせたりしていました。 これは修正されました。 [perl #131598]

[CVE-2017-12814] $ENV{$key} stack buffer overflow on Windows

([CVE-2017-12814] Windows での $ENV{$key} スタックバッファオーバーフロー)

A possible stack buffer overflow in the %ENV code on Windows has been fixed by removing the buffer completely since it was superfluous anyway. [perl #131665]

Windows での %ENV コードで起こりうるスタックバッファオーバーフローが、 バッファを完全に削除することで修正されました; これはどちらにしろ過剰でした。 [perl #131665]


Perl 5.28.0 retires various older hash functions which are not viewed as sufficiently secure for use in Perl. We now support four general purpose hash functions, Siphash (2-4 and 1-3 variants), and Zaphod32, and StadtX hash. In addition we support SBOX32 (a form of tabular hashing) for hashing short strings, in conjunction with any of the other hash functions provided.

Perl 5.28.0 では、Perl での使用において十分に安全であると考えられていない 様々な古いハッシュ関数が引退します。 現在四つの汎用ハッシュ関数、 Siphash (2-4 版と 1-3 版), Zaphod32, StadtX ハッシュを使います。 これに加えて、短い文字列のハッシュに SBOX32 (集計ハッシュ型式) を、 他のハッシュ関数と組み合わせて使います。

By default Perl is configured to support SBOX hashing of strings up to 24 characters, in conjunction with StadtX hashing on 64 bit builds, and Zaphod32 hashing for 32 bit builds.

デフォルトでは Perl は 24 文字までの文字列では SBOX ハッシュを用い、 64 ビットビルドでは StadtX ハッシュを、32 ビットビルドでは Zaphod32 ハッシュと組み合わせます。

You may control these settings with the following options to Configure:

これらの設定は以下の Configure オプションで制御できます:


To disable SBOX hashing you can use

SBOX ハッシュを無効にするには:


And to set the maximum length to use SBOX32 hashing on with:

SBOX32 ハッシュを使う最大長を設定するには:


The maximum length allowed is 256. There probably isn't much point in setting it higher than the default.

設定できる最大長は 256 までです。 これをデフォルトより大きい値にしても余り意味はないでしょう。



The experimental subroutine signatures feature has been changed so that subroutine attributes must now come before the signature rather than after. This is because attributes like :lvalue can affect the compilation of code within the signature, for example:

実験的なサブルーチンシグネチャ機能について、サブルーチン属性はシグネチャの 後ではなく前でなければならないように変更されました。 これは、:lvalue のような属性がシグネチャの中のコードのコンパイルに 影響を与えることがあるからです; 例えば:

    sub f :lvalue ($a = do { $x = "abc"; return substr($x,0,1)}) { ...}

Note that this the second time they have been flipped:

これを入れ替えたのは 2 回目であることに注意してください:

    sub f :lvalue ($a, $b) { ... }; # 5.20; 5.28 onwards
    sub f ($a, $b) :lvalue { ... }; # 5.22 - 5.26


Omitting the commas between variables passed to formats is no longer allowed. This has been deprecated since Perl 5.000.

フォーマットに渡す変数の間のカンマを省略するのはもはや許されなくなりました。 これは Perl 5.000 から廃止予定になっていました。

The :locked and :unique attributes have been removed

(:locked:unique の属性は削除されました)

These have been no-ops and deprecated since Perl 5.12 and 5.10, respectively.

これらはなにもしておらず、それぞれ Perl 5.12 と 5.10 から 廃止予定になっていました。

\N{} with nothing between the braces is now illegal

(\N{} で中かっこの中に何も書かないのは不正になりました)

This has been deprecated since Perl 5.24.

これは Perl 5.24 から廃止予定になっていました。


Using open() and opendir() to associate both a filehandle and a dirhandle to the same symbol (glob or scalar) has been deprecated since Perl 5.10.

open()opendir() を、ファイルハンドルとディレクトリハンドルの 両方に同じシンボル(グロブまたはスカラ)で関連付けるのに使うのは、 Perl 5.10 から廃止予定になっていました。

Use of bare << to mean <<"" is no longer allowed

(<<"" の意味で << を使うのはもはや許されなくなりました)

Use of a bare terminator has been deprecated since Perl 5.000.

裸の区切り文字は Perl 5.000 から廃止予定になっていました。

非正整数へのリファレンスを $/ に設定するのはもはや許されません

This used to work like setting it to undef, but has been deprecated since Perl 5.20.

これは undef への設定のように動作していましたが、Perl 5.20 から 廃止予定になっていました。

Unicode code points with values exceeding IV_MAX are now fatal

(IV_MAX を超える値の Unicode 符号位置は致命的エラーになりました)

This was deprecated since Perl 5.24.

これは Perl 5.24 から廃止予定になっていました。

The B::OP::terse method has been removed

(B::OP::terse メソッドは削除されました)

Use B::Concise::b_terse instead.

代わりに B::Concise::b_terse を使ってください。

非メソッドに対する継承された AUTOLOAD はもはや許されなくなりました

This was deprecated in Perl 5.004.

これは Perl 5.004 から廃止予定になっていました。

0xFF を越える符号位置を持つ文字列に対するビット単位の文字列演算子の使用は許されなくなりました

Code points over 0xFF do not make sense for bitwise operators and such an operation will now croak, except for a few remaining cases. See perldeprecation.

0xFF を越える符号位置に関するビット単位演算子は意味を持たないので、 そのような操作は、いくつかの場合を除いて croak するようになりました。 perldeprecation を参照してください。

This was deprecated in Perl 5.24.

これは Perl 5.24 から廃止予定になっていました。

Setting ${^ENCODING} to a defined value is now illegal

(${^ENCODING} に定義された値を設定するのは不正になりました)

This has been deprecated since Perl 5.22 and a no-op since Perl 5.26.

これは Perl 5.22 から廃止予定になっており、Perl 5.26 から 何もしなくなっていました。

Backslash no longer escapes colon in PATH for the -S switch

(-S オプションで PATH の中の逆スラッシュはもはやコロンをエスケープしなくなりました)

Previously the -S switch incorrectly treated backslash ("\") as an escape for colon when traversing the PATH environment variable. [perl #129183]

以前は、-S オプションは PATH 環境変数を辿るときに誤って 逆スラッシュ ("\") をコロンのエスケープとして扱っていました。 [perl #129183]

-DH (DEBUG_H) (非)機能は削除されました

On a perl built with debugging support, the H flag to the -D debugging option has been removed. This was supposed to dump hash values, but has been broken for many years.

デバッグに対応した perl において、-D デバッグオプションの H フラグは削除されました。 これはハッシュ値をダンプする予定でしたが、何年も壊れたままでした。


By the time of its initial stable release in Perl 5.12, the ... (yada-yada) operator was explicitly intended to serve as a statement, not an expression. However, the original implementation was confused on this point, leading to inconsistent parsing. The operator was accidentally accepted in a few situations where it did not serve as a complete statement, such as

Perl 5.12 での初期リリース時点から、... (ヤダヤダ) 演算子は、 式ではなく文として扱うことを明示的に想定していました。 しかし、元の実装はこの点において混乱していて、一貫性のないパースを 引き起こしていました。 この演算子は、次のような、完全な文として扱えないような状況でも 誤って受け入れていました:

    ... . "foo";
    ... if $a < $b;

The parsing has now been made consistent, permitting yada-yada only as a statement. Affected code can use do{...} to put a yada-yada into an arbitrary expression context.

パースは一貫性を持つようになり、ヤダヤダは文としてのみ 許されるようになりました。 影響を受けるコードは、任意の式が使えるところにヤダヤダを置くために do{...} が使えます。


Since Perl 5.8, the sort pragma has had subpragmata _mergesort, _quicksort, and _qsort that can be used to specify which algorithm perl should use to implement the sort builtin. This was always considered a dubious feature that might not last, hence the underscore spellings, and they were documented as not being portable beyond Perl 5.8. These subpragmata have now been deleted, and any attempt to use them is an error. The sort pragma otherwise remains, and the algorithm-neutral stable subpragma can be used to control sorting behaviour. [perl #119635]

Perl 5.8 から、sort プラグマには、sort 組み込み関数の 実装に使うアルゴリズムを指定するための _mergesort, _quicksort, _qsort 副プラグマがありました。 これは常に疑わしく、長続きしないかもしれない機能と考えられていたので、 下線付きの名前になっていて、Perl 5.8 から移植性がないと文書化されていました。 これらの副プラグマは削除され、これらを使おうとする試みはエラーとなります。 それ以外の sort プラグマは残り、アルゴリズム中立な stable 副プラグマをソートの振る舞いを制御するために使えます。 [perl #119635]


Octal and binary floating point literals used to permit any hexadecimal digit to appear after the radix point. The digits are now restricted to those appropriate for the radix, as digits before the radix point always were.

8 進と 2 進の浮動小数点数リテラルでは、基数点の前に現れる任意の 16 進文字を 許していました。 この数字は、基数点の前の数字が常にそうであるのと同様、その基数に 適切なもののみに制限されるようになりました。

Return type of unpackstring()

(unpackstring() の返り値型)

The return types of the C API functions unpackstring() and unpack_str() have changed from I32 to SSize_t, in order to accommodate datasets of more than two billion items.

C API 関数 unpackstring()unpack_str() の返り値の型は I32 から SSize_t 変更されました; 20 億個以上のデータセットに対応するためです。


Use of vec on strings with code points above 0xFF is deprecated

(符号位置が 0xFF を越える文字列に対する vec の使用は廃止予定になりました)

Such strings are represented internally in UTF-8, and vec is a bit-oriented operation that will likely give unexpected results on those strings.

これらの文字列は内部的に UTF-8 で表現されており、vec はビット単位の操作を 行うので、これらの文字列に対してはおそらく想定外の結果となります。

Some uses of unescaped "{" in regexes are no longer fatal

(正規表現中のエスケープされない "{" の使用法の一部はもはや致命的ではなくなりました)

Perl 5.26.0 fatalized some uses of an unescaped left brace, but an exception was made at the last minute, specifically crafted to be a minimal change to allow GNU Autoconf to work. That tool is heavily depended upon, and continues to use the deprecated usage. Its use of an unescaped left brace is one where we have no intention of repurposing "{" to be something other than itself.

Perl 5.26.0 はいくつかのエスケープされていない左中かっこの使用を 致命的エラーにしましたが、最後の瞬間に例外を作りました; 特に、GNU Autoconf が動作するように最小限の操作を行いました。 このツールはこれにとても依存していて、廃止予定の使い方を使い続けています。 ここでのエスケープされない左中かっこの使い方は、私たちが "{" に他の意味を持たせる意図のないものでした。

That exception is now generalized to include various other such cases where the "{" will not be repurposed.

この例外は、"{" に他の意味を持たせないその他の様々な場合に 一般化されました。

Note that these uses continue to raise a deprecation message.


Use of unescaped "{" immediately after a "(" in regular expression patterns is deprecated

(正規表現中の "(" の直後の "{" の使用は廃止予定になりました)

Using unescaped left braces is officially deprecated everywhere, but it is not enforced in contexts where their use does not interfere with expected extensions to the language. A deprecation is added in this release when the brace appears immediately after an opening parenthesis. Before this, even if the brace was part of a legal quantifier, it was not interpreted as such, but as the literal characters, unlike other quantifiers that follow a "(" which are considered errors. Now, their use will raise a deprecation message, unless turned off.

エスケープされない左中かっこは公式にはどこでも廃止予定ですが、 その使用が言語の予定されている拡張を妨害しない文脈では強制されません。 このリリースから、中かっこが開きかっこの直後にある場合も 廃止予定に追加されました。 以前は、たとえ中かっこが正当な量指定子の一部でも、そのように解釈されず、 リテラル文字として解釈されていました; これは "(" をエラーと考える他の量指定子と異なっていました。 これらの使用は、オフにしない限り廃止予定警告が出るようになりました。

Assignment to $[ will be fatal in Perl 5.30

($[ への代入は Perl 5.30 から致命的エラーになります)

Assigning a non-zero value to $[ has been deprecated since Perl 5.12, but was never given a deadline for removal. This has now been scheduled for Perl 5.30.

$[ に非 0 値を代入することは Perl 5.12 から廃止予定と なっていましたが、削除の期日は決まっていませんでした。 これは Perl 5.30 に予定されています。

hostname() は Perl 5.32 から引数を受け付けなくなります

Passing arguments to Sys::Hostname::hostname() was already deprecated, but didn't have a removal date. This has now been scheduled for Perl 5.32. [perl #124349]

Sys::Hostname::hostname() に引数を渡すことは既に廃止予定と なっていましたが、削除の期日は決まっていませんでした。 これは Perl 5.32 に予定されています。 [perl #124349]


The following modules will be removed from the core distribution in a future release, and will at that time need to be installed from CPAN. Distributions on CPAN which require these modules will need to list them as prerequisites.

以下のモジュールは将来のリリースでコア配布から削除され、その時点で CPAN からインストールされる必要があるようになります。 これらのモジュールを必要とする CPAN 配布はこれらを依存関係に入れる 必要があります。

The core versions of these modules will now issue "deprecated"-category warnings to alert you to this fact. To silence these deprecation warnings, install the modules in question from CPAN.

これらのモジュールのコア版は、この事実を知らせるために、 "deprecated" カテゴリの警告を発生させます。 この廃止予定警告を止めるには、対象のモジュールを CPAN からインストールしてください。

Note that these are (with rare exceptions) fine modules that you are encouraged to continue to use. Their disinclusion from core primarily hinges on their necessity to bootstrapping a fully functional, CPAN-capable Perl installation, not usually on concerns over their design.

これらは(まれな例外を除いて)使い続けることを勧められる、 良いモジュールであることに注意してください。 コアからの除去は基本的に、完全な機能を持ち、CPAN が利用可能な Perl の インストールに対する必要性を基準としていて、通常はその設計は考慮していません。

Locale::Codes and its associated Country, Currency and Language modules

(Locale::Codes とそれに関連付けられる Country, Currency, Language モジュール)


  • The start up overhead for creating regular expression patterns with Unicode properties (\p{...}) has been greatly reduced in most cases.

    Unicode 特性 (\p{...}) を含む正規表現パターンを作成するときの 初期オーバーヘッドがほとんどの場合で大きく減少しました。

  • Many string concatenation expressions are now considerably faster, due to the introduction internally of a multiconcat opcode which combines multiple concatenations, and optionally a = or .=, into a single action. For example, apart from retrieving $s, $a and $b, this whole expression is now handled as a single op:

    内部的に multiconcat オペコードが導入されたことにより、 多くの文字列結合式はかなり速くなりました; これは複数の連結およびオプションの = または .= を単一のアクションに 結合します。 例えば、別々に $s, $a, $b を取得するのではなく、この式全体を 一つの op で扱えるようになりました:

        $s .= "a=$a b=$b\n"

    As a special case, if the LHS of an assignment is a lexical variable or my $s, the op itself handles retrieving the lexical variable, which is faster.

    特別な場合として、代入の左側がレキシカル変数や my $s の場合、op 自身が レキシカル変数の取得を扱うので、さらに速くなります。

    In general, the more the expression includes a mix of constant strings and variable expressions, the longer the expression, and the more it mixes together non-utf8 and utf8 strings, the more marked the performance improvement. For example on a x86_64 system, this code has been benchmarked running four times faster:

    一般的に、定数文字列と変数式を混ぜた式が多くなるほど、式が長くなるほど、 より多く非 utf8 文字列と utf8 文字列を混ぜることになるほど、 より大きく性能が改善します。 x86_64 システムの例として、このコードのベンチマークは 4 倍速くなります:

        my $s;
        my $a = "ab\x{100}cde";
        my $b = "fghij";
        my $c = "\x{101}klmn";
        for my $i (1..10_000_000) {
            $s = "\x{100}wxyz";
            $s .= "foo=$a bar=$b baz=$c";

    In addition, sprintf expressions which have a constant format containing only %s and %% format elements, and which have a fixed number of arguments, are now also optimised into a multiconcat op.

    さらに、%s%% のフォーマット要素のみを含む定数フォーマットの sprintf 式で、引数の数が固定の場合、 これも multiconcat op に最適化されます。

  • The ref() builtin is now much faster in boolean context, since it no longer bothers to construct a temporary string like Foo=ARRAY(0x134af48).

    ref() 組み込み関数は、真偽値コンテキストで非常に速くなりました; もはや Foo=ARRAY(0x134af48) のような一時的文字列をわざわざ 作らなくなったからです。

  • keys() in void and scalar contexts is now more efficient.

    無効コンテキストとスカラコンテキストでの keys() はより効率的になりました。

  • The common idiom of comparing the result of index() with -1 is now specifically optimised, e.g.

    次のように、index() の結果を -1 と比較するという一般的な慣用句は特に 最適化されました:

        if (index(...) != -1) { ... }
  • for() loops and similar constructs are now more efficient in most cases.

    for() ループや似たような構文はほとんどの場合でより効率的になりました。

  • File::Glob has been modified to remove unnecessary backtracking and recursion, thanks to Russ Cox. See https://research.swtch.com/glob for more details.

    File::Glob は不必要なバックトラックと再帰を除去するように修正されました; Russ Cox に感謝します。 さらなる詳細については https://research.swtch.com/glob を 参照してください。

  • The XS-level SvTRUE() API function is now more efficient.

    XS レベルの SvTRUE() API 関数はより効率的になりました。

  • Various integer-returning ops are now more efficient in scalar/boolean context.

    様々な整数を返す op はスカラ/真偽値コンテキストでより効率的になりました。

  • Slightly improved performance when parsing stash names. [perl #129990]

    スタッシュ名をパースするときに少し性能が向上しました。 [perl #129990]

  • Calls to require for an already loaded module are now slightly faster. [perl #132171]

    既に読み込まれているモジュールに対するo require 呼び出しは少し 速くなりました。 [perl #132171]

  • The performance of pattern matching [[:ascii:]] and [[:^ascii:]] has been improved significantly except on EBCDIC platforms.

    パターンマッチング [[:ascii:]] および [[:^ascii:]] の性能は、 EBCDIC プラットフォームを除いて大きく改善しました。

  • Various optimizations have been applied to matching regular expression patterns, so under the right circumstances, significant performance gains may be noticed. But in an application with many varied patterns, little overall improvement likely will be seen.

    様々な最適化が正規表現パターンマッチングに適用されたので、 条件さえ揃えば、大幅な性能改善に気付くかもしれません。 しかし多くの様々なパターンを使うアプリケーションでは、全体としての改善は ほとんど分からないでしょう。

  • Other optimizations have been applied to UTF-8 handling, but these are not typically a major factor in most applications.

    その他の最適化が UTF-8 の扱いに適用されましたが、これらはほとんどの アプリケーションに対しては典型的には大きな要素にはなりません。


Key highlights in this release across several modules:


use vars の削除

The usage of use vars has been discouraged since the introduction of our in Perl 5.6.0. Where possible the usage of this pragma has now been removed from the Perl source code.

Perl 5.6.0 で our が導入されてから、use vars の使用は非推奨でした。 このプラグマが使用可能な場所は Perl ソースコードから削除されました。

This had a slight effect (for the better) on the output of WARNING_BITS in B::Deparse.

これにより B::Deparse の WARNING_BITS の出力に(良い方向に)少し 影響があります。

多くのモジュールでの DynaLoader の使用は XSLoader に変更されました

XSLoader is more modern, and most modules already require perl 5.6 or greater, so no functionality is lost by switching. In some cases, we have also made changes to the local implementation that may not be reflected in the version on CPAN due to a desire to maintain more backwards compatibility.

XSLoader はよりモダンになました; そしてほとんどのモジュールは既に perl 5.6 以上を要求しているので、この切り替えにより失われる機能はありません。 場合によっては、より後方互換性を高めるために CPAN 版には反映されないような 変更を、ローカルの実装に加えています。


  • Archive::Tar has been upgraded from version 2.24 to 2.30.

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

    This update also handled CVE-2018-12015: directory traversal vulnerability. [cpan #125523]

    この更新は、CVE-2018-12015: ディレクトリトラバーサル脆弱性の対応も含みます。 [cpan #125523]

  • arybase has been upgraded from version 0.12 to 0.15.

    arybase はバージョン 0.12 から 0.15 に更新されました。

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

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

  • attributes has been upgraded from version 0.29 to 0.33.

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

  • B has been upgraded from version 1.68 to 1.74.

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

  • B::Concise has been upgraded from version 0.999 to 1.003.

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

  • B::Debug has been upgraded from version 1.24 to 1.26.

    B::Debug はバージョン 1.24 から 1.26 に更新されました。

    NOTE: B::Debug is deprecated and may be removed from a future version of Perl.

    注意: B::Debug は廃止予定であり、将来のバージョンの Perl で 削除される予定です。

  • B::Deparse has been upgraded from version 1.40 to 1.48.

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

    It includes many bug fixes, and in particular, it now deparses variable attributes correctly:

    多くのバグ修正を含んでいますが、特に変数属性を正しく 逆パース出来るようになりました:

        my $x :foo;  # used to deparse as
                     # 'attributes'->import('main', \$x, 'foo'), my $x;
  • base has been upgraded from version 2.25 to 2.27.

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

  • bignum has been upgraded from version 0.47 to 0.49.

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

  • blib has been upgraded from version 1.06 to 1.07.

    blib はバージョン 1.06 から 1.07 に更新されました。

  • bytes has been upgraded from version 1.05 to 1.06.

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

  • Carp has been upgraded from version 1.42 to 1.50.

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

    If a package on the call stack contains a constant named ISA, Carp no longer throws a "Not a GLOB reference" error.

    コールスタックのパッケージが ISA という名前を持っていたとき、 Carp はもはや "Not a GLOB reference" エラーを投げなくなりました。

    Carp, when generating stack traces, now attempts to work around longstanding bugs resulting from Perl's non-reference-counted stack. [perl #52610]

    Carp は、スタックトレースを生成するときに、Perl の参照カウントされない スタックによる長年のバグを回避しようと試みるようになりました。 [perl #52610]

    Carp has been modified to avoid assuming that objects cannot be overloaded without the overload module loaded (this can happen with objects created by XS modules). Previously, infinite recursion would result if an XS-defined overload method itself called Carp. [perl #132828]

    Carp は、オブジェクトを overload モジュールを読み込むことなく オーバーロードすることはできないという仮定 (これは XS モジュールで作られたオブジェクトでは起こることがありました) をしないように修正されました。 以前は、XS で定義されたオーバーロードメソッド自身が Carp を呼び出すと 無限再帰になっていました。 [perl #132828]

    Carp now avoids using overload::StrVal, partly because older versions of overload (included with perl 5.14 and earlier) load Scalar::Util at run time, which will fail if Carp has been invoked after a syntax error.

    Carp は overload::StrVal の使用を避けるようになりました; 理由の一部は、 古いバージョンの overload (perl 5.14 以前に含まれていたもの) は Scalar::Util を実行時に読み込むため、文法エラーの後に Carp が 呼び出されると失敗するからです。

  • charnames has been upgraded from version 1.44 to 1.45.

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

  • Compress::Raw::Zlib has been upgraded from version 2.074 to 2.076.

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

    This addresses a security vulnerability in older versions of the 'zlib' library (which is bundled with Compress-Raw-Zlib).

    これは、(Compress-Raw-Zlib に同梱されていた) 古いバージョンの 'zlib' ライブラリのセキュリティ脆弱性に対応しました。

  • Config::Extensions has been upgraded from version 0.01 to 0.02.

    Config::Extensions はバージョン 0.01 から 0.02 に更新されました。

  • Config::Perl::V has been upgraded from version 0.28 to 0.29.

    Config::Perl::V はバージョン 0.28 から 0.29 に更新されました。

  • CPAN has been upgraded from version 2.18 to 2.20.

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

  • Data::Dumper has been upgraded from version 2.167 to 2.170.

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

    Quoting of glob names now obeys the Useqq option [perl #119831].

    グロブ名のクォートは Useqq オプションを拒否するようになりました [perl #119831]

    Attempts to set an option to undef through a combined getter/setter method are no longer mistaken for getter calls [perl #113090].

    結合されたゲッター/セッターメソッドを通してオプションに undef を 設定しようとしたとき、もはやゲッター呼び出しを間違わなくなりました [perl #113090]

  • Devel::Peek has been upgraded from version 1.26 to 1.27.

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

  • Devel::PPPort has been upgraded from version 3.35 to 3.40.

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

    Devel::PPPort has moved from cpan-first to perl-first maintenance

    Devel::PPPort は cpan-first から perl-first にメンテナンスが移りました。

    Primary responsibility for the code in Devel::PPPort has moved into core perl. In a practical sense there should be no change except that hopefully it will stay more up to date with changes made to symbols in perl, rather than needing to be updated after the fact.

    Devel::PPPort のコードに関する優先的な責任はコア perl に移動しました。 実際問題としては、何かあってから更新が必要になるのではなく、 perl のシンボルに行われた変更により素早く追随できるかもしれないということを 除いて、何の変更もありません。

  • Digest::SHA has been upgraded from version 5.96 to 6.01.

    Digest::SHA はバージョン 5.96 から 6.01 に更新されました。

  • DirHandle has been upgraded from version 1.04 to 1.05.

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

  • DynaLoader has been upgraded from version 1.42 to 1.45.

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

    Its documentation now shows the use of __PACKAGE__ and direct object syntax [perl #132247].

    この文書は、__PACKAGE__ の使い方と、直接オブジェクト文法について 示すようになりました [perl #132247]

  • Encode has been upgraded from version 2.88 to 2.97.

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

  • encoding has been upgraded from version 2.19 to 2.22.

    encoding はバージョン 2.19 から 2.22 に更新されました。

  • Errno has been upgraded from version 1.28 to 1.29.

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

  • experimental has been upgraded from version 0.016 to 0.019.

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

  • Exporter has been upgraded from version 5.72 to 5.73.

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

  • ExtUtils::CBuilder has been upgraded from version 0.280225 to 0.280230.

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

  • ExtUtils::Constant has been upgraded from version 0.23 to 0.25.

    ExtUtils::Constant はバージョン 0.23 から 0.25 に更新されました。

  • ExtUtils::Embed has been upgraded from version 1.34 to 1.35.

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

  • ExtUtils::Install has been upgraded from version 2.04 to 2.14.

    ExtUtils::Install はバージョン 2.04 から 2.14 に更新されました。

  • ExtUtils::MakeMaker has been upgraded from version 7.24 to 7.34.

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

  • ExtUtils::Miniperl has been upgraded from version 1.06 to 1.08.

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

  • ExtUtils::ParseXS has been upgraded from version 3.34 to 3.39.

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

  • ExtUtils::Typemaps has been upgraded from version 3.34 to 3.38.

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

  • ExtUtils::XSSymSet has been upgraded from version 1.3 to 1.4.

    ExtUtils::XSSymSet はバージョン 1.3 から 1.4 に更新されました。

  • feature has been upgraded from version 1.47 to 1.52.

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

  • fields has been upgraded from version 2.23 to 2.24.

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

  • File::Copy has been upgraded from version 2.32 to 2.33.

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

    It will now use the sub-second precision variant of utime() supplied by Time::HiRes where available. [perl #132401].

    利用可能な場合は Time::HiRes によって提供される utime() による秒以下の精度を使うようになりました [perl #132401].

  • File::Fetch has been upgraded from version 0.52 to 0.56.

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

  • File::Glob has been upgraded from version 1.28 to 1.31.

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

  • File::Path has been upgraded from version 2.12_01 to 2.15.

    File::Path はバージョン 2.12_01 から 2.15 に更新されました。

  • File::Spec and Cwd have been upgraded from version 3.67 to 3.74.

    File::SpecCwd はバージョン 3.67 から 3.74 に更新されました。

  • File::stat has been upgraded from version 1.07 to 1.08.

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

  • FileCache has been upgraded from version 1.09 to 1.10.

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

  • Filter::Simple has been upgraded from version 0.93 to 0.95.

    Filter::Simple はバージョン 0.93 から 0.95 に更新されました。

  • Filter::Util::Call has been upgraded from version 1.55 to 1.58.

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

  • GDBM_File has been upgraded from version 1.15 to 1.17.

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

    Its documentation now explains that each and delete don't mix in hashes tied to this module [perl #117449].

    この文書は、eachdelete はこのモジュールで tie されたハッシュで 混ざらないことを説明するようになりました [perl #117449]

    It will now retry opening with an acceptable block size if asking gdbm to default the block size failed [perl #119623].

    It will now retry opening with an acceptable block size if asking gdbm にデフォルトブロックサイズを尋ねるのに失敗した場合、 受け入れられるブロックサイズで開くことを再挑戦するようになりました [perl #119623]

  • Getopt::Long has been upgraded from version 2.49 to 2.5.

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

  • Hash::Util::FieldHash has been upgraded from version 1.19 to 1.20.

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

  • I18N::Langinfo has been upgraded from version 0.13 to 0.17.

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

    This module is now available on all platforms, emulating the system nl_langinfo(3) on systems that lack it. Some caveats apply, as detailed in its documentation, the most severe being that, except for MS Windows, the CODESET item is not implemented on those systems, always returning "".

    このモジュールは全てのプラットフォームで利用可能になりました; nl_langinfo(3) がないシステムではこれをエミュレートするようになりました。 文書に詳細が書かれている ように、いくつかの問題はあります; CODESET を実装されていないシステムでの、 MS Windows 以外での最も大きな問題は、 常に "" を返すことです。

    It now sets the UTF-8 flag in its returned scalar if the string contains legal non-ASCII UTF-8, and the locale is UTF-8 [perl #127288].

    文字列が正当な非 ASCII の UTF-8 を含み、ロケールが UTF-8 の場合は、 返されるスカラに UTF-8 フラグを設定するようになりました [perl #127288]

    This update also fixes a bug in which the underlying locale was ignored for the RADIXCHAR (always was returned as a dot) and the THOUSEP (always empty). Now the locale-appropriate values are returned.

    この変更では、RADIXCHARTHOUSEP においてロケールが無視され、 それぞれ常にドットと空文字列が返るというバグも修正されました。 ロケールに適した値が返されるようになりました。

  • I18N::LangTags has been upgraded from version 0.42 to 0.43.

    I18N::LangTags はバージョン 0.42 から 0.43 に更新されました。

  • if has been upgraded from version 0.0606 to 0.0608.

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

  • IO has been upgraded from version 1.38 to 1.39.

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

  • IO::Socket::IP has been upgraded from version 0.38 to 0.39.

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

  • IPC::Cmd has been upgraded from version 0.96 to 1.00.

    IPC::Cmd はバージョン 0.96 から 1.00 に更新されました。

  • JSON::PP has been upgraded from version 2.27400_02 to 2.97001.

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

  • The libnet distribution has been upgraded from version 3.10 to 3.11.

    libnet 配布はバージョン 3.10 から 3.11 に更新されました。

  • List::Util has been upgraded from version 1.46_02 to 1.49.

    List::Util はバージョン 1.46_02 から 1.49 に更新されました。

  • Locale::Codes has been upgraded from version 3.42 to 3.56.

    Locale::Codes はバージョン 3.42 から 3.56 に更新されました。

    NOTE: Locale::Codes scheduled to be removed from core in Perl 5.30.

    注意: Locale::Codes は Perl 5.30 でコアから削除される予定です。

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

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

  • Math::BigInt has been upgraded from version 1.999806 to 1.999811.

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

  • Math::BigInt::FastCalc has been upgraded from version 0.5005 to 0.5006.

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

  • Math::BigRat has been upgraded from version 0.2611 to 0.2613.

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

  • Module::CoreList has been upgraded from version 5.20170530 to 5.20180622.

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

  • mro has been upgraded from version 1.20 to 1.22.

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

  • Net::Ping has been upgraded from version 2.55 to 2.62.

    Net::Ping はバージョン 2.55 から 2.62 に更新されました。

  • NEXT has been upgraded from version 0.67 to 0.67_01.

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

  • ODBM_File has been upgraded from version 1.14 to 1.15.

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

  • Opcode has been upgraded from version 1.39 to 1.43.

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

  • overload has been upgraded from version 1.28 to 1.30.

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

  • PerlIO::encoding has been upgraded from version 0.25 to 0.26.

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

  • PerlIO::scalar has been upgraded from version 0.26 to 0.29.

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

  • PerlIO::via has been upgraded from version 0.16 to 0.17.

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

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

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

  • Pod::Html has been upgraded from version 1.2202 to 1.24.

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

    A title for the HTML document will now be automatically generated by default from a "NAME" section in the POD document, as it used to be before the module was rewritten to use Pod::Simple::XHTML to do the core of its job [perl #110520].

    A title for the HTML 文書のタイトルはデフォルトで POD 文書の "NAME" 節から自動的に 生成されるようになりました; これはモジュールが中心となる作業を行うのに Pod::Simple::XHTML を使うように 書き直される前と同じ状態です [perl #110520].

  • Pod::Perldoc has been upgraded from version 3.28 to 3.2801.

    Pod::Perldoc はバージョン 3.28 から 3.2801 に更新されました。

  • The podlators distribution has been upgraded from version 4.09 to 4.10.

    podlators 配布はバージョン 4.09 から 4.10 に更新されました。

    Man page references and function names now follow the Linux man page formatting standards, instead of the Solaris standard.

    man ページ参照と関数名は、Solaris の標準ではなく、the Linux man page formatting standards に従うようになりました。

  • POSIX has been upgraded from version 1.76 to 1.84.

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

    Some more cautions were added about using locale-specific functions in threaded applications.

    スレッド対応のアプリケーションでロケール特有の関数を使うことに関する 注意を追加しました。

  • re has been upgraded from version 0.34 to 0.36.

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

  • Scalar::Util has been upgraded from version 1.46_02 to 1.50.

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

  • SelfLoader has been upgraded from version 1.23 to 1.25.

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

  • Socket has been upgraded from version 2.020_03 to 2.027.

    Socket はバージョン 2.020_03 から 2.027 に更新されました。

  • sort has been upgraded from version 2.02 to 2.04.

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

  • Storable has been upgraded from version 2.62 to 3.08.

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

  • Sub::Util has been upgraded from version 1.48 to 1.49.

    Sub::Util はバージョン 1.48 から 1.49 に更新されました。

  • subs has been upgraded from version 1.02 to 1.03.

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

  • Sys::Hostname has been upgraded from version 1.20 to 1.22.

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

  • Term::ReadLine has been upgraded from version 1.16 to 1.17.

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

  • Test has been upgraded from version 1.30 to 1.31.

    Test はバージョン 1.30 から 1.31 に更新されました。

  • Test::Harness has been upgraded from version 3.38 to 3.42.

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

  • Test::Simple has been upgraded from version 1.302073 to 1.302133.

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

  • threads has been upgraded from version 2.15 to 2.22.

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

    The documentation now better describes the problems that arise when returning values from threads, and no longer warns about creating threads in BEGIN blocks. [perl #96538]

    文書はスレッドから値を返すときの問題についてよりよく記述するようになり、 もはや BEGIN ブロックでスレッドを作ることに関して警告しなくなりました。 [perl #96538]

  • threads::shared has been upgraded from version 1.56 to 1.58.

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

  • Tie::Array has been upgraded from version 1.06 to 1.07.

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

  • Tie::StdHandle has been upgraded from version 4.4 to 4.5.

    Tie::StdHandle はバージョン 4.4 から 4.5 に更新されました。

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

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

  • Time::HiRes has been upgraded from version 1.9741 to 1.9759.

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

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

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

  • Time::Piece has been upgraded from version 1.31 to 1.3204.

    Time::Piece はバージョン 1.31 から 1.3204 に更新されました。

  • Unicode::Collate has been upgraded from version 1.19 to 1.25.

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

  • Unicode::Normalize has been upgraded from version 1.25 to 1.26.

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

  • Unicode::UCD has been upgraded from version 0.68 to 0.70.

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

    The function num now accepts an optional parameter to help in diagnosing error returns.

    num 関数は、診断エラーを返す助けとなるオプションの引数を 受け付けるようになりました。

  • User::grent has been upgraded from version 1.01 to 1.02.

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

  • User::pwent has been upgraded from version 1.00 to 1.01.

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

  • utf8 has been upgraded from version 1.19 to 1.21.

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

  • vars has been upgraded from version 1.03 to 1.04.

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

  • version has been upgraded from version 0.9917 to 0.9923.

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

  • VMS::DCLsym has been upgraded from version 1.08 to 1.09.

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

  • VMS::Stdio has been upgraded from version 2.41 to 2.44.

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

  • warnings has been upgraded from version 1.37 to 1.42.

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

    It now includes new functions with names ending in _at_level, allowing callers to specify the exact call frame. [perl #132468]

    名前が _at_level で終わる新しい関数が追加され、 呼び出し元が正確な呼び出しフレームを指定できるようになりました。 [perl #132468]

  • XS::Typemap has been upgraded from version 0.15 to 0.16.

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

  • XSLoader has been upgraded from version 0.27 to 0.30.

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

    Its documentation now shows the use of __PACKAGE__, and direct object syntax for example DynaLoader usage [perl #132247].

    この文書は、__PACKAGE__ の使用と、例の DynaLoader の使用法に関して 直接オブジェクト構文を示すようになりました [perl #132247].

    Platforms that use mod2fname to edit the names of loadable libraries now look for bootstrap (.bs) files under the correct, non-edited name.

    読み込み可能ライブラリの名前を変更するのに mod2fname を使っている プラットフォームで、正しい、変更されていない名前の ブートストラップファイル (.bs) を探すようになりました。


  • The VMS::stdio compatibility shim has been removed.

    VMS::stdio 互換機能は削除されました。



We have attempted to update the documentation to reflect the changes listed in this document. If you find any we have missed, send email to perlbug@perl.org.

私たちはこの文書で挙げられた変更を反映するように文書を更新しようとしています。 もし抜けている物を発見したら、 perlbug@perl.org にメールしてください。

Additionally, the following selected changes have been made:



  • The API functions perl_parse(), perl_run(), and perl_destruct() are now documented comprehensively, where previously the only documentation was a reference to the perlembed tutorial.

    API 関数 perl_parse(), perl_run(), perl_destruct() は包括的に 文書化されました; 以前は perlembed チュートリアルへの参照しか ありませんでした。

  • The documentation of newGIVENOP() has been belatedly updated to account for the removal of lexical $_.

    newGIVENOP() の文書は、遅ればせながらレキシカルな $_ の削除に 対応する形で更新されました。

  • The API functions newCONSTSUB() and newCONSTSUB_flags() are documented much more comprehensively than before.

    API 関数 newCONSTSUB()newCONSTSUB_flags() は以前よりさらに 包括的に文書化されました。


  • The section "Truth and Falsehood" in perlsyn has been moved into perldata.

    perlsyn の "Truth and Falsehood" の章が perldata に移動しました。


  • The description of the conditions under which DB::sub() will be called has been clarified. [perl #131672]

    DB::sub() が呼び出される条件の記述を明確化しました。 [perl #131672]


  • "Variable length lookbehind not implemented in regex m/%s/" in perldiag

    This now gives more ideas as to workarounds to the issue that was introduced in Perl 5.18 (but not documented explicitly in its perldelta) for the fact that some Unicode /i rules cause a few sequences such as

    これは、Perl 5.18 で導入された (しかしその perldelta には明示的には 文書化されなかった) 問題を回避するためのさらなるアイデアを 与えるようになりました; この問題は、一部の Unicode の /i 規則は 次のようなものを:


    to be considered variable length, and hence disallowed.


  • "Use of state $_ is experimental" in perldiag

    This entry has been removed, as the experimental support of this construct was removed in perl 5.24.0.

    この実験的な構文は perl 5.24.0 で削除されたので、この項は削除されました。

  • The diagnostic Initialization of state variables in list context currently forbidden has changed to Initialization of state variables in list currently forbidden, because list-context initialization of single aggregate state variables is now permitted.

    診断メッセージ Initialization of state variables in list context currently forbiddenInitialization of state variables in list currently forbidden に変更されました; 単一の集合 state 変数による リストコンテキストの初期化は許されるようになったからです。


  • The examples in perlembed have been made more portable in the way they exit, and the example that gets an exit code from the embedded Perl interpreter now gets it from the right place. The examples that pass a constructed argv to Perl now show the mandatory null argv[argc].

    perlembed にある例は、終了方法に関してより移植性があるようになり、 組み込み Perl インタプリタからの終了コードを得る例については 正しい場所から得るようになりました。 構成された argv を Perl に渡す例では、argv[argc] に null が 必須であることを示すようになりました。

  • An example in perlembed used the string value of ERRSV as a format string when calling croak(). If that string contains format codes such as %s this could crash the program.

    perlembed の例は、croak() を呼び出すとき、ERRSV の文字列値を フォーマット文字列として使っていました。 この文字列に %s のようなフォーマットコードが含まれていると、 プログラムをクラッシュさせることがありました。

    This has been changed to a call to croak_sv().

    これは croak_sv() の呼び出しに変更されました。

    An alternative could have been to supply a trivial format string:


      croak("%s", SvPV_nolen(ERRSV));

    or as a special case for ERRSV simply:

    あるは単に ERRSV 専用の方法として:



  • There is now a note that warnings generated by built-in functions are documented in perldiag and warnings. [perl #116080]

    組み込み関数によって生成される警告は perldiagwarnings に 文書化されていることが記述されました。 [perl #116080]

  • The documentation for the exists operator no longer says that autovivification behaviour "may be fixed in a future release". We've determined that we're not going to change the default behaviour. [perl #127712]

    exists 演算子の文書はもはや、自動有効化の振る舞いが 「将来のリリースで修正予定」とは書かれなくなりました。 私たちはデフォルトの振る舞いを変えようとはしないことを決定しました。 [perl #127712]

  • A couple of small details in the documentation for the bless operator have been clarified. [perl #124428]

    bless 演算子の文書に関するいくつかの小さな詳細が明確化されました。 [perl #124428]

  • The description of @INC hooks in the documentation for require has been corrected to say that filter subroutines receive a useless first argument. [perl #115754]

    require の文書の中の @INC フックの記述は、 フィルタサブルーチンは使い道のない最初の引数を受け取ることを記すように 修正されました。 [perl #115754]

  • The documentation of ref has been rewritten for clarity.

    ref の文書は明確化のために書き直されました。

  • The documentation of use now explains what syntactically qualifies as a version number for its module version checking feature.

    use の文書は、バージョンチェック機能に関して、何が文法的に バージョン番号として正しいと認められるかを説明するようになりました。

  • The documentation of warn has been updated to reflect that since Perl 5.14 it has treated complex exception objects in a manner equivalent to die. [perl #121372]

    warn の文書は、Perl 5.14 から複雑な例外オブジェクトを die と等価な方法で扱うことを反映するように更新されました。 [perl #121372]

  • The documentation of die and warn has been revised for clarity.

    diewarn の文書は、明確化のために見直されました。

  • The documentation of each has been improved, with a slightly more explicit description of the sharing of iterator state, and with caveats regarding the fragility of while-each loops. [perl #132644]

    each の文書は改善され、反復子状態の共有に関するもう少し明示的な記述と、 while-each の虚弱性による警告で改善されました。 [perl #132644]

  • Clarification to require was added to explain the differences between

    次のものの違いを説明するために、require の明確化が追加されました:

        require Foo::Bar;
        require "Foo/Bar.pm";


  • The precise rules for identifying smoke-me branches are now stated.

    smoke-me ブランチを識別するための正確な規則が記述されました。


  • The section on reference counting in perlguts has been heavily revised, to describe references in the way a programmer needs to think about them rather than in terms of the physical data structures.

    perlguts の参照カウントの章は大きく見直され、プログラマが、 物理的なデータ構造の意味ではなく、これに関して考える必要がある方法に 関して記述されるようになりました。

  • Improve documentation related to UTF-8 multibytes.

    UTF-8 マルチバイトに関する文書の改善。


  • The internal functions newXS_len_flags() and newATTRSUB_x() are now documented.

    内部関数 newXS_len_flags() および newATTRSUB_x() が文書化されました。


  • The documentation about DESTROY methods has been corrected, updated, and revised, especially in regard to how they interact with exceptions. [perl #122753]

    DESTROY メソッドの文書は修正、更新、見直しされました; 特に、例外とどのように相互作用するかに関する部分です。 [perl #122753]


  • The description of the x operator in perlop has been clarified. [perl #132460]

    perlopx 演算子の記述が明確化されました。 [perl #132460]

  • perlop has been updated to note that qw's whitespace rules differ from that of split's in that only ASCII whitespace is used.

    perlop は、qw の空白規則がASCII 空白のみを使う split のものとは 異なることを記すように更新されました。

  • The general explanation of operator precedence and associativity has been corrected and clarified. [perl #127391]

    演算子の優先順位と結合性に関する一般的な説明が修正および明確化されました。 [perl #127391]

  • The documentation for the \ referencing operator now explains the unusual context that it supplies to its operand. [perl #131061]

    \ 参照演算子に関する文書は、そのオペランドに適用される 一般的でないコンテキストに関して説明するようになりました。 [perl #131061]


  • Clarifications on metacharacters and character classes



  • Clarify metacharacters.




  • The documentation about set-id scripts has been updated and revised. [perl #74142]

    set-id スクリプトに関する文書が更新されました。 [perl #74142]

  • A section about using sudo to run Perl scripts has been added.

    Perl スクリプトの実行に sudo を使うことに関する章が追加されました。


  • The section "Truth and Falsehood" in perlsyn has been removed from that document, where it didn't belong, and merged into the existing paragraph on the same topic in perldata.

    perlsyn の「真偽値」の章は、ここと関係がないので削除され、 perldata にある同じ話題の段落と結合されました。

  • The means to disambiguate between code blocks and hash constructors, already documented in perlref, are now documented in perlsyn too. [perl #130958]

    コードブロックとハッシュ構築子の間の曖昧さをなくす方法は、既に perlref に文書化されていますが、perlsyn でも文書化されました。 [perl #130958]


  • perluniprops has been updated to note that \p{Word} now includes code points matching the \p{Join_Control} property. The change to the property was made in Perl 5.18, but not documented until now. There are currently only two code points that match this property U+200C (ZERO WIDTH NON-JOINER) and U+200D (ZERO WIDTH JOINER).

    perluniprops は、\p{Word}\p{Join_Control} 特性に マッチングする符号位置が含まれることを注意するように更新されました。 この特性に対する変更は Perl 5.18 で行われていましたが、 今まで文書化されていませんでした。 今のところこの特性にマッチングするのは U+200C (ZERO WIDTH NON-JOINER) と U+200D (ZERO WIDTH JOINER) の二つの符号位置だけです。

  • For each binary table or property, the documentation now includes which characters in the range \x00-\xFF it matches, as well as a list of the first few ranges of code points matched above that.

    各バイナリテーブルや特性に関して、この文書は、 \x00-\xFF の範囲でどの文字がマッチングするか、および、 それ以上の符号位置の範囲でマッチングする最初のいくつかの範囲の一覧を 含むようになりました。


  • The entry for $+ in perlvar has been expanded upon to describe handling of multiply-named capturing groups.

    perlvar の $+ のエントリは、複数の名前を持つ捕捉グループの扱いに関する 記述が拡張されました。

perlfunc, perlop, perlsyn

  • In various places, improve the documentation of the special cases in the condition expression of a while loop, such as implicit defined and assignment to $_. [perl #132644]

    様々な場所で、暗黙の defined$_ への代入のような、 while ループの条件式での特殊ケースに関する文書が改善しました。 [perl #132644]


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 "goto" into a "given" block

    (F) A "goto" statement was executed to jump into the middle of a given block. You can't get there from here. See "goto" in perlfunc.

    (F) given ブロックの途中に飛び込むような "goto" 文が実行されました。 ここでそれはできません。 "goto" in perlfunc を参照してください。

  • Can't "goto" into a binary or list expression

    Use of goto to jump into the parameter of a binary or list operator has been prohibited, to prevent crashes and stack corruption. [perl #130936]

    二項演算子やリスト演算子の引数に飛び込むために goto を使うことは、 クラッシュやスタック破壊を防ぐために禁止されています。 [perl #130936]

    You may only enter the first argument of an operator that takes a fixed number of arguments, since this is a case that will not cause stack corruption. [perl #132854]

    固定数の引数を取る演算子の最初の引数にのみ入ることができます; この場合はスタック破壊をもたらさないからです。 [perl #132854]



  • A false-positive warning that was issued when using a numerically-quantified sub-pattern in a recursive regex has been silenced. [perl #131868]

    再帰正規表現内で数値で量指定された副パターンを使ったときの 偽陽性の警告はは起こらなくなりました。 [perl #131868]

  • The warning about useless use of a concatenation operator in void context is now generated for expressions with multiple concatenations, such as $a.$b.$c, which used to mistakenly not warn. [perl #6997]

    無効コンテキストでの結合演算子の無意味な使用に関する警告は、 $a.$b.$c のような複数の結合を持つ式でも発生するようになりました; 以前は誤って警告されていませんでした。 [perl #6997]

  • Warnings that a variable or subroutine "masks earlier declaration in same ...", or that an our variable has been redeclared, have been moved to a new warnings category "shadow". Previously they were in category "misc".

    変数やサブルーチンに対する "masks earlier declaration in same ..." 警告や our 変数の再宣言に関する警告は、新しい警告カテゴリ "shadow" に 移動しました。 以前はこれらは "misc" カテゴリでした。

  • The deprecation warning from Sys::Hostname::hostname() saying that it doesn't accept arguments now states the Perl version in which the warning will be upgraded to an error. [perl #124349]

    Sys::Hostname::hostname() による、これは引数を受け取らないという 廃止予定警告は、警告がエラーになる Perl バージョンについて 言及するようになりました。 [perl #124349]

  • The perldiag entry for the error regarding a set-id script has been expanded to make clear that the error is reporting a specific security vulnerability, and to advise how to fix it.

    perldiag の、set-id スクリプトに関するエラーのエントリは、 エラーは特定のセキュリティ脆弱性を報告しているということと、これを どのように修正するかについて明確になるように拡張されました。

  • The Unable to flush stdout error message was missing a trailing newline. [debian #875361]

    Unable to flush stdout エラーメッセージは末尾の改行が抜けていました。 [debian #875361]



  • --help and --version options have been added.

    --help--version のオプションが追加されました。


  • C89 requirement

    Perl has been documented as requiring a C89 compiler to build since October 1998. A variety of simplifications have now been made to Perl's internals to rely on the features specified by the C89 standard. We believe that this internal change hasn't altered the set of platforms that Perl builds on, but please report a bug if Perl now has new problems building on your platform.

    1998 年 10 月から、Perl はビルドするのに C89 コンパイラが必要であると 文書化されていました。 Perl の内部は、C89 標準で定義されている機能に依存することで、 様々な単純化が行われました。 私たちはこの内部変更が Perl がビルドできるプラットフォーム一覧に 影響を与えないと信じていますが、もしあなたのプラットフォームでのビルドに 新しい問題が起きた場合はバグを報告してください。

  • On GCC, -Werror=pointer-arith is now enabled by default, disallowing arithmetic on void and function pointers.

    GCC では、-Werror=pointer-arith はデフォルトで有効になり、 void や関数ポインタに対する算術演算が禁止されました。

  • Where an HTML version of the documentation is installed, the HTML documents now use relative links to refer to each other. Links from the index page of perlipc to the individual section documents are now correct. [perl #110056]

    HTML 版の文書をインストールしているとき、HTML 文書は互いを参照するのに 相対リンクを使うようになりました。 Links from the index page of perlipc のインデックスページから個々の章の文書へのリンクは 正しくなりました。 [perl #110056]

  • lib/unicore/mktables now correctly canonicalizes the names of the dependencies stored in the files it generates.

    lib/unicore/mktables は、作成したファイルに保管されている依存名を 正しく正規化するようになりました。

    regen/mk_invlists.pl, unlike the other regen/*.pl scripts, used $0 to name itself in the dependencies stored in the files it generates. It now uses a literal so that the path stored in the generated files doesn't depend on how regen/mk_invlists.pl is invoked.

    regen/mk_invlists.pl は、その他の regen/*.pl スクリプトと異なり、 生成するファイルに保管される依存の名前自身として $0 を使っていました。 これはリテラルを使うようになったので、生成されたファイルに保管されたパスは、 どのように regen/mk_invlists.pl が起動されたかに依存しなくなりました。

    This lack of canonical names could cause test failures in t/porting/regen.t. [perl #132925]

    正規化名がない場合に t/porting/regen.t でテストが失敗することがありました。 [perl #132925]

  • New probes



  • Testing of the XS-APItest directory is now done in parallel, where applicable.

    XS-APItest ディレクトリのテストは、可能な場合は並列に 行われるようになりました。

  • Perl now includes a default .travis.yml file for Travis CI testing on github mirrors. [perl #123981]

    Perl は github ミラーでの Travis CI テストのためのデフォルトの .travis.yml ファイルを含むようになりました。 [perl #123981]

  • The watchdog timer count in re/pat_psycho.t can now be overridden.

    re/pat_psycho.t の番犬タイマーカウントは上書きできるようになりました。

    This test can take a long time to run, so there is a timer to keep this in check (currently, 5 minutes). This commit adds checking the environment variable PERL_TEST_TIME_OUT_FACTOR; if set, the time out setting is multiplied by its value.

    このテストは実行に長い時間が掛かるため、これをチェックするための タイマーがあります (現在は 5 分)。 このコミットでは環境変数 PERL_TEST_TIME_OUT_FACTOR のチェックを 追加します; これが設定されると、タイムアウト設定はその値で乗算されます。

  • harness no longer waits for 30 seconds when running t/io/openpid.t. [perl #121028] [perl #132867]

    harnesst/io/openpid.t の実行時にもはや 30 秒待たなくなりました。 [perl #121028] [perl #132867]


For the past few years we have released perl using three different archive formats: bzip (.bz2), LZMA2 (.xz) and gzip (.gz). Since xz compresses better and decompresses faster, and gzip is more compatible and uses less memory, we have dropped the .bz2 archive format with this release. (If this poses a problem, do let us know; see "Reporting Bugs", below.)

過去数年、私たちは三つの異なるアーカイブ形式で perl をリリースしてきました: bzip (.bz2), LZMA2 (.xz), gzip (.gz) です。 xz は圧縮率がよく展開が高速で、gzip は互換性が高くメモリ消費が少ないので、 このリリースから .bz2 アーカイブ形式でリリースしなくなりました。 (もしこれが問題を引き起こすなら、教えてください; 後述する "Reporting Bugs" を参照してください。)



PowerUX / Power MAX OS

Compiler hints and other support for these apparently long-defunct platforms has been removed.

これらの、どうやら長い間死んだままのプラットフォームに関するコンパイラヒントや その他の対応は削除されました。



Compilation on CentOS 5 is now fixed.

CentOS 5 でのコンパイルは修正されました。


A build with the quadmath library can now be done on Cygwin.

quadmath ライブラリを使ったコンパイルは Cygwin で行えるようになりました。


Perl now correctly uses reentrant functions, like asctime_r, on versions of Darwin that have support for them.

asctime_r のような再入可能関数に対応しているバージョンの Darwin では、 Perl は正しくこれらを使うようになりました。


FreeBSD's /usr/share/mk/sys.mk specifies -O2 for architectures other than ARM and MIPS. By default, perl is now compiled with the same optimization levels.

FreeBSD の /usr/share/mk/sys.mk は、ARM と MIPS 以外の アーキテクチャでは -O2 を指定するようになりました。 デフォルトでは perl は同じ最適化レベルでコンパイルされます。


Several fix-ups for configure.com, marking function VMS has (or doesn't have).

VMS が持っている (または持っていない) 関数を記すために、 いくつかの修正が configure.com に行われました。

CRTL features can now be set by embedders before invoking Perl by using the decc$feature_set and decc$feature_set_value functions. Previously any attempt to set features after image initialization were ignored.

CRTL 機能は、decc$feature_setdecc$feature_set_value の関数を 使うことで、Perl を起動する前に組み込み側から設定できるようになりました。 以前は、イメージ初期化後にこの機能を設定しようとしても無視されていました。

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

    (Visual C++ 14.1 を含む) Microsoft Visual Studio 2017 を使って Windows で perl をコンパイルする機能が追加されました。

  • Visual C++ compiler version detection has been improved to work on non-English language systems.

    非英語システムでのVisual C++ コンパイラのバージョン検出が改善しました。

  • We now set $Config{libpth} correctly for 64-bit builds using Visual C++ versions earlier than 14.1.

    14.1 より前のバージョンでの Visual C++ を使った 64 ビットビルドで、 正しく $Config{libpth} を設定するようになりました。


  • A new optimisation phase has been added to the compiler, optimize_optree(), which does a top-down scan of a complete optree just before the peephole optimiser is run. This phase is not currently hookable.

    optimize_optree() という新しい最適化フェイズがコンパイラに追加されました; これはピープホール最適化器が実行される直前に、完全な op 木を トップダウンでスキャンします。 このフェーズは今のところフックできません。

  • An OP_MULTICONCAT op has been added. At optimize_optree() time, a chain of OP_CONCAT and OP_CONST ops, together optionally with an OP_STRINGIFY and/or OP_SASSIGN, are combined into a single OP_MULTICONCAT op. The op is of type UNOP_AUX, and the aux array contains the argument count, plus a pointer to a constant string and a set of segment lengths. For example with

    OP_MULTICONCAT op が追加されました。 optimize_optree() のときに、 OP_CONCATOP_CONST op のチェーン、およびオプションの OP_STRINGIFYOP_SASSIGN は、単一の OP_MULTICONCAT op に 結合されます。 この op は UNOP_AUX 型で、aux 配列には引数カウントに加えて、 定数文字列へのポインタとセグメント長の集合を含みます。 例えば次のものでは:

        my $x = "foo=$foo, bar=$bar\n";

    the constant string would be "foo=, bar=\n" and the segment lengths would be (4,6,1). If the string contains characters such as \x80, whose representation changes under utf8, two sets of strings plus lengths are precomputed and stored.

    定数文字列は "foo=, bar=\n" で、セグメント長は (4,6,1) です。 文字列に utf8 の基で表現が変わる \x80 のような文字が含まれている場合、 文字列と長さの組が二つ事前計算されて保管されます。

  • Direct access to PL_keyword_plugin is not safe in the presence of multithreading. A new wrap_keyword_plugin function has been added to allow XS modules to safely define custom keywords even when loaded from a thread, analogous to PL_check / wrap_op_checker.

    PL_keyword_plugin への直接アクセスは、 マルチスレッド時には安全ではありません。 スレッドから読み込まれても XS モジュールが安全にカスタムキーワードを 定義できる、新しい wrap_keyword_plugin 関数が追加されました; PL_check / wrap_op_checker の関係と同様です。

  • The PL_statbuf interpreter variable has been removed.

    PL_statbuf インタプリタ変数は削除されました。

  • The deprecated function to_utf8_case(), accessible from XS code, has been removed.

    XS からアクセス可能であった廃止予定の関数 to_utf8_case() は 削除されました。

  • A new function is_utf8_invariant_string_loc() has been added that is like is_utf8_invariant_string() but takes an extra pointer parameter into which is stored the location of the first variant character, if any are found.

    新しい関数 is_utf8_invariant_string_loc() が追加されました; これは is_utf8_invariant_string() と 同様ですが、もしあれば最初の異体文字の位置を保管するための追加の ポインタ引数を取ります。

  • A new function, Perl_langinfo() has been added. It is an (almost) drop-in replacement for the system nl_langinfo(3), but works on platforms that lack that; as well as being more thread-safe, and hiding some gotchas with locale handling from the caller. Code that uses this, needn't use localeconv(3) (and be affected by the gotchas) to find the decimal point, thousands separator, or currency symbol. See "Perl_langinfo" in perlapi.

    新しい関数 Perl_langinfo() が追加されました。 これは システムの nl_langinfo(3) の(ほとんど)完全互換品ですが、 これがないプラットフォームでも動作します; あmた、よりスレッドセーフで、ロケールの扱いに関するいくつかの癖を 呼び出し元から隠します。 これを使っているコードは、小数点や桁区切りや通貨記号を探すのに localeconv(3) を使う (そして癖による影響を受ける) 必要はありません。 "Perl_langinfo" in perlapi を参照してください。

  • A new API function sv_rvunweaken() has been added to complement sv_rvweaken(). The implementation was taken from "unweaken" in Scalar::Util.

    新しい API 関数 sv_rvunweaken()sv_rvweaken() の逆として追加されました。 この実装は "unweaken" in Scalar::Util から取られています。

  • A new flag, SORTf_UNSTABLE, has been added. This will allow a future commit to make mergesort unstable when the user specifies `no sort stable', since it has been decided that mergesort should remain stable by default.

    新しいフラグ SORTf_UNSTABLE が追加されました。 これにより、将来ユーザーが `no sort stable' を指定したときに マージソートを不安定にするような変更が可能になります。 マージソートはデフォルトで安定したままであると決定されたからです。

  • XS modules can now automatically get reentrant versions of system functions on threaded perls.

    スレッド対応 perl では XS モジュールは自動的に再入可能版の システム関数を使えるようになりました。

    By adding


        #define PERL_REENTRANT

    near the beginning of an XS file, it will be compiled so that whatever reentrant functions perl knows about on that system will automatically and invisibly be used instead of the plain, non-reentrant versions. For example, if you write getpwnam() in your code, on a system that has getpwnam_r() all calls to the former will be translated invisibly into the latter. This does not happen except on threaded perls, as they aren't needed otherwise. Be aware that which functions have reentrant versions varies from system to system.

    XS ファイルの先頭付近に置くと、このシステムに再入可能関数があることを perl が知っている場合、自動的に通常の非再入可能版ではなくこちらが 使われるようにコンパイルされます。 例えば、コード中に getpwnam() を書くと、getpwnam_r() を持つ システムでは、前者の呼び出しは自動的に後者の呼び出しに変換されます。 これはスレッド対応 perl でしか起こりません; それ以外では不要だからです。 どの関数が再入可能かについてはシステムによって異なることに注意してください。

  • The PERL_NO_OP_PARENT build define is no longer supported, which means that perl is now always built with PERL_OP_PARENT enabled.

    PERL_NO_OP_PARENT ビルド定義はもはや非対応となりました; つまり、 perl は常に PERL_OP_PARENT を有効にしてビルドされます。

  • The format and content of the non-utf8 transliteration table attached to the op_pv field of OP_TRANS/OP_TRANSR ops has changed. It's now a struct OPtrans_map.

    OP_TRANS/OP_TRANSR op の op_pv フィールドに付けられる 非 utf8 文字変換テーブルの形式と内容が変わりました。 これは struct OPtrans_map になりました。

  • A new compiler #define, dTHX_DEBUGGING. has been added. This is useful for XS or C code that only need the thread context because their debugging statements that get compiled only under -DDEBUGGING need one.

    新しいコンパイラ #define である dTHX_DEBUGGING が追加されました。 これは、-DDEBUGGING の基でしかコンパイルされないデバッグ文が 必要としているというだけの理由でスレッドのコンテキストが 必要な XS や C のコードに有用です。

  • A new API function "Perl_setlocale" in perlapi has been added.

    新しい API 関数 "Perl_setlocale" in perlapi が追加されました。

  • "sync_locale" in perlapi has been revised to return a boolean as to whether the system was using the global locale or not.

    "sync_locale" in perlapi は、システムがグローバルなロケールを使うかどうかを 示す真偽値を返すように改訂されました。

  • A new kind of magic scalar, called a "nonelem" scalar, has been introduced. It is stored in an array to denote a non-existent element, whenever such an element is accessed in a potential lvalue context. It replaces the existing "defelem" (deferred element) magic wherever this is possible, being significantly more efficient. This means that some_sub($sparse_array[$nonelem]) no longer has to create a new magic defelem scalar each time, as long as the element is within the array.

    "nonelem" スカラと呼ばれる、新しい種類のマジックスカラが導入されました。 これは、要素が存在しないことを示すために配列に保管されます; この要素が潜在的な左辺値コンテキストとしてアクセスされるかには依りません。 これは可能な場所ではどこでも既存の "defelem" (deferred element) マジックを置き換え、かなりより効率的です。 つまり、some_sub($sparse_array[$nonelem]) は、その要素が配列の中に ある限り、もはや毎回新しい defelem マジックスカラを作る必要は ないということです。

    It partially fixes the rare bug of deferred elements getting out of synch with their arrays when the array is shifted or unshifted. [perl #132729]

    これは、配列がシフトしたり逆シフトしたりするとき、保留された要素とその 配列との同期が取れなくなるという稀なバグを部分的に修正します。 [perl #132729]


  • List assignment (aassign) could in some rare cases allocate an entry on the mortals stack and leave the entry uninitialized, leading to possible crashes. [perl #131570]

    リスト代入 (aassign) は、ある種の稀な状況で、 揮発性スタックにエントリを割り当て、そのエントリを初期化しないままにして、 クラッシュを引き起こす可能性がありました。 [perl #131570]

  • Attempting to apply an attribute to an our variable where a function of that name already exists could result in a NULL pointer being supplied where an SV was expected, crashing perl. [perl #131597]

    既にその名前の関数が存在する our 変数に属性を適用しようとすると、 SV が想定されているところで NULL ポインタが渡され、perl が クラッシュすることがありました。 [perl #131597]

  • split ' ' now correctly handles the argument being split when in the scope of the unicode_strings feature. Previously, when a string using the single-byte internal representation contained characters that are whitespace by Unicode rules but not by ASCII rules, it treated those characters as part of fields rather than as field separators. [perl #130907]

    split ' ' は、 unicode_strings 機能の スコープ内で split される引数を正しく扱えるようになりました。 以前は、Unicode の規則では空白だけれども ASCII の規則ではそうでない文字を 含んだ単一バイト内部表現を使った文字列を使うと、 これはフィールド区切り文字ではなくフィールドの一部として扱われていました。 [perl #130907]

  • Several built-in functions previously had bugs that could cause them to write to the internal stack without allocating room for the item being written. In rare situations, this could have led to a crash. These bugs have now been fixed, and if any similar bugs are introduced in future, they will be detected automatically in debugging builds.

    いくつかの組み込み関数は、内容を書き込むための割り当てる場所がない 内部スタックに書き込むことがあるというバグがありました。 まれな状況では、これがクラッシュを引き起こすことがありました。 これらのバグは修正され、 もし同様のバグが将来導入された場合も、デバッグビルドで自動的に 検出されるようになりました。

    These internal stack usage checks introduced are also done by the entersub operator when calling XSUBs. This means we can report which XSUB failed to allocate enough stack space. [perl #131975]

    導入されたこれらの内部スタック使用チェックは、 XSUB の呼び出し時に entersub 演算子によっても行われます。 つまり、どの XSUB が十分なスタック空間を割り当てるのに失敗したかを 報告できるということです。 [perl #131975]

  • Using a symbolic ref with postderef syntax as the key in a hash lookup was yielding an assertion failure on debugging builds. [perl #131627]

    ハッシュ参照のキーとして接尾辞デリファレンス文法のシンボリックリファレンスを 使うと、デバッグビルドでアサート失敗を引き起こしていました。 [perl #131627]

  • Array and hash variables whose names begin with a caret now admit indexing inside their curlies when interpolated into strings, as in "${^CAPTURE[0]}" to index @{^CAPTURE}. [perl #131664]

    キャレットで始まる名前を持つ配列変数とハッシュ変数は、 文字列に変数置換されるときに、 @{^CAPTURE} の添え字としての "${^CAPTURE[0]}" のように、 中かっこの中に添え字を入れることを許すようになりました。 [perl #131664]

  • Fetching the name of a glob that was previously UTF-8 but wasn't any longer would return that name flagged as UTF-8. [perl #131263]

    以前は UTF-8 だったけれども今は違うグロブ名を取得すると、 UTF-8 フラグの付いた名前を返していました。 [perl #131263]

  • The perl sprintf() function (via the underlying C function Perl_sv_vcatpvfn_flags()) has been heavily reworked to fix many minor bugs, including the integer wrapping of large width and precision specifiers and potential buffer overruns. It has also been made faster in many cases.

    (基となる C 関数 Perl_sv_vcatpvfn_flags() 経由の) perl の sprintf() 関数は、大きな幅や精度指定子による整数回り込みや バッファオーバーランの可能性を含む、 多くの小さなバグを修正するために大幅に書き直されました。 これにより多くの場合でより速くなりました。

  • Exiting from an eval, whether normally or via an exception, now always frees temporary values (possibly calling destructors) before setting $@. For example:

    通常か例外によってかに関わらず、eval から終了した場合、 (おそらくデストラクタを呼び出す) $@ を設定する 前に、 常に一時的な値を解放するようになりました。 例えば:

        sub DESTROY { eval { die "died in DESTROY"; } }
        eval { bless []; };
        # $@ used to be equal to "died in DESTROY" here; it's now "".
  • Fixed a duplicate symbol failure with -flto -mieee-fp builds. pp.c defined _LIB_VERSION which -lieee already defines. [perl #131786]

    -flto -mieee-fp ビルドでの重複シンボルエラーが修正されました。 pp.c_LIB_VERSION を定義していましたが、-lieee がすでに 定義していました。 [perl #131786]

  • The tokenizer no longer consumes the exponent part of a floating point number if it's incomplete. [perl #131725]

    字句解析器はもはや、不完全な浮動小数点数の指数部を消費しなくなりました。 [perl #131725]

  • On non-threaded builds, for m/$null/ where $null is an empty string is no longer treated as if the /o flag was present when the previous matching match operator included the /o flag. The rewriting used to implement this behavior could confuse the interpreter. This matches the behaviour of threaded builds. [perl #124368]

    非スレッドビルドで、 $null が空文字列のときの m/$null/ は、 もはや、以前のマッチング演算子に /o が含まれていても、 /o フラグがあるかのように振る舞わなくなりました。 この振る舞いの実装のための書き直しはインタプリタを混乱させることがありました。 これはスレッドビルドの振る舞いと一致します。 [perl #124368]

  • Parsing a sub definition could cause a use after free if the sub keyword was followed by whitespace including newlines (and comments.) [perl #131836]

    sub キーワードに改行を含む空白(およびコメント)が引き続く場合、 sub 宣言が解放後使用を引き起こすことがありました。 [perl #131836]

  • The tokenizer now correctly adjusts a parse pointer when skipping whitespace in a ${identifier} construct. [perl #131949]

    字句解析器は、 ${identifier} 構文の中の空白を読み飛ばすときに、 パースポインタを正しく調整するようになりました。 [perl #131949]

  • Accesses to ${^LAST_FH} no longer assert after using any of a variety of I/O operations on a non-glob. [perl #128263]

    ${^LAST_FH} へのアクセスは、もはや非グロブへの I/O 操作を使った後に アサートを発生させなくなりました。 [perl #128263]

  • The XS-level Copy(), Move(), Zero() macros and their variants now assert if the pointers supplied are NULL. ISO C considers supplying NULL pointers to the functions these macros are built upon as undefined behaviour even when their count parameters are zero. Based on these assertions and the original bug report three macro calls were made conditional. [perl #131746] [perl #131892]

    XS レベルの Copy(), Move(), Zero() マクロおよびその変種は、 提供されたポインタが NULL のときにアサートするようになりました。 ISO C では、これらのマクロで使われる関数に NULL が提供された場合、 たとえカウンタ引数が 0 でも振る舞いは未定義です。 これらのアサートと元のバグ報告に従って、三つのマクロ呼び出しは 条件付きになりました。 [perl #131746] [perl #131892]

  • Only the = operator is permitted for defining defaults for parameters in subroutine signatures. Previously other assignment operators, e.g. +=, were also accidentally permitted. [perl #131777]

    サブルーチンシグネチャの引数のデフォルトを定義するのに、 = 演算子のみが許されるようになりました。 以前は、+= のようなその他の代入演算子も誤って許されていました。 [perl #131777]

  • Package names are now always included in :prototype warnings [perl #131833]

    :prototype 警告で常にパッケージ名が含まれるようになりました [perl #131833]

  • The je_old_stack_hwm field, previously only found in the jmpenv structure on debugging builds, has been added to non-debug builds as well. This fixes an issue with some CPAN modules caused by the size of this structure varying between debugging and non-debugging builds. [perl #131942]

    以前はデバッグビルでのみ jmpenv 構造体に存在した je_old_stack_hwm フィールドが、非デバッグビルドでも 存在するようになりました。 これにより、この構造体のサイズがデバッグビルドと非デバッグビルドで 異なることよる、いくつかの CPAN モジュールの問題が修正されます。 [perl #131942]

  • The arguments to the ninstr() macro are now correctly parenthesized.

    ninstr() マクロへの引数は正しくかっこが付くようになりました。

  • A NULL pointer dereference in the S_regmatch() function has been fixed. [perl #132017]

    S_regmatch() 関数での NULL ポインタのデリファレンスが修正されました。 [perl #132017]

  • Calling exec PROGRAM LIST with an empty LIST has been fixed. This should call execvp() with an empty argv array (containing only the terminating NULL pointer), but was instead just returning false (and not setting $!). [perl #131730]

    空の LISTexec PROGRAM LIST を 呼び出したときの問題が修正されました。 これは空の (終端の NULL ポインタのみを含む) argv 配列で execvp() を呼び出すべきでしたが、単に ($! を設定せずに) 偽を返していました。 [perl #131730]

  • The gv_fetchmeth_sv C function stopped working properly in Perl 5.22 when fetching a constant with a UTF-8 name if that constant subroutine was stored in the stash as a simple scalar reference, rather than a full typeglob. This has been corrected.

    Perl 5.22 では gv_fetchmeth_sv C 関数は、 UTF-8 名を持つ定数を取り出すときに、その定数サブルーチンが 完全な型グロブではなく単純なスカラリファレンスとしてスタッシュに 保管されていると、正しく動作しなくなっていました。 これは修正されました。

  • Single-letter debugger commands followed by an argument which starts with punctuation (e.g. p$^V and x@ARGV) now work again. They had been wrongly requiring a space between the command and the argument. [perl #120174]

    1 文字デバッガコマンドに句読点文字で始まる引数が引き続く場合 (例えば p$^Vx@ARGV)も、再び動作するようになりました。 以前は誤ってコマンドと引数の間に空白を要求していました。 [perl #120174]

  • splice now throws an exception ("Modification of a read-only value attempted") when modifying a read-only array. Until now it had been silently modifying the array. The new behaviour is consistent with the behaviour of push and unshift. [perl #131000]

    splice は、 読み込み専用配列を変更しようとしたときに例外 ("Modification of a read-only value attempted") を投げるようになりました。 以前は暗黙に配列を変更していました。 新しい振る舞いは push および unshift の振る舞いと一貫性があります。 [perl #131000]

  • stat(), lstat(), and file test operators now fail if given a filename containing a nul character, in the same way that open() already fails.

    stat(), lstat() およびファイルテスト演算子は、 nul 文字を含んでいるときに失敗するようになりました; open() は既に失敗するようになっていました。

  • stat(), lstat(), and file test operators now reliably set $! when failing due to being applied to a closed or otherwise invalid file handle.

    stat(), lstat() およびファイルテスト演算子は、 閉じていたりその他の理由で不正なファイルハンドルに対して適用されたことによる 失敗が起きたときに、確実に $! を設定するようになりました。

  • File test operators for Unix permission bits that don't exist on a particular platform, such as -k (sticky bit) on Windows, now check that the file being tested exists before returning the blanket false result, and yield the appropriate errors if the argument doesn't refer to a file.

    Windows での -k (sticky bit) のような、特定のプラットフォームに存在しない Unix の許可ビットに対するファイルテスト演算子は、無差別に偽の結果を返す前に、 そのファイルが存在するかどうかをテストして、引数がファイルを参照していない 場合は適切なエラーを返すようになりました。

  • Fixed a 'read before buffer' overrun when parsing a range starting with \N{} at the beginning of the character set for the transliteration operator. [perl #132245]

    文字変換演算子の文字集合の最初の \N{} で始まる範囲をパースするときの 'read before buffer' オーバーランが 修正されました。 [perl #132245]

  • Fixed a leaked scalar when parsing an empty \N{} at compile-time. [perl #132245]

    コンパイル時に空の \N{} パースするときにスカラがリークする問題が 修正されました。 [perl #132245]

  • Calling do $path on a directory or block device now yields a meaningful error code in $!. [perl #125774]

    ディレクトリやブロックデバイスに対するdo $path は、 $! に意味のあるエラーコードを設定するようになりました。 [perl #125774]

  • Regexp substitution using an overloaded replacement value that provides a tainted stringification now correctly taints the resulting string. [perl #115266]

    汚染された文字列化を提供するオーバーロードされた置換値を使った 正規表現置換は、正しく結果文字列が汚染されるようになりました。 [perl #115266]

  • Lexical sub declarations in do blocks such as do { my sub lex; 123 } could corrupt the stack, erasing items already on the stack in the enclosing statement. This has been fixed. [perl #132442]

    do { my sub lex; 123 } のような、do ブロックの中のレキシカルな サブルーチン宣言がスタックを壊して、内側の文のスタックに既にある内容を 消すことがありました。 これは修正されました。 [perl #132442]

  • pack and unpack can now handle repeat counts and lengths that exceed two billion. [perl #119367]

    packunpack は、繰り返しカウントと長さに 20 億を超える値を 扱えるようになりました。 [perl #119367]

  • Digits past the radix point in octal and binary floating point literals now have the correct weight on platforms where a floating point significand doesn't fit into an integer type.

    8 進と 2 進の浮動小数点数リテラルの小数点の後ろの数字は、 浮動小数点数の仮数部が整数型に納まらないプラットフォームでも正しい重みを 持つようになりました。

  • The canonical truth value no longer has a spurious special meaning as a callable subroutine. It used to be a magic placeholder for a missing import or unimport method, but is now treated like any other string 1. [perl #126042]

    正規化された真の値は、もはや呼び出し可能なサブルーチンとしての偽の 特別な意味を持たなくなりました。 これは importunimport のメソッドがないときのマジカルな プレースホルダとして使われていましたが、 その他の文字列 1 と同様に扱われるようになりました。 [perl #126042]

  • system now reduces its arguments to strings in the parent process, so any effects of stringifying them (such as overload methods being called or warnings being emitted) are visible in the way the program expects. [perl #121105]

    system は、引数から文字列への変換を親プロセスで行うようになったので、 それを文字列化したときの効果 (オーバーロードの呼び出しや警告の出力など) は、 プログラムが想定した方法で現れるようになりました。 [perl #121105]

  • The readpipe() built-in function now checks at compile time that it has only one parameter expression, and puts it in scalar context, thus ensuring that it doesn't corrupt the stack at runtime. [perl #4574]

    readpipe() 組み込み関数は、引数式が一つしかなく、 それがスカラコンテキストであることをコンパイル時に チェックするようになったので、 実行時にスタックを壊さないようになりました。 [perl #4574]

  • sort now performs correct reference counting when aliasing $a and $b, thus avoiding premature destruction and leakage of scalars if they are re-aliased during execution of the sort comparator. [perl #92264]

    sort$a$b を別名化したときに参照カウントを正しく 扱うようになったので、ソート比較子の実行中に再び別名化したときに スカラの早すぎる破壊とリークを起こさないようになりました。 [perl #92264]

  • reverse with no operand, reversing $_ by default, is no longer in danger of corrupting the stack. [perl #132544]

    引数なしの reverse はデフォルトでは $_ を反転しますが、 もはやスタックを壊す危険がなくなりました。 [perl #132544]

  • exec, system, et al are no longer liable to have their argument lists corrupted by reentrant calls and by magic such as tied scalars. [perl #129888]

    exec, system などはもはや、再入呼び出しや tie されたスカラのような マジックによって引数リストが壊れても責任をもたなくなりました。 [perl #129888]

  • Perl's own malloc no longer gets confused by attempts to allocate more than a gigabyte on a 64-bit platform. [perl #119829]

    Perl 自身の malloc は、64 ビットプラットフォームで 1 ギガバイト以上 割り当てようとしても、もはや混乱しなくなりました。 [perl #119829]

  • Stacked file test operators in a sort comparator expression no longer cause a crash. [perl #129347]

    ソート比較式の中でファイルテスト演算子をスタック差せてももはや クラッシュしなくなりました。 [perl #129347]

  • An identity tr/// transformation on a reference is no longer mistaken for that reference for the purposes of deciding whether it can be assigned to. [perl #130578]

    リファレンスへの同一の tr/// 変換はもはや、 代入可能かどうかの判断のためのリファレンスと間違わなくなりました。 [perl #130578]

  • Lengthy hexadecimal, octal, or binary floating point literals no longer cause undefined behaviour when parsing digits that are of such low significance that they can't affect the floating point value. [perl #131894]

    長い 16 進、8 進、2 進浮動小数点数リテラルは、浮動小数点数として影響を 与えないような下位の桁をパースするときに、もはや未定義の振る舞いを しなくなりました。 [perl #131894]

  • open $$scalarref... and similar invocations no longer leak the file handle. [perl #115814]

    open $$scalarref... や同様の起動はもはやファイルハンドルを リークしなくなりました。 [perl #115814]

  • Some convoluted kinds of regexp no longer cause an arithmetic overflow when compiled. [perl #131893]

    ある種の複雑な正規表現はもはやコンパイル時に算術オーバーフローを 引き起こさなくなりました。 [perl #131893]

  • The default typemap, by avoiding newGVgen, now no longer leaks when XSUBs return file handles (PerlIO * or FILE *). [perl #115814]

    newGVgen を避けたことによるデフォルトの typemap は、 XSUBs がファイルハンドル (PerlIO * または FILE *) を返したときに もはやリークしなくなりました。 [perl #115814]

  • Creating a BEGIN block as an XS subroutine with a prototype no longer crashes because of the early freeing of the subroutine.

    プロトタイプ付きの XS サブルーチンとして BEGIN を作った場合、 もはやサブルーチンの早い解放によってクラッシュしなくなりました。

  • The printf format specifier %.0f no longer rounds incorrectly [perl #47602], and now shows the correct sign for a negative zero.

    printf フォーマット指定子 %.0f はもはや誤った丸めを行わなくなり [perl #47602]、 負の 0 に関して正しい符号を表示するようになりました。

  • Fixed an issue where the error Scalar value @arrayname[0] better written as $arrayname would give an error Cannot printf Inf with 'c' when arrayname starts with Inf. [perl #132645]

    Scalar value @arrayname[0] better written as $arrayname エラーが出るところで、配列名が Inf で始まっていると、 Cannot printf Inf with 'c' エラーが出る問題が修正されました。 [perl #132645]

  • The Perl implementation of getcwd() in Cwd in the PathTools distribution now behaves the same as XS implementation on errors: it returns an error, and sets $!. [perl #132648]

    PathTools 配布の Cwdgetcwd() の Perl 実装は、 エラーに関して XS 実装と同じ振る舞いをするようになりました: これはエラーを返し、$! を設定します。 [perl #132648]

  • Vivify array elements when putting them on the stack. Fixes [perl #8910] (reported in April 2002).

    配列要素はスタックに置かれた時点で有効化されるようになりました。 Fixes [perl #8910] (2002 年 4 月に報告されました)。

  • Fixed parsing of braced subscript after parens. Fixes [perl #8045] (reported in December 2001).

    かっこに引き続く大かっこによる添え字のパースが修正されました。 [perl #8045] (2001 年 12 月に報告されました)。

  • tr/non_utf8/long_non_utf8/c could give the wrong results when the length of the replacement character list was greater than 0x7fff.

    tr/non_utf8/long_non_utf8/c は、置き換える文字リストの長さが 0x7fff を超える場合に間違った結果を返していました。

  • tr/non_utf8/non_utf8/cd failed to add the implied \x{100}-\x{7fffffff} to the search character list.

    tr/non_utf8/non_utf8/cd は検索文字リストに暗黙の \x{100}-\x{7fffffff} を追加するのに失敗していました。

  • Compilation failures within "perl-within-perl" constructs, such as with string interpolation and the right part of s///e, now cause compilation to abort earlier.

    文字列の変数置換や s///e の右側のような、 「perl 内部の perl」構文内でのコンパイル失敗は、 より早い時点でコンパイルを中止するようになりました。

    Previously compilation could continue in order to report other errors, but the failed sub-parse could leave partly parsed constructs on the parser shift-reduce stack, confusing the parser, leading to perl crashes. [perl #125351]

    以前は、他のエラーを報告するためにコンパイルが続行し、 しかし失敗した部分パースが部分的にパースした構文をパーサの shift-reduce スタックに残すことがあり、 パーサが混乱して、perl のクラッシュを引き起こしていました。 [perl #125351]

  • On threaded perls where the decimal point (radix) character is not a dot, it has been possible for a race to occur between threads when one needs to use the real radix character (such as with sprintf). This has now been fixed by use of a mutex on systems without thread-safe locales, and the problem just doesn't come up on those with thread-safe locales.

    小数点(基数点)文字がドットでないスレッド対応 perl で、 本当の小数点文字が必要になった場合、スレッド間で競合状態となることが ありました。 これは、ロケールがスレッドセーフでないシステムではミューテックスを使うことで 修正されました; ロケールがスレッドセーフの場合はそもそもこの問題は 発生しません。

  • Errors while compiling a regex character class could sometime trigger an assertion failure. [perl #132163]

    正規表現文字クラスのコンパイル時のエラーが、ときどきアサート失敗を 引き起こしていました。 [perl #132163]


Perl 5.28.0 represents approximately 13 months of development since Perl 5.26.0 and contains approximately 730,000 lines of changes across 2,200 files from 77 authors.

Perl 5.28.0 は、Perl 5.26.0 以降、76 人の作者によって、 2,200 のファイルに約 730,000 行の変更を加えて、 約 12 ヶ月開発されてきました。

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

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

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

Aaron Crane, Abigail, Ævar Arnfjörð Bjarmason, Alberto Simões, Alexandr Savca, Andrew Fresh, Andy Dougherty, Andy Lester, Aristotle Pagaltzis, Ask Bjørn Hansen, Chris 'BinGOs' Williams, Craig A. Berry, Dagfinn Ilmari Mannsåker, Dan Collins, Daniel Dragan, David Cantrell, David Mitchell, Dmitry Ulanov, Dominic Hargreaves, E. Choroba, Eric Herman, Eugen Konkov, Father Chrysostomos, Gene Sullivan, George Hartzell, Graham Knop, Harald Jörg, H.Merijn Brand, Hugo van der Sanden, Jacques Germishuys, James E Keenan, Jarkko Hietaniemi, Jerry D. Hedden, J. Nick Koston, John Lightsey, John Peacock, John P. Linderman, John SJ Anderson, Karen Etheridge, Karl Williamson, Ken Brown, Ken Cotterill, Leon Timmermans, Lukas Mai, Marco Fontani, Marc-Philip Werner, Matthew Horsfall, Neil Bowers, Nicholas Clark, Nicolas R., Niko Tyni, Pali, Paul Marquess, Peter John Acklam, Reini Urban, Renee Baecker, Ricardo Signes, Robin Barker, Sawyer X, Scott Lanning, Sergey Aleynikov, Shirakata Kentaro, Shoichi Kaji, Slaven Rezic, Smylers, Steffen Müller, Steve Hay, Sullivan Beck, Thomas Sibley, Todd Rinaldo, Tomasz Konojacki, Tom Hukins, Tom Wyant, Tony Cook, Vitali Peil, Yves Orton, Zefram.

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

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

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

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

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

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


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

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

If you believe you have an unreported bug, please run the perlbug program included with your release. Be sure to trim your bug down to a tiny but sufficient test case. Your bug report, along with the output of perl -V, will be sent off to perlbug@perl.org to be analysed by the Perl porting team.

もしまだ報告されていないバグだと確信したら、そのリリースに含まれている perlbug プログラムを実行してください。 バグの再現スクリプトを十分小さく、しかし有効なコードに切りつめることを 意識してください。 バグレポートは perl -V の出力と一緒に perlbug@perl.org に送られ Perl porting チームによって解析されます。

If the bug you are reporting has security implications which make it inappropriate to send to a publicly archived mailing list, 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 プログラムを実行することでそうできます:


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

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


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 ファイル。