名前

perldelta - what is new for perl v5.26.0

perl5260delta - perl v5.26.0 での変更点

説明

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

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

注意

This release includes three updates with widespread effects:

このリリースには広範囲に影響を与える三つの更新を含んでいます:

  • "." no longer in @INC

    ("." はもはや @INC に含まれません)

    For security reasons, the current directory (".") is no longer included by default at the end of the module search path (@INC). This may have widespread implications for the building, testing and installing of modules, and for the execution of scripts. See the section "Removal of the current directory (".") from @INC" for the full details.

    セキュリティ上の理由により、カレントディレクトリ (".") はもはや デフォルトでモジュール検索パス (@INC) の末尾に含まれなくなりました。 これはモジュールのビルド、テスト、インストールと、スクリプトの実行に 広範囲に関連するかもしれません。 完全な詳細については "Removal of the current directory (".") from @INC" の章を 参照してください。

  • do may now warn

    (do は警告を出すことがあるようになりました)

    do now gives a deprecation warning when it fails to load a file which it would have loaded had "." been in @INC.

    do は、@INC"." があったときに読み込めていたファイルの読み込みに 失敗したときに廃止予定警告を出すようになりました。

  • In regular expression patterns, a literal left brace "{" should be escaped

    (正規表現中では、リテラルな左中かっこ "{" はエスケープする必要があります)

    "Unescaped literal "{" characters in regular expression patterns are no longer permissible" を 参照してください。

コアの拡張

レキシカルサブルーチンはもはや実験的ではなくなりました

Using the lexical_subs feature introduced in v5.18 no longer emits a warning. Existing code that disables the experimental::lexical_subs warning category that the feature previously used will continue to work. The lexical_subs feature has no effect; all Perl code can use lexical subroutines, regardless of what feature declarations are in scope.

v5.18 で導入された lexical_subs 機能はもはや警告を出さなくなりました。 以前使われていた機能の experimental::lexical_subs 警告カテゴリを無効にした コードはそのまま動作します。 lexical_subs 機能はなんの効果もありません; 全ての Perl コードは、 スコープ内にどの機能宣言があるかどうかに関わらず、レキシカルサブルーチンを 使えます。

インデントされたヒヤドキュメント

This adds a new modifier "~" to here-docs that tells the parser that it should look for /^\s*$DELIM\n/ as the closing delimiter.

ヒヤドキュメントに新しい修飾子 "~" が追加されました; これはパーサに、 閉じ区切り文字として /^\s*$DELIM\n/ を探すように伝えるものです。

These syntaxes are all supported:

以下の文法全てに対応しています:

    <<~EOF;
    <<~\EOF;
    <<~'EOF';
    <<~"EOF";
    <<~`EOF`;
    <<~ 'EOF';
    <<~ "EOF";
    <<~ `EOF`;

The "~" modifier will strip, from each line in the here-doc, the same whitespace that appears before the delimiter.

"~" 修飾子は、ヒヤドキュメントの各行から区切り文字の前にあるのと同じ 空白を取り除きます。

Newlines will be copied as-is, and lines that don't include the proper beginning whitespace will cause perl to croak.

改行はそのままコピーされ、行の先頭に適切な空白を含んでいない場合は perl は croak します。

For example:

例えば:

    if (1) {
      print <<~EOF;
        Hello there
        EOF
    }

prints "Hello there\n" with no leading whitespace.

これは先頭の空白なしで "Hello there\n" を表示します。

New regular expression modifier /xx

(新しい正規表現修飾子 /xx)

Specifying two "x" characters to modify a regular expression pattern does everything that a single one does, but additionally TAB and SPACE characters within a bracketed character class are generally ignored and can be added to improve readability, like /[ ^ A-Z d-f p-x ]/xx. Details are at "/x and /xx" in perlre.

正規表現を修正するために二つの "x" 文字を指定すると、一つ指定したときの 全ての効果に加えて、大かっこ文字クラスの中の TAB と SPACE は一般的に 無視されるようになるので、次のように可読性を改善するためにこれらを 追加できるようになります: /[ ^ A-Z d-f p-x ]/xx 。 詳細は "/x and /xx" in perlre にあります。

@{^CAPTURE}, %{^CAPTURE}, and %{^CAPTURE_ALL}

(@{^CAPTURE}, %{^CAPTURE}, %{^CAPTURE_ALL})

@{^CAPTURE} exposes the capture buffers of the last match as an array. So $1 is ${^CAPTURE}[0]. This is a more efficient equivalent to code like substr($matched_string,$-[0],$+[0]-$-[0]), and you don't have to keep track of the $matched_string either. This variable has no single character equivalent. Note that, like the other regex magic variables, the contents of this variable is dynamic; if you wish to store it beyond the lifetime of the match you must copy it to another array.

@{^CAPTURE} は最後のマッチングの捕捉バッファを配列として晒します。 つまり $1${^CAPTURE}[0] です。 これは substr($matched_string,$-[0],$+[0]-$-[0]) のようなコードと 等価でより効果的で、どちらも $matched_string を追跡する必要はありません。 この変数には一文字の等価なものはありません。 他の正規表現マジック変数と同様、この変数の内容は動的であることに 注意してください; マッチングの生存期間を超えて値を補完したい場合、 他の配列にコピーしなければなりません。

%{^CAPTURE} is equivalent to %+ (i.e., named captures). Other than being more self-documenting there is no difference between the two forms.

%{^CAPTURE}%+ (つまり、名前付き捕捉) と等価です。 より自己説明的であることを覗いて二つの型式に違いはありません。

%{^CAPTURE_ALL} is equivalent to %- (i.e., all named captures). Other than being more self-documenting there is no difference between the two forms.

%{^CAPTURE_ALL}%- (つまり、全ての名前付き捕捉) と等価です。 より自己説明的であることを覗いて二つの型式に違いはありません。

変数へのリファレンスの宣言

As an experimental feature, Perl now allows the referencing operator to come after my(), state(), our(), or local(). This syntax must be enabled with use feature 'declared_refs'. It is experimental, and will warn by default unless no warnings 'experimental::refaliasing' is in effect. It is intended mainly for use in assignments to references. For example:

実験的機能として、Perl は my(), state(), our(), local() の後にリファレンス演算子を許すようになりました。 この文法は use feature 'declared_refs' で有効にされなければなりません。 これは実験的で、no warnings 'experimental::refaliasing' が有効でない限り、 デフォルトで警告が出ます。 これは主にリファレンスへの代入に使うことを意図しています。 例えば:

    use experimental 'refaliasing', 'declared_refs';
    my \$a = \$b;

See "Assigning to References" in perlref for more details.

より詳しくは "Assigning to References" in perlref を参照してください。

Unicode 9.0 に対応しました

A list of changes is at http://www.unicode.org/versions/Unicode9.0.0/. Modules that are shipped with core Perl but not maintained by p5p do not necessarily support Unicode 9.0. Unicode::Normalize does work on 9.0.

変更の一覧は http://www.unicode.org/versions/Unicode9.0.0/ にあります。 コア Perl と共に出荷されているけれども p5p によって保守されていない モジュールは必ずしも Unicode 9.0 に対応しているとは限りません。 Unicode::Normalize は 9.0 で動作します。

Use of \p{script} uses the improved Script_Extensions property

(\p{script} を使うと改良された Script_Extensions 特性を使います)

Unicode 6.0 introduced an improved form of the Script (sc) property, and called it Script_Extensions (scx). Perl now uses this improved version when a property is specified as just \p{script}. This should make programs more accurate when determining if a character is used in a given script, but there is a slight chance of breakage for programs that very specifically needed the old behavior. The meaning of compound forms, like \p{sc=script} are unchanged. See "Scripts" in perlunicode.

Unicode 6.0 は Script (sc) 特性の改良された型式を導入しました; これは Script_Extensions (scx) と呼ばれます。 Perl は、特性を単に \p{script} として指定された場合はこの 改良版を使うようになりました。 これにより、ある文字が特定の用字で使われているかを判定するプログラムが より正確になるはずですが、特に具体的に古い振る舞いが必要なプログラムを 壊す可能性が僅かにあります。 \p{sc=script} のような複合形式の意味は変わりません。 "Scripts" in perlunicode を参照してください。

Perl は、対応しているプラットフォームでは UTF-8 ロケールのデフォルト照合を使うようになりました

Some platforms natively do a reasonable job of collating and sorting in UTF-8 locales. Perl now works with those. For portability and full control, Unicode::Collate is still recommended, but now you may not need to do anything special to get good-enough results, depending on your application. See "Category LC_COLLATE: Collation: Text Comparisons and Sorting" in perllocale.

一部のプラットフォームでは UTF-8 ロケールでの照合とソートにおいて 妥当な仕事をしています。 Perl はこれらで動作するようになりました。 移植性と完全な制御のために、Unicode::Collate がまだ推奨されますが、 アプリケーションによっては、十分によい結果を得るために何も特別なことを する必要がなくなったかもしれません。 "Category LC_COLLATE: Collation: Text Comparisons and Sorting" in perllocale を参照してください。

Better locale collation of strings containing embedded NUL characters

(埋め込みの NUL 文字を含む文字列に対するよりよいロケール照合)

In locales that have multi-level character weights, NULs are now ignored at the higher priority ones. There are still some gotchas in some strings, though. See "Collation of strings containing embedded NUL characters" in perllocale.

複数レベルの文字ウェイトを持つロケールでは、NUL はより高い優先順位の ものでは無視されるようになりました。 しかし、一部の文字列ではまだいくつかのこつがあります。 "Collation of strings containing embedded NUL characters" in perllocale を 参照してください。

CORE subroutines for hash and array functions callable via reference

(ハッシュと配列の関数のための CORE サブルーチンはリファレンス経由で呼び出せるようになりました)

The hash and array functions in the CORE namespace (keys, each, values, push, pop, shift, unshift and splice) can now be called with ampersand syntax (&CORE::keys(\%hash) and via reference (my $k = \&CORE::keys; $k->(\%hash)). Previously they could only be used when inlined.

CORE 名前空間でのハッシュと配列の関数 (keys, each, values, push, pop, shift, unshift, splice) は アンパサンド文法 (&CORE::keys(\%hash) とリファレンス経由 (my $k = \&CORE::keys; $k->(\%hash)) で呼び出せるようになりました。 以前はインライン化される場合にのみ可能でした。

64 ビットビルドのための新しいハッシュ関数

We have switched to a hybrid hash function to better balance performance for short and long keys.

短いキーと長いキーのより良いバランスの性能のために複合ハッシュ関数に 切り替えました。

For short keys, 16 bytes and under, we use an optimised variant of One At A Time Hard, and for longer keys we use Siphash 1-3. For very long keys this is a big improvement in performance. For shorter keys there is a modest improvement.

16 バイト以下の短いキーでは、最適化版の One At A Time Hard を使い、 より長いキーでは Siphash 1-3 を使います。 すごく長いキーの場合、これは性能が大きく改善します。 より短いキーではこれは緩やかな改善です。

セキュリティ

Removal of the current directory (".") from @INC

(@INC からの現在のディレクトリ (".") の除去)

The perl binary includes a default set of paths in @INC. Historically it has also included the current directory (".") as the final entry, unless run with taint mode enabled (perl -T). While convenient, this has security implications: for example, where a script attempts to load an optional module when its current directory is untrusted (such as /tmp), it could load and execute code from under that directory.

perl バイナリは @INC にパスのデフォルト集合を含んでいます。 歴史的に、汚染モード (perl -T) が有効でない限り、最終的なエントリとして カレントディレクトリ (".") も含んでいました。 これは便利ですが、セキュリティ上の問題がありました: 例えば、 カレントディレクトリが(/tmp のように)信頼できない場合、 スクリプトが追加のモジュールを読み込もうとすると、そのディレクトリの下から コードを読み込んで実行する可能性があります。

Starting with v5.26, "." is always removed by default, not just under tainting. This has major implications for installing modules and executing scripts.

v5.26 から、"." は汚染モードの場合だけではなく、常にデフォルトで 除去されるようになりました。 これはモジュールのインストールとスクリプトの実行に大きな影響を与えます。

The following new features have been added to help ameliorate these issues.

これらの問題を改善するために、以下の新しい機能が追加されました。

  • Configure -Udefault_inc_excludes_dot

    There is a new Configure option, default_inc_excludes_dot (enabled by default) which builds a perl executable without "."; unsetting this option using -U reverts perl to the old behaviour. This may fix your path issues but will reintroduce all the security concerns, so don't build a perl executable like this unless you're really confident that such issues are not a concern in your environment.

    "." なしで perl 実行ファイルをビルドするための 新しい Configure オプションである default_inc_excludes_dot (デフォルトで有効) があります; -U を使ってアンセットすることで perl は古い振る舞いに戻ります。 これはあなたのパスの問題を修正するかもしれませんが、全てのセキュリティ問題が 再導入されるので、このような問題があなたの環境で問題にならないと言うことに 本当に 自信がない限りこのような perl 実行ファイルをビルドしないでください。

  • PERL_USE_UNSAFE_INC

    There is a new environment variable recognised by the perl interpreter. If this variable has the value 1 when the perl interpreter starts up, then "." will be automatically appended to @INC (except under tainting).

    これは perl インタプリタによって認識される新しい環境変数です。 perl インタプリタの起動時にこの値が 1 なら、(汚染モードでない限り) "." が自動的に @INC に追加されます。

    This allows you restore the old perl interpreter behaviour on a case-by-case basis. But note that this is intended to be a temporary crutch, and this feature will likely be removed in some future perl version. It is currently set by the cpan utility and Test::Harness to ease installation of CPAN modules which have not been updated to handle the lack of dot. Once again, don't use this unless you are sure that this will not reintroduce any security concerns.

    これにより、場合毎に古い perl インタプリタの振る舞いを復元できます。 これは一時的な補助を意図しており、この機能はおそらく将来の perl バージョンで 削除されることに注意してください。 ドットがない状態を扱えるようにまだ更新されていない CPAN モジュールの インストールを容易にするために、これは現在のところ cpan ユーティリティと Test::Harness によって設定されています。 再び、これによりセキュリティ問題が再導入されないことに自信がない限り これを使わないでください。

  • A new deprecation warning issued by do.

    (do によって出力される廃止予定警告。)

    While it is well-known that use and require use @INC to search for the file to load, many people don't realise that do "file" also searches @INC if the file is a relative path. With the removal of ".", a simple do "file.pl" will fail to read in and execute file.pl from the current directory. Since this is commonly expected behaviour, a new deprecation warning is now issued whenever do fails to load a file which it otherwise would have found if a dot had been in @INC.

    userequire がファイルの読み込みに @INC を使うことは よく知られていますが、多くの人々は、do "file" もファイルが相対パスの場合は @INC を探すことに気付いていません。 "." の除去によって、単に do "file.pl" とすると、 現在のディレクトリから file.pl を読み込んで実行するのに失敗します。 これは一般的に想定された振る舞いなので、 @INC にドットが含まれていれば見つかるファイルの読み込みに do が 失敗した場合に新しい廃止予定警告が出力されるようになりました。

Here are some things script and module authors may need to do to make their software work in the new regime.

新しい型式でソフトウェアが動作するために、スクリプトやモジュールの作者が する必要があるかもしれないことがいくつかあります。

  • Script authors

    (スクリプト作者)

    If the issue is within your own code (rather than within included modules), then you have two main options. Firstly, if you are confident that your script will only be run within a trusted directory (under which you expect to find trusted files and modules), then add "." back into the path; e.g.:

    もし(インクルードしたモジュールの中ではなく)自分自身のコードの中でこれが 問題になるなら、主に二つの選択肢があります。 最初に、あなたのスクリプトが (信頼できるファイルとモジュールが 発見できることが想定される)信頼できるディレクトリの中でのみ実行されるという 自信があるなら、パスに "." を追加します; 例えば:

        BEGIN {
            my $dir = "/some/trusted/directory";
            chdir $dir or die "Can't chdir to $dir: $!\n";
            # safe now
            push @INC, '.';
        }
    
        use "Foo::Bar"; # may load /some/trusted/directory/Foo/Bar.pm
        do "config.pl"; # may load /some/trusted/directory/config.pl

    On the other hand, if your script is intended to be run from within untrusted directories (such as /tmp), then your script suddenly failing to load files may be indicative of a security issue. You most likely want to replace any relative paths with full paths; for example,

    一方、あなたのスクリプトが (/tmp のような) 信頼できないディレクトリの 中で実行されることを意図しているなら、突然ファイルの読み込みに 失敗するようになったのはセキュリティ問題があることを 意味しているかもしれません。 おそらく全ての相対パスをフルパスで置換した方がよいでしょう; 例えば:

        do "foo_config.pl"

    might become

    というのは以下のようにします

        do "$ENV{HOME}/foo_config.pl"

    If you are absolutely certain that you want your script to load and execute a file from the current directory, then use a ./ prefix; for example:

    スクリプトの読み込みとファイルの実行を現在のディレクトリから 読み込みたいということが完全に確実なら、./ 接頭辞を使ってください; 例えば:

        do "./foo_config.pl"
  • Installing and using CPAN modules

    (CPAN モジュールをインストールして使う)

    If you install a CPAN module using an automatic tool like cpan, then this tool will itself set the PERL_USE_UNSAFE_INC environment variable while building and testing the module, which may be sufficient to install a distribution which hasn't been updated to be dot-aware. If you want to install such a module manually, then you'll need to replace the traditional invocation:

    cpan のような自動化ツールを使って CPAN モジュールをインストールする場合、 このツールはモジュールのビルドとテストの間は 自分自身で PERL_USE_UNSAFE_INC 環境変数を設定します; ドットを認識するように更新されていないディストリビューションを インストールするにはこれで十分でしょう。 もしこのようなモジュールを手動でインストールしたい場合、 次のような伝統的な起動法を置き換える必要があります:

        perl Makefile.PL && make && make test && make install

    with something like

    というのは以下のようにします

        (export PERL_USE_UNSAFE_INC=1; \
         perl Makefile.PL && make && make test && make install)

    Note that this only helps build and install an unfixed module. It's possible for the tests to pass (since they were run under PERL_USE_UNSAFE_INC=1), but for the module itself to fail to perform correctly in production. In this case, you may have to temporarily modify your script until a fixed version of the module is released. For example:

    これは未修正のモジュールのビルドとインストールにのみ助けになることに 注意してください。 (PERL_USE_UNSAFE_INC=1 の基で実行されることになるので) これでテストがパスするようになりますが、モジュール自身の製品版は 正しく動作するのに失敗します。 この場合、修正版のモジュールがリリースされるまでスクリプトを一時的に 修正する必要があるかもしれません。 例えば:

        use Foo::Bar;
        {
            local @INC = (@INC, '.');
            # assuming read_config() needs '.' in @INC
            $config = Foo::Bar->read_config();
        }

    This is only rarely expected to be necessary. Again, if doing this, assess the resultant risks first.

    これが必要な場合はとても稀です。 再び、これをする場合は、結果のリスクをまず考えてください。

  • Module Authors

    (モジュール作者)

    If you maintain a CPAN distribution, it may need updating to run in a dotless environment. Although cpan and other such tools will currently set the PERL_USE_UNSAFE_INC during module build, this is a temporary workaround for the set of modules which rely on "." being in @INC for installation and testing, and this may mask deeper issues. It could result in a module which passes tests and installs, but which fails at run time.

    あなたが CPAN ディストリビューションを保守している場合、ドットなし環境で 実行するように更新する必要があるかもしれません。 cpan やその他の同様のツールは現在のところモジュールビルド中に PERL_USE_UNSAFE_INC を設定しますが、 インストールとテスト時に @INC"." があることに依存している モジュールに対する一時的な回避手段であり、より深い問題を 隠してしまうかもしれません。 モジュールがテストとインストールには成功するけれども、実行時に 失敗することになる可能性があります。

    During build, test, and install, it will normally be the case that any perl processes will be executing directly within the root directory of the untarred distribution, or a known subdirectory of that, such as t/. It may well be that Makefile.PL or t/foo.t will attempt to include local modules and configuration files using their direct relative filenames, which will now fail.

    ビルド、テスト、インストールの間、あらゆる perl の処理は tar 展開されたディストリビューションのルートディレクトリの中か、 t/ のような既知のサブディレクトリの中で直接実行されるというのは 通常真実です。 Makefile.PLt/foo.t がこのような直接相対ファイル名を使って ローカルなモジュールや設定ファイルを読み込もうとすると失敗します。

    However, as described above, automatic tools like cpan will (for now) set the PERL_USE_UNSAFE_INC environment variable, which introduces dot during a build.

    しかし、前述したように、cpan のような自動化ツールは (今のところ) PERL_USE_UNSAFE_INC 環境変数を設定するので、ビルド中ドットが 導入されます。

    This makes it likely that your existing build and test code will work, but this may mask issues with your code which only manifest when used after install. It is prudent to try and run your build process with that variable explicitly disabled:

    これによりおそらくあなたの既存のビルド及びテストコードは動作しますが、 これはあなたのコードにある、インストール後使うときのみに明らかになる 問題を隠蔽するかもしれません。 慎重に行くなら、この変数を明示的に無効にしてビルドプロセスを試します:

        (export PERL_USE_UNSAFE_INC=0; \
         perl Makefile.PL && make && make test && make install)

    This is more likely to show up any potential problems with your module's build process, or even with the module itself. Fixing such issues will ensure both that your module can again be installed manually, and that it will still build once the PERL_USE_UNSAFE_INC crutch goes away.

    これはおそらく、あなたのモジュールのビルドプロセスや、モジュール自身の 潜在的な問題を明らかにします。 このような問題を修正したあと、モジュールが再び手動でインストール出来ることと、 PERL_USE_UNSAFE_INC の補助がなくなってもまだビルドできることを確認します。

    When fixing issues in tests due to the removal of dot from @INC, reinsertion of dot into @INC should be performed with caution, for this too may suppress real errors in your runtime code. You are encouraged wherever possible to apply the aforementioned approaches with explicit absolute/relative paths, or to relocate your needed files into a subdirectory and insert that subdirectory into @INC instead.

    @INC からドットが除去されたことによるテストの問題を修正するとき、 @INC にドットを再挿入するのは慎重に行うべきです、 これも実行時コードの実際の問題を抑制するかもしれないからです。 可能な限り、明示的な絶対/相対パスを使うという前述した手法を適用するか、 必要なファイルをサブディレクトリに再配置して、代わりに そのサブディレクトリを @INC に追加することを勧めます。

    If your runtime code has problems under the dotless @INC, then the comments above on how to fix for script authors will mostly apply here too. Bear in mind though that it is considered bad form for a module to globally add a dot to @INC, since it introduces both a security risk and hides issues of accidentally requiring dot in @INC, as explained above.

    もしあなたのランタイムコードがドットなしの @INC で問題があるなら、 前述したスクリプト作者のための修正方法のコメントを普通はここでも適用します。 しかし、モジュールにとってグローバルに @INC にドットを追加するのは 悪い型式であると言うことを心に留めてください; これは前述したように、 セキュリティリスクおよび間違って @INC にドットを要求しているという 問題を隠蔽するからです。

PATHの中のエスケープされたコロンと相対パス

On Unix systems, Perl treats any relative paths in the PATH environment variable as tainted when starting a new process. Previously, it was allowing a backslash to escape a colon (unlike the OS), consequently allowing relative paths to be considered safe if the PATH was set to something like /\:.. The check has been fixed to treat "." as tainted in that example.

Unix システムでは、Perl は新しいプロセスが開始するときに PATH 環境変数の 全ての相対パスを汚染されているものとして扱います。 以前は、(OS と違って) コロンを逆スラッシュでエスケープすることができ、 結果として PATH に /\:. のようなものが設定されている場合に 相対パスを安全なものとして扱うことができました。 このチェックは修正され、この例では "." を汚染されているものとして 扱うようになりました。

New -Di switch is now required for PerlIO debugging output

(PerlIO デバッグ出力には新しい -Di オプションが必要になりました)

This is used for debugging of code within PerlIO to avoid recursive calls. Previously this output would be sent to the file specified by the PERLIO_DEBUG environment variable if perl wasn't running setuid and the -T or -t switches hadn't been parsed yet.

これは再帰呼び出しを避けるために PerlIO の中のコードをデバッグするために 使われています。 以前は、perl が setuid 付きで実行されておらず、-T or -t オプションが まだパースされていない場合は、この出力は PERLIO_DEBUG 環境変数で 指定されたファイルに送られていました。

If perl performed output at a point where it hadn't yet parsed its switches this could result in perl creating or overwriting the file named by PERLIO_DEBUG even when the -T switch had been supplied.

まだこのオプションがパースされていない時点で perl が出力を行うとき、 これにより、たとえ -T オプションが指定されていても、perl が PERLIO_DEBUG の名前のファイルを作ったり上書きすることがありました。

Perl now requires the -Di switch to be present before it will produce PerlIO debugging output. By default this is written to stderr, but can optionally be redirected to a file by setting the PERLIO_DEBUG environment variable.

Perl は PerlIO デバッグ出力を行う前に -Di オプションがあることを 要求するようになりました。 デフォルトではこれは stderr に書き込まれますが、 オプションとして PERLIO_DEBUG 環境変数を設定することでファイルに リダイレクトすることができます。

If perl is running setuid or the -T switch was supplied, PERLIO_DEBUG is ignored and the debugging output is sent to stderr as for any other -D switch.

perl が setuid 付きで実行されているか -T オプションが指定されている場合、 PERLIO_DEBUG は無視されて、デバッグ出力はその他の -D オプションと同様 stderr に送られます。

互換性のない変更

Unescaped literal "{" characters in regular expression patterns are no longer permissible

(正規表現中のエスケープされていないリテラルの "{" 文字はもはや許されなくなりました)

You have to now say something like "\{" or "[{]" to specify to match a LEFT CURLY BRACKET; otherwise, it is a fatal pattern compilation error. This change will allow future extensions to the language.

LEFT CURLY BRACKET にマッチングするためには "\{""[{]" のように 指定する必要があるようになりました; さもなければ、致命的なパターンコンパイルエラーとなります。 この変更により、将来の言語拡張を可能にします。

These have been deprecated since v5.16, with a deprecation message raised for some uses starting in v5.22. Unfortunately, the code added to raise the message was buggy and failed to warn in some cases where it should have. Therefore, enforcement of this ban for these cases is deferred until Perl 5.30, but the code has been fixed to raise a default-on deprecation message for them in the meantime.

これらは v5.16 から廃止予定で、一部の使用法では v5.22 から廃止予定 メッセージが発生していました。 残念ながら、メッセージを発生されるために追加されたコードにはバグがあり、 警告するべき場合の一部で警告できていませんでした。 従って、これらの場合のこの廃止の強制は Perl 5.30 まで延期されますが、 このようなコードはデフォルトでオンの廃止予定メッセージが出力されるように 修正されました。

Some uses of literal "{" occur in contexts where we do not foresee the meaning ever being anything but the literal, such as the very first character in the pattern, or after a "|" meaning alternation. Thus

パターンの先頭の文字や、代替を意味する "|" の直後のような、 リテラルとして以外の意味を予測することができない位置でのリテラルな "{" の使用も起こります。 従って

 qr/{fee|{fie/

matches either of the strings {fee or {fie. To avoid forcing unnecessary code changes, these uses do not need to be escaped, and no warning is raised about them, and there are no current plans to change this.

というのは {fee{fie のどちらかの文字列にマッチングします。 不必要なコード変更の強制を避けるために、これらの使用法では エスケープする必要はなく、これらに関する警告は発生せず、 現在これを変更する予定はありません。

But it is always correct to escape "{", and the simple rule to remember is to always do so.

しかし、"{" をエスケープするのは常に正しく、覚えておくべき単純な規則は、 常にそうすることです。

Unescaped left brace in regex is illegal here を 参照してください。

scalar(%hash) return signature changed

(scalar(%hash) 返り値シグネチャの変更)

The value returned for scalar(%hash) will no longer show information about the buckets allocated in the hash. It will simply return the count of used keys. It is thus equivalent to 0+keys(%hash).

scalar(%hash) の返り値はもはやハッシュで割り当てられたバケツに関する 情報ではなくなりました。 これは単に使ったキーのカウントを返します。 従ってこれは 0+keys(%hash) と等価です。

A form of backward compatibility is provided via Hash::Util::bucket_ratio() which provides the same behavior as scalar(%hash) provided in Perl 5.24 and earlier.

後方互換性の型式は、Perl 5.24 以前のが提供する scalar(%hash) と 同じ振る舞いを提供する Hash::Util::bucket_ratio() 経由で提供されます。

keys returned from an lvalue subroutine

(左辺値サブルーチンから返される keys)

keys returned from an lvalue subroutine can no longer be assigned to in list context.

左辺値サブルーチンから返される keys はリストコンテキストでは 代入されなくなりました。

    sub foo : lvalue { keys(%INC) }
    (foo) = 3; # death
    sub bar : lvalue { keys(@_) }
    (bar) = 3; # also an error

This makes the lvalue sub case consistent with (keys %hash) = ... and (keys @_) = ..., which are also errors. [perl #128187]

これにより、左辺値サブルーチンの場合は、 同様にエラーである (keys %hash) = ...(keys @_) = ... と 一貫性を持つようになりました。 [perl #128187]

The ${^ENCODING} facility has been removed

(${^ENCODING} 機能は除去されました)

The special behaviour associated with assigning a value to this variable has been removed. As a consequence, the encoding pragma's default mode is no longer supported. If you still need to write your source code in encodings other than UTF-8, use a source filter such as Filter::Encoding on CPAN or encoding's Filter option.

この変数へ値を代入することと関連付けられている特別な振る舞いは除去されました。 結果として、encoding プラグマのデフォルトモードはもはやサポートされません。 まだ UTF-8 以外のエンコーディングでソースコードを書く必要がある場合は、 CPAN の Filter::EncodingencodingFilter のような ソースフィルタを使ってください。

POSIX::tmpnam() has been removed

(POSIX::tmpnam() は除去されました)

The fundamentally unsafe tmpnam() interface was deprecated in Perl 5.22 and has now been removed. In its place, you can use, for example, the File::Temp interfaces.

基本的に安全でない tmpnam() インターフェースは Perl 5.22 で廃止予定に なりましたが、今回除去されました。 このような場合、例えば、File::Temp インターフェースを使えます。

require ::Foo::Bar は不正になりました。

Formerly, require ::Foo::Bar would try to read /Foo/Bar.pm. Now any bareword require which starts with a double colon dies instead.

以前は、require ::Foo::Bar/Foo/Bar.pm を読み込もうとしていました。 コロン二つで始まる裸の単語の require は全て die するようになりました。

リテラル制御文字変数名はもはや許されなくなりました

A variable name may no longer contain a literal control character under any circumstances. These previously were allowed in single-character names on ASCII platforms, but have been deprecated there since Perl 5.20. This affects things like $\cT, where \cT is a literal control (such as a NAK or NEGATIVE ACKNOWLEDGE character) in the source code.

変数名には、どのような場合でもリテラル名制御文字を含むことは できなくなりました。 以前は ASCII プラットフォームでの 1 文字名は許されていましたが、 Perl 5.20 から廃止予定でした。 これは $\cT のようなもの (\cT はソースコード中のリテラルな 制御文字 (NAKNEGATIVE ACKNOWLEDGE 文字)) に影響します。

NBSP is no longer permissible in \N{...}

(\N{...} 内での NBSP はもはや許されなくなりました)

The name of a character may no longer contain non-breaking spaces. It has been deprecated to do so since Perl 5.22.

文字の名前にはもはやノンブレークスペースを含むことができなくなりました。 これは Perl 5.22 から廃止予定になっていました。

廃止予定

単体書記素でない文字列区切り文字は廃止予定になりました

For Perl to eventually allow string delimiters to be Unicode grapheme clusters (which look like a single character, but may be a sequence of several ones), we have to stop allowing a single character delimiter that isn't a grapheme by itself. These are unlikely to exist in actual code, as they would typically display as attached to the character in front of them.

Perl が最終的に書記素クラスタ (単一の文字のように見えるけれども複数の文字の 並びであるもの) を文字列区切りとして認めるようになるためには、 それ自身が書記素でない単一区切り文字を許すのを止める必要がありました。 これらは実際のコードではありそうにありません; これらは典型的には ある文字の前に付いているものだからです。

\cX that maps to a printable is no longer deprecated

(表示可能文字にマッピングされる \cX はもはや廃止予定ではなくなりました)

This means we have no plans to remove this feature. It still raises a warning, but only if syntax warnings are enabled. The feature was originally intended to be a way to express non-printable characters that don't have a mnemonic (\t and \n are mnemonics for two non-printable characters, but most non-printables don't have a mnemonic.) But the feature can be used to specify a few printable characters, though those are more clearly expressed as the printable itself. See http://www.nntp.perl.org/group/perl.perl5.porters/2017/02/msg242944.html.

つまり、この機能を除去する予定はありません。 これはまだ警告を出しますが、文法警告が有効の場合のみです。 この機能は元々ニーモニックを持たない非表示文字を表現するための方法を 意図していました (\t\n は二つの非表示文字のための ニーモニックでしたが、ほとんどの非表示文字にはニーモニックがありません)。 しかし、この機能はより明らかに、いくつかの表示可能な文字を指定するために 使われています; http://www.nntp.perl.org/group/perl.perl5.porters/2017/02/msg242944.html を参照してください。

性能改善

  • A hash in boolean context is now sometimes faster, e.g.

    ブール値コンテキストでのハッシュは時々より早くなりました; 例えば

        if (!%h) { ... }

    This was already special-cased, but some cases were missed (such as grep %$_, @AoH), and even the ones which weren't have been improved.

    これは既に特別扱いしていましたが、grep %$_, @AoH のような) 一部の場合が 漏れていました; 以前は特別扱いしていなかった場合も改善されました。

  • New Faster Hash Function on 64 bit builds

    (64 ビットビルドでの新しいより良いハッシュ関数)

    We use a different hash function for short and long keys. This should improve performance and security, especially for long keys.

    短いキーと長いキーで異なるハッシュ関数を使います。 これにより性能とセキュリティが、特に長いキーで改善するはずです。

  • readline is faster

    (readline はより速くなりました)

    Reading from a file line-by-line with readline() or <> should now typically be faster due to a better implementation of the code that searches for the next newline character.

    readline()<> を使った 1 行ずつのファイル読み込みは、 次の改行文字を検索するコードの実装の改良により、典型的には 高速になっているはずです。

  • Assigning one reference to another, e.g. $ref1 = $ref2 has been optimized in some cases.

    あるリファレンスから別のリファレンスへの代入、例えば $ref1 = $ref2 は 一部の場合で最適化されるようになりました。

  • Remove some exceptions to creating Copy-on-Write strings. The string buffer growth algorithm has been slightly altered so that you're less likely to encounter a string which can't be COWed.

    Copy-on-Write 文字列の作成時のいくつかの例外を除去しました。 文字列バッファを拡大するアルゴリズムは少し変更されたので、 COW できない文字列に出会うことはより少なくなりました。

  • Better optimise array and hash assignment: where an array or hash appears in the LHS of a list assignment, such as (..., @a) = (...);, it's likely to be considerably faster, especially if it involves emptying the array/hash. For example, this code runs about a third faster compared to Perl 5.24.0:

    配列とハッシュの代入の最適化の改善: where an array or hash appears in the LHS of a list assignment, such as (..., @a) = (...); のように、リスト代入の左側に配列やハッシュがある場合、 特にこれが配列/ハッシュを空にすることに関連する場合、おそらくかなり 早くなりました。 例えば、このコードは Perl 5.24.0 と比べて約 3 倍高速に実行します:

        my @a;
        for my $i (1..10_000_000) {
            @a = (1,2,3);
            @a = ();
        }
  • Converting a single-digit string to a number is now substantially faster.

    数字 1 桁の文字列から数値への変換は大幅に速くなりました。

  • The split builtin is now slightly faster in many cases: in particular for the two specially-handled forms

    split 組み込み関数は、多くの場合(特に二つの特別扱いされる型式)で少し 速くなりました:

        my    @a = split ...;
        local @a = split ...;
  • The rather slow implementation for the experimental subroutine signatures feature has been made much faster; it is now comparable in speed with the traditional my ($a, $b, @c) = @_.

    実験的なサブルーチンシグネチャ機能のやや遅い実装は遥かに速くなりました; 伝統的な my ($a, $b, @c) = @_ と速度を比較できる程度になりました。

  • Bareword constant strings are now permitted to take part in constant folding. They were originally exempted from constant folding in August 1999, during the development of Perl 5.6, to ensure that use strict "subs" would still apply to bareword constants. That has now been accomplished a different way, so barewords, like other constants, now gain the performance benefits of constant folding.

    裸の単語の文字列定数は定数畳み込みの一部として許されるようになりました。 これはもともと use strict "subs" が裸の単語の定数にも適用されるように、 Perl 5.6 開発中の 1999 年 8 月から定数畳み込みから免除されていました。 これは異なった方法で実現されることになったので、裸の単語も他の定数と同様に 定数畳み込みによる性能的な利益を得られるようになりました。

    This also means that void-context warnings on constant expressions of barewords now report the folded constant operand, rather than the operation; this matches the behaviour for non-bareword constants.

    これはまた、裸の単語の定数表現での無効コンテキスト警告は 操作ではなく畳み込まれた定数オペランドを報告するようになったことを意味します; これは裸の単語の定数の振る舞いと一致します。

モジュールとプラグマ

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

  • IO::Compress has been upgraded from version 2.069 to 2.074.

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

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

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

  • arybase has been upgraded from version 0.11 to 0.12.

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

  • attributes has been upgraded from version 0.27 to 0.29.

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

    The deprecation message for the :unique and :locked attributes now mention that they will disappear in Perl 5.28.

    :unique:locked 属性の廃止予定メッセージは、これらが Perl 5.28 で 消えることに言及するようになりました。

  • B has been upgraded from version 1.62 to 1.68.

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

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

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

    Its output is now more descriptive for op_private flags.

    この出力は op_private フラグについてより説明的になりました。

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

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

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

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

  • B::Xref has been upgraded from version 1.05 to 1.06.

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

    It now uses 3-arg open() instead of 2-arg open(). [perl #130122]

    2 引数 open() ではなく 3 引数 open() を使うようになりました。 [perl #130122]

  • base has been upgraded from version 2.23 to 2.25.

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

  • bignum has been upgraded from version 0.42 to 0.47.

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

  • Carp has been upgraded from version 1.40 to 1.42.

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

  • charnames has been upgraded from version 1.43 to 1.44.

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

  • Compress::Raw::Bzip2 has been upgraded from version 2.069 to 2.074.

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

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

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

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

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

  • CPAN has been upgraded from version 2.11 to 2.18.

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

  • CPAN::Meta has been upgraded from version 2.150005 to 2.150010.

    CPAN::Meta はバージョン 2.150005 から 2.150010 に更新されました。

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

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

    The XS implementation now supports Deparse.

    XS 実装は Deparse に対応するようになりました。

  • DB_File has been upgraded from version 1.835 to 1.840.

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

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

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

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

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

  • Devel::SelfStubber has been upgraded from version 1.05 to 1.06.

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

    It now uses 3-arg open() instead of 2-arg open(). [perl #130122]

    2 引数 open() ではなく 3 引数 open() を使うようになりました。 [perl #130122]

  • diagnostics has been upgraded from version 1.34 to 1.36.

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

    It now uses 3-arg open() instead of 2-arg open(). [perl #130122]

    2 引数 open() ではなく 3 引数 open() を使うようになりました。 [perl #130122]

  • Digest has been upgraded from version 1.17 to 1.17_01.

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

  • Digest::MD5 has been upgraded from version 2.54 to 2.55.

    Digest::MD5 はバージョン 2.54 から 2.55 に更新されました。

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

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

  • DynaLoader has been upgraded from version 1.38 to 1.42.

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

  • Encode has been upgraded from version 2.80 to 2.88.

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

  • encoding has been upgraded from version 2.17 to 2.19.

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

    This module's default mode is no longer supported. It now dies when imported, unless the Filter option is being used.

    このモジュールのデフォルトモードはもはやサポートされなくなりました。 Filter オプションが使われない限り、インポートされたときに die するようになりました。

  • encoding::warnings has been upgraded from version 0.12 to 0.13.

    encoding::warnings はバージョン 0.12 から 0.13 に更新されました。

    This module is no longer supported. It emits a warning to that effect and then does nothing.

    このモジュールはもはやサポートされません。 この効果と、従って何もしないという警告を出力します。

  • Errno has been upgraded from version 1.25 to 1.28.

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

    It now documents that using %! automatically loads Errno for you.

    %! を使うと Errno を読み込むことが文書化されました。

    It now uses 3-arg open() instead of 2-arg open(). [perl #130122]

    2 引数 open() ではなく 3 引数 open() を使うようになりました。 [perl #130122]

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

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

    It now uses 3-arg open() instead of 2-arg open(). [perl #130122]

    2 引数 open() ではなく 3 引数 open() を使うようになりました。 [perl #130122]

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

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

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

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

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

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

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

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

  • feature has been upgraded from version 1.42 to 1.47.

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

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

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

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

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

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

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

    It now Issues a deprecation message for File::Glob::glob().

    File::Glob::glob() の廃止予定メッセージを出力するようになりました。

  • File::Spec has been upgraded from version 3.63 to 3.67.

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

  • FileHandle has been upgraded from version 2.02 to 2.03.

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

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

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

    It no longer treats no MyFilter immediately following use MyFilter as end-of-file. [perl #107726]

    もはや no MyFilter の直後の use MyFilter をファイル末尾として 扱わなくなりました。 [perl #107726]

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

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

  • Getopt::Std has been upgraded from version 1.11 to 1.12.

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

  • Hash::Util has been upgraded from version 0.19 to 0.22.

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

  • HTTP::Tiny has been upgraded from version 0.056 to 0.070.

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

    Internal 599-series errors now include the redirect history.

    内部の 599 シリーズエラーはリダイレクト履歴を含むようになりました。

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

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

    It now uses 3-arg open() instead of 2-arg open(). [perl #130122]

    2 引数 open() ではなく 3 引数 open() を使うようになりました。 [perl #130122]

  • IO has been upgraded from version 1.36 to 1.38.

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

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

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

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

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

  • IPC::SysV has been upgraded from version 2.06_01 to 2.07.

    IPC::SysV はバージョン 2.06_01 から 2.07 に更新されました。

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

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

  • lib has been upgraded from version 0.63 to 0.64.

    lib はバージョン 0.63 から 0.64 に更新されました。

    It now uses 3-arg open() instead of 2-arg open(). [perl #130122]

    2 引数 open() ではなく 3 引数 open() を使うようになりました。 [perl #130122]

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

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

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

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

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

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

  • Locale::Maketext::Simple has been upgraded from version 0.21 to 0.21_01.

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

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

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

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

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

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

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

  • Math::Complex has been upgraded from version 1.59 to 1.5901.

    Math::Complex はバージョン 1.59 から 1.5901 に更新されました。

  • Memoize has been upgraded from version 1.03 to 1.03_01.

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

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

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

  • Module::Load::Conditional has been upgraded from version 0.64 to 0.68.

    Module::Load::Conditional はバージョン 0.64 から 0.68 に更新されました。

  • Module::Metadata has been upgraded from version 1.000031 to 1.000033.

    Module::Metadata はバージョン 1.000031 から 1.000033 に更新されました。

  • mro has been upgraded from version 1.18 to 1.20.

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

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

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

    IPv6 addresses and AF_INET6 sockets are now supported, along with several other enhancements.

    その他の拡張と共に、IPv6 アドレスと AF_INET6 ソケットに 対応するようになりました。

  • NEXT has been upgraded from version 0.65 to 0.67.

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

  • Opcode has been upgraded from version 1.34 to 1.39.

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

  • open has been upgraded from version 1.10 to 1.11.

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

  • OS2::Process has been upgraded from version 1.11 to 1.12.

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

    It now uses 3-arg open() instead of 2-arg open(). [perl #130122]

    2 引数 open() ではなく 3 引数 open() を使うようになりました。 [perl #130122]

  • overload has been upgraded from version 1.26 to 1.28.

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

    Its compilation speed has been improved slightly.

    コンパイル速度が少し向上しました。

  • parent has been upgraded from version 0.234 to 0.236.

    parent はバージョン 0.234 から 0.236 に更新されました。

  • perl5db.pl has been upgraded from version 1.50 to 1.51.

    perl5db.pl はバージョン 1.50 から 1.51 に更新されました。

    It now ignores /dev/tty on non-Unix systems. [perl #113960]

    非 Unix システムでは /dev/tty を無視するようになりました。 [perl #113960]

  • Perl::OSType has been upgraded from version 1.009 to 1.010.

    Perl::OSType はバージョン 1.009 から 1.010 に更新されました。

  • perlfaq has been upgraded from version 5.021010 to 5.021011.

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

  • PerlIO has been upgraded from version 1.09 to 1.10.

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

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

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

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

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

  • Pod::Checker has been upgraded from version 1.60 to 1.73.

    Pod::Checker はバージョン 1.60 から 1.73 に更新されました。

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

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

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

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

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

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

  • Pod::Simple has been upgraded from version 3.32 to 3.35.

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

  • Pod::Usage has been upgraded from version 1.68 to 1.69.

    Pod::Usage はバージョン 1.68 から 1.69 に更新されました。

  • POSIX has been upgraded from version 1.65 to 1.76.

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

    This remedies several defects in making its symbols exportable. [perl #127821]

    シンボルをエクスポート可能にするときのいくつかの不具合を修正しました。 [perl #127821]

    The POSIX::tmpnam() interface has been removed, see "POSIX::tmpnam() has been removed".

    POSIX::tmpnam() インターフェースは除去されました; "POSIX::tmpnam() has been removed" を参照してください。

    The following deprecated functions have been removed:

    以下の廃止予定関数が除去されました:

        POSIX::isalnum
        POSIX::isalpha
        POSIX::iscntrl
        POSIX::isdigit
        POSIX::isgraph
        POSIX::islower
        POSIX::isprint
        POSIX::ispunct
        POSIX::isspace
        POSIX::isupper
        POSIX::isxdigit
        POSIX::tolower
        POSIX::toupper

    Trying to import POSIX subs that have no real implementations (like POSIX::atend()) now fails at import time, instead of waiting until runtime.

    (POSIX::atend() のように)実際の実装がない POSIX 関数を インポートしようとすると、実行時まで待つのではなく、インポート時に 失敗するようになりました。

  • re has been upgraded from version 0.32 to 0.34

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

    This adds support for the new /xx regular expression pattern modifier, and a change to the use re 'strict' experimental feature. When re 'strict' is enabled, a warning now will be generated for all unescaped uses of the two characters "}" and "]" in regular expression patterns (outside bracketed character classes) that are taken literally. This brings them more in line with the ")" character which is always a metacharacter unless escaped. Being a metacharacter only sometimes, depending on an action at a distance, can lead to silently having the pattern mean something quite different than was intended, which the re 'strict' mode is intended to minimize.

    これは新しい /xx 正規表現パターン修飾子 対応を追加し、use re 'strict' 実験的機能に 変更します。 re 'strict' が有効のとき、正規表現中のリテラルに取られる (大かっこ文字クラスの外側の) 二つの文字 "}""]" をエスケープせずに 使うと全て警告が出力されます。 これにより、エスケープしない限り常にメタ文字として扱われる ")" 文字と さらに一致します。 遠い位置の行動に依存して時々メタ文字になるというのは、パターンが暗黙の内に 想定とかなり違う何かになる可能性があります; re 'strict' モードはこれを最小化することを意図しています。

  • Safe has been upgraded from version 2.39 to 2.40.

    Safe はバージョン 2.39 から 2.40 に更新されました。

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

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

  • Storable has been upgraded from version 2.56 to 2.62.

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

    [perl #130098] を 修正しました。

  • Symbol has been upgraded from version 1.07 to 1.08.

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

  • Sys::Syslog has been upgraded from version 0.33 to 0.35.

    Sys::Syslog はバージョン 0.33 から 0.35 に更新されました。

  • Term::ANSIColor has been upgraded from version 4.04 to 4.06.

    Term::ANSIColor はバージョン 4.04 から 4.06 に更新されました。

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

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

    It now uses 3-arg open() instead of 2-arg open(). [perl #130122]

    2 引数 open() ではなく 3 引数 open() を使うようになりました。 [perl #130122]

  • Test has been upgraded from version 1.28 to 1.30.

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

    It now uses 3-arg open() instead of 2-arg open(). [perl #130122]

    2 引数 open() ではなく 3 引数 open() を使うようになりました。 [perl #130122]

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

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

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

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

  • Thread::Queue has been upgraded from version 3.09 to 3.12.

    Thread::Queue はバージョン 3.09 から 3.12 に更新されました。

  • Thread::Semaphore has been upgraded from 2.12 to 2.13.

    Thread::Semaphore はバージョン 2.12 から 2.13 に更新されました。

    Added the down_timed method.

    down_timed メソッドを追加しました。

  • threads has been upgraded from version 2.07 to 2.15.

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

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

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

  • Tie::Hash::NamedCapture has been upgraded from version 0.09 to 0.10.

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

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

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

    It now builds on systems with C++11 compilers (such as G++ 6 and Clang++ 3.9).

    (G++ 6 や Clang++ 3.9 のような) C++11 コンパイラのシステムで ビルドできるようになりました。

    Now uses clockid_t.

    clockid_t を使うようになりました。

  • Time::Local has been upgraded from version 1.2300 to 1.25.

    Time::Local はバージョン 1.2300 から 1.25 に更新されました。

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

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

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

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

    It now uses 3-arg open() instead of 2-arg open(). [perl #130122]

    2 引数 open() ではなく 3 引数 open() を使うようになりました。 [perl #130122]

  • version has been upgraded from version 0.9916 to 0.9917.

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

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

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

    It now uses 3-arg open() instead of 2-arg open(). [perl #130122]

    2 引数 open() ではなく 3 引数 open() を使うようになりました。 [perl #130122]

  • warnings has been upgraded from version 1.36 to 1.37.

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

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

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

  • XSLoader has been upgraded from version 0.21 to 0.27.

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

    Fixed a security hole in which binary files could be loaded from a path outside of @INC.

    バイナリファイルが @INC の外側のパスから読み込まれる 可能性があるセキュリティホールが修正されました。

    It now uses 3-arg open() instead of 2-arg open(). [perl #130122]

    2 引数 open() ではなく 3 引数 open() を使うようになりました。 [perl #130122]

文書

新しい文書

perldeprecation

This file documents all upcoming deprecations, and some of the deprecations which already have been removed. The purpose of this documentation is two-fold: document what will disappear, and by which version, and serve as a guide for people dealing with code which has features that no longer work after an upgrade of their perl.

このファイルは全ての将来の廃止予定、および既に除去された廃止予定の一部を 文書化しています。 この文書の目的は二つです: 何がどのバージョンから除去されたのかを文書化することと、perl の アップグレード後に動作しなくなる機能があるコードを扱う人々へのガイドを 提供することです。

既存の文書の変更

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 [email protected].

私たちはこの文書にリストされた修正を反映するように文書を 更新しようとしています。 もし見逃しているものに気付いたなら、 [email protected] にメールを送ってください。

Additionally, all references to Usenet have been removed, and the following selected changes have been made:

さらに、全ての Usenet への参照は取り除かれ、また以下に抜粋した変更が 行われました:

perlfunc

  • Removed obsolete text about defined() on aggregates that should have been deleted earlier, when the feature was removed.

    集合に対する defined() に関する古い文章が 除去されました; これは機能が除去された時点でもっと早く削除されるべきでした。

  • Corrected documentation of eval(), and evalbytes().

    eval()evalbytes() の 文書が修正されました。

  • Clarified documentation of seek(), tell() and sysseek() emphasizing that positions are in bytes and not characters. [perl #128607]

    位置はバイト単位であって文字単位ではないことを強調するために、 seek(), tell(), sysseek() の文書を明確化しました。 [perl #128607]

  • Clarified documentation of sort() concerning the variables $a and $b.

    変数 $a$b に関する sort() の文書が 明確化されました。

  • In split() noted that certain pattern modifiers are legal, and added a caution about its use in Perls before v5.11.

    split() で、一部のパターン修飾子は正当であることが 記され、これを v5.11 以前の Perl で使うことに関する注意が追加されました。

  • Removed obsolete documentation of study(), noting that it is now a no-op.

    study() の古い文書が除去され、今は何もしないことが 記されました。

  • Noted that vec() doesn't work well when the string contains characters whose code points are above 255.

    符号位置が 255 を越える文字が含まれている文字列に対しては vec() がうまく動作しないことが記されました。

perlguts

perlhack

  • Clarify what editor tab stop rules to use, and note that we are migrating away from using tabs, replacing them with sequences of SPACE characters.

    どのエディタタブストップ規則を使うかを明確化し、タブを使わずに SPACE 文字の 並びに置き換えようとしていることを記しました。

perlhacktips

  • Give another reason to use cBOOL to cast an expression to boolean.

    式をブール値にキャストするために cBOOL を使うもう一つの理由を 提供しました。

  • Note that the macros TRUE and FALSE are available to express boolean values.

    TRUEFALSE はブール値を表現するのに利用可能であることを 記述しました。

perlinterp

  • perlinterp has been expanded to give a more detailed example of how to hunt around in the parser for how a given operator is handled.

    perlinterp は、演算子がどのように扱われるかについてパーサを追う方法に関する より詳細な例を追加することで拡張されました。

perllocale

  • Some locales aren't compatible with Perl. Note that these can cause core dumps.

    一部のロケールは Perl と互換性がありません。 これらはコアダンプを引き起こすことを記述しました。

perlmod

  • Various clarifications have been added.

    様々な明確化が追加されました。

perlmodlib

  • Updated the site mirror list.

    サイトミラーの一覧を更新しました。

perlobj

  • Added a section on calling methods using their fully qualified names.

    完全修飾名を使ったメソッド呼び出しの章を追加しました。

  • Do not discourage manual @ISA.

    手動の @ISA は非推奨ではありません。

perlootut

  • Mention Moo more.

    Moo についてさらに言及しました。

perlop

  • Note that white space must be used for quoting operators if the delimiter is a word character (i.e., matches \w).

    区切り文字が単語文字 (つまり\w にマッチングする文字) の場合、 クォート演算子として空白を使わなければならないことを記述しました。

  • Clarify that in regular expression patterns delimited by single quotes, no variable interpolation is done.

    シングルクォートで区切られた正規表現パターンでは変数展開が行われないことを 明確化しました。

perlre

  • The first part was extensively rewritten to incorporate various basic points, that in earlier versions were mentioned in sort of an appendix on Version 8 regular expressions.

    最初の部分は様々な基本的な点が組み入れられるように広範囲に書き直されました; 以前のバージョンでは、第 8 版正規表現の付録で言及されていたようなものです。

  • Note that it is common to have the /x modifier and forget that this means that "#" has to be escaped.

    /x 修飾子を使って、これは "#" をエスケープする必要があることを 忘れることがよくあることを記しました。

perlretut

  • Add introductory material.

    導入的な内容が追加されました。

  • Note that a metacharacter occurring in a context where it can't mean that, silently loses its meta-ness and matches literally. use re 'strict' can catch some of these.

    その意味を持てないコンテキストにメタ文字があると、暗黙にメタの意味が 失われリテラルにマッチングすることを記しました。 use re 'strict' はこの一部を捕らえます。

perlunicode

  • Corrected the text about Unicode BYTE ORDER MARK handling.

    Unicode のバイト順マークの扱いに関する文章が修正されました。

  • Updated the text to correspond with changes in Unicode UTS#18, concerning regular expressions, and Perl compatibility with what it says.

    Unicode UTS#18 の変更に対応した文章、正規表現の考慮、書いてあることの Perl との互換性について更新されました。

perlvar

  • Document @ISA. It was documented in other places, but not in perlvar.

    @ISA が文書化されました。 これは他の場所はに文書化されていましたが、perlvar にはありませんでした。

診断メッセージ

新しい診断メッセージ

新しいエラー

新しい警告

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

ツールの変更

c2ph and pstruct

  • These old utilities have long since superceded by h2xs, and are now gone from the distribution.

    これらの古いツールは h2xs に置き換えられて長い時間が経っています; そして 今回配布から取り除かれました。

Porting/pod_lib.pl

  • Removed spurious executable bit.

    誤った実行ビットが除去されました。

  • Account for the possibility of DOS file endings.

    DOS ファイル終端の可能性を考慮するようになりました。

Porting/sync-with-cpan

  • Many improvements.

    多くの改良が行われました。

perf/benchmarks

  • Tidy file, rename some symbols.

    ファイルが整理され、一部のシンボルの名前が変わりました。

Porting/checkAUTHORS.pl

  • Replace obscure character range with \w.

    不明瞭な文字範囲が \w で置き換えられました。

t/porting/regen.t

  • Try to be more helpful when tests fail.

    テストに失敗したときにより助けになろうとするようになりました。

utils/h2xs.PL

  • Avoid infinite loop for enums.

    enum の無限ループが回避されました。

perlbug

  • Long lines in the message body are now wrapped at 900 characters, to stay well within the 1000-character limit imposed by SMTP mail transfer agents. This is particularly likely to be important for the list of arguments to Configure, which can readily exceed the limit if, for example, it names several non-default installation paths. This change also adds the first unit tests for perlbug. [perl #128020]

    メッセージ本体の長い行は 900 文字でラップされるようになりました; SMTP メール転送エージェントに課されている 1000 文字制限に余裕を持って 納めるためです。 これは特に、Configure への引数のリストで重要です; 例えば、複数の非デフォルトインストールパスを指定するとすぐに制限を 超えることがあるからです。 この変更により perlbug への最初の単体テストが追加されました。 [perl #128020]

設定とコンパイル

  • -Ddefault_inc_excludes_dot has added, and enabled by default.

    -Ddefault_inc_excludes_dot が追加され、デフォルトで有効になりました。

  • The dtrace build process has further changes [perl #130108]:

    dtrace ビルドプロセスはさらに変更されました: [perl #130108]:

    • If the -xnolibs is available, use that so a dtrace perl can be built within a FreeBSD jail.

      -xnolibs が有効なら、これを使うので、dtrace perl は FreeBSD jail の中でビルド出来るようになります。

    • On systems that build a dtrace object file (FreeBSD, Solaris, and SystemTap's dtrace emulation), copy the input objects to a separate directory and process them there, and use those objects in the link, since dtrace -G also modifies these objects.

      dtrace オブジェクトファイルをビルドするシステム (FreeBSD, Solaris, SystemTap の dtrace エミュレーション) では、 入力オブジェクトを別のディレクトリにコピーしてそこで処理し、 リンク時にそのオブジェクトを使うようになりました; なぜなら dtrace -G もこれらのオブジェクトを変更するからです。

    • Add libelf to the build on FreeBSD 10.x, since dtrace adds references to libelf symbols.

      FreeBSD 10.x でビルドするために libelf を追加します; dtracelibelf シンボルへの参照を追加するからです。

    • Generate a dummy dtrace_main.o if dtrace -G fails to build it. A default build on Solaris generates probes from the unused inline functions, while they don't on FreeBSD, which causes dtrace -G to fail.

      dtrace -G がビルドに失敗すると、ダミーの dtrace_main.o を生成します。 Solaris のデフォルトビルドは未使用のインライン関数からのプローブを 生成する一方、FreeBSD では生成しないので dtrace -G が失敗します。

  • You can now disable perl's use of the PERL_HASH_SEED and PERL_PERTURB_KEYS environment variables by configuring perl with -Accflags=NO_PERL_HASH_ENV.

    perl を -Accflags=NO_PERL_HASH_ENV と設定することで、 perl が PERL_HASH_SEEDPERL_PERTURB_KEYS 環境変数を使うのを 無効化できるようになりました。

  • You can now disable perl's use of the PERL_HASH_SEED_DEBUG environment variable by configuring perl with -Accflags=-DNO_PERL_HASH_SEED_DEBUG.

    perl を -Accflags=-DNO_PERL_HASH_SEED_DEBUG と設定することで、 perl が PERL_HASH_SEED_DEBUG 環境変数を使うのを 無効化できるようになりました。

  • Configure now zeroes out the alignment bytes when calculating the bytes for 80-bit NaN and Inf to make builds more reproducible. [perl #130133]

    Configure は、より再現可能なビルドを行うために、 80 ビット NaNInf のバイトを計算するときにアライメントバイトを ゼロにするようになりました。 [perl #130133]

  • Since v5.18, for testing purposes we have included support for building perl with a variety of non-standard, and non-recommended hash functions. Since we do not recommend the use of these functions, we have removed them and their corresponding build options. Specifically this includes the following build options:

    v5.18 から、テストのために私たちは様々な非標準で非推奨なハッシュ関数を 使った perl のビルド対応を含んでいました。 私たちはこれらの関数の使用を勧めていないので、これらと対応する ビルドオプションを除去しました。 特に、これには以下のビルドオプションを含みます:

        PERL_HASH_FUNC_SDBM
        PERL_HASH_FUNC_DJB2
        PERL_HASH_FUNC_SUPERFAST
        PERL_HASH_FUNC_MURMUR3
        PERL_HASH_FUNC_ONE_AT_A_TIME
        PERL_HASH_FUNC_ONE_AT_A_TIME_OLD
        PERL_HASH_FUNC_MURMUR_HASH_64A
        PERL_HASH_FUNC_MURMUR_HASH_64B
  • Remove "Warning: perl appears in your path"

    "Warning: perl appears in your path" の除去

    This install warning is more or less obsolete, since most platforms already will have a /usr/bin/perl or similar provided by the OS.

    このインストール警告は多かれ少なかれ古いものです; ほとんどのプラットフォームでは既に OS によって提供されている /usr/bin/perl のようなものが ある からです。

  • Reduce verbosity of make install.man

    make install.man の詳細度の減少

    Previously, two progress messages were emitted for each manpage: one by installman itself, and one by the function in install_lib.pl that it calls to actually install the file. Disabling the second of those in each case saves over 750 lines of unhelpful output.

    以前は、二つの進捗メッセージがそれぞれの man ページに出力されていました; 一つは installman 自身、もう一つは実際にファイルをインストールするために 呼び出される install_lib.pl の関数によるものです。 それぞれの場合で二つ目を無効にすることで助けにならない 750 行以上の 出力が省略されました。

  • Cleanup for clang -Weverything support. [perl #129961]

    clang -Weverything 対応のための整理。 [perl #129961]

  • Configure: signbit scan was assuming too much, stop assuming negative 0.

    Configure: 符号ミットのスキャンは多くを仮定しすぎていました; 負の 0 を仮定するのを止めました。

  • Various compiler warnings have been silenced.

    様々なコンパイラ警告が黙らされました。

  • Several smaller changes have been made to remove impediments to compiling under C++11.

    C+11 でコンパイルするための障害を除去するためのいくつかの小さな変更が 行われました。

  • Builds using USE_PAD_RESET now work again; this configuration had bit-rotted.

    USE_PAD_RESET を使ったビルドは再び動作するようになりました; この設定は少しおかしくなっていました。

  • A probe for gai_strerror was added to Configure that checks if the gai_strerror() routine is available and can be used to translate error codes returned by getaddrinfo() into human readable strings.

    gai_strerror() ルーチンが利用可能で、getaddrinfo() から返された エラーコードから人間可読な文字列への変換に使えるかどうかをチェックする gai_strerror プローブが Configure に追加されました。

  • Configure now aborts if both -Duselongdouble and -Dusequadmath are requested. [perl #126203]

    Configure は、-Duselongdouble-Dusequadmath の両方が 要求された場合は中断するようになりました。 [perl #126203]

  • Fixed a bug in which Configure could append -quadmath to the archname even if it was already present. [perl #128538]

    Configure が、既に存在していても archname に -quadmath を 追加することがあるバグが修正されました。 [perl #128538]

  • Clang builds with -DPERL_GLOBAL_STRUCT or -DPERL_GLOBAL_STRUCT_PRIVATE have been fixed (by disabling Thread Safety Analysis for these configurations).

    -DPERL_GLOBAL_STRUCT-DPERL_GLOBAL_STRUCT_PRIVATE での Clang のビルドが (これらの設定での Thread Safety Analysis を 無効にすることで) 修正されました。

  • make_ext.pl no longer updates a module's pm_to_blib file when no files require updates. This could cause dependencies, perlmain.c in particular, to be rebuilt unnecessarily. [perl #126710]

    make_ext.pl は、必要なファイルが更新されていない場合は、 モジュールの pm_to_blib ファイルを更新しなくなりました。 これにより、依存ファイル、特に perlmain.c が不必要に 再ビルドされることがありました。 [perl #126710]

  • The output of perl -V has been reformatted so that each configuration and compile-time option is now listed one per line, to improve readability.

    perl -V の出力が再構成され、可読性の向上のために、各設定 とコンパイル時オプションが 1 行に一つずつ出力されるようになりました。

  • Configure now builds miniperl and generate_uudmap if you invoke it with -Dusecrosscompiler but not -Dtargethost=somehost. This means you can supply your target platform config.sh, generate the headers and proceed to build your cross-target perl. [perl #127234]

    Configure-Dusecrosscompiler ありかつ -Dtargethost=somehost なしで起動された場合、 miniperlgenerate_uudmap をビルドするようになりました。 これにより、config.sh にターゲットプラットフォームを指定して、 ヘッダを生成し、クロスターゲット perl のビルドを進められるようになりました。 [perl #127234]

  • Perl built with -Accflags=-DPERL_TRACE_OPS now only dumps the operator counts when the environment variable PERL_TRACE_OPS is set to a non-zero integer. This allows make test to pass on such a build.

    -Accflags=-DPERL_TRACE_OPS 付きでビルドされた Perl は PERL_TRACE_OPS 環境変数が非 0 整数に設定された場合に演算子カウントのみを ダンプするようになりました。 これにより、このようなビルドで make test がパスするようになりました。

  • When building with GCC 6 and link-time optimization (the -flto option to gcc), Configure was treating all probed symbols as present on the system, regardless of whether they actually exist. This has been fixed. [perl #128131]

    GCC 6 とリンク時最適化 (gcc-flto オプション) でビルドされたとき、 Configure はプローブされたシンボルに関して、実際に存在するかどうかに 関わらず全て存在するものとして扱っていました。 これは修正されました。 [perl #128131]

  • The t/test.pl library is used for internal testing of Perl itself, and also copied by several CPAN modules. Some of those modules must work on older versions of Perl, so t/test.pl must in turn avoid newer Perl features. Compatibility with Perl 5.8 was inadvertently removed some time ago; it has now been restored. [perl #128052]

    t/test.pl ライブラリは Perl 自身の内部テストで使われていて、 いくつかの CPAN モジュールによってコピーされています。 これらのモジュールの一部は古いバージョンの Perl で動作しなければならないので、 t/test.pl は新しい Perl の機能を避けなければなりません。 少し前に不注意で Perl 5.8 との互換性がなくなっていました; これは回復されました。 [perl #128052]

  • The build process no longer emits an extra blank line before building each "simple" extension (those with only *.pm and *.pod files).

    ビルドプロセスはもはやそれぞれの「単純な」(*.pm*.pod ファイルのみの) エクステンションのビルドの前に余分な空行を出力しなくなりました。

テスト

Tests were added and changed to reflect the other additions and changes in this release. Furthermore, these substantive changes were made:

テストはこのリリースでのその他の追加や変更を反映して追加や変更されました。 さらに、以下の実質的な変更が行われました:

  • A new test script, comp/parser_run.t, has been added that is like comp/parser.t but with test.pl included so that runperl() and the like are available for use.

    comp/parser.t と同様ですが test.pl を含んでいるので runperl() と同様なものが使える、 新しいテストスクリプトである comp/parser_run.t が追加されました。

  • Tests for locales were erroneously using locales incompatible with Perl.

    ロケールのテストは誤って Perl と互換性のないロケールを使っていました。

  • Some parts of the test suite that try to exhaustively test edge cases in the regex implementation have been restricted to running for a maximum of five minutes. On slow systems they could otherwise take several hours, without significantly improving our understanding of the correctness of the code under test.

    正規表現の実装に関するエッジケースを徹底的に試すような、テストスイートの 一部のパートは、最大実行時間を 5 分間に制限するようになりました。 さもなければ、テストでのコードの正当性に対する私たちの理解を大幅に 向上させない限り、遅いシステムでは数時間かかることがあります。

  • A new internal facility allows analysing the time taken by the individual tests in Perl's own test suite; see Porting/harness-timer-report.pl.

    新しい内部機能により、Perl 自身のテストスイートの個々のテストで 掛かった時間を解析できるようになりました; Porting/harness-timer-report.pl を参照してください。

  • t/re/regexp_nonull.t has been added to test that the regular expression engine can handle scalars that do not have a null byte just past the end of the string.

    正規表現エンジンが文字列の末尾にヌルバイトがないスカラを扱えることを テストするための t/re/regexp_nonull.t が追加されました。

  • A new test script, t/op/decl-refs.t, has been added to test the new feature "Declaring a reference to a variable".

    新しいテストスクリプト t/op/decl-refs.t が、新しい機能 "Declaring a reference to a variable" をテストするために追加されました。

  • A new test script, t/re/keep_tabs.t has been added to contain tests where \t characters should not be expanded into spaces.

    新しいテストスクリプト t/re/keep_tabs.t が、 \t 文字が空白に展開されるべきではないテストのために追加されました。

  • A new test script, t/re/anyof.t, has been added to test that the ANYOF nodes generated by bracketed character classes are as expected.

    新しいテストスクリプト t/re/anyof.t が、大かっこ文字列で生成された ANYOF ノードが想定通りかをテストするために追加されました。

  • There is now more extensive testing of the Unicode-related API macros and functions.

    Unicode 関連の API マクロと関数に関してより広範囲に テストするようになりました。

  • Several of the longer running API test files have been split into multiple test files so that they can be run in parallel.

    長時間実行される API テストファイルのいくつかが複数のテストファイルに 分割され、平行して実行できるようになりました。

  • t/harness now tries really hard not to run tests which are located outside of the Perl source tree. [perl #124050]

    t/harness は Perl ソースツリー外にあるテストをできるだけ 実行しないようになりました。 [perl #124050]

  • Prevent debugger tests (lib/perl5db.t) from failing due to the contents of $ENV{PERLDB_OPTS}. [perl #130445]

    デバッガテスト (lib/perl5db.t) が $ENV{PERLDB_OPTS} の内容によって 失敗しないようになりました。 [perl #130445]

プラットフォーム対応

新しいプラットフォーム

NetBSD/VAX

Perl now compiles under NetBSD on VAX machines. However, it's not possible for that platform to implement floating-point infinities and NaNs compatible with most modern systems, which implement the IEEE-754 floating point standard. The hexadecimal floating point (0x...p[+-]n literals, printf %a) is not implemented, either. The make test passes 98% of tests.

Perl は VAX マシン上の NetBSD でコンパイルできるようになりました。 しかし、このプラットフォームのために、 IEEE-754 浮動小数点数標準を実装しているほとんどのモダンなシステムと 互換性のある浮動小数点数の無限と NaN を実装することはできません。 16 進浮動小数点数 (0x...p[+-]n リテラルと printf %a) も 実装されていません。 make test は、テストの 98% にパスします。

  • Test fixes and minor updates.

    テストの修正と小さい更新。

  • Account for lack of inf, nan, and -0.0 support.

    inf, nan, -0.0 がない場合の対応。

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

Darwin
  • Don't treat -Dprefix=/usr as special: instead require an extra option -Ddarwin_distribution to produce the same results.

    -Dprefix=/usr を特別扱いしません: 代わりに、同じ結果を生成するために 追加の -Ddarwin_distribution オプションが必要です。

  • OS X El Capitan doesn't implement the clock_gettime() or clock_getres() APIs; emulate them as necessary.

    OS X El Capitan は clock_gettime()clock_getres() API を 実装していません; 必要な場合これらをエミュレートします。

  • Deprecated syscall(2) on macOS 10.12.

    macOS 10.12 では syscall(2) は廃止予定です。

EBCDIC

Several tests have been updated to work (or be skipped) on EBCDIC platforms.

いくつかのテストは EBCDIC プラットフォームで動作(またはスキップ)するように 更新されました。

HP-UX

The Net::Ping UDP test is now skipped on HP-UX.

Net::Ping UDP テストは HP-UX ではスキップするようになりました。

Hurd

The hints for Hurd have been improved, enabling malloc wrap and reporting the GNU libc used (previously it was an empty string when reported).

Hurd のためのヒントが改良され、malloc ラップが有効になり、GNU libc が 使われているように報告します (以前は報告されるときは空文字列でした)。

VAX

VAX floating point formats are now supported on NetBSD.

VAX 浮動小数点形式は NetBSD で対応されるようになりました。

VMS
  • The path separator for the PERL5LIB and PERLLIB environment entries is now a colon (":") when running under a Unix shell. There is no change when running under DCL (it's still "|").

    PERL5LIBPERLLIB 環境変数のパス区切りは、Unix シェルの基で 実行されているときはコロン (":") になりました。 DCL の基で実行されているときは変更はありません ("|" のままです)。

  • configure.com now recognizes the VSI-branded C compiler and no longer recognizes the "DEC"-branded C compiler (as there hasn't been such a thing for 15 or more years).

    configure.com は VSI ブランドの C コンパイラを認識するようになり、 (もう 15 年以上もそのようなものはないので) もはや "DEC" ブランドの C コンパイラを認識しなくなりました。

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

    (Visual C++ 14.0 を含む) Microsoft Visual Studio 2015 を使った Windows 版 perl のビルド対応が追加されました。

    This version of VC++ includes a completely rewritten C run-time library, some of the changes in which mean that work done to resolve a socket close() bug in perl #120091 and perl #118059 is not workable in its current state with this version of VC++. Therefore, we have effectively reverted that bug fix for VS2015 onwards on the basis that being able to build with VS2015 onwards is more important than keeping the bug fix. We may revisit this in the future to attempt to fix the bug again in a way that is compatible with VS2015.

    このバージョンの VC++ は完全に書き直された C ランタイムを含んでおり、 perl #120091 and perl #118059 のソケット close() バグの解決のために 行われた変更が現在のバージョンの VC++ の現在の状況では動作しないことを 意味します。 従って、VS2015 以降でビルドできることが、このバグ修正を維持することよりも 重要であるという判断に基づいて、私たちは VS2015 以降ではこのバグ修正を 取り消しました。 私たちは VS2015 との互換性という点でこのバグを再び修正しようとするために 将来ここに戻ってくる予定です。

    These changes do not affect compilation with GCC or with Visual Studio versions up to and including VS2013, i.e., the bug fix is retained (unchanged) for those compilers.

    この変更は、GCC や VS2013 以前のバージョンの Visual Studio には影響しません; つまり, これらのコンパイラではバグ修正は(無変更で)残っています。

    Note that you may experience compatibility problems if you mix a perl built with GCC or VS <= VS2013 with XS modules built with VS2015, or if you mix a perl built with VS2015 with XS modules built with GCC or VS <= VS2013. Some incompatibility may arise because of the bug fix that has been reverted for VS2015 builds of perl, but there may well be incompatibility anyway because of the rewritten CRT in VS2015 (e.g., see discussion at http://stackoverflow.com/questions/30412951).

    GCC や VS <= VS2013 でビルドした perl と VS2015 でビルドした XS モジュールを混ぜたり、VS2015 でビルドした perl と GCC や VS <= VS2013 でビルドしたXS モジュールを混ぜたりすると、互換性問題を 経験するかもしれないことに注意してください。 非互換性の一部は perl の VS2015 ビルドのためのバグ修正の取消しのために 起こりますが、同様にそもそも VS2015 での CRT の書き直しによる 非互換性もあります (例えば, http://stackoverflow.com/questions/30412951 での議論を参照してください)。

  • It now automatically detects GCC versus Visual C and sets the VC version number on Win32.

    Visual C に対する GCC を自動的に検出して、Win32 での VC バージョンを 設定するようになりました。

Linux

Drop support for Linux a.out executable format. Linux has used ELF for over twenty years.

Linux a.out 実行ファイル型式対応が削除されました。 Linux は 20 年以上 ELF を使っています。

OpenBSD 6

OpenBSD 6 still does not support returning pid, gid, or uid with SA_SIGINFO. Make sure to account for it.

OpenBSD 6 はまだ SA_SIGINFOpid, gid, uid を返すことに 対応していません。 これを考慮するようになりました。

FreeBSD

t/uni/overload.t: Skip hanging test on FreeBSD.

t/uni/overload.t: FreeBSD でのハングテストをスキップします。

DragonFly BSD

DragonFly BSD now has support for setproctitle(). [perl #130068].

DragonFly BSD は setproctitle() に対応するようになりました。 [perl #130068].

内部の変更

  • A new API function sv_setpv_bufsize() allows simultaneously setting the length and the allocated size of the buffer in an SV, growing the buffer if necessary.

    新しい API 関数 sv_setpv_bufsize()SV のバッファの長さと割り当てサイズを同時に設定できます; 必要ならバッファを拡張します。

  • A new API macro SvPVCLEAR() sets its SV argument to an empty string, like Perl-space $x = '', but with several optimisations.

    新しい API マクロ SvPVCLEAR() は、 Perl 空間での $x = '' のように、その SV 引数に空文字列を代入しますが、 いくつかの最適化が行われます。

  • Several new macros and functions for dealing with Unicode and UTF-8-encoded strings have been added to the API, as well as some changes in the functionality of existing functions (see "Unicode Support" in perlapi for more details):

    Unicode と UTF-8 エンコードされた文字列を扱ういくつかの新しいマクロと 関数が API に追加され、 既存の関数の機能が一部変更されました (さらなる詳細については "Unicode Support" in perlapi を参照してください):

    • New versions of the API macros like isALPHA_utf8 and toLOWER_utf8 have been added, each with the suffix _safe, like isSPACE_utf8_safe. These take an extra parameter, giving an upper limit of how far into the string it is safe to read. Using the old versions could cause attempts to read beyond the end of the input buffer if the UTF-8 is not well-formed, and their use now raises a deprecation warning. Details are at "Character classification" in perlapi.

      isALPHA_utf8toLOWER_utf8 ような API マクロに新しいバージョンが 追加されました; isSPACE_utf8_safe のように、 それぞれの末尾に _safe が追加されたものです。 これらは追加の引数を取り、文字列を安全に読み込める最大数を指定します。 古いバージョンを使うと、UTF-8 が整形されていない場合に 入力バッファの末尾を越えて読み込もうとする場合があるので、 これらの使用は廃止予定警告が出力されるようになりました。 詳細は "Character classification" in perlapi にあります。

    • Macros like isALPHA_utf8 and toLOWER_utf8 now die if they detect that their input UTF-8 is malformed. A deprecation warning had been issued since Perl 5.18.

      isALPHA_utf8toLOWER_utf8 のようなマクロは、入力 UTF-8 が 不正であることを検出したときに die するようになりました。 廃止予定警告は Perl 5.18 から出力されていました。

    • Several new macros for analysing the validity of utf8 sequences. These are:

      utf8 並びの有効性を解析するためのいくつかの新しいマクロ。その一覧は:

      UTF8_GOT_ABOVE_31_BIT UTF8_GOT_CONTINUATION UTF8_GOT_EMPTY UTF8_GOT_LONG UTF8_GOT_NONCHAR UTF8_GOT_NON_CONTINUATION UTF8_GOT_OVERFLOW UTF8_GOT_SHORT UTF8_GOT_SUPER UTF8_GOT_SURROGATE UTF8_IS_INVARIANT UTF8_IS_NONCHAR UTF8_IS_SUPER UTF8_IS_SURROGATE UVCHR_IS_INVARIANT isUTF8_CHAR_flags isSTRICT_UTF8_CHAR isC9_STRICT_UTF8_CHAR

    • Functions that are all extensions of the is_utf8_string_*() functions, that apply various restrictions to the UTF-8 recognized as valid:

      全て is_utf8_string_*() の拡張である関数; UTF-8 が正当であると認識するために様々な制限が適用されます:

      is_strict_utf8_string, is_strict_utf8_string_loc, is_strict_utf8_string_loclen,

      is_c9strict_utf8_string, is_c9strict_utf8_string_loc, is_c9strict_utf8_string_loclen,

      is_utf8_string_flags, is_utf8_string_loc_flags, is_utf8_string_loclen_flags,

      is_utf8_fixed_width_buf_flags, is_utf8_fixed_width_buf_loc_flags, is_utf8_fixed_width_buf_loclen_flags.

      is_utf8_invariant_string. is_utf8_valid_partial_char. is_utf8_valid_partial_char_flags.

    • The functions utf8n_to_uvchr and its derivatives have had several changes of behaviour.

      utf8n_to_uvchr とその派生関数は振る舞いが いくつか変更されました。

      Calling them, while passing a string length of 0 is now asserted against in DEBUGGING builds, and otherwise, returns the Unicode REPLACEMENT CHARACTER. If you have nothing to decode, you shouldn't call the decode function.

      長さ 0 の文字列を渡してこれらを呼び出すと、DEBUGGING ビルドのときには アサートされる一方、そうでない場合は Unicode REPLACEMENT CHARACTER が返ります。 デコードするものが何もない場合は、デコード関数を呼び出すべきではありません。

      They now return the Unicode REPLACEMENT CHARACTER if called with UTF-8 that has the overlong malformation and that malformation is allowed by the input parameters. This malformation is where the UTF-8 looks valid syntactically, but there is a shorter sequence that yields the same code point. This has been forbidden since Unicode version 3.1.

      長すぎる不正の UTF-8 で呼び出され、不正が入力引数として認められている場合、 Unicode REPLACEMENT CHARACTER を返すようになりました。 この不正は、UTF-8 が文法的には正当に見えるけれども、同じ符号位置になる より短い並びがある場合です。 これは Unicode バージョン 3.1 から禁止されました。

      They now accept an input flag to allow the overflow malformation. This malformation is when the UTF-8 may be syntactically valid, but the code point it represents is not capable of being represented in the word length on the platform. What "allowed" means, in this case, is that the function doesn't return an error, and it advances the parse pointer to beyond the UTF-8 in question, but it returns the Unicode REPLACEMENT CHARACTER as the value of the code point (since the real value is not representable).

      これらはオーバーフロー不正を許すという入力フラグを 受け付けるようになりました。 この不正は、UTF-8 が文法的は正当であるけれども、表現している符号位置が プラットフォームのワード長で表現できない場合です。 この場合の「許す」とは、関数はエラーを返さず、問題の UTF-8 の先まで パースのポインタを進めるけれども、その符号位置の値として (実際の値は表現できないので) Unicode REPLACEMENT CHARACTER を 返すということです。

      They no longer abandon searching for other malformations when the first one is encountered. A call to one of these functions thus can generate multiple diagnostics, instead of just one.

      これらはもはや、最初の不正入力に出会った後、他の不正入力を探すのを 中断しなくなりました。 従って、これらの関数の一つを呼び出すと、一つではなく複数の診断メッセージが 生成されることがあります。

    • valid_utf8_to_uvchr() has been added to the API (although it was present in core earlier). Like utf8_to_uvchr_buf(), but assumes that the next character is well-formed. Use with caution.

      (以前からコアには存在していましたが) valid_utf8_to_uvchr() が API に 追加されました。 utf8_to_uvchr_buf() と同様ですが、次の文字が正当であることを仮定します。 注意して使ってください。

    • A new function, utf8n_to_uvchr_error, has been added for use by modules that need to know the details of UTF-8 malformations beyond pass/fail. Previously, the only ways to know why a sequence was ill-formed was to capture and parse the generated diagnostics or to do your own analysis.

      新しい関数である utf8n_to_uvchr_error が、 UTF-8 不正に関して成功/失敗を越えた詳細を知る必要があるモジュールが 使うために追加されました。 以前は、なぜ並びが不正な型式かを知る唯一の方法は、 生成された診断メッセージを捕捉してパースするか、自力で解析することでした。

    • There is now a safer version of utf8_hop(), called utf8_hop_safe(). Unlike utf8_hop(), utf8_hop_safe() won't navigate before the beginning or after the end of the supplied buffer.

      utf8_hop_safe() という、 utf8_hop() のより安全なバージョンが追加されました。 utf8_hop() と異なり、utf8_hop_safe() は指定されたバッファの先頭より前や 末尾より後ろまで移動しません。

    • Two new functions, utf8_hop_forward() and utf8_hop_back() are similar to utf8_hop_safe() but are for when you know which direction you wish to travel.

      二つの新しい関数 utf8_hop_forward()utf8_hop_back()utf8_hop_safe() に似ていますが、移動したい方向が分かっているとき用です。

    • Two new macros which return useful utf8 byte sequences:

      有用な utf8 バイト並びを返す二つの新しいマクロ:

      BOM_UTF8

      REPLACEMENT_CHARACTER_UTF8

  • Perl is now built with the PERL_OP_PARENT compiler define enabled by default. To disable it, use the PERL_NO_OP_PARENT compiler define. This flag alters how the op_sibling field is used in OP structures, and has been available optionally since perl 5.22.

    Perl はデフォルトで PERL_OP_PARENT コンパイラ定義を有効にして ビルドされるようになりました。 これを無効にするには、PERL_NO_OP_PARENT コンパイラ定義を使ってください。 このフラグは OP 構造体の中の op_sibling フィールドの使い方を変更します; これはオプションとして perl 5.22 から利用可能でした。

    See "Internal Changes" in perl5220delta for more details of what this build option does.

    このビルドオプションが何をするかに関するさらなる詳細については "Internal Changes" in perl5220delta を参照してください。

  • Three new ops, OP_ARGELEM, OP_ARGDEFELEM, and OP_ARGCHECK have been added. These are intended principally to implement the individual elements of a subroutine signature, plus any overall checking required.

    三つの新しい op, OP_ARGELEM, OP_ARGDEFELEM, OP_ARGCHECK が 追加されました。 これらは主に、サブルーチンシグネチャの個々の要素を実装するためと、 それに加えて必要な全体的なチェックを意図しています。

  • The OP_PUSHRE op has been eliminated and the OP_SPLIT op has been changed from class LISTOP to PMOP.

    OP_PUSHRE op は削除され、OP_SPLIT op はクラスが LISTOP から PMOP に変更されました。

    Formerly the first child of a split would be a pushre, which would have the split's regex attached to it. Now the regex is attached directly to the split op, and the pushre has been eliminated.

    以前は、ある split の最初の子は pushre で、これには split の正規表現が添付されていました。 正規表現は split op に直接添付されるようになり、 pushre は削除されました。

  • The op_class() API function has been added. This is like the existing OP_CLASS() macro, but can more accurately determine what struct an op has been allocated as. For example OP_CLASS() might return OA_BASEOP_OR_UNOP indicating that ops of this type are usually allocated as an OP or UNOP; while op_class() will return OPclass_BASEOP or OPclass_UNOP as appropriate.

    op_class() API 関数が追加されました。 これは既存の OP_CLASS() マクロと同様ですが、 ある op がどの構造体として割り当てられたかをより正確に 決定できるようになりました。 例えば、OP_CLASS() は、この型の op は通常 OPUNOP として 割り当てられることを示す OA_BASEOP_OR_UNOP を返すかもしれません; 一方 op_class() は適切に OPclass_BASEOPOPclass_UNOP を返します。

  • All parts of the internals now agree that the sassign op is a BINOP; previously it was listed as a BASEOP in regen/opcodes, which meant that several parts of the internals had to be special-cased to accommodate it. This oddity's original motivation was to handle code like $x ||= 1; that is now handled in a simpler way.

    内部の全ての部分は、sassign op が BINOP であることに 合意するようになりました; 以前は regen/opcodesBASEOP として一覧されていて、これは内部の いくつかの部分では対応に特別扱いが必要であることを意味していました。 このおかしな状態の元々の動機は $x ||= 1 のようなコードを扱うことでした; 今はより簡単な方法で扱うようになりました。

  • The output format of the op_dump() function (as used by perl -Dx) has changed: it now displays an "ASCII-art" tree structure, and shows more low-level details about each op, such as its address and class.

    (perl -Dx で使われる) op_dump() 関数の 出力形式が変わりました: これは「ASCII アート」木構造を表示するようになり、 それぞれの op に対するアドレスとクラスのようなより低レベルの詳細を 表示するようになりました。

  • The PADOFFSET type has changed from being unsigned to signed, and several pad-related variables such as PL_padix have changed from being of type I32 to type PADOFFSET.

    PADOFFSET 型は符号なしから符号付きに変更され、 PL_padix のようないくつかのパッド関連の変数は I32 型から PADOFFSET 型に変更されました。

  • The DEBUGGING-mode output for regex compilation and execution has been enhanced.

    正規表現のコンパイルと実行時の DEBUGGING モードでの出力が拡張されました。

  • Several obscure SV flags have been eliminated, sometimes along with the macros which manipulate them: SVpbm_VALID, SVpbm_TAIL, SvTAIL_on, SvTAIL_off, SVrepl_EVAL, SvEVALED.

    いくつかの不明瞭な SV フラグが削除されました; 時々これらを操作するマクロも 削除されました: SVpbm_VALID, SVpbm_TAIL, SvTAIL_on, SvTAIL_off, SVrepl_EVAL, SvEVALED.

  • An OP op_private flag has been eliminated: OPpRUNTIME. This used to often get set on PMOP ops, but had become meaningless over time.

    OP op_private フラグは削除されました: OPpRUNTIME。 これはしばしば PMOP op での get set に使われていましたが、 時が経つにつれてこれは無意味になりました。

バグ修正の抜粋

  • Perl no longer panics when switching into some locales on machines with buggy strxfrm() implementations in their libc. [perl #121734]

    libcstrxfrm() 実装にバグがあるマシンで一部のロケールに 切り替えても panic しなくなりました。 [perl #121734]

  • $-{$name} would leak an AV on each access if the regular expression had no named captures. The same applies to access to any hash tied with Tie::Hash::NamedCapture and all => 1. [perl #130822]

    正規表現に名前付き捕捉がないときの $-{$name} は、アクセス毎に AV が一つリークしていました。 同じことは Tie::Hash::NamedCaptureall => 1 で tie されたハッシュにアクセスしたときにも起きていました。 [perl #130822]

  • Attempting to use the deprecated variable $# as the object in an indirect object method call could cause a heap use after free or buffer overflow. [perl #129274]

    廃止予定の変数 $# に間接オブジェクトメソッド呼び出しのオブジェクトとして 使おうとすると、解放後のヒープ使用やバッファオーバーフローが 起きることがありました。 [perl #129274]

  • When checking for an indirect object method call, in some rare cases the parser could reallocate the line buffer but then continue to use pointers to the old buffer. [perl #129190]

    間接オブジェクトメソッド呼び出しのチェック時に、一部の稀な場合で パーサが行バッファを再配置した後、古いバッファへのポインタを 使い続けることがありました。 [perl #129190]

  • Supplying a glob as the format argument to formline would cause an assertion failure. [perl #130722]

    formline のフォーマット引数としてグロブを ステイするとアサート失敗が起こることがありました。 [perl #130722]

  • Code like $value1 =~ qr/.../ ~~ $value2 would have the match converted into a qr// operator, leaving extra elements on the stack to confuse any surrounding expression. [perl #130705]

    $value1 =~ qr/.../ ~~ $value2 のようなコードは、 qr// 演算子に変換されたものにマッチングし、周りの式を混乱させる 余分な要素をスタック上に残していました。 [perl #130705]

  • Since v5.24 in some obscure cases, a regex which included code blocks from multiple sources (e.g., via embedded via qr// objects) could end up with the wrong current pad and crash or give weird results. [perl #129881]

    v5.24 からある種の不明瞭な状況で、 複数のソースからのコードブロックを含む正規表現 (例えば, qr// オブジェクト経由で組み込まれたもの) は、 カレントパッドが間違った状態に成り、クラッシュしたりおかしな結果に なったりしていました。 [perl #129881]

  • Occasionally local()s in a code block within a patterns weren't being undone when the pattern matching backtracked over the code block. [perl #126697]

    パターンの中のコードブロック中の local() は時々、 パターンマッチングがコードブロックを越えてバックトラックしたときに 元に戻っていませんでした。 [perl #126697]

  • Using substr() to modify a magic variable could access freed memory in some cases. [perl #129340]

    マジカル変数を変更するのに substr() を使うと場合によっては解放された メモリにアクセスすることがありました。 [perl #129340]

  • Under use utf8, the entire source code is now checked for being UTF-8 well formed, not just quoted strings as before. [perl #126310].

    use utf8 の基では、ソースコード全体が UTF-8 整形されているかどうかを チェックするようになりました; 以前はクォートされた文字列だけでした。 [perl #126310].

  • The range operator ".." on strings now handles its arguments correctly when in the scope of the unicode_strings feature. The previous behaviour was sufficiently unexpected that we believe no correct program could have made use of it.

    文字列の範囲演算子 ".." は、 unicode_strings 機能の スコープの中で正しく引数を扱えるようになりました。 以前の振る舞いは、これを正しく使えるプログラムはないと信じられるぐらいに 十分予測不能なものでした。

  • The split operator did not ensure enough space was allocated for its return value in scalar context. It could then write a single pointer immediately beyond the end of the memory block allocated for the stack. [perl #130262]

    split 演算子はスカラコンテキストで返り値のための十分なスペースが 割り当てられているかどうかを十分に確認していませんでした。 これによって、スタックのために割り当てられたメモリブロックの端を越えて すぐのところに一つのポインタを書くことがありました。 [perl #130262]

  • Using a large code point with the "W" pack template character with the current output position aligned at just the right point could cause a write of a single zero byte immediately beyond the end of an allocated buffer. [perl #129149]

    現在の出力位置がちょうど右側のポイントに位置しているときに "W" pack テンプレート文字で大きな符号位置を使うと、 割り当てられたバッファの末尾を越えたすぐのところに一つのゼロバイトを 書くことがありました。 [perl #129149]

  • Supplying a format's picture argument as part of the format argument list where the picture specifies modifying the argument could cause an access to the new freed compiled form.at. [perl #129125]

    picture が引数の修正を指定しているときに、format の picture 引数として format 引数リストの一部として指定すると、新しく解放されたコンパイル形式に アクセスすることがありました。 [perl #129125]

  • The sort() operator's built-in numeric comparison function didn't handle large integers that weren't exactly representable by a double. This now uses the same code used to implement the <=> operator. [perl #130335]

    The sort() 演算子の組み込みの数値比較関数は double で正確に表現できない大きな整数を扱えませんでした。 これは <=> 演算子を実装するのに使われるのと同じコードを 使うようになりました。 [perl #130335]

  • Fix issues with /(?{ ... <<EOF })/ that broke Method::Signatures. [perl #130398]

    Method::Signatures を壊す /(?{ ... <<EOF })/ の問題が 修正されました。 [perl #130398]

  • Fixed an assertion failure with chop and chomp, which could be triggered by chop(@x =~ tr/1/1/). [perl #130198].

    chop(@x =~ tr/1/1/) によって引き起こされることがある、 chopchomp のアサート失敗が修正されました。 [perl #130198].

  • Fixed a comment skipping error in patterns under /x; it could stop skipping a byte early, which could be in the middle of a UTF-8 character. [perl #130495].

    /x の基でパターン中のコメント読み飛ばしエラーが修正されました; これは 1 バイト早く止まることがあり、UTF-8 文字の途中に なることがありました。 [perl #130495].

  • perldb now ignores /dev/tty on non-Unix systems. [perl #113960];

    perldb は、非 Unix システムでは /dev/tty を無視するようになりました。 [perl #113960];

  • Fix assertion failure for {}->$x when $x isn't defined. [perl #130496].

    $x が定義されていないときの {}->$x のアサート失敗が 修正されました。 [perl #130496].

  • Fix an assertion error which could be triggered when a lookahead string in patterns exceeded a minimum length. [perl #130522].

    パターンの前方文字列が最短長を越えたときに起きることがあるアサートエラーが 修正されました。 [perl #130522].

  • Only warn once per literal number about a misplaced "_". [perl #70878].

    一つの数値での間違った位置の "_" について、1 回だけ 警告するようになりました。 [perl #70878].

  • The tr/// parse code could be looking at uninitialized data after a perse error. [perl #129342].

    tr/// パースコードはパースエラーの後未初期化データを見ることがありました。 [perl #129342].

  • In a pattern match, a back-reference (\1) to an unmatched capture could read back beyond the start of the string being matched. [perl #129377].

    パターンマッチングで、マッチングしていない捕捉に対する後方参照 (\1) が マッチングした文字列の先頭を超えて読み戻ることがありました。 [perl #129377].

  • use re 'strict' is supposed to warn if you use a range (such as /(?[ [ X-Y ] ])/) whose start and end digit aren't from the same group of 10. It didn't do that for five groups of mathematical digits starting at U+1D7E.

    (/(?[ [ X-Y ] ])/ のような) 範囲のうち、開始と終了の数字が 10 の中の同じグループにない場合に警告するはずでした。 これは U+1D7E から始まる五つのグループの算術数字では 行われていませんでした。

  • A sub containing a "forward" declaration with the same name (e.g., sub c { sub c; }) could sometimes crash or loop infinitely. [perl #129090]

    同じ名前の「前方」宣言を含むサブルーチン (例えば sub c { sub c; }) が 時々クラッシュしたり無限ループしたりしていました。 [perl #129090]

  • A crash in executing a regex with a non-anchored UTF-8 substring against a target string that also used UTF-8 has been fixed. [perl #129350]

    UTF-8 を使っているターゲット文字列に対して非アンカー UTF-8 部分文字列で 正規表現を実行するしたときのクラッシュが修正されました。 [perl #129350]

  • Previously, a shebang line like #!perl -i u could be erroneously interpreted as requesting the -u option. This has been fixed. [perl #129336]

    以前は、#!perl -i u のようなシェバン行は誤って -u オプションを 要求していると解釈されることがありました。 これは修正されました。 [perl #129336]

  • The regex engine was previously producing incorrect results in some rare situations when backtracking past an alternation that matches only one thing; this showed up as capture buffers ($1, $2, etc.) erroneously containing data from regex execution paths that weren't actually executed for the final match. [perl #129897]

    正規表現エンジンは、一つのものだけにマッチングする代替を越えて バックトラックするとき、ある種の稀な状況では以前は間違った結果を 生成していました; これは、捕捉バッファ ($1, $2, など) に、 実際には最終的に実行されていない正規表現実行パスからのデータを 間違って含む形で現れていました。 [perl #129897]

  • Certain regexes making use of the experimental regex_sets feature could trigger an assertion failure. This has been fixed. [perl #129322]

    実験的な regex_sets 機能を使うある種の正規表現がアサート失敗を 引き起こすことがありました。 これは修正されました。 [perl #129322]

  • Invalid assignments to a reference constructor (e.g., \eval=time) could sometimes crash in addition to giving a syntax error. [perl #125679]

    リファレンス構築子への不正な代入 (例えば \eval=time) が、 文法エラーに加えて時々クラッシュすることがありました。 [perl #125679]

  • The parser could sometimes crash if a bareword came after evalbytes. [perl #129196]

    evalbytes の後に裸の単語がある場合にパーサがクラッシュすることが ありました。 [perl #129196]

  • Autoloading via a method call would warn erroneously ("Use of inherited AUTOLOAD for non-method") if there was a stub present in the package into which the invocant had been blessed. The warning is no longer emitted in such circumstances. [perl #47047]

    起動元が bless しているパッケージにスタブが存在するとき、メソッド呼び出し 経由のオートロードは間違って警告していました ("Use of inherited AUTOLOAD for non-method")。 このような場合では警告はもはや出力されなくなりました。 [perl #47047]

  • The use of splice on arrays with non-existent elements could cause other operators to crash. [perl #129164]

    存在しない要素に対して配列に splice を使うと、他の演算子のクラッシュを 引き起こすことがありました。 [perl #129164]

  • A possible buffer overrun when a pattern contains a fixed utf8 substring. [perl #129012]

    パターンに固定 utf8 部分文字列が含まれているとバッファオーバーランが 起きる可能性がありました。 [perl #129012]

  • Fixed two possible use-after-free bugs in perl's lexer. [perl #129069]

    perl lexer での二つの use-after-free バグの可能性を修正しました。 [perl #129069]

  • Fixed a crash with s///l where it thought it was dealing with UTF-8 when it wasn't. [perl #129038]

    実際には違うときに UTF-8 を扱っていると考えているときの s///l の クラッシュが修正されました。 [perl #129038]

  • Fixed a place where the regex parser was not setting the syntax error correctly on a syntactically incorrect pattern. [perl #129122]

    正規表現パーサが文法的に間違ったパターンに対して正しく文法エラーの 位置を設定しない問題を修正しました。 [perl #129122]

  • The &. operator (and the "&" operator, when it treats its arguments as strings) were failing to append a trailing null byte if at least one string was marked as utf8 internally. Many code paths (system calls, regexp compilation) still expect there to be a null byte in the string buffer just past the end of the logical string. An assertion failure was the result. [perl #129287]

    &. 演算子 (および引数を文字列として扱う場合の "&" 演算子) は 少なくとも一つの文字列が内部で utf8 とマークされている場合に末尾の NUL バイトの追加に失敗していました。 多くのコードパス (システムコール、正規表現コンパイル) ではまだ 文字列バッファ中の論理文字列の末尾に NUL バイトがあることを想定しています。 結果としてアサート失敗になります。 [perl #129287]

  • Avoid a heap-after-use error in the parser when creating an error messge for a syntactically invalid heredoc. [perl #128988]

    パーサが文法的に不正なヒヤドキュメントに対してエラーメッセージを 作成するときの heap-after-use エラーを避けるようになりました。 [perl #128988]

  • Fix a segfault when run with -DC options on DEBUGGING builds. [perl #129106]

    Fix a segfault when run with DEBUGGING ビルドで -DC オプション付きで実行したときの セグメンテーションフォルトが修正されました。 [perl #129106]

  • Fixed the parser error handling in subroutine attributes for an ':attr(foo' that does not have an ending '")"'.

    末尾に '")"' がない ':attr(foo' の形のサブルーチン属性の パーサエラーの扱いが修正されました。

  • Fix the perl lexer to correctly handle a backslash as the last char in quoted-string context. This actually fixed two bugs, [perl #129064] and [perl #129176].

    クォートされた文字列のコンテキストの最後の文字としての逆スラッシュを 正しく扱えるように perl の構文解析器を修正しました。 これは実際には二つのバグを修正しました。 [perl #129064][perl #129176]

  • In the API function gv_fetchmethod_pvn_flags, rework separator parsing to prevent possible string overrun with an invalid len argument. [perl #129267]

    API 関数 gv_fetchmethod_pvn_flags において、 不正な len 引数によって文字列オーバーランが起きる可能性を 避けるために区切りのパースについて再作業されました。 [perl #129267]

  • Problems with in-place array sorts: code like @a = sort { ... } @a, where the source and destination of the sort are the same plain array, are optimised to do less copying around. Two side-effects of this optimisation were that the contents of @a as seen by sort routines were partially sorted; and under some circumstances accessing @a during the sort could crash the interpreter. Both these issues have been fixed, and Sort functions see the original value of @a. [perl #128340]

    その場配列ソートの問題: @a = sort { ... } @a のようなコードで、 ソート元とソート先が同じ単純な配列の場合、コピーを減らすことで 最適化されます。 この最適化の二つの副作用として、ソートルーチンから見える @a の内容が ソート途中のものになっていました; もう一つはある種の状況ではソートの中で @a にアクセスするとインタプリタがクラッシュすることがありました。 これらの問題はどちらも修正され、ソート関数は @a の 元の値を見るようになりました。 [perl #128340]

  • Non-ASCII string delimiters are now reported correctly in error messages for unterminated strings. [perl #128701]

    非 ASCII 文字列区切り文字は、終端されていない文字列のエラーメッセージで 正しく報告されるようになりました。 [perl #128701]

  • pack("p", ...) used to emit its warning ("Attempt to pack pointer to temporary value") erroneously in some cases, but has been fixed.

    pack("p", ...) は一部の場合で間違った警告 ("Attempt to pack pointer to temporary value") を出力していましたが これは修正されました。

  • @DB::args is now exempt from "used once" warnings. The warnings only occurred under -w, because warnings.pm itself uses @DB::args multiple times.

    @DB::args は "used once" 警告から免れるようになりました。 この警告は -w の基でのみ起きていました; warnings.pm 自身が @DB::args を複数回使っているからです。

  • The use of built-in arrays or hash slices in a double-quoted string no longer issues a warning ("Possible unintended interpolation...") if the variable has not been mentioned before. This affected code like qq|@DB::args| and qq|@SIG{'CHLD', 'HUP'}|. (The special variables @- and @+ were already exempt from the warning.)

    ダブルクォートされた文字列の中の組み込みの配列やハッシュのスライスを 使ったとき、変数が以前に言及されていなくてももはや警告 ("Possible unintended interpolation...") を出力しなくなりました。 これは qq|@DB::args|qq|@SIG{'CHLD', 'HUP'}| のようなコードに 影響を与えます。 (特殊変数 @-@+ は既に警告を免れています。)

  • gethostent and similar functions now perform a null check internally, to avoid crashing with the torsocks library. This was a regression from v5.22. [perl #128740]

    gethostent および同様の関数は、torsocks ライブラリでの クラッシュを防ぐために、内部でヌルチェックを行うようになりました。 これは v5.22 からの退行でした。 [perl #128740]

  • defined *{'!'}, defined *{'['}, and defined *{'-'} no longer leak memory if the typeglob in question has never been accessed before.

    defined *{'!'}, defined *{'['}, defined *{'-'} は、 問題の型グロブが以前アクセスされたことがなかった場合にも メモリリークしなくなりました。

  • Mentioning the same constant twice in a row (which is a syntax error) no longer fails an assertion under debugging builds. This was a regression from v5.20. [perl #126482]

    連続して 2 回同じ定数に言及 (これは文法エラーです) しても、 デバッグビルドの基でアサート失敗しなくなりました。 これは v5.20 からの退行でした。 [perl #126482]

  • Many issues relating to printf "%a" of hexadecimal floating point were fixed. In addition, the "subnormals" (formerly known as "denormals") floating point numbers are now supported both with the plain IEEE 754 floating point numbers (64-bit or 128-bit) and the x86 80-bit "extended precision". Note that subnormal hexadecimal floating point literals will give a warning about "exponent underflow". [perl #128843] [perl #128889] [perl #128890] [perl #128893] [perl #128909] [perl #128919]

    16 進浮動小数点の printf "%a" に関する多くの問題が修正されました。 さらに、非正規化数("subnormals") (以前は "denormals" として 知られていました) 浮動小数点数は、通常の IEEE 754 浮動小数点数 (64 ビット または 128 ビット) と x86 の 80 ビット「拡張精度」の両方に対応しました。 非正規化 16 進浮動小数点数リテラルは「指数アンダーフロー」に関する 警告が出ることに注意してください。 [perl #128843] [perl #128889] [perl #128890] [perl #128893] [perl #128909] [perl #128919]

  • A regression in v5.24 with tr/\N{U+...}/foo/ when the code point was between 128 and 255 has been fixed. [perl #128734].

    符号位置が 128 から 255 の間のときの tr/\N{U+...}/foo/ の v5.24 からの 退行が修正されました。 [perl #128734].

  • Use of a string delimiter whose code point is above 2**31 now works correctly on platforms that allow this. Previously, certain characters, due to truncation, would be confused with other delimiter characters with special meaning (such as "?" in m?...?), resulting in inconsistent behaviour. Note that this is non-portable, and is based on Perl's extension to UTF-8, and is probably not displayable nor enterable by any editor. [perl #128738]

    符号位置が 2**31 を越える符号位置を文字列区切りとして使うのは、 これが許されているプラットフォームでは正しく動作するようになりました。 以前は、ある種の文字は、切り詰められるために、(m?...? での "?" の ような)特別な意味を持つ他の区切り文字と混乱して、 一貫性のない振る舞いをすることになっていました。 これは移植性がなく、Perl の UTF-8 への拡張に依存していて、 おそらくどんなエディタでも表示したり入力したりできないことに 注意してください。 [perl #128738]

  • @{x followed by a newline where "x" represents a control or non-ASCII character no longer produces a garbled syntax error message or a crash. [perl #128951]

    "x" が制御文字や非 ASCII 文字のとき、@{x に引き続いて改行があっても、 もはや不明瞭な文法エラーやクラッシュを引き起こさなくなりました。 [perl #128951]

  • An assertion failure with %: = 0 has been fixed. [perl #128238]

    %: = 0 でのアサート失敗が修正されました。 [perl #128238]

  • In Perl 5.18, the parsing of "$foo::$bar" was accidentally changed, such that it would be treated as $foo."::".$bar. The previous behavior, which was to parse it as $foo:: . $bar, has been restored. [perl #128478]

    Perl 5.18 で、"$foo::$bar" のパースが誤って変更され、 $foo."::".$bar として扱われていました。 これを $foo:: . $bar としてパースするという以前の振る舞いが 復元されました。 [perl #128478]

  • Since Perl 5.20, line numbers have been off by one when perl is invoked with the -x switch. This has been fixed. [perl #128508]

    Perl 5.20 から、perl が -x 付きで起動されたとき、行番号が 1 ずれていました。 これは修正されました。 [perl #128508]

  • Vivifying a subroutine stub in a deleted stash (e.g., delete $My::{"Foo::"}; \&My::Foo::foo) no longer crashes. It had begun crashing in Perl 5.18. [perl #128532]

    削除されたスタッシュでのサブルーチンスタブの自動有効化 (例えば, delete $My::{"Foo::"}; \&My::Foo::foo) は もはやクラッシュしなくなりました。 これは Perl 5.18 からクラッシュしていました。 [perl #128532]

  • Some obscure cases of subroutines and file handles being freed at the same time could result in crashes, but have been fixed. The crash was introduced in Perl 5.22. [perl #128597]

    同時に解放されたサブルーチンとファイルハンドルのいくつかの不明瞭な場合に クラッシュを引き起こすことがありましたが、これは修正されました。 このクラッシュは Perl 5.22 で導入されていました。 [perl #128597]

  • Code that looks for a variable name associated with an uninitialized value could cause an assertion failure in cases where magic is involved, such as $ISA[0][0]. This has now been fixed. [perl #128253]

    非初期化値に割り当てられた変数名を探すコードは、$ISA[0][0] のように マジックが関係する場合にアサート失敗を引き起こすことがありました。 これは修正されました。 [perl #128253]

  • A crash caused by code generating the warning "Subroutine STASH::NAME redefined" in cases such as sub P::f{} undef *P::; *P::f =sub{}; has been fixed. In these cases, where the STASH is missing, the warning will now appear as "Subroutine NAME redefined". [perl #128257]

    sub P::f{} undef *P::; *P::f =sub{}; のような、 "Subroutine STASH::NAME redefined" 警告を出すようなコードによる クラッシュが修正されました。 これらの場合で、STASH がない場合、警告は "Subroutine NAME redefined" として出力されるようになりました。 [perl #128257]

  • Fixed an assertion triggered by some code that handles deprecated behavior in formats, e.g., in cases like this:

    フォーマットでの廃止予定の振る舞いを扱うコードによって引き起こされる アサートが修正されました; 例えば 次のようなものです:

        format STDOUT =
        @
        0"$x"

    [perl #128255]

  • A possible divide by zero in string transformation code on Windows has been avoided, fixing a crash when collating an empty string. [perl #128618]

    Windows の文字列変換コードで 0 除算エラーが起きる可能性が除去されました; 空文字列の照合でのクラッシュが修正されました。 [perl #128618]

  • Some regular expression parsing glitches could lead to assertion failures with regular expressions such as /(?<=/ and /(?<!/. This has now been fixed. [perl #128170]

    おかしなものをパースする一部の正規表現で、/(?<=//(?<!/ のような正規表現でアサート失敗を引き起こすことがありました。 これは修正されました。 [perl #128170]

  • until ($x = 1) { ... } and ... until $x = 1 now properly warn when syntax warnings are enabled. [perl #127333]

    until ($x = 1) { ... } ... until $x = 1 は、 文法警告が有効のときに適切に警告されるようになりました。 [perl #127333]

  • socket() now leaves the error code returned by the system in $! on failure. [perl #128316]

    socket() は、失敗時に システムから返された $! のエラーコードを そのままにするようになりました。 [perl #128316]

  • Assignment variants of any bitwise ops under the bitwise feature would crash if the left-hand side was an array or hash. [perl #128204]

    bitwise 機能の基でのビット単位 op の代入は、左側が配列やハッシュの場合 クラッシュしていました。 [perl #128204]

  • require followed by a single colon (as in foo() ? require : ... is now parsed correctly as require with implicit $_, rather than require "". [perl #128307]

    (foo() ? require : ... のように) require に単一のコロンが 引き続いた場合、require "" ではなく、暗黙の $_ での require であるというように正しくパースされるようになりました。 [perl #128307]

  • Scalar keys %hash can now be assigned to consistently in all scalar lvalue contexts. Previously it worked for some contexts but not others.

    スカラの keys %hash は他のスカラ左辺値コンテキストと一貫性を持って 代入されるようになりました。 以前は一部のコンテキストでは動作していましたがそれ以外では 動作していませんでした。

  • List assignment to vec or substr with an array or hash for its first argument used to result in crashes or "Can't coerce" error messages at run time, unlike scalar assignment, which would give an error at compile time. List assignment now gives a compile-time error, too. [perl #128260]

    vecsubstr へのリスト代入で、最初の引数が配列やハッシュの場合、 スカラ代入の場合のコンパイル時エラーと異なり、クラッシュしたり、実行時に "Can't coerce" エラーが出たりしていました。 リスト代入もコンパイルエラーになるようになりました。 [perl #128260]

  • Expressions containing an && or || operator (or their synonyms and and or) were being compiled incorrectly in some cases. If the left-hand side consisted of either a negated bareword constant or a negated do {} block containing a constant expression, and the right-hand side consisted of a negated non-foldable expression, one of the negations was effectively ignored. The same was true of if and unless statement modifiers, though with the left-hand and right-hand sides swapped. This long-standing bug has now been fixed. [perl #127952]

    &&|| 演算子 (およびその同義語の andor) を含む式は 場合によっては間違ってコンパイルされていました。 左側が否定された裸の単語の定数または定数式を含む否定された do {} ブロックで、右側が否定された畳み込みできない式の場合、 否定の片方が事実上無視されていました。 同じことは ifunless 文修飾子でも起きていましたが、 右側と左側の条件は入れ替わっていました。 この長い間存在していたバグは修正されました。 [perl #127952]

  • reset with an argument no longer crashes when encountering stash entries other than globs. [perl #128106]

    引数付きの reset はスタッシュエントリがグロブ以外でももはや クラッシュしなくなりました。 [perl #128106]

  • Assignment of hashes to, and deletion of, typeglobs named *:::::: no longer causes crashes. [perl #128086]

    *:::::: という名前の型グロブのハッシュへの代入や削除はもはや クラッシュを引き起こさなくなりました。 [perl #128086]

  • Perl wasn't correctly handling true/false values in the LHS of a list assign; specifically the truth values returned by boolean operators. This could trigger an assertion failure in something like the following:

    Perl はリスト代入の左側の真偽値、特に真偽値演算子から返された 真の値を正しく扱えていませんでした; これにより、次のような場合にアサート失敗を引き起こすことがありました:

        for ($x > $y) {
            ($_, ...) = (...); # here $_ is aliased to a truth value
        }

    This was a regression from v5.24. [perl #129991]

    これは v5.24 からの退行でした。 [perl #129991]

  • Assertion failure with user-defined Unicode-like properties. [perl #130010]

    ユーザー定義 Unicode 風特性に関するアサート失敗。 [perl #130010]

  • Fix error message for unclosed \N{ in a regex. An unclosed \N{ could give the wrong error message: "\N{NAME} must be resolved by the lexer".

    正規表現中の閉じていない \N{ に関するエラーメッセージが修正されました。 閉じていない \N{ は間違ったエラーメッセージを出すことがありました: "\N{NAME} must be resolved by the lexer"

  • List assignment in list context where the LHS contained aggregates and where there were not enough RHS elements, used to skip scalar lvalues. Previously, (($a,$b,@c,$d) = (1)) in list context returned ($a); now it returns ($a,$b,$d). (($a,$b,$c) = (1)) is unchanged: it still returns ($a,$b,$c). This can be seen in the following:

    リストコンテキストでのリスト代入で、左側に集合体を含み、右側の要素が 足りない場合、スカラ左辺値を読み飛ばしていました。 以前は、リストコンテキストでの (($a,$b,@c,$d) = (1))($a) を返していました; これは ($a,$b,$d) を返すようになりました。 (($a,$b,$c) = (1)) は変わりません: ($a,$b,$c) を返すままです。 これは次のようにして見ることができます:

        sub inc { $_++ for @_ }
        inc(($a,$b,@c,$d) = (10))

    Formerly, the values of ($a,$b,$d) would be left as (11,undef,undef); now they are (11,1,1).

    以前は、($a,$b,$d) の値は (11,undef,undef) になっていました; 今は (11,1,1) になります。

  • Code like this: /(?{ s!!! })/ could trigger infinite recursion on the C stack (not the normal perl stack) when the last successful pattern in scope is itself. We avoid the segfault by simply forbidding the use of the empty pattern when it would resolve to the currently executing pattern. [perl #129903]

    /(?{ s!!! })/ のようなコードは、スコープないで最後に成功したパターンが 自分自身の場合、(通常の perl スタックではなく) C スタックでの 無限再帰を引き起こすことがありました。 単に現在実行しているパターンの解決のときに空パターンを使うことを 禁止することでセグメンテーションフォルトを避けるようにしました。 [perl #129903]

  • Avoid reading beyond the end of the line buffer in perl's lexer when there's a short UTF-8 character at the end. [perl #128997]

    短い UTF-8 文字が末尾にあるときに perl の構文解析器の行バッファの 末尾を越えて読み込むのを避けるようになりました。 [perl #128997]

  • Alternations in regular expressions were sometimes failing to match a utf8 string against a utf8 alternate. [perl #129950]

    正規表現中の代替は時々 utf8 代替に対する utf8 文字列にマッチングするのに 失敗していました。 [perl #129950]

  • Make do "a\0b" fail silently (and return undef and set $!) instead of throwing an error. [perl #129928]

    do "a\0b" はエラーを投げずに暗黙に失敗する (そして undef を返して $! を設定する) ようになりました。 [perl #129928]

  • chdir with no argument didn't ensure that there was stack space available for returning its result. [perl #129130]

    引数なしの chdir は、結果を返すために十分なスタック空間があることを 確認していませんでした。 [perl #129130]

  • All error messages related to do now refer to do; some formerly claimed to be from require instead.

    do に関するエラーメッセージは do を参照するようになりました; 以前は一部で代わりに require からであると主張していました。

  • Executing undef $x where $x is tied or magical no longer incorrectly blames the variable for an uninitialized-value warning encountered by the tied/magical code.

    $x が tie されていたりマジカルな場合の undef $x の実行すると、 この変数に対して tie された/マジカルな コードに遭遇することによる 非初期化値警告を出していましたが、もはや出さなくなりました。

  • Code like $x = $x . "a" was incorrectly failing to yield a use of uninitialized value warning when $x was a lexical variable with an undefined value. That has now been fixed. [perl #127877]

    $x = $x . "a" のようなコードは、$x が未定義値のレキシカル変数の場合、 間違って use of uninitialized value 警告が 出ていました。 これは修正されました。 [perl #127877]

  • undef *_; shift or undef *_; pop inside a subroutine, with no argument to shift or pop, began crashing in Perl 5.14, but has now been fixed.

    サブルーチンの中での undef *_; shiftundef *_; pop で、 shiftpop への引数がない場合、Perl 5.14 から クラッシュしていましたが、修正されました。

  • "string$scalar->$*" now correctly prefers concatenation overloading to string overloading if $scalar->$* returns an overloaded object, bringing it into consistency with $$scalar.

    $scalar->$* がオーバーロードされたオブジェクトを返す場合、 "string$scalar->$*" は正しく文字列オーバーロードではなく 結合オーバーロードを使うようになりました; これは $$scalar と一貫性があります。

  • /@0{0*->@*/*0 and similar contortions used to crash, but no longer do, but merely produce a syntax error. [perl #128171]

    /@0{0*->@*/*0 や似たようなねじれはクラッシュしていましたが、 もはやクラッシュせず、単に文法エラーが出力されるようになりました。 [perl #128171]

  • do or require with an argument which is a reference or typeglob which, when stringified, contains a null character, started crashing in Perl 5.20, but has now been fixed. [perl #128182]

    文字列化すると NUL 文字を含むようなリファレンスや型グロブを引数にした dorequire は Perl 5.20 からクラッシュしていましたが、 修正されました。 [perl #128182]

  • Improve the error message for a missing tie() package/method. This brings the error messages in line with the ones used for normal method calls.

    tie() パッケージ/メソッドがない場合のエラーメッセージが改良されました。 これは通常のメソッド呼び出しでのものと一致したエラーメッセージが 出るようになりました。

  • Parsing bad POSIX charclasses no longer leaks memory. [perl #128313]

    間違った POSIX 文字クラスのパースでメモリリークしなくなりました。 [perl #128313]

既知の問題

  • G++ 6 handles subnormal (denormal) floating point values differently than gcc 6 or g++ 5 resulting in "flush-to-zero". The end result is that if you specify very small values using the hexadecimal floating point format, like 0x1.fffffffffffffp-1022, they become zeros. [perl #131388]

    G++ 6 非正規化浮動小数点を gcc 6 や g++ 5 と異なる形で扱うため、"flush-to-zero" となります。 最終的な結果としては、0x1.fffffffffffffp-1022 のように 16 進 浮動小数点形式を使ってとても小さい値を指定すると、ゼロになります。 [perl #131388]

以前のリリースからのエラッタ

  • Fixed issues with recursive regexes. The behavior was fixed in Perl 5.24. [perl #126182]

    再帰正規表現の問題が修正されました。 振る舞いは Perl 5.24 で修正されていました。 [perl #126182]

おくやみ

Jon Portnoy (AVENJ), a prolific Perl author and admired Gentoo community member, has passed away on August 10, 2016. He will be remembered and missed by all those who he came in contact with, and enriched with his intellect, wit, and spirit.

多作な Perl 作者であり、称賛される Gentoo コミュニティメンバーであった Jon Portnoy (AVENJ) は 2016 年 10 月 10 日に死去しました。 彼に出会い、その知性、機知、精神によって心豊かになった 全ての人々に記憶され、惜しまれました。

It is with great sadness that we also note Kip Hampton's passing. Probably best known as the author of the Perl & XML column on XML.com, he was a core contributor to AxKit, an XML server platform that became an Apache Foundation project. He was a frequent speaker in the early days at OSCON, and most recently at YAPC::NA in Madison. He was frequently on irc.perl.org as ubu, generally in the #axkit-dahut community, the group responsible for YAPC::NA Asheville in 2011.

Kip Hampton の死去について記すのも大きな悲しみです。 おそらく XML.com での Perl & XML コラムの作者として最もよく知られている彼は、 Apache Foundation プロジェクトになった XML サーバプラットフォームである AxKit のコア貢献者でした。 彼は OSCON の初期に頻繁にスピーカーをしており、 最も最近のものは Madison での YAPC::NA のものでした。 彼は ubu として irc.perl.org に、一般的に #axkit-dahut グループに 参加していました; このグループは 2011 年の YAPC::NA Asheville に 責任を負っていました。

Kip and his constant contributions to the community will be greatly missed.

Kip と彼のコミュニティへの絶え間ない貢献はとても惜しまれます。

Acknowledgements

Perl 5.26.0 represents approximately 13 months of development since Perl 5.24.0 and contains approximately 360,000 lines of changes across 2,600 files from 86 authors.

Perl 5.26.0 は、Perl 5.24.0 以降、86 人の作者によって、 2,600 のファイルに約 360,000 行の変更を加えて、 約 13 ヶ月開発されてきました。

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

自動生成ファイル、文書、リリースツールを除くと、1,800 の .pm, .t, .c, .h ファイルに約 230,000 行の変更を加えました。

Perl continues to flourish into its third decade thanks to a vibrant community of users and developers. The following people are known to have contributed the improvements that became Perl 5.26.0:

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

Aaron Crane, Abigail, Ævar Arnfjörð Bjarmason, Alex Vandiver, Andreas König, Andreas Voegele, Andrew Fresh, Andy Lester, Aristotle Pagaltzis, Chad Granum, Chase Whitener, Chris 'BinGOs' Williams, Chris Lamb, Christian Hansen, Christian Millour, Colin Newell, Craig A. Berry, Dagfinn Ilmari Mannsåker, Dan Collins, Daniel Dragan, Dave Cross, Dave Rolsky, David Golden, David H. Gutteridge, David Mitchell, Dominic Hargreaves, Doug Bell, E. Choroba, Ed Avis, Father Chrysostomos, François Perrad, Hauke D, H.Merijn Brand, Hugo van der Sanden, Ivan Pozdeev, James E Keenan, James Raspass, Jarkko Hietaniemi, Jerry D. Hedden, Jim Cromie, J. Nick Koston, John Lightsey, Karen Etheridge, Karl Williamson, Leon Timmermans, Lukas Mai, Matthew Horsfall, Maxwell Carey, Misty De Meo, Neil Bowers, Nicholas Clark, Nicolas R., Niko Tyni, Pali, Paul Marquess, Peter Avalos, Petr Písař, Pino Toscano, Rafael Garcia-Suarez, Reini Urban, Renee Baecker, Ricardo Signes, Richard Levitte, Rick Delaney, Salvador Fandiño, Samuel Thibault, Sawyer X, Sébastien Aperghis-Tramoni, Sergey Aleynikov, Shlomi Fish, Smylers, Stefan Seifert, Steffen Müller, Stevan Little, Steve Hay, Steven Humphrey, Sullivan Beck, Theo Buehler, Thomas Sibley, Todd Rinaldo, Tomasz Konojacki, Tony Cook, Unicode Consortium, Yaroslav Kuzmin, 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 [email protected] to be analysed by the Perl porting team.

もしまだ報告されていないバグだと確信したら、そのリリースに含まれている perlbug プログラムを実行してください。 バグの再現スクリプトを十分小さく、しかし有効なコードに切りつめることを 意識してください。 バグレポートは perl -V の出力と一緒に [email protected] に送られ 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 プログラムを実行することでそうできます:

    perlthanks

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

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

SEE ALSO

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

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

The INSTALL file for how to build Perl.

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

The README file for general stuff.

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

The Artistic and Copying files for copyright information.

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