名前

perl5120delta - what is new for perl v5.12.0

perl5120delta - perl v5.12.0 での変更点

説明

This document describes differences between the 5.10.0 release and the 5.12.0 release.

このドキュメントは 5.10.0 リリースと 5.12.0 リリースの変更点を記述しています。

Many of the bug fixes in 5.12.0 are already included in the 5.10.1 maintenance release.

5.12.0 でのバグ修正の多くは既に 5.10.1 メンテナンスリリースに含まれています。

You can see the list of those changes in the 5.10.1 release notes (perl5101delta).

これらの変更の一覧は 5.10.1 リリースノート (perl5101delta) で 見られます。

コアの拡張

New package NAME VERSION syntax

(新しい package NAME VERSION 文法)

This new syntax allows a module author to set the $VERSION of a namespace when the namespace is declared with 'package'. It eliminates the need for our $VERSION = ... and similar constructs. E.g.

名前空間が 'package' で宣言されるとき、モジュール作者が名前空間の $VERSION をセットするための新しい文法が使えるようになりました。 これによって、for our $VERSION = ... や似たような構造を取り除けます。 例えば、

      package Foo::Bar 1.23;
      # $Foo::Bar::VERSION == 1.23

There are several advantages to this:

これにはいくつかの利点があります:

  • $VERSION is parsed in exactly the same way as use NAME VERSION

    $VERSIONuse NAME VERSION と全く同じようにパースされます

  • $VERSION is set at compile time

    $VERSION はコンパイル時にセットされます

  • $VERSION is a version object that provides proper overloading of comparison operators so comparing $VERSION to decimal (1.23) or dotted-decimal (v1.2.3) version numbers works correctly.

    $VERSION は、比較演算子を適切にオーバーロードしたバージョン オブジェクトなので、$VERSION と、数値形式 (1.23) や ドット区切り数値形式 (v1.2.3) のバージョン番号を正しく比較できます。

  • Eliminates $VERSION = ... and eval $VERSION clutter

    $VERSION = ...eval $VERSION といった乱雑なものを除去します

  • As it requires VERSION to be a numeric literal or v-string literal, it can be statically parsed by toolchain modules without eval the way MM->parse_version does for $VERSION = ...

    VERSION として数値リテラルかv-文字列リテラルが必要なので、 MM->parse_version が $VERSION = ... に対して行っているような eval なしに、ツールチェーンモジュールが静的にパースできます。

It does not break old code with only package NAME, but code that uses package NAME VERSION will need to be restricted to perl 5.12.0 or newer This is analogous to the change to open from two-args to three-args. Users requiring the latest Perl will benefit, and perhaps after several years, it will become a standard practice.

これは package NAME とだけ書いてある古いコードは壊しませんが、 package NAME VERSION を使っているコードは perl 5.12.0 以降では制限される 必要があります。 これは open の 2 引数から 3 引数への変更に似ています。 最新の Perl が必要なユーザーには利益があり、おそらく数年後には 標準的なプラクティスになっているでしょう。

However, package NAME VERSION requires a new, 'strict' version number format. See "Version number formats" for details.

しかし、package NAME VERSION は新しい「厳密な」バージョン番号形式を 必要とします。 詳細については "Version number formats" を参照してください。

The ... operator

(... 演算子)

A new operator, ..., nicknamed the Yada Yada operator, has been added. It is intended to mark placeholder code that is not yet implemented. See "Yada Yada Operator" in perlop.

ヤダヤダ演算子というあだ名のある新しい演算子 ... が追加されました。 これはまだ実装していないコードのプレースホルダとしてマークすることを 目的としています。 "Yada Yada Operator" in perlop を参照してください。

暗黙の strict

Using the use VERSION syntax with a version number greater or equal to 5.11.0 will lexically enable strictures just like use strict would do (in addition to enabling features.) The following:

バージョン番号 5.11.0 以上を指定した use VERSION 文法を使うと、 (その他の機能が有効化されるのに追加して) ちょうど use strict と同様、レキシカルに strict が有効になります。 以下の表記は:

    use 5.12.0;

means:

以下を意味します:

    use strict;
    use feature ':5.12';

Unicode の改良

Perl 5.12 comes with Unicode 5.2, the latest version available to us at the time of release. This version of Unicode was released in October 2009. See http://www.unicode.org/versions/Unicode5.2.0 for further details about what's changed in this version of the standard. See perlunicode for instructions on installing and using other versions of Unicode.

Perl 5.12 は、リリース時点での最新版である Unicode 5.2 を同梱しています。 この版の Unicode は 2009 年 10 月にリリースされました。 この版の標準で変更されたものに関するさらなる詳細については http://www.unicode.org/versions/Unicode5.2.0 を参照してください。 他の版の Unicode をインストールして使うための方法については perlunicode を参照してください。

Additionally, Perl's developers have significantly improved Perl's Unicode implementation. For full details, see "Unicode overhaul" below.

さらに、Perl の開発者は Perl の Unicode 実装を大きく改善しました。 完全な詳細については、後述する "Unicode overhaul" を参照してください。

2038 年問題準拠

Perl's core time-related functions are now Y2038 compliant. (It may not mean much to you, but your kids will love it!)

Perl コアの時刻関係の関数は 2038年問題準拠になりました。 (これはあなたにとっては余り意味のないことかもしれませんが、 あなたの子供はこれを喜ぶでしょう!)

qr のオーバーロード

It is now possible to overload the qr// operator, that is, conversion to regexp, like it was already possible to overload conversion to boolean, string or number of objects. It is invoked when an object appears on the right hand side of the =~ operator or when it is interpolated into a regexp. See overload.

qr// operator 演算子をオーバーロードできるようになりました; これは正規表現への変換で、既に可能であった真偽値、文字列、数値の オブジェクトへの変換と似たものです。 これは、オブジェクトが =~ 演算子の右側に現れたときか、 正規表現への変数展開が行われるときに起動します。 overload を参照してください。

プラグ可能なキーワード

Extension modules can now cleanly hook into the Perl parser to define new kinds of keyword-headed expression and compound statement. The syntax following the keyword is defined entirely by the extension. This allow a completely non-Perl sublanguage to be parsed inline, with the correct ops cleanly generated.

エクステンションモジュールは、キーワードが頭についた表現と複合文の 新種を定義するために、Perl のパーサーにきれいにフックを設定できます。 キーワードに引き続く文法は完全にエクステンションによって定義されます。 これにより、インラインでパースでき、正しい ops をきれいに生成できる、 完全に Perl とは違う副言語が可能になります。

See "PL_keyword_plugin" in perlapi for the mechanism. The Perl core source distribution also includes a new module XS::APItest::KeywordRPN, which implements reverse Polish notation arithmetic via pluggable keywords. This module is mainly used for test purposes, and is not normally installed, but also serves as an example of how to use the new mechanism.

仕組みについては "PL_keyword_plugin" in perlapi を参照してください。 Perl コアソース配布には、プラグ可能なキーワードを使って逆ポーランド記法を 実装した XS::APItest::KeywordRPN という新しいモジュールも含んでいます。 このモジュールは主にテスト用に使われ、通常はインストールされませんが、 この仕組みの使い方の例となっています。

Perl's developers consider this feature to be experimental. We may remove it or change it in a backwards-incompatible way in Perl 5.14.

Perl の開発者はこの機能は実験的なものだと考えています。 Perl 5.14 では過去互換性の点から削除したり変更したりするかもしれません。

さらに内部のための API

The lowest layers of the lexer and parts of the pad system now have C APIs available to XS extensions. These are necessary to support proper use of pluggable keywords, but have other uses too. The new APIs are experimental, and only cover a small proportion of what would be necessary to take full advantage of the core's facilities in these areas. It is intended that the Perl 5.13 development cycle will see the addition of a full range of clean, supported interfaces.

字句解析の最下位層とパッドシステムの一部が XS エクステンションから 利用可能な C API を持つようになりました。 これらはプラグ可能なキーワードの適切な使用を助けるために必要ですが、 他の使い方もあります。 新しい API は実験的で、これらの分野のコアの能力の利点を完全に 利用するために必要なもののうち小さな部分しか対応していません。 Perl 5.13 開発サイクルでクリーンで対応したインターフェースを完全に 追加することを目的としています。

Perl's developers consider this feature to be experimental. We may remove it or change it in a backwards-incompatible way in Perl 5.14.

Perl の開発者はこの機能は実験的なものだと考えています。 Perl 5.14 では過去互換性の点から削除したり変更したりするかもしれません。

オーバーライド可能な関数検索

Where an extension module hooks the creation of rv2cv ops to modify the subroutine lookup process, this now works correctly for bareword subroutine calls. This means that prototypes on subroutines referenced this way will be processed correctly. (Previously bareword subroutine names were initially looked up, for parsing purposes, by an unhookable mechanism, so extensions could only properly influence subroutine names that appeared with an & sigil.)

エクステンションモジュールがサブルーチン検索処理を修正するために rv2cv op の作成をフックした場合、 これは裸のサブルーチン呼び出しでも正しく動作するようになりました。 これは、この方法で参照されたサブルーチンのプロトタイプが正しく 処理されることを意味します。 (以前は、裸のサブルーチン名はフックできない機構を使ってパースのために 最初に検索されていたので、エクステンションは & がついている サブルーチン名しか適切に影響を与えられませんでした。)

プラグ可能なメソッド解決順序のための適切なインターフェース

As of Perl 5.12.0 there is a new interface for plugging and using method resolution orders other than the default linear depth first search. The C3 method resolution order added in 5.10.0 has been re-implemented as a plugin, without changing its Perl-space interface. See perlmroapi for more information.

Perl 5.10.1 から、デフォルト (線形深さ優先検索) 以外のメソッド解決順序を 追加して使うための新しいインターフェースがあります。 5.10.0 で追加された C3 メソッド解決順序は、Perl 空間でのインターフェースの 変更なしにプラグインとして再実装されました。 さらなる情報については perlmroapi を参照してください。

\N experimental regex escape

(実験的な正規表現エスケープ \N)

Perl now supports \N, a new regex escape which you can think of as the inverse of \n. It will match any character that is not a newline, independently from the presence or absence of the single line match modifier /s. It is not usable within a character class. \N{3} means to match 3 non-newlines; \N{5,} means to match at least 5. \N{NAME} still means the character or sequence named NAME, but NAME no longer can be things like 3, or 5,.

\n の逆と考えられる新しい正規表現エスケープである \N に 対応しました。 これは、単一行マッチング修飾子 /s のあるなしに関わらず、 改行以外の任意の文字にマッチングします。 これは文字クラスの中では使えません。 \N{3} は改行でない 3 文字にマッチングします; \N{5,} は少なくとも 5 文字にマッチングします。 \N{NAME} は未だ NAME という名前の文字またはシーケンスを意味しますが、 NAME として 35, といったものは使えなくなりました。

This will break a custom charnames translator which allows numbers for character names, as \N{3} will now mean to match 3 non-newline characters, and not the character whose name is 3. (No name defined by the Unicode standard is a number, so only custom translators might be affected.)

これは、文字名として数値も許していた カスタム文字名変換器 を壊します; なぜなら \N{3} は三つの非改行文字にマッチングし、3 という名前の 文字ではなくなるからです。 (Unicode 標準で定義されている名前には数字はありません; カスタム変換器のみが影響を受けます。)

Perl's developers are somewhat concerned about possible user confusion with the existing \N{...} construct which matches characters by their Unicode name. Consequently, this feature is experimental. We may remove it or change it in a backwards-incompatible way in Perl 5.14.

Perl の開発者は、ユーザーが、その Unicode 名の文字とマッチングする 既存の \N{...} 構造と混乱することを懸念しています。 従って、この機能は実験的なものです。 Perl 5.14 では過去互換性の点から削除したり変更したりするかもしれません。

DTrace 対応

Perl now has some support for DTrace. See "DTrace support" in INSTALL.

DTrace へのいくらかの対応が追加されました。 INSTALL の "DTrace support" を参照してください。

Support for configure_requires in CPAN module metadata

(CPAN モジュールメタデータの configure_requires への対応)

Both CPAN and CPANPLUS now support the configure_requires keyword in the META.yml metadata file included in most recent CPAN distributions. This allows distribution authors to specify configuration prerequisites that must be installed before running Makefile.PL or Build.PL.

CPANCPANPLUS は、ほとんどの最近の CPAN 配布が含んでいる メタデータファイル META.ymlconfigure_requires キーワードに 対応しました。 これにより、Makefile.PLBuild.PL が実行される前に インストールされていなければならない設定の事前条件を指定できます。

See the documentation for ExtUtils::MakeMaker or Module::Build for more on how to specify configure_requires when creating a distribution for CPAN.

CPAN で配布するときに configure_requires を指定する方法については ExtUtils::MakeMakerModule::Build の文書を参照してください。

each is now more flexible

(each がより柔軟に)

The each function can now operate on arrays.

each 関数は配列を操作できるようになりました。

when as a statement modifier

(文修飾子としての when)

when is now allowed to be used as a statement modifier.

when は文修飾子として使えるようになりました。

$, flexibility

($, の柔軟性)

The variable $, may now be tied.

$, 変数を tie できるようになりました。

when 句での //

// now behaves like || in when clauses

// は when 句では || のように振る舞うようになりました。

シェル環境から警告を有効にする

You can now set -W from the PERL5OPT environment variable

PERL5OPT 環境変数で -W をセットできるようになりました。

delete local

(delete local)

delete local now allows you to locally delete a hash entry.

delete local でハッシュエントリをローカルに削除できるようになりました。

抽象名前空間ソケットへの対応

Abstract namespace sockets are Linux-specific socket type that live in AF_UNIX family, slightly abusing it to be able to use arbitrary character arrays as addresses: They start with nul byte and are not terminated by nul byte, but with the length passed to the socket() system call.

抽象名前空間ソケットは、AF_UNIX ファミリーにある Linux 固有のソケット型で、 任意の文字配列をアドレスとして使えるようにやや悪用されています: これは NUL バイトから始まって、NUL バイトでは終わりませんが、 socket() システムコールで渡される長さがあります。

substr の引数の 32 ビット制限は取り除かれました

The 32-bit limit on substr arguments has now been removed. The full range of the system's signed and unsigned integers is now available for the pos and len arguments.

substr の引数の 32 ビット制限は取り除かれました。 pos 引数と len 引数として、 システムの符号付き整数および符号なし整数の幅全てを指定可能です。

互換性がなくなる可能性のある変更

デフォルトでの非推奨の警告

Over the years, Perl's developers have deprecated a number of language features for a variety of reasons. Perl now defaults to issuing a warning if a deprecated language feature is used. Many of the deprecations Perl now warns you about have been deprecated for many years. You can find a list of what was deprecated in a given release of Perl in the perl5xxdelta.pod file for that release.

長年をかけて、Perl の開発者は多くの言語機能を様々な理由で非推奨に してきました。 Perl は、非推奨の言語機能が使われると警告を出すのがデフォルトになりました。 Perl が警告するようになった非推奨の多くは何年間も非推奨となっています。 Perl のあるリリースで何が非推奨かの一覧はそのリリースの perl5xxdelta.pod ファイルにあります。

To disable this feature in a given lexical scope, you should use no warnings 'deprecated'; For information about which language features are deprecated and explanations of various deprecation warnings, please see perldiag.pod. See "Deprecations" below for the list of features and modules Perl's developers have deprecated as part of this release.

レキシカルスコープでこの機能を無効にするには、 no warnings 'deprecated'; を使ってください。 どの言語機能が非推奨であるかと、様々な非推奨警告の説明については、 perldiag.pod を参照してください。 Perl の開発者がこのリリースで非推奨とした機能とモジュールの一覧は 以下の "Deprecations" を参照してください。

バージョン番号形式

Acceptable version number formats have been formalized into "strict" and "lax" rules. package NAME VERSION takes a strict version number. UNIVERSAL::VERSION and the version object constructors take lax version numbers. Providing an invalid version will result in a fatal error. The version argument in use NAME VERSION is first parsed as a numeric literal or v-string and then passed to UNIVERSAL::VERSION (and must then pass the "lax" format test).

受け付けられるバージョン番号形式は、「厳密な」形式と「曖昧な」形式で 形式化されました。 package NAME VERSION は厳密なバージョン番号を取ります。 UNIVERSAL::VERSIONversion オブジェクトコンストラクタは 曖昧なバージョン番号を取ります。 バージョンが不正な場合、致命的エラーになります。 use NAME VERSION のバージョン引数はまず数値リテラルかv-文字列として パースされ、それから UNIVERSAL::VERSION に渡されます (そして「曖昧な」形式テストを通過する必要があります)。

These formats are documented fully in the version module. To a first approximation, a "strict" version number is a positive decimal number (integer or decimal-fraction) without exponentiation or else a dotted-decimal v-string with a leading 'v' character and at least three components. A "lax" version number allows v-strings with fewer than three components or without a leading 'v'. Under "lax" rules, both decimal and dotted-decimal versions may have a trailing "alpha" component separated by an underscore character after a fractional or dotted-decimal component.

これらの形式は version に完全に文書化されています。 最初の仮定として「厳密な」バージョン番号は指数部のない正の 10 進数 (整数か 10 進小数) か、あるいは先頭に 'v' の文字がついたドット付き 10 進数整数v-文字列で、少なくとも3 要素があるものです。 「曖昧な」バージョン番号は、要素数が 2 以下であったり、先頭に 'v' が ないものも許します。 「曖昧な」規則の下では、10 進数とドット付き 10 進数のバージョンは、 小数かドット付き要素の後に下線で区切られた「英字」要素を 付けることができます。

The version module adds version::is_strict and version::is_lax functions to check a scalar against these rules.

version モジュールには、スカラがこれらの形式に従っているかを チェックするための version::is_strict 関数と version::is_lax 関数が 追加されました。

@INC の再構成

In @INC, ARCHLIB and PRIVLIB now occur after after the current version's site_perl and vendor_perl. Modules installed into site_perl and vendor_perl will now be loaded in preference to those installed in ARCHLIB and PRIVLIB.

@INC の中で、ARCHLIBPRIVLIB は現在のバージョンの site_perl および vendor_perl の後に現れるようになりました。 site_perlvendor_perl にインストールされたモジュールは、 ARCHLIBPRIVLIB にインストールされたものより優先して 読み込まれます。

REGEXP は第一級になりました

Internally, Perl now treates compiled regular expressions (such as those created with qr//) as first class entities. Perl modules which serialize, deserialize or otherwise have deep interaction with Perl's internal data structures need to be updated for this change. Most affected CPAN modules have already been updated as of this writing.

内部では、Perl は(qr// で作成されたような)コンパイルされた正規表現を を第一級実体として扱います。 Perl の内部データ構造を直列化、非直列化するなどの深い相互作用を 行うモジュールは、この変更に対応するために更新する必要があります。 影響の受ける CPAN モジュールのほとんどは、これを書いている時点で 既に更新されています。

switch 文の変更

The given/when switch statement handles complex statements better than Perl 5.10.0 did (These enhancements are also available in 5.10.1 and subsequent 5.10 releases.) There are two new cases where when now interprets its argument as a boolean, instead of an expression to be used in a smart match:

given/when の switch 文は、Perl 5.10.0 で扱えたものよりも もっと複雑な文を扱えるようになりました (これらの拡張は 5.10.1 および引き続く 5.10 リリースでも利用可能です。) 新しく、when がスマートマッチングの式ではなく真偽値として 引数を解釈する場合が二つあります。

flip-flop operators

(フリップフロップ演算子)

The .. and ... flip-flop operators are now evaluated in boolean context, following their usual semantics; see "Range Operators" in perlop.

..... のフリップフロップ演算子は、通常の文法に従ってブール値 コンテキストで評価されるようになりました。 "Range Operators" in perlop を参照してください。

Note that, as in perl 5.10.0, when (1..10) will not work to test whether a given value is an integer between 1 and 10; you should use when ([1..10]) instead (note the array reference).

perl 5.10.0 では、when (1..10) としても、与えられた値が 1 から 10 の間の 数値かどうかをテストするようには動作しないことに注意してください; 代わりに when ([1..10]) を使うべきです (配列リファレンスに 注意してください)。

However, contrary to 5.10.0, evaluating the flip-flop operators in boolean context ensures it can now be useful in a when(), notably for implementing bistable conditions, like in:

しかし、5.10.0 とは反対に、when() でブール値コンテキストで フリップフロップ演算子が評価されることが保証されることで、 特に以下のように双安定条件を実装するときに便利です:

    when (/^=begin/ .. /^=end/) {
      # do something
    }
defined-or operator

(定義性和 (defined-or) 演算子)

A compound expression involving the defined-or operator, as in when (expr1 // expr2), will be treated as boolean if the first expression is boolean. (This just extends the existing rule that applies to the regular or operator, as in when (expr1 || expr2).)

when (expr1 // expr2) のような、定義性和 (defined-or) を含む複合式は、 最初の式が真偽値なら真偽値として扱われます。 (これは単に、when (expr1 || expr2) のような通常の or 演算子に 適用されるすでにあるルールの拡張です。

スマートマッチングの変更

Since Perl 5.10.0, Perl's developers have made a number of changes to the smart match operator. These, of course, also alter the behaviour of the switch statements where smart matching is implicitly used. These changes were also made for the 5.10.1 release, and will remain in subsequent 5.10 releases.

Perl 5.10.0 から、Perl の開発者はスマートマッチング演算子に多くの変更を 行いました。 これらは、当然ながら暗黙にスマートマッチングを使っている switch 文の 振る舞いも変えます。 これらの変更は 5.10.1 にも適用され、引き続く 5.10 リリースにも残る予定です。

型ベースの発行(dispatch)への変更

The smart match operator ~~ is no longer commutative. The behaviour of a smart match now depends primarily on the type of its right hand argument. Moreover, its semantics have been adjusted for greater consistency or usefulness in several cases. While the general backwards compatibility is maintained, several changes must be noted:

スマートマッチング演算子 ~~ はもはや可換性を持ちません。 スマートマッチングの振る舞いは、まず右側の引数の型に依存します。 さらに、その文法は一貫性と有用性をより高めるために調整されました。 一般的な後方互換性は維持されている一方、いくつかの変更点には 注意しなければなりません:

  • Code references with an empty prototype are no longer treated specially. They are passed an argument like the other code references (even if they choose to ignore it).

    空のプロトタイプを持つコードリファレンスは特別扱いされなくなりました。 (たとえ無視されることになるとしても)これらはその他のコードリファレンスと同様に 引数として渡されます。

  • %hash ~~ sub {} and @array ~~ sub {} now test that the subroutine returns a true value for each key of the hash (or element of the array), instead of passing the whole hash or array as a reference to the subroutine.

    %hash ~~ sub {}@array ~~ sub {} は、 ハッシュや配列全体をリファレンスとしてサブルーチンに渡すのではなく、 ハッシュのそれぞれのキー(または配列の要素)に対してサブルーチンが 真を返すかどうかをテストするようになりました。

  • Due to the commutativity breakage, code references are no longer treated specially when appearing on the left of the ~~ operator, but like any vulgar scalar.

    可換性の破綻により、コードリファレンスは ~~ 演算子の左側に 現れたときにはもはや特別扱いされず、普通のスカラと同じように扱われます。

  • undef ~~ %hash is always false (since undef can't be a key in a hash). No implicit conversion to "" is done (as was the case in perl 5.10.0).

    undef ~~ %hash は常に偽となります (なぜなら undef はハッシュのキーとして 使えないからです)。 (perl 5.10.0 の場合のように)"" への暗黙の変換は行われません。

  • $scalar ~~ @array now always distributes the smart match across the elements of the array. It's true if one element in @array verifies $scalar ~~ $element. This is a generalization of the old behaviour that tested whether the array contained the scalar.

    $scalar ~~ @array は常に配列の要素に対してスマートマッチングを 分配するようになりました。 これは、もし @array の一つの要素が $scalar ~~ $element で検証されれば 真となります。 これは、配列にあるスカラが含まれているかどうかをテストする古い振る舞いの 一般化です。

The full dispatch table for the smart match operator is given in "Smart matching in detail" in perlsyn.

スマートマッチング演算子に関する完全な発行テーブルは "Smart matching in detail" in perlsyn にあります。

スマートマッチングとオーバーロード

According to the rule of dispatch based on the rightmost argument type, when an object overloading ~~ appears on the right side of the operator, the overload routine will always be called (with a 3rd argument set to a true value, see overload.) However, when the object will appear on the left, the overload routine will be called only when the rightmost argument is a simple scalar. This way, distributivity of smart match across arrays is not broken, as well as the other behaviours with complex types (coderefs, hashes, regexes). Thus, writers of overloading routines for smart match mostly need to worry only with comparing against a scalar, and possibly with stringification overloading; the other common cases will be automatically handled consistently.

一番右の引数の型に依存するという発行ルールによれば、 演算子の右側にオブジェクトのオーバーロード ~~ が現れたとき、 オーバーロードルーチンは(3 番目の引数に真の値を設定して; overload を 参照してください) 常に呼び出されます。 しかし、オブジェクトが左側に現れたとき、オーバーロードルーチンは 一番右の引数が単純なスカラの場合にのみ呼び出されます。 これによって配列に対するスマートマッチングの分配性や 複合型(コードリファレンス、ハッシュ、正規表現)に対するその他の振る舞いは 壊れません。 従って、スマートマッチングのためのローバーロードルーチンの作者は ほとんどの場合、スカラの比較と、可能性があるなら文字列化のオーバーロードに 関してのみ心配する必要があります; その他の一般的な場合は 一貫性を持って自動的に扱われます。

~~ will now refuse to work on objects that do not overload it (in order to avoid relying on the object's underlying structure). (However, if the object overloads the stringification or the numification operators, and if overload fallback is active, it will be used instead, as usual.)

~~ は、オーバーロードしていないオブジェクトに対して動作しなくなりました (オブジェクトの基礎となる構造に依存することを避けるためです)。 しかし、オブジェクトが文字列化か数値化演算子をオーバーロードしていて、 オーバーロードのフォールバックが有効の場合は、通常通りに使われます。)

その他の互換性のなくなる可能性のある変更

  • The definitions of a number of Unicode properties have changed to match those of the current Unicode standard. These are listed above under "Unicode overhaul". This change may break code that expects the old definitions.

    多くの Unicode 特性の定義が、現在の Unicode 標準に合わせる形で 変更されました。 上述の "Unicode overhaul" に一覧があります。 この変更によって、古い定義を想定しているコードは動かなくなるかもしれません。

  • The boolkeys op has moved to the group of hash ops. This breaks binary compatibility.

    boolkeys op は hash op のグループに移動しました。 これはバイナリ互換性を壊します。

  • Filehandles are now always blessed into IO::File.

    ファイルハンドルは常に IO::File に bless されるようになります。

    The previous behaviour was to bless Filehandles into FileHandle (an empty proxy class) if it was loaded into memory and otherwise to bless them into IO::Handle.

    以前の振る舞いは、ファイルハンドルがメモリに読み込まれたときには FileHandle (空の代理クラス) に bless され、さもなければ IO::Handle に bless されていました。

  • The semantics of use feature :5.10* have changed slightly. See "Modules and Pragmata" for more information.

    use feature :5.10* の文法が少し変更されました。 さらなる情報については "Modules and Pragmata" を参照してください。

  • Perl's developers now use git, rather than Perforce. This should be a purely internal change only relevant to people actively working on the core. However, you may see minor difference in perl as a consequence of the change. For example in some of details of the output of perl -V. See perlrepository for more information.

    Perl 開発者は Perforce ではく git を使うようになりました。 これは活発にコアで作業する人々にとってのみ影響がある、純粋に内部の 変更のはずです。 しかし、変更の結果として、perl にも多少の変更が見られます。 例えば、perl -V の出力の詳細の一部です。 さらなる情報については perlrepository を参照してください。

  • As part of the Test::Harness 2.x to 3.x upgrade, the experimental Test::Harness::Straps module has been removed. See "Modules and Pragmata" for more details.

    Test::Harness 2.x から 3.x へのアップグレードへの一部として、 実験的な Test::Harness::Straps モジュールは取り除かれました。 さらなる詳細については "Modules and Pragmata" を参照してください。

  • As part of the ExtUtils::MakeMaker upgrade, the ExtUtils::MakeMaker::bytes and ExtUtils::MakeMaker::vmsish modules have been removed from this distribution.

    ExtUtils::MakeMaker のアップグレードの一部として、 ExtUtils::MakeMaker::bytesExtUtils::MakeMaker::vmsish の モジュールはこの配布から取り除かれました。

  • Module::CoreList no longer contains the %:patchlevel hash.

    Module::CoreList はもはや %:patchlevel ハッシュを含まなくなりました。

  • length undef now returns undef.

    length undef は undef を返すようになりました。

  • Unsupported private C API functions are now declared "static" to prevent leakage to Perl's public API.

    非対応のプライベートな C API 関数は、Perl のパブリック API への 漏洩を防ぐために、"static" で宣言されるようになりました。

  • To support the bootstrapping process, miniperl no longer builds with UTF-8 support in the regexp engine.

    ブートストラップ処理に対応するために、miniperl は正規表現エンジンで UTF-8 対応なしでビルドされるようになりました。

    This allows a build to complete with PERL_UNICODE set and a UTF-8 locale. Without this there's a bootstrapping problem, as miniperl can't load the UTF-8 components of the regexp engine, because they're not yet built.

    これにより、PERL_UNICODE をセットして、UTF-8 ロケールでビルドが 完了するようになりました。 これなしではブートストラップに問題があり、まだビルドされていないので、 正規表現エンジンの UTF-8 コンポーネントを読み込めませんでした。

  • miniperl's @INC is now restricted to just -I..., the split of $ENV{PERL5LIB}, and "."

    miniperl の @INC は -I... のみに制限され、$ENV{PERL5LIB} と "." は切り離されました。

  • A space or a newline is now required after a "#line XXX" directive.

    "#line XXX" 指示子の後に空白か改行が必要になりました。

  • Tied filehandles now have an additional method EOF which provides the EOF type.

    tie されたファイルハンドルに、EOF の種類を提供するメソッド EOF が 追加されました。

  • To better match all other flow control statements, foreach may no longer be used as an attribute.

    その他全てのフロー制御文とよりよく一致させるために、 foreach は属性として使われなくなりました。

  • Perl's command-line switch "-P", which was deprecated in version 5.10.0, has now been removed.

    5.10.0 で非推奨となった Perl のコマンドラインオプション "-P" が 削除されました。

非推奨

From time to time, Perl's developers find it necessary to deprecate features or modules we've previously shipped as part of the core distribution. We are well aware of the pain and frustration that a backwards-incompatible change to Perl can cause for developers building or maintaining software in Perl. You can be sure that when we deprecate a functionality or syntax, it isn't a choice we make lightly. Sometimes, we choose to deprecate functionality or syntax because it was found to be poorly designed or implemented. Sometimes, this is because they're holding back other features or causing performance problems. Sometimes, the reasons are more complex. Wherever possible, we try to keep deprecated functionality available to developers in its previous form for at least one major release. So long as a deprecated feature isn't actively disrupting our ability to maintain and extend Perl, we'll try to leave it in place as long as possible.

時々、Perl の開発者は、以前コア配布の一部として出荷した機能やモジュールを 非推奨とする必要があることに気付きます。 私たちは、Perl に過去互換性のない変更をすることで Perl のソフトウェアを ビルドしたり保守したりする開発者に引き起こす苦痛といらだちについて よくわかっています。 私たちがある機能や文法を非推奨にしたとき、それは簡単な 選択ではなかったということは間違いありません。 時には、ある機能や文法が、設計や実装がまずいことを発見して非推奨に することを選択します。 時には、他の機能に差し支えたり、性能上の問題を引き起こすのが理由です。 時には、理由はもっと複雑です。 可能であるなら、私たちは少なくとも 1 メジャーリリースの間 非推奨の機能を以前の形で開発者に利用可能なままにしています。 非推奨の機能が Perl を管理・拡張する私たちの能力を大きく 混乱させないうちは、私たちは機能を出来るだけ長くそのままにしようと しています。

The following items are now deprecated:

以下のものは非推奨となりました:

suidperl

suidperl is no longer part of Perl. It used to provide a mechanism to emulate setuid permission bits on systems that don't support it properly.

suidperl はもはや Perl の一部ではありません。 これは setuid 許可ビットを正しく扱えないシステムで、これを エミュレートする機構を提供していました。

Use of := to mean an empty attribute list

An accident of Perl's parser meant that these constructions were all equivalent:

事故により、Perl のパーサーは以下の構造が全て等価になってしまっていました:

    my $pi := 4;
    my $pi : = 4;
    my $pi :  = 4;

with the : being treated as the start of an attribute list, which ends before the =. As whitespace is not significant here, all are parsed as an empty attribute list, hence all the above are equivalent to, and better written as

: は、= で終わるまでの属性として扱われました。 ここでは空白は意味を持たないので、全ては空属性リストとしてパースされ、 従って上記は全て等価となるので、以下のように書いた方がよいです

    my $pi = 4;

because no attribute processing is done for an empty list.

なぜなら空リストには属性処理は行われないからです。

As is, this meant that := cannot be used as a new token, without silently changing the meaning of existing code. Hence that particular form is now deprecated, and will become a syntax error. If it is absolutely necessary to have empty attribute lists (for example, because of a code generator) then avoid the warning by adding a space before the =.

今のままでは、これは、既にあるコードの意味を暗黙に変更しなければ、 := を新しいトークンとして使えないことを意味します。 従って、特定の形式は非推奨となり、将来文法エラーとなる予定です。 (例えば、コードジェネレータによって)本当に空属性リストが必要な場合は、 = の前に空白を追加することによって警告を回避してください。

UNIVERSAL->import()

The method UNIVERSAL->import() is now deprecated. Attempting to pass import arguments to a use UNIVERSAL statement will result in a deprecation warning.

UNIVERSAL->import() メソッドは非推奨となりました。 インポート引数を use UNIVERSAL 文に渡そうとすると非推奨警告が出ます。

Use of "goto" to jump into a construct

Using goto to jump from an outer scope into an inner scope is now deprecated. This rare use case was causing problems in the implementation of scopes.

goto を外側のスコープから内側のスコープへジャンプするために使うのは 非推奨となりました。 この希なユースケースはスコープの実装に問題を引き起こします。

Custom character names in \N{name} that don't look like names

In \N{name}, name can be just about anything. The standard Unicode names have a very limited domain, but a custom name translator could create names that are, for example, made up entirely of punctuation symbols. It is now deprecated to make names that don't begin with an alphabetic character, and aren't alphanumeric or contain other than a very few other characters, namely spaces, dashes, parentheses and colons. Because of the added meaning of \N (See "\N experimental regex escape"), names that look like curly brace -enclosed quantifiers won't work. For example, \N{3,4} now means to match 3 to 4 non-newlines; before a custom name 3,4 could have been created.

\N{name} において、name は何でも構いません。 標準の Unicode 名はとても制限された範囲になっていますが、 カスタム名変換器は、例えば、句読点だけからなるシンボルを作ることができます。 英字で始まらない名前や、英数字とその他の数文字(空白、ダッシュ、かっこ、 コロン)以外の文字を含む名前は非推奨となりました。 \N の意味が追加された("\N experimental regex escape" を 参照してください)ので、中かっこでくくられた量指定子のように見える 名前は動作しません。 例えば、\N{3,4} は 3 から 4 文字の非改行文字にマッチングします; 以前はカスタム名 3,4 が作成されていました。

Deprecated Modules

(非推奨モジュール)

The following modules will be removed from the core distribution in a future release, and should be installed from CPAN instead. Distributions on CPAN which require these should add them to their prerequisites. The core versions of these modules warnings will issue a deprecation warning.

以下のモジュールは将来のリリースではコア配布からは取り除かれ、 代わりに CPAN からインストールするようになります。 CPAN での配布物のでこれらのモジュールが必要な場合は、事前条件に追加する 必要があります。 これらのモジュールのコア版は、非推奨警告を発生させます。

If you ship a packaged version of Perl, either alone or as part of a larger system, then you should carefully consider the reprecussions of core module deprecations. You may want to consider shipping your default build of Perl with packages for some or all deprecated modules which install into vendor or site perl library directories. This will inhibit the deprecation warnings.

単独、あるいはより大きいシステムの一部として、パッケージ版の Perl を 出荷する場合、非推奨のコアモジュールの影響を注意深く検討するべきです。 いくつか、あるいは全ての非推奨モジュールを perl ライブラリディレクトリ vendorsite にインストールして Perl のデフォルトビルドを 出荷したいかもしれません。 これは非推奨警告を抑制します。

Alternatively, you may want to consider patching lib/deprecate.pm to provide deprecation warnings specific to your packaging system or distribution of Perl, consistent with how your packaging system or distribution manages a staged transition from a release where the installation of a single package provides the given functionality, to a later release where the system administrator needs to know to install multiple packages to get that same functionality.

あるいは、lib/deprecate.pm にパッチを当てて、 あなたのパッケージシステムや配布が、単一のパッケージのインストールがある 機能を提供するリリースから、同じ機能を得るために複数のパッケージを インストールすることをシステム管理者が知る必要があるより新しいリリースへの 段階的な移行する方法と一貫した、あなたのパッケージシステムや Perl の配布に固有の警告メッセージを提供したいかもしれません。

You can silence these deprecation warnings by installing the modules in question from CPAN. To install the latest version of all of them, just install Task::Deprecations::5_12.

モジュールを CPAN からインストールすることによって、非推奨警告を 消すことができます。 これら全ての最新版をインストールするには、単に Task::Deprecations::5_12 をインストールしてください。

Class::ISA
Pod::Plainer
Shell
Switch

Switch is buggy and should be avoided. You may find Perl's new given/when feature a suitable replacement. See "Switch statements" in perlsyn for more information.

Switch はバグが多いので避けるべきです。 Perl の新しい given/when 機能が適切な代替品です。 さらなる情報については "Switch statements" in perlsyn を 参照してください。

Assignment to $[

($[ への代入)

Use of the attribute :locked on subroutines

(サブルーチンへの :locked 属性の使用)

Use of "locked" with the attributes pragma

(attributes プラグマでの "locked" の使用)

Use of "unique" with the attributes pragma

(attributes プラグマでの "unique" の使用)

Perl_pmflag

Perl_pmflag is no longer part of Perl's public API. Calling it now generates a deprecation warning, and it will be removed in a future release. Although listed as part of the API, it was never documented, and only ever used in toke.c, and prior to 5.10, regcomp.c. In core, it has been replaced by a static function.

Perl_pmflag はもはや Perl の公開 API ではありません。 これを呼び出すと非推奨警告が生成され、これは将来のリリースで 取り除かれます。 API の一覧には載っていましたが、文書化されたことはなく、 toke.c と、5.10 以前での regcomp.c でのみ使われていました。 コアでは、これは static 版に置き換えられました。

Numerous Perl 4-era libraries

(大量の Perl 4 時代のライブラリ)

termcap.pl, tainted.pl, stat.pl, shellwords.pl, pwd.pl, open3.pl, open2.pl, newgetopt.pl, look.pl, find.pl, finddepth.pl, importenv.pl, hostname.pl, getopts.pl, getopt.pl, getcwd.pl, flush.pl, fastcwd.pl, exceptions.pl, ctime.pl, complete.pl, cacheout.pl, bigrat.pl, bigint.pl, bigfloat.pl, assert.pl, abbrev.pl, dotsh.pl, and timelocal.pl are all now deprecated. Earlier, Perl's developers intended to remove these libraries from Perl's core for the 5.14.0 release.

termcap.pl, tainted.pl, stat.pl, shellwords.pl, pwd.pl, open3.pl, open2.pl, newgetopt.pl, look.pl, find.pl, finddepth.pl, importenv.pl, hostname.pl, getopts.pl, getopt.pl, getcwd.pl, flush.pl, fastcwd.pl, exceptions.pl, ctime.pl, complete.pl, cacheout.pl, bigrat.pl, bigint.pl, bigfloat.pl, assert.pl, abbrev.pl, dotsh.pl, timelocal.pl は全て非推奨となりました。 以前、Perl の開発者は 5.14.0 リリースでこれらのライブラリを Perl コアから 削除しようとしていました。

During final testing before the release of 5.12.0, several developers discovered current production code using these ancient libraries, some inside the Perl core itself. Accordingly, the pumpking granted them a stay of execution. They will begin to warn about their deprecation in the 5.14.0 release and will be removed in the 5.16.0 release.

5.12.0 リリース前の最終テスト中に、複数の開発者が現在の製品コードがこれらの 古いライブラリを使っていることを発見しました; その一部は Perl コア 自身の中にありました。 それで、パンプキングはこれらのライブラリの処刑を猶予しました。 これらは 5.14.0 リリースから非推奨警告が出るようになり、 5.16.0 リリースで削除される予定です。

Unicode のオーバーホール

Perl's developers have made a concerted effort to update Perl to be in sync with the latest Unicode standard. Changes for this include:

Perl の開発者は、Perl を最新の Unicode 標準と同期するように更新することに 断固とした努力を行っています。 これに関する変更には以下のものを含みます:

Perl can now handle every Unicode character property. New documentation, perluniprops, lists all available non-Unihan character properties. By default, perl does not expose Unihan, deprecated or Unicode-internal properties. See below for more details on these; there is also a section in the pod listing them, and explaining why they are not exposed.

Perl は全ての Unicode 文字特性を扱えるようになりました。 新しい文書である perluniprops には全ての利用可能な非 Unihan 文字特性の 一覧があります。 デフォルトでは、perl は Unihan、非推奨、Unicode 内部の特性を公開しません。 これらに関するさらなる詳細については以下を参照してください; pod にもこれらの一覧があり、なぜ公開しないのかの説明もあります。

Perl now fully supports the Unicode compound-style of using = and : in writing regular expressions: \p{property=value} and \p{property:value} (both of which mean the same thing).

正規表現を書くときに =: を使った複合型 Unicode に完全に 対応するようになりました: \p{property=value}\p{property:value} です (これらはどちらも同じ意味です)。

Perl now fully supports the Unicode loose matching rules for text between the braces in \p{...} constructs. In addition, Perl allows underscores between digits of numbers.

Unicode の\p{...} 構造で、中かっこの間のテキストでの ゆるいマッチングルールに完全に対応しました。 さらに、数値の数字の間に下線を許すようになりました。

Perl now accepts all the Unicode-defined synonyms for properties and property values.

Perl は Unicode で定義された、特性への別名と特性値全てを 受け付けるようになりました。

qr/\X/, which matches a Unicode logical character, has been expanded to work better with various Asian languages. It now is defined as an extended grapheme cluster. (See http://www.unicode.org/reports/tr29/). Anything matched previously and that made sense will continue to be accepted. Additionally:

Unicode 論理文字にマッチングする qr/\X/ は、様々なアジア言語で よりよく働くように拡張されました。 これは 拡張書記素クラスタ として定義されます。 (http://www.unicode.org/reports/tr29/ を参照してください)。 以前からマッチングしていたものは引き続きマッチングします。 さらに:

  • \X will not break apart a CR LF sequence.

    \XCR LF シーケンスに分割されません。

  • \X will now match a sequence which includes the ZWJ and ZWNJ characters.

    \X は、ZWJZWNJ の文字を含むシーケンスにも マッチングするようになりました。

  • \X will now always match at least one character, including an initial mark. Marks generally come after a base character, but it is possible in Unicode to have them in isolation, and \X will now handle that case, for example at the beginning of a line, or after a ZWSP. And this is the part where \X doesn't match the things that it used to that don't make sense. Formerly, for example, you could have the nonsensical case of an accented LF.

    \X は常に、最初のマークを含む、最低 1 文字とマッチングするように なりました。 マークは一般的には規定文字の後に現れますが、Unicode ではこれらを 単独で使うことも可能で、\X はこのような場合、つまり行頭や、 ZWSP の後のような場合でも正しく扱えるようになりました。 これは、\X が無意味なものにマッチングしなくなったことの 一部です。 以前は、例えば、アクセント付きの LF という無意味な場合がありました。

  • \X will now match a (Korean) Hangul syllable sequence, and the Thai and Lao exception cases.

    \X はハングル音節文字と、タイとラオスの例外ケースに マッチングするようになりました。

Otherwise, this change should be transparent for the non-affected languages.

それ以外では、この変更は影響を与えない言語では透過的です。

\p{...} matches using the Canonical_Combining_Class property were completely broken in previous releases of Perl. They should now work correctly.

Canonical_Combining_Class 特性を使った \p{...} マッチングは 以前にリリースされた Perl では完全に壊れていました。 これらは正しく動作するようになったはずです。

Before Perl 5.12, the Unicode Decomposition_Type=Compat property and a Perl extension had the same name, which led to neither matching all the correct values (with more than 100 mistakes in one, and several thousand in the other). The Perl extension has now been renamed to be Decomposition_Type=Noncanonical (short: dt=noncanon). It has the same meaning as was previously intended, namely the union of all the non-canonical Decomposition types, with Unicode Compat being just one of those.

Perl 5.12 より前では、Unicode の Decomposition_Type=Compat 特性と Perl のエクステンションが同じ名前を持っていて、全ての正しい値には マッチングしなくなっていました(100 以上間違えたり、数千間違えたりします)。 Perl のエクステンションの名前は Decomposition_Type=Noncanonical (短縮形: dt=noncanon) に変更されました。 これは以前想定していたものと同じ意味を持ちます; つまり全ての 非正準分解型の和集合です; そして Unicode の Compat は単にその一部です。

\p{Decomposition_Type=Canonical} now includes the Hangul syllables.

\p{Decomposition_Type=Canonical} はハングル音節文字を 含むようになりました。

\p{Uppercase} and \p{Lowercase} now work as the Unicode standard says they should. This means they each match a few more characters than they used to.

\p{Uppercase}\p{Lowercase} は、Unicode 標準がそうするべきと している通りに動作するようになりました。 これは、今までよりもマッチングする文字が数文字多くなることを意味します。

\p{Cntrl} now matches the same characters as \p{Control}. This means it no longer will match Private Use (gc=co), Surrogates (gc=cs), nor Format (gc=cf) code points. The Format code points represent the biggest possible problem. All but 36 of them are either officially deprecated or strongly discouraged from being used. Of those 36, likely the most widely used are the soft hyphen (U+00AD), and BOM, ZWSP, ZWNJ, WJ, and similar characters, plus bidirectional controls.

\p{Cntrl}\p{Control} と同じ文字にマッチングするようになりました。 これは、もはや Private Use (gc=co), Surrogates (gc=cs), Format (gc=cf) 符号位置とマッチングしないことを意味します。 Format 符号位置は最大の可能性がある問題を意味します。 これらのうち、36 以外のものは公式に非推奨か、使用は全く お勧めできません。 もっとも広く使われているらしい 36 は、ソフトハイフン (U+00AD), BOM, ZWSP, ZWNJ, WJ 及び同様の文字、さらに双方向制御です。

\p{Alpha} now matches the same characters as \p{Alphabetic}. Before 5.12, Perl's definition definition included a number of things that aren't really alpha (all marks) while omitting many that were. The definitions of \p{Alnum} and \p{Word} depend on Alpha's definition and have changed accordingly.

\p{Alpha}\p{Alphabetic} と同じ文字に マッチングするようになりました。 5.12 より前では、Perl での定義には実際には Alpha (全てのマーク) ではない 多くのものを含んでいる一方、Alpha である多くのものが除外されていました。 \p{Alnum}\p{Word} の定義は Alpha の定義に依存していて、 同様に変更されました。

\p{Word} no longer incorrectly matches non-word characters such as fractions.

\p{Word} は、間違って分数のような非単語文字とマッチングしていましたが、 しなくなりました。

\p{Print} no longer matches the line control characters: Tab, LF, CR, FF, VT, and NEL. This brings it in line with standards and the documentation.

\p{Print} は、もはや行制御文字 (Tab, LF, CR, FF, VT, NEL) と マッチングしなくなりました。 これにより標準と文書が一致します。

\p{XDigit} now matches the same characters as \p{Hex_Digit}. This means that in addition to the characters it currently matches, [A-Fa-f0-9], it will also match the 22 fullwidth equivalents, for example U+FF10: FULLWIDTH DIGIT ZERO.

\p{XDigit}\p{Hex_Digit} と同じ文字に マッチングするようになりました。 これは、今マッチングしている文字 [A-Fa-f0-9] に追加して、 U+FF10: FULLWIDTH DIGIT ZERO のような、22 個の等価な全角文字にも マッチングするようになりました。

The Numeric type property has been extended to include the Unihan characters.

数値特性は、Unihan 文字を含むように拡張されました。

There is a new Perl extension, the 'Present_In', or simply 'In', property. This is an extension of the Unicode Age property, but \p{In=5.0} matches any code point whose usage has been determined as of Unicode version 5.0. The \p{Age=5.0} only matches code points added in precisely version 5.0.

Perl の新しい拡張として 'Present_In' あるいは単に 'In' という特性があります。 これは Unicode Age 特性の拡張ですが、\p{In=5.0} は Unicode バージョン 5.0 現在で 使い方が決定されているあらゆる符号位置に マッチングします。 \p{Age=5.0}まさに バージョン 5.0 で追加された符号位置にのみ マッチングします。

A number of properties now have the correct values for unassigned code points. The affected properties are Bidi_Class, East_Asian_Width, Joining_Type, Decomposition_Type, Hangul_Syllable_Type, Numeric_Type, and Line_Break.

多くの特性が、割り当てられていない符号位置に対して正しい値を 持つようになりました。 影響のある特性は Bidi_Class, East_Asian_Width, Joining_Type, Decomposition_Type, Hangul_Syllable_Type, Numeric_Type, Line_Break です。

The Default_Ignorable_Code_Point, ID_Continue, and ID_Start properties are now up to date with current Unicode definitions.

Default_Ignorable_Code_Point, ID_Continue, ID_Start 特性は現在の Unicode 定義に更新されました。

Earlier versions of Perl erroneously exposed certain properties that are supposed to be Unicode internal-only. Use of these in regular expressions will now generate, if enabled, a deprecation warning message. The properties are: Other_Alphabetic, Other_Default_Ignorable_Code_Point, Other_Grapheme_Extend, Other_ID_Continue, Other_ID_Start, Other_Lowercase, Other_Math, and Other_Uppercase.

Perl の以前のバージョンでは、Unicode 内部専用となっているいくつかの 特性が間違って露出していました。 正規表現でこれらを使うと、(有効になっている場合は)非推奨警告メッセージが 生成されます。 問題の特性は: Other_Alphabetic, Other_Default_Ignorable_Code_Point, Other_Grapheme_Extend, Other_ID_Continue, Other_ID_Start, Other_Lowercase, Other_Math, Other_Uppercase です。

It is now possible to change which Unicode properties Perl understands on a per-installation basis. As mentioned above, certain properties are turned off by default. These include all the Unihan properties (which should be accessible via the CPAN module Unicode::Unihan) and any deprecated or Unicode internal-only property that Perl has never exposed.

Perl がどの Unicode 特性を理解するかをインストール毎に変更可能に なりました。 上述のように、いくつかの特性はデフォルトでは無効になっています。 これには全ての Unihan 特性 (これらは CPAN モジュール Unicode::Unihan 経由でアクセスできます) 、 非推奨特性、Perl が決して露出させない Unicode 内部専用の特性を含みます。

The generated files in the lib/unicore/To directory are now more clearly marked as being stable, directly usable by applications. New hash entries in them give the format of the normal entries, which allows for easier machine parsing. Perl can generate files in this directory for any property, though most are suppressed. You can find instructions for changing which are written in perluniprops.

lib/unicore/To ディレクトリに生成されたファイルは、安定していて、 アプリケーションから直接利用可能であるとより明確に記されました。 これらの新しいハッシュエントリは通常のエントリの形式であり、 マシンがよりよくパースできるようになっています。 Perl はあらゆる特性に関してこのディレクトリにファイルを生成できますが、 ほとんどは抑制されています。 何が書かれるかを変更する手順は perluniprops にあります。

モジュールとプラグマ

新しいモジュールとプラグマ

autodie

autodie is a new lexically-scoped alternative for the Fatal module. The bundled version is 2.06_01. Note that in this release, using a string eval when autodie is in effect can cause the autodie behaviour to leak into the surrounding scope. See "BUGS" in autodie for more details.

autodieFatal モジュール代用品で、新しくレキシカルスコープを 持つものです。 同梱されているバージョンは 2.06_01 です。 このリリースでは、autodie が有効の時に文字列 eval を使うと、 autodie の振る舞いが周りのスコープに漏れるかもしれないことに 注意してください。 さらなる詳細については "BUGS" in autodie を参照してください。

Version 2.06_01 has been added to the Perl core.

バージョン 2.06_01 が Perl コアに追加されました。

Compress::Raw::Bzip2

Version 2.024 has been added to the Perl core.

バージョン 2.024 が Perl コアに追加されました。

overloading

overloading allows you to lexically disable or enable overloading for some or all operations.

このプラグマは、演算子の一部あるいは全部を、レキシカルに無効化あるいは 有効化します。

Version 0.001 has been added to the Perl core.

バージョン 0.001 が Perl コアに追加されました。

parent

parent establishes an ISA relationship with base classes at compile time. It provides the key feature of base without further unwanted behaviors.

parent は、基底クラスとの ISA 関係をコンパイル時に構築します。 これは、更なる望まない振る舞いなしに base の主となる機能を 提供します。

Version 0.223 has been added to the Perl core.

バージョン 0.223 が Perl コアに追加されました。

Parse::CPAN::Meta

Version 1.40 has been added to the Perl core.

バージョン 1.40 が Perl コアに追加されました。

VMS::DCLsym

Version 1.03 has been added to the Perl core.

バージョン 1.03 が Perl コアに追加されました。

VMS::Stdio

Version 2.4 has been added to the Perl core.

バージョン 2.4 が Perl コアに追加されました。

XS::APItest::KeywordRPN

Version 0.003 has been added to the Perl core.

バージョン 0.003 が Perl コアに追加されました。

更新されたプラグマ

base

Upgraded from version 2.13 to 2.15.

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

bignum

Upgraded from version 0.22 to 0.23.

バージョン 0.22 から 0.23 に更新されました。

charnames

charnames now contains the Unicode NameAliases.txt database file. This has the effect of adding some extra \N character names that formerly wouldn't have been recognised; for example, "\N{LATIN CAPITAL LETTER GHA}".

charnames は Unicode NameAliases.txt データベースファイルを 含むようになりました。 これにより、以前は認識されなかった追加の \N 文字名(例えば "\N{LATIN CAPITAL LETTER GHA}") が追加される効果があります。

Upgraded from version 1.06 to 1.07.

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

constant

Upgraded from version 1.13 to 1.20.

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

diagnostics

diagnostics now supports %.0f formatting internally.

diagnostics は内部で %.0f フォーマットに対応するようになりました。

diagnostics no longer suppresses Use of uninitialized value in range (or flip) warnings. [perl #71204]

diagnostics はもはや Use of uninitialized value in range (or flip) 警告を抑制しません。 [perl #71204]

Upgraded from version 1.17 to 1.19.

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

feature

In feature, the meaning of the :5.10 and :5.10.X feature bundles has changed slightly. The last component, if any (i.e. X) is simply ignored. This is predicated on the assumption that new features will not, in general, be added to maintenance releases. So :5.10 and :5.10.X have identical effect. This is a change to the behaviour documented for 5.10.0.

feature では、:5.10 および :5.10.X で組み込まれる機能が僅かに 変更されました。 最後の要素 (つまり X) がもしあっても、単に無視されます。 これは、一般的にはメンテナンスリリースでは新しい機能はないという仮定に 基づいています。 従って、:5.10:5.10.X は同じ効果を持ちます。 これは 5.10.0 で文書化されている振る舞いへの変更です。

feature now includes the unicode_strings feature:

featureunicode_strings 機能を含むようになりました:

    use feature "unicode_strings";

This pragma turns on Unicode semantics for the case-changing operations (uc, lc, ucfirst, lcfirst) on strings that don't have the internal UTF-8 flag set, but that contain single-byte characters between 128 and 255.

このプラグマは、内部 UTF-8 フラグは設定されていないけれども、128 から 255 までの単一バイト文字を含んでいる文字列に対する、大文字小文字を変更する 操作 (uc, lc, ucfirst, lcfirst) での Unicode の意味論を 有効にします。

Upgraded from version 1.11 to 1.16.

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

less

less now includes the stash_name method to allow subclasses of less to pick where in %^H to store their stash.

less には、less のサブクラスから、自分のスタッシュが %^H のどこに 保管されているかをわかるようにするための stash_name メソッドが 追加されました。

Upgraded from version 0.02 to 0.03.

バージョン 0.02 から 0.03 に更新されました。

lib

Upgraded from version 0.5565 to 0.62.

バージョン 0.5565 から 0.62 に更新されました。

mro

mro is now implemented as an XS extension. The documented interface has not changed. Code relying on the implementation detail that some mro:: methods happened to be available at all times gets to "keep both pieces".

mro は XS エクステンションとして実行されました。 文書化されたインターフェースに変更はありません。 利用可能になってしまっていたいくつかの mro:: メソッドの実装詳細に 依存しているコードは、"keep both pieces" になります。

Upgraded from version 1.00 to 1.02.

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

overload

overload now allow overloading of 'qr'.

overload は 'qr' をオーバーロードできるようになりました。

Upgraded from version 1.06 to 1.10.

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

threads

Upgraded from version 1.67 to 1.75.

バージョン 1.67 から 1.75 に更新されました。

threads::shared

Upgraded from version 1.14 to 1.32.

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

version

version now has support for "Version number formats" as described earlier in this document and in its own documentation.

version は、この文書のはじめの方で記述し、独自の文書もある、 "Version number formats" に対応しました。

Upgraded from version 0.74 to 0.82.

バージョン 0.74 から 0.82 に更新されました。

warnings

warnings has a new warnings::fatal_enabled() function. It also includes a new illegalproto warning category. See also "New or Changed Diagnostics" for this change.

warnings に新しい warnings::fatal_enabled() 関数が追加されました。 また、新しい illegalproto 警告カテゴリが追加されました。 この変更については "New or Changed Diagnostics" も参照してください。

Upgraded from version 1.06 to 1.09.

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

更新されたモジュール

Archive::Extract

Upgraded from version 0.24 to 0.38.

バージョン 0.24 から 0.38 に更新されました。

Archive::Tar

Upgraded from version 1.38 to 1.54.

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

Attribute::Handlers

Upgraded from version 0.79 to 0.87.

バージョン 0.79 から 0.87 に更新されました。

AutoLoader

Upgraded from version 5.63 to 5.70.

バージョン 5.63 から 5.70 に更新されました。

B::Concise

Upgraded from version 0.74 to 0.78.

バージョン 0.74 から 0.78 に更新されました。

B::Debug

Upgraded from version 1.05 to 1.12.

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

B::Deparse

Upgraded from version 0.83 to 0.96.

バージョン 0.83 から 0.96 に更新されました。

B::Lint

Upgraded from version 1.09 to 1.11_01.

バージョン 1.09 から 1.11_01 に更新されました。

CGI

Upgraded from version 3.29 to 3.48.

バージョン 3.29 から 3.48 に更新されました。

Class::ISA

Upgraded from version 0.33 to 0.36.

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

NOTE: Class::ISA is deprecated and may be removed from a future version of Perl.

注意: Class::ISA は非推奨で、将来のバージョンの Perl では 削除されるかもしれません。

Compress::Raw::Zlib

Upgraded from version 2.008 to 2.024.

バージョン 2.008 から 2.024 に更新されました。

CPAN

Upgraded from version 1.9205 to 1.94_56.

バージョン 1.9205 から 1.94_56 に更新されました。

CPANPLUS

Upgraded from version 0.84 to 0.90.

バージョン 0.84 から 0.90 に更新されました。

CPANPLUS::Dist::Build

Upgraded from version 0.06_02 to 0.46.

バージョン 0.06_02 から 0.46 に更新されました。

Data::Dumper

Upgraded from version 2.121_14 to 2.125.

バージョン 2.121_14 から 2.125 に更新されました。

DB_File

Upgraded from version 1.816_1 to 1.820.

バージョン 1.816_1 から 1.820 に更新されました。

Devel::PPPort

Upgraded from version 3.13 to 3.19.

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

Digest

Upgraded from version 1.15 to 1.16.

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

Digest::MD5

Upgraded from version 2.36_01 to 2.39.

バージョン 2.36_01 から 2.39 に更新されました。

Digest::SHA

Upgraded from version 5.45 to 5.47.

バージョン 5.45 から 5.47 に更新されました。

Encode

Upgraded from version 2.23 to 2.39.

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

Exporter

Upgraded from version 5.62 to 5.64_01.

バージョン 5.62 から 5.64_01 に更新されました。

ExtUtils::CBuilder

Upgraded from version 0.21 to 0.27.

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

ExtUtils::Command

Upgraded from version 1.13 to 1.16.

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

ExtUtils::Constant

Upgraded from version 0.2 to 0.22.

バージョン 0.2 から 0.22 に更新されました。

ExtUtils::Install

Upgraded from version 1.44 to 1.55.

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

ExtUtils::MakeMaker

Upgraded from version 6.42 to 6.56.

バージョン 6.42 から 6.56 に更新されました。

ExtUtils::Manifest

Upgraded from version 1.51_01 to 1.57.

バージョン 1.51_01 から 1.57 に更新されました。

ExtUtils::ParseXS

Upgraded from version 2.18_02 to 2.21.

バージョン 2.18_02 から 2.21 に更新されました。

File::Fetch

Upgraded from version 0.14 to 0.24.

バージョン 0.14 から 0.24 に更新されました。

File::Path

Upgraded from version 2.04 to 2.08_01.

バージョン 2.04 から 2.08_01 に更新されました。

File::Temp

Upgraded from version 0.18 to 0.22.

バージョン 0.18 から 0.22 に更新されました。

Filter::Simple

Upgraded from version 0.82 to 0.84.

バージョン 0.82 から 0.84 に更新されました。

Filter::Util::Call

Upgraded from version 1.07 to 1.08.

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

Getopt::Long

Upgraded from version 2.37 to 2.38.

バージョン 2.37 から 2.38 に更新されました。

IO

Upgraded from version 1.23_01 to 1.25_02.

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

IO::Zlib

Upgraded from version 1.07 to 1.10.

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

IPC::Cmd

Upgraded from version 0.40_1 to 0.54.

バージョン 0.40_1 から 0.54 に更新されました。

IPC::SysV

Upgraded from version 1.05 to 2.01.

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

Locale::Maketext

Upgraded from version 1.12 to 1.14.

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

Locale::Maketext::Simple

Upgraded from version 0.18 to 0.21.

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

Log::Message

Upgraded from version 0.01 to 0.02.

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

Log::Message::Simple

Upgraded from version 0.04 to 0.06.

バージョン 0.04 から 0.06 に更新されました。

Math::BigInt

Upgraded from version 1.88 to 1.89_01.

バージョン 1.88 から 1.89_01 に更新されました。

Math::BigInt::FastCalc

Upgraded from version 0.16 to 0.19.

バージョン 0.16 から 0.19 に更新されました。

Math::BigRat

Upgraded from version 0.21 to 0.24.

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

Math::Complex

Upgraded from version 1.37 to 1.56.

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

Memoize

Upgraded from version 1.01_02 to 1.01_03.

バージョン 1.01_02 から 1.01_03 に更新されました。

MIME::Base64

Upgraded from version 3.07_01 to 3.08.

バージョン 3.07_01 から 3.08 に更新されました。

Module::Build

Upgraded from version 0.2808_01 to 0.3603.

バージョン 0.2808_01 から 0.3603 に更新されました。

Module::CoreList

Upgraded from version 2.12 to 2.29.

バージョン 2.12 から 2.29 に更新されました。

Module::Load

Upgraded from version 0.12 to 0.16.

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

Module::Load::Conditional

Upgraded from version 0.22 to 0.34.

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

Module::Loaded

Upgraded from version 0.01 to 0.06.

バージョン 0.01 から 0.06 に更新されました。

Module::Pluggable

Upgraded from version 3.6 to 3.9.

バージョン 3.6 から 3.9 に更新されました。

Net::Ping

Upgraded from version 2.33 to 2.36.

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

NEXT

Upgraded from version 0.60_01 to 0.64.

バージョン 0.60_01 から 0.64 に更新されました。

Object::Accessor

Upgraded from version 0.32 to 0.36.

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

Package::Constants

Upgraded from version 0.01 to 0.02.

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

PerlIO

Upgraded from version 1.04 to 1.06.

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

Pod::Parser

Upgraded from version 1.35 to 1.37.

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

Pod::Perldoc

Upgraded from version 3.14_02 to 3.15_02.

バージョン 3.14_02 から 3.15_02 に更新されました。

Pod::Plainer

Upgraded from version 0.01 to 1.02.

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

NOTE: Pod::Plainer is deprecated and may be removed from a future version of Perl.

注意: Pod::Plainer は非推奨で、将来のバージョンの Perl では 削除されるかもしれません。

Pod::Simple

Upgraded from version 3.05 to 3.13.

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

Safe

Upgraded from version 2.12 to 2.22.

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

SelfLoader

Upgraded from version 1.11 to 1.17.

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

Storable

Upgraded from version 2.18 to 2.22.

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

Switch

Upgraded from version 2.13 to 2.16.

バージョン 2.13 から 2.16 に更新されました。

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

注意: Switch は非推奨で、将来のバージョンの Perl では 削除されるかもしれません。

Sys::Syslog

Upgraded from version 0.22 to 0.27.

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

Term::ANSIColor

Upgraded from version 1.12 to 2.02.

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

Term::UI

Upgraded from version 0.18 to 0.20.

バージョン 0.18 から 0.20 に更新されました。

Test

Upgraded from version 1.25 to 1.25_02.

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

Test::Harness

Upgraded from version 2.64 to 3.17.

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

Test::Simple

Upgraded from version 0.72 to 0.94.

バージョン 0.72 から 0.94 に更新されました。

Text::Balanced

Upgraded from version 2.0.0 to 2.02.

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

Text::ParseWords

Upgraded from version 3.26 to 3.27.

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

Text::Soundex

Upgraded from version 3.03 to 3.03_01.

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

Thread::Queue

Upgraded from version 2.00 to 2.11.

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

Thread::Semaphore

Upgraded from version 2.01 to 2.09.

バージョン 2.01 から 2.09 に更新されました。

Tie::RefHash

Upgraded from version 1.37 to 1.38.

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

Time::HiRes

Upgraded from version 1.9711 to 1.9719.

バージョン 1.9711 から 1.9719 に更新されました。

Time::Local

Upgraded from version 1.18 to 1.1901_01.

バージョン 1.18 から 1.1901_01 に更新されました。

Time::Piece

Upgraded from version 1.12 to 1.15.

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

Unicode::Collate

Upgraded from version 0.52 to 0.52_01.

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

Unicode::Normalize

Upgraded from version 1.02 to 1.03.

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

Win32

Upgraded from version 0.34 to 0.39.

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

Win32API::File

Upgraded from version 0.1001_01 to 0.1101.

バージョン 0.1001_01 から 0.1101 に更新されました。

XSLoader

Upgraded from version 0.08 to 0.10.

バージョン 0.08 から 0.10 に更新されました。

削除されたモジュールとプラグマ

attrs

Removed from the Perl core. Prior version was 1.02.

Perl コアから削除されました。 以前のバージョンは 1.02 でした。

CPAN::API::HOWTO

Removed from the Perl core. Prior version was 'undef'.

Perl コアから削除されました。 以前のバージョンは 'undef' でした。

CPAN::DeferedCode

Removed from the Perl core. Prior version was 5.50.

Perl コアから削除されました。 以前のバージョンは 5.50 でした。

CPANPLUS::inc

Removed from the Perl core. Prior version was 'undef'.

Perl コアから削除されました。 以前のバージョンは 'undef' でした。

DCLsym

Removed from the Perl core. Prior version was 1.03.

Perl コアから削除されました。 以前のバージョンは 1.03 でした。

ExtUtils::MakeMaker::bytes

Removed from the Perl core. Prior version was 6.42.

Perl コアから削除されました。 以前のバージョンは 6.42 でした。

ExtUtils::MakeMaker::vmsish

Removed from the Perl core. Prior version was 6.42.

Perl コアから削除されました。 以前のバージョンは 6.42 でした。

Stdio

Removed from the Perl core. Prior version was 2.3.

Perl コアから削除されました。 以前のバージョンは 2.3 でした。

Test::Harness::Assert

Removed from the Perl core. Prior version was 0.02.

Perl コアから削除されました。 以前のバージョンは 0.02 でした。

Test::Harness::Iterator

Removed from the Perl core. Prior version was 0.02.

Perl コアから削除されました。 以前のバージョンは 0.02 でした。

Test::Harness::Point

Removed from the Perl core. Prior version was 0.01.

Perl コアから削除されました。 以前のバージョンは 0.01 でした。

Test::Harness::Results

Removed from the Perl core. Prior version was 0.01.

Perl コアから削除されました。 以前のバージョンは 0.01 でした。

Test::Harness::Straps

Removed from the Perl core. Prior version was 0.26_01.

Perl コアから削除されました。 以前のバージョンは 0.26_01 でした。

Test::Harness::Util

Removed from the Perl core. Prior version was 0.01.

Perl コアから削除されました。 以前のバージョンは 0.01 でした。

XSSymSet

Removed from the Perl core. Prior version was 1.1.

Perl コアから削除されました。 以前のバージョンは 1.1 でした。

非推奨になったモジュールとプラグマ

上述の "Deprecated Modules" を参照してください。

文書

新しい文書

  • perlhaiku contains instructions on how to build perl for the Haiku platform.

    perlhaiku には、Haiku プラットフォームで perl をビルドする方法に ついての説明が含まれています。

  • perlmroapi describes the new interface for pluggable Method Resolution Orders.

    perlmroapi は、プラグ可能なメソッド解決順序の新しい インターフェースを記述しています。

  • perlperf, by Richard Foley, provides an introduction to the use of performance and optimization techniques which can be used with particular reference to perl programs.

    perlperf は Richard Foley によるもので、perl プログラムの個々の 参照で使えるパフォーマンスと最適化の技術の使用に関する導入を 提供します。

  • perlrepository describes how to access the perl source using the git version control system.

    perlrepository は、git バージョン管理システムを使って perl の ソースにアクセスする方法について記述しています。

  • perlpolicy extends the "Social contract about contributed modules" into the beginnings of a document on Perl porting policies.

    perlpolicy は "Social contract about contributed modules" を Perl 移植ポリシーの文書の先頭に拡張しました。

既存の文書の変更

  • The various large Changes* files (which listed every change made to perl over the last 18 years) have been removed, and replaced by a small file, also called Changes, which just explains how that same information may be extracted from the git version control system.

    (過去 18 年間にわたって perl に対して行われた全ての変更の一覧である) 様々な大きな Changes* ファイルが取り除かれ、 単に git バージョン制御システムから同じ情報を取り出す方法を説明した 小さいファイル Changes に置き換えられました。

  • Porting/patching.pod has been deleted, as it mainly described interacting with the old Perforce-based repository, which is now obsolete. Information still relevant has been moved to perlrepository.

    Porting/patching.pod は削除されました; これは主に古い Perforce を基としたレポジトリとの相互作用について記述していて、 これは古いものです。 まだ関連のある情報は perlrepository に移動しました。

  • The syntax unless (EXPR) BLOCK else BLOCK is now documented as valid, as is the syntax unless (EXPR) BLOCK elsif (EXPR) BLOCK ... else BLOCK, although actually using the latter may not be the best idea for the readability of your source code.

    unless (EXPR) BLOCK else BLOCK という文法は有効であると文書化されました; unless (EXPR) BLOCK elsif (EXPR) BLOCK ... else BLOCK も同様です; しかし実際には後者を使うことは、ソースコードの可読性の面から 最良の考えではないでしょう。

  • Documented -X overloading.

    -X のオーバーロードが文書化されました。

  • Documented that when() treats specially most of the filetest operators

    when() がほとんどのファイルテスト演算子を特別に扱うことが文書化されました。

  • Documented when as a syntax modifier.

    文法修飾子としての when が文書化されました。

  • Eliminated "Old Perl threads tutorial", which described 5005 threads.

    5005 スレッドを記述した、「古い Perl スレッドのチュートリアル」が 削除されました。

    pod/perlthrtut.pod is the same material reworked for ithreads.

    pod/perlthrtut.pod はiスレッド用に書き換えられています。

  • Correct previous documentation: v-strings are not deprecated

    以前の文書が修正されました: v-文字列は非推奨ではありません

    With version objects, we need them to use MODULE VERSION syntax. This patch removes the deprecation notice.

    バージョンオブジェクトに対しては use MODULE VERSION 文法を使う必要が あります。 このパッチにより、非推奨の注意は削除されました。

  • Security contact information is now part of perlsec.

    セキュリティ窓口情報は perlsec の一部となりました。

  • A significant fraction of the core documentation has been updated to clarify the behavior of Perl's Unicode handling.

    コア文書のかなりの割合に対して、Perl の Unicode の扱いに関する振る舞いを 明確にするために更新されました。

    Much of the remaining core documentation has been reviewed and edited for clarity, consistent use of language, and to fix the spelling of Tom Christiansen's name.

    残りのコアドキュメントのほとんどが、明確化、言語の一貫した使用、 Tom Christiansen の綴りの修正のために見直され編集されました。

  • The Pod specification (perlpodspec) has been updated to bring the specification in line with modern usage already supported by most Pod systems. A parameter string may now follow the format name in a "begin/end" region. Links to URIs with a text description are now allowed. The usage of L<"section"> has been marked as deprecated.

    Pod 仕様書 (perlpodspec) は、ほとんどの Pod システムが既に対応している モダンな使用法に対応するように更新されました。 パラメータ文字列は "begin/end" 領域のフォーマット名の後に続くように なりました。 説明テキスト付きの URI へのリンクが可能になりました。 L<"section"> という使い方は非推奨となりました。

  • if.pm has been documented in "use" in perlfunc as a means to get conditional loading of modules despite the implicit BEGIN block around use.

    if.pm"use" in perlfunc で、use の周りの暗黙の BEGIN ブロックにも 関わらず、モジュールの条件付き読み込みの意味で文書化されていました。

  • The documentation for $1 in perlvar.pod has been clarified.

    perlvar.pod の $1 に関する文書が明確されました。

  • \N{U+wide hex char} is now documented.

    \N{U+wide hex char} が文書化されました。

パフォーマンスの向上の抜粋

  • A new internal cache means that isa() will often be faster.

    新しい内部キャッシュにより、isa() はしばしばより速くなります。

  • The implementation of C3 Method Resolution Order has been optimised - linearisation for classes with single inheritance is 40% faster. Performance for multiple inheritance is unchanged.

    C3 実装解決順序の実装が最適化されました - 単一継承クラスの 線形化は 40% 速くなりました。 多重継承の性能は変わりません。

  • Under use locale, the locale-relevant information is now cached on read-only values, such as the list returned by keys %hash. This makes operations such as sort keys %hash in the scope of use locale much faster.

    use locale の元では、ロケール関係の情報は、keys %hash で 返されるリストのように、読み込み専用値としてキャッシュされるように なりました。 これによって、use locale での sort keys %hash のような操作が とても速くなります。

  • Empty DESTROY methods are no longer called.

    空の DESTROY メソッドはもはや呼び出されなくなります。

  • Perl_sv_utf8_upgrade() is now faster.

    Perl_sv_utf8_upgrade() はより速くなりました。

  • keys on empty hash is now faster.

    空ハッシュに対する keys はより速くなりました。

  • if (%foo) has been optimized to be faster than if (keys %foo).

    if (%foo)if (keys %foo) より早くなるように最適化されました。

  • The string repetition operator ($str x $num) is now several times faster when $str has length one or $num is large.

    文字列繰り返し演算子 ($str x $num) は、$str が 1 文字だったり $num が大きいときに数倍速くなりました。

  • Reversing an array to itself (as in @a = reverse @a) in void context now happens in-place and is several orders of magnitude faster than it used to be. It will also preserve non-existent elements whenever possible, i.e. for non magical arrays or tied arrays with EXISTS and DELETE methods.

    無効コンテキストで (@a = reverse @a のように) 配列を反転して 自分自身に代入する場合、その場で行われるようになり、 以前より数桁速くなりました。 これはまた存在しない要素をできるだけ保存します; つまり、マジカルでない 配列や EXISTSDELETE メソッドを持つ tie された配列の場合です。

インストールと設定の改良

  • perlapi, perlintern, perlmodlib and perltoc are now all generated at build time, rather than being shipped as part of the release.

    perlapi, perlintern, perlmodlib, perltoc はリリースの 一部としてではなく、全てビルド時に生成されるようになりました。

  • If vendorlib and vendorarch are the same, then they are only added to @INC once.

    vendorlibvendorarch が同じなら、@INC には 1 回だけ 追加されます。

  • $Config{usedevel} and the C-level PERL_USE_DEVEL are now defined if perl is built with -Dusedevel.

    もし perl が -Dusedevel 付きでビルドされたなら、 $Config{usedevel} と C レベルの PERL_USE_DEVEL が定義されるように なりました。

  • Configure will enable use of -fstack-protector, to provide protection against stack-smashing attacks, if the compiler supports it.

    Configure は、もしコンパイラが対応しているなら、 スタック破壊攻撃に対する防御のために、-fstack-protector の使用を 有効にします。

  • Configure will now determine the correct prototypes for re-entrant functions and for gconvert if you are using a C++ compiler rather than a C compiler.

    Configure は、もし C コンパイラでなく C++ コンパイラを使うなら、 再入可能な関数と gconvert のための正しいプロトタイプを 決定するようになりました。

  • On Unix, if you build from a tree containing a git repository, the configuration process will note the commit hash you have checked out, for display in the output of perl -v and perl -V. Unpushed local commits are automatically added to the list of local patches displayed by perl -V.

    Unix では、もし git レポジトリを含むツリーからビルドするなら、 設定プロセスは perl -vperl -V の出力での表示のために、 チェックアウトしたコミットハッシュを記録します。 プッシュされないローカルのコミットは自動的に perl -V によって表示されるローカルパッチの一覧に追加されます。

  • Perl now supports SystemTap's dtrace compatibility layer and an issue with linking miniperl has been fixed in the process.

    SystemTap の dtrace 互換層に対応し、その過程で miniperl が リンクするときの問題を修正しました。

  • perldoc now uses less -R instead of less for improved behaviour in the face of groff's new usage of ANSI escape codes.

    perldoc は、groff の ANSI エスケープコードの新しい使い方に直面したときの 振る舞いを改善するために、less ではなく less -R を使うようになりました。

  • perl -V now reports use of the compile-time options USE_PERL_ATOF and USE_ATTRIBUTES_FOR_PERLIO.

    perl -V はコンパイル時オプション USE_PERL_ATOFUSE_ATTRIBUTES_FOR_PERLIO の仕様について報告するようになりました。

  • As part of the flattening of ext, all extensions on all platforms are built by make_ext.pl. This replaces the Unix-specific ext/util/make_ext, VMS-specific make_ext.com and Win32-specific win32/buildext.pl.

    ext のフラット化の一部として、全てのプラットフォームの全ての エクステンションは make_ext.pl でビルドされます。 これは Unix 固有の ext/util/make_ext、VMS 固有の make_ext.com、 Win32 固有の win32/buildext.pl を置き換えます。

内部の変更

Each release of Perl sees numerous internal changes which shouldn't affect day to day usage but may still be notable for developers working with Perl's source code.

Perl のそれぞれのリリースでは普段の使用には影響を与えないはずの 多くの内部変更を行っていますが、 それでも Perl のソースコードで作業をする開発者にとって 注目するべきものもあります。

  • The J.R.R. Tolkien quotes at the head of C source file have been checked and proper citations added, thanks to a patch from Tom Christiansen.

    C ソースファイルの先頭にある J.R.R. Tolkien の引用文がチェックされ、 適切な言及が追加されました; Tom Christiansen からのパッチに感謝します。

  • The internal structure of the dual-life modules traditionally found in the lib/ and ext/ directories in the perl source has changed significantly. Where possible, dual-lifed modules have been extracted from lib/ and ext/.

    伝統的に lib/ext/ ディレクトリにあった二重管理モジュールの 内部構造が大きく変わりました。 可能であれば、二重管理モジュールは lib/ext/ から展開されました。

    Dual-lifed modules maintained by Perl's developers as part of the Perl core now live in dist/. Dual-lifed modules maintained primarily on CPAN now live in cpan/. When reporting a bug in a module located under cpan/, please send your bug report directly to the module's bug tracker or author, rather than Perl's bug tracker.

    Perl コアの一部として Perl の開発者によって保守されている二重管理 モジュールは dist/ に移動しました。 CPAN をプライマリとして保守されている二重管理モジュールは cpan/ に 移動しました。 cpan/ にあるモジュールのバグを報告する場合は、Perl の バグトラッカーではなく、モジュールのバグトラッカーや作者に直接 送ってください。

  • \N{...} now compiles better, always forces UTF-8 internal representation

    \N{...} はよりよくコンパイルされるようになり、常に UTF-8 内部表現が強制されます

    Perl's developers have fixed several problems with the recognition of \N{...} constructs. As part of this, perl will store any scalar or regex containing \N{name} or \N{U+wide hex char} in its definition in UTF-8 format. (This was true previously for all occurences of \N{name} that did not use a custom translator, but now it's always true.)

    Perl の開発者は \N{...} 構造の認識に関するいくつかの問題を修正しました。 この一部として、定義で \N{name}\N{U+wide hex char} を 含むあらゆるスカラや正規表現を UTF-8 形式で保管できるようになりました (これは以前はカスタム変換器を使っていない \N{name} について 真でしたが、今は常に真です。)

  • Perl_magic_setmglob now knows about globs, fixing RT #71254.

    Perl_magic_setmglob は glob について知るようになります; RT #71254 を修正しました。

  • SVt_RV no longer exists. RVs are now stored in IVs.

    SVt_RV はもはや存在しません。 RV は IV に保管されます。

  • Perl_vcroak() now accepts a null first argument. In addition, a full audit was made of the "not NULL" compiler annotations, and those for several other internal functions were corrected.

    Perl_vcroak() は最初の引数として null も受け付けるようになりました。 さらに、「非 NULL」に関するコンパイラ注釈の完全な監査が行われ、 その他のいくつかの内部関数が修正されました。

  • New macros dSAVEDERRNO, dSAVE_ERRNO, SAVE_ERRNO, RESTORE_ERRNO have been added to formalise the temporary saving of the errno variable.

    errno 変数を一時的に補完することを形式化するための、 dSAVEDERRNO, dSAVE_ERRNO, SAVE_ERRNO, RESTORE_ERRNO という 新しいマクロが追加されました。

  • The function Perl_sv_insert_flags has been added to augment Perl_sv_insert.

    Perl_sv_insert 関数を拡大するために、Perl_sv_insert_flags 関数が 追加されました。

  • The function Perl_newSV_type(type) has been added, equivalent to Perl_newSV() followed by Perl_sv_upgrade(type).

    Perl_newSV() の後 Perl_sv_upgrade(type) を実行するのと等価な、 Perl_newSV_type(type) 関数が追加されました。

  • The function Perl_newSVpvn_flags() has been added, equivalent to Perl_newSVpvn() and then performing the action relevant to the flag.

    Perl_newSVpvn_flags() 関数が追加されました; これは Perl_newSVpvn() と 等価で、それからフラグに関連する動作を行います。

    Two flag bits are currently supported.

    現在のところ二つのフラグビットに対応しています。

    • SVf_UTF8 will call SvUTF8_on() for you. (Note that this does not convert an sequence of ISO 8859-1 characters to UTF-8). A wrapper, newSVpvn_utf8() is available for this.

      SVf_UTF8 はあなたのために SvUTF8_on() を呼び出します。 (これは ISO 8859-1 文字のシーケンスを UTF-8 に変換しないことに 注意してください。) これのためのラッパである newSVpvn_utf8() が利用可能です。

    • SVs_TEMP now calls Perl_sv_2mortal() on the new SV.

      SVs_TEMP は新しい SV に対して sv_2mortal() を呼び出すようになります。

    There is also a wrapper that takes constant strings, newSVpvs_flags().

    定数文字列を取るラッパである newSVpvs_flags() もあります。

  • The function Perl_croak_xs_usage has been added as a wrapper to Perl_croak.

    Perl_croak へのラッパとして、Perl_croak_xs_usage 関数が追加されました。

  • Perl now exports the functions PerlIO_find_layer and PerlIO_list_alloc.

    PerlIO_find_layer 関数と PerlIO_list_alloc 関数が エクスポートされるようになりました。

  • PL_na has been exterminated from the core code, replaced by local STRLEN temporaries, or *_nolen() calls. Either approach is faster than PL_na, which is a pointer dereference into the interpreter structure under ithreads, and a global variable otherwise.

    PL_na はコアコードから全て取り除かれ、ローカルな STRLEN テンポラリか *_nolen() 呼び出しに置き換えられました。 どちらの手法も、ithreads ではインタプリタ構造体へ、さもなければ グローバル変数へポインタへのデリファレンスである PL_na よりも高速です。

  • Perl_mg_free() used to leave freed memory accessible via SvMAGIC() on the scalar. It now updates the linked list to remove each piece of magic as it is freed.

    Perl_mg_free() は、スカラでの SvMAGIC() 経由でアクセスできる 開放されたメモリをそのままにしていました。 それぞれのマジックのかけらが開放されるごとに削除されるように、 リンクリストが更新されるようになりました。

  • Under ithreads, the regex in PL_reg_curpm is now reference counted. This eliminates a lot of hackish workarounds to cope with it not being reference counted.

    ithreads において、PL_reg_curpm 内の正規表現は参照カウントを 行うようにありました。 これにより、参照カウントを行っていないことによる多くのハックっぽい 回避方法が不要になります。

  • Perl_mg_magical() would sometimes incorrectly turn on SvRMAGICAL(). This has been fixed.

    Perl_mg_magical() は時々間違って SvRMAGICAL() を作動させていました。 これは修正されました。

  • The public IV and NV flags are now not set if the string value has trailing "garbage". This behaviour is consistent with not setting the public IV or NV flags if the value is out of range for the type.

    IV と NV の public フラグは、もし文字列値の末尾に「ゴミ」が ついている場合はセットされなくなりました。 この振る舞いは、値が型の範囲を超えているときに IV や NV の public フラグがセットされないことと一貫しています。

  • Uses of Nullav, Nullcv, Nullhv, Nullop, Nullsv etc have been replaced by NULL in the core code, and non-dual-life modules, as NULL is clearer to those unfamiliar with the core code.

    Nullav, Nullcv, Nullhv, Nullop, Nullsv などは、 コアコードおよび 2 重管理されていないモジュールでは NULL に置き換えられました; NULL はコアコードに親しんでいなくても より明確だからです。

  • A macro MUTABLE_PTR(p) has been added, which on (non-pedantic) gcc will not cast away const, returning a void *. Macros MUTABLE_SV(av), MUTABLE_SV(cv) etc build on this, casting to AV * etc without casting away const. This allows proper compile-time auditing of const correctness in the core, and helped picked up some errors (now fixed).

    MUTABLE_PTR(p) マクロが追加されました; これは (pedantic でない) gcc では const 状態を捨てずに、void * を返します。 MUTABLE_SV(av), MUTABLE_SV(cv) などのマクロはこれを使って 作成され、const 状態を捨てることなく AV * などにキャストします。 これにより const の正当性の適切なコンパイル時の監査が可能になり、 いくつかのエラーの発見に役立ちました(これらは修正されました)。

  • Macros mPUSHs() and mXPUSHs() have been added, for pushing SVs on the stack and mortalizing them.

    SV をスタックにプッシュし、それを揮発化させるための、 mPUSHs()mXPUSHs() のマクロが追加されました。

  • Use of the private structure mro_meta has changed slightly. Nothing outside the core should be accessing this directly anyway.

    プライベート構造体 mro_meta の使用が少し変更されました。 どちらにしろ、コアの外側からこれにアクセスすることは出来ません。

  • A new tool, Porting/expand-macro.pl has been added, that allows you to view how a C preprocessor macro would be expanded when compiled. This is handy when trying to decode the macro hell that is the perl guts.

    新しいツールである Porting/expand-macro.pl が追加され、 コンパイル時に C プリプロセッサマクロがどのように展開されるかを見られます。 これは perl の内部でマクロを展開しようとする時に便利です。

テスト

テストの改良

Parallel tests

(並列テスト)

The core distribution can now run its regression tests in parallel on Unix-like platforms. Instead of running make test, set TEST_JOBS in your environment to the number of tests to run in parallel, and run make test_harness. On a Bourne-like shell, this can be done as

コア配布は、Unix 風プラットフォームでは退行テストを並列に実行できるように なりました。 make test を実行する代わりに、環境変数 TEST_JOBS に並列に 実行するテスト数を設定して、make test_harness を実行します。 Bourne-風のシェルでは、これは以下のようにします

    TEST_JOBS=3 make test_harness  # Run 3 tests in parallel

An environment variable is used, rather than parallel make itself, because TAP::Harness needs to be able to schedule individual non-conflicting test scripts itself, and there is no standard interface to make utilities to interact with their job schedulers.

並列 make 自身ではなく、環境変数を使います; なぜなら TAP::Harness はここの競合しないテストスクリプト自身を計画できる必要が ありますが、make ユーティリティのジョブスケジューラと相互作用するための 標準的なインターフェースはないからです。

Note that currently some test scripts may fail when run in parallel (most notably ext/IO/t/io_dir.t). If necessary run just the failing scripts again sequentially and see if the failures go away.

いくつかのテストスクリプト(特に ext/IO/t/io_dir.t)は並列に実行すると 失敗するかもしれないことに注意してください。 もし必要なら、失敗したスクリプトを順番に再実行して、失敗しなくなることを 確認してください。

Test harness flexibility

(テストハーネスの柔軟性)

It's now possible to override PERL5OPT and friends in t/TEST

PERL5OPTt/TEST にある親類を上書きできるようになりました。

Test watchdog

Several tests that have the potential to hang forever if they fail now incorporate a "watchdog" functionality that will kill them after a timeout, which helps ensure that make test and make test_harness run to completion automatically.

いくつかのテストは、テストが時間切れになった後に kill することで make testmake test_harness が自動的に実行を終了することを 確実にするために組み込まれた「番犬」機能で失敗すると、 ハングアップしてしまう可能性がありました。

新しいテスト

Perl's developers have added a number of new tests to the core. In addition to the items listed below, many modules updated from CPAN incorporate new tests.

Perl の開発者は多くの新しいテストをコアに追加しました。 以下に挙げたものに加えて、CPAN から更新された多くのモジュールに 新しいテストが追加されています。

  • Significant cleanups to core tests to ensure that language and interpreter features are not used before they're tested.

    Significant cleanups to core tests to ensure that 言語とインタプリタの機能がテスト前に使われないことを確実にするために、 コアのテストがかなり整理されました。

  • make test_porting now runs a number of important pre-commit checks which might be of use to anyone working on the Perl core.

    make test_porting は、 Perl コアで作業をしている全員が使うべき、多くの重要なコミット前チェックを 実行します。

  • t/porting/podcheck.t automatically checks the well-formedness of POD found in all .pl, .pm and .pod files in the MANIFEST, other than in dual-lifed modules which are primarily maintained outside the Perl core.

    t/porting/podcheck.t は、Perl コア外で主に管理されている 二重管理のモジュール以外において、 MANIFEST にある全ての .pl, .pm, .pod ファイルで見つかった POD の形式が正しいかどうかをチェックします。

  • t/porting/manifest.t now tests that all files listed in MANIFEST are present.

    t/porting/manifest.t は、 MANIFEST に挙げられている全てのファイルが存在するかをテストします。

  • t/op/while_readdir.t tests that a bare readdir in while loop sets $_.

    t/op/while_readdir.t は、 while ループ中の裸の readdir が $_ をセットするかをテストします。

  • t/comp/retainedlines.t checks that the debugger can retain source lines from eval.

    t/comp/retainedlines.t は、 デバッガが eval からソース行を得られるかをチェックします。

  • t/io/perlio_fail.t checks that bad layers fail.

    t/io/perlio_fail.t は 間違った層が失敗するかをチェックします。

  • t/io/perlio_leaks.t checks that PerlIO layers are not leaking.

    t/io/perlio_leaks.t は PerlIO 層がリークしていないかをチェックします。

  • t/io/perlio_open.t checks that certain special forms of open work.

    t/io/perlio_open.t は open のある種の特殊な形式が動作するかをチェックします。

  • t/io/perlio.t includes general PerlIO tests.

    t/io/perlio.t は PerlIO を全体的にテストします。

  • t/io/pvbm.t checks that there is no unexpected interaction between the internal types PVBM and PVGV.

    t/io/pvbm.t は 内部型 PVBMPVGV の間で想定外の相互作用がないことを チェックします。

  • t/mro/package_aliases.t checks that mro works properly in the presence of aliased packages.

    t/mro/package_aliases.t は エイリアス化されたパッケージが存在したときに MRO が適切に動作するかを チェックします。

  • t/op/dbm.t tests dbmopen and dbmclose.

    t/op/dbm.tdbmopendbmclose をテストします。

  • t/op/index_thr.t tests the interaction of index and threads.

    t/op/index_thr.tindex とスレッドの相互作用をテストします。

  • t/op/pat_thr.t tests the interaction of esoteric patterns and threads.

    t/op/pat_thr.t は 難解なパターンとスレッドの相互作用をテストします。

  • t/op/qr_gc.t tests that qr doesn't leak.

    t/op/qr_gc.tqr がリークしていないことをテストします。

  • t/op/reg_email_thr.t tests the interaction of regex recursion and threads.

    t/op/reg_email_thr.t は regex 再帰とスレッドの相互作用をテストします。

  • t/op/regexp_qr_embed_thr.t tests the interaction of patterns with embedded qr// and threads.

    t/op/regexp_qr_embed_thr.t は 組み込みの qr// があるパターンとスレッドの相互作用をテストします。

  • t/op/regexp_unicode_prop.t tests Unicode properties in regular expressions.

    t/op/regexp_unicode_prop.t は 正規表現中の Unicode 特性をテストします。

  • t/op/regexp_unicode_prop_thr.t tests the interaction of Unicode properties and threads.

    t/op/regexp_unicode_prop_thr.t は Unicode 特性とスレッドの相互作用をテストします。

  • t/op/reg_nc_tie.t tests the tied methods of Tie::Hash::NamedCapture.

    t/op/reg_nc_tie.tTie::Hash::NamedCapture の tie されたメソッドをテストします。

  • t/op/reg_posixcc.t checks that POSIX character classes behave consistently.

    t/op/reg_posixcc.t は POSIX 文字クラスが一貫性を持って振る舞うかをチェックします。

  • t/op/re.t checks that exportable re functions in universal.c work.

    t/op/re.t universal.c のエクスポート可能な re 関数が動作するかを チェックします。

  • t/op/setpgrpstack.t checks that setpgrp works.

    t/op/setpgrpstack.tsetpgrp が動作するかをチェックします。

  • t/op/substr_thr.t tests the interaction of substr and threads.

    t/op/substr_thr.tsubstr とスレッドの相互作用をテストします。

  • t/op/upgrade.t checks that upgrading and assigning scalars works.

    t/op/upgrade.t は スカラの昇格と代入が動作するかをチェックします。

  • t/uni/lex_utf8.t checks that Unicode in the lexer works.

    t/uni/lex_utf8.t は 文法解析器中の Unicode が動作するかをチェックします。

  • t/uni/tie.t checks that Unicode and tie work.

    t/uni/tie.t は Unicode と tie が動作するかをチェックします。

  • t/comp/final_line_num.t tests whether line numbers are correct at EOF

    t/comp/final_line_num.t は、 行番号が EOF で正しいかどうかをテストします。

  • t/comp/form_scope.t tests format scoping.

    t/comp/form_scope.t は フォーマットのスコープをテストします。

  • t/comp/line_debug.t tests whether @{"_<$file"} works.

    t/comp/line_debug.t@{"_<$file"} が動作するかどうかをテストします。

  • t/op/filetest_t.t tests if -t file test works.

    t/op/filetest_t.t は -t ファイルテストが動作するかどうかをテストします。

  • t/op/qr.t tests qr.

    t/op/qr.tqr をテストします。

  • t/op/utf8cache.t tests malfunctions of the utf8 cache.

    t/op/utf8cache.t は utf8 キャッシュの障害をテストします。

  • t/re/uniprops.t test unicodes \p{} regex constructs.

    t/re/uniprops.t は Unicode \p{} 正規表現構造をテストします。

  • t/op/filehandle.t tests some suitably portable filetest operators to check that they work as expected, particularly in the light of some internal changes made in how filehandles are blessed.

    t/op/filehandle.t は、移植性のあるファイルテスト演算子が適切に 動作するかどうかをテストします; 特に、どのようにファイルハンドルが bless するかに関する内部変更に 光を当てています。

  • t/op/time_loop.t tests that unix times greater than 2**63, which can now be handed to gmtime and localtime, do not cause an internal overflow or an excessively long loop.

    t/op/time_loop.t は、2**63 よりも大きい unix time をテストします; これは gmtimelocaltime で扱えるようになっていて、内部 オーバーフローや, 過度に長いループを引き起こしません。

新しい、または変更された診断メッセージ

新しい診断メッセージ

  • SV allocation tracing has been added to the diagnostics enabled by -Dm. The tracing can alternatively output via the PERL_MEM_LOG mechanism, if that was enabled when the perl binary was compiled.

    -Dm で有効になる診断に、SV 割り当てトレースが追加されました。 トレースは、もし perl バイナリがコンパイルされたときに PERL_MEM_LOG 機構が有効になっていた場合には、これを通しても出力されます。

  • Smartmatch resolution tracing has been added as a new diagnostic. Use -DM to enable it.

    スマートマッチングの解決のトレースが新しい診断として追加されました。 これを有効にするには -DM を使ってください。

  • A new debugging flag -DB now dumps subroutine definitions, leaving -Dx for its original purpose of dumping syntax trees.

    新しいデバッグフラグ -DB はサブルーチン定義をダンプするようになり、 -Dx は文法気を出力するという元々の目的のために残されました。

  • Perl 5.12 provides a number of new diagnostic messages to help you write better code. See perldiag for details of these new messages.

    Perl 5.12 は、よりよいコードを書くことを助ける多くの新しい診断メッセージを 提供します。 これらの新しいメッセージの詳細については perldiag を参照してください。

    • Bad plugin affecting keyword '%s'

    • gmtime(%.0f) too large

    • Lexing code attempted to stuff non-Latin-1 character into Latin-1 input

    • Lexing code internal error (%s)

    • localtime(%.0f) too large

    • Overloaded dereference did not return a reference

    • Overloaded qr did not return a REGEXP

    • Perl_pmflag() is deprecated, and will be removed from the XS API

    • lvalue attribute ignored after the subroutine has been defined

      This new warning is issued when one attempts to mark a subroutine as lvalue after it has been defined.

      この新しい警告は、あるサブルーチンを定義した後、それを左辺値として マークしようとしたときに発生します。

    • Perl now warns you if ++ or -- are unable to change the value because it's beyond the limit of representation.

      ++-- が、表現の限界を超えるために値の変更が出来ない 場合に警告するようになりました。

      This uses a new warnings category: "imprecision".

      これは新しい警告カテゴリ "imprecision" を使います。

    • lc, uc, lcfirst, and ucfirst warn when passed undef.

    • Show constant in "Useless use of a constant in void context"

    • Prototype after '%s'

    • panic: sv_chop %s

      This new fatal error occurs when the C routine Perl_sv_chop() was passed a position that is not within the scalar's string buffer. This could be caused by buggy XS code, and at this point recovery is not possible.

      これは、C ルーチン Perl_sv_chop() に、スカラの文字列バッファ内でない 位置が渡された時に発生する、新しい致命的エラーです。 これはバグっぽい XS コードによって引き起こされ、この時点では 回復は不可能です。

    • The fatal error Malformed UTF-8 returned by \N is now produced if the charnames handler returns malformed UTF-8.

      致命的エラー Malformed UTF-8 returned by \N は、charnames ハンドラが 不正な UTF-8 を返したときに生成されるようになりました。

    • If an unresolved named character or sequence was encountered when compiling a regex pattern then the fatal error \N{NAME} must be resolved by the lexer is now produced. This can happen, for example, when using a single-quotish context like $re = '\N{SPACE}'; /$re/;. See perldiag for more examples of how the lexer can get bypassed.

      正規表現のコンパイル時に未解決の名前付き文字やシーケンスが発見された場合、 致命的エラー \N{NAME} must be resolved by the lexer が生成されます。 これは、例えば、$re = '\N{SPACE}'; /$re/; のようなシングルクォート風の コンテキストを使うときに発生します。 字句解析器がどのようにバイパスされるかに関するもっと多くの例については、 perldiag を参照してください。

    • Invalid hexadecimal number in \N{U+...} is a new fatal error triggered when the character constant represented by ... is not a valid hexadecimal number.

      Invalid hexadecimal number in \N{U+...} は新しい致命的エラーで、 ... で表現される文字定数が有効な 16 進数でなかった場合に発生します。

    • The new meaning of \N as [^\n] is not valid in a bracketed character class, just like . in a character class loses its special meaning, and will cause the fatal error \N in a character class must be a named character: \N{...}.

      [^\n] としての新しい \N の意味は、. が特別な 意味を失うのと同様、大かっこの文字クラスの中では無効となり、 致命的エラー \N in a character class must be a named character: \N{...} を発生させます。

    • The rules on what is legal for the ... in \N{...} have been tightened up so that unless the ... begins with an alphabetic character and continues with a combination of alphanumerics, dashes, spaces, parentheses or colons then the warning Deprecated character(s) in \N{...} starting at '%s' is now issued.

      \N{...} 内の ... として有効なものの規則が厳しくなったので、 ... が英文字で始まって、英数字、ダッシュ、空白、かっこ、コロンが 引き続くものでない場合、 Deprecated character(s) in \N{...} starting at '%s' 警告が 発生するようになりました。

    • The warning Using just the first characters returned by \N{} will be issued if the charnames handler returns a sequence of characters which exceeds the limit of the number of characters that can be used. The message will indicate which characters were used and which were discarded.

      Using just the first characters returned by \N{} 警告は、 charnames ハンドラが、利用できる文字数の制限を超えた文字シーケンスを 返すときに発生し、 このメッセージは、使われた文字と捨てられた文字を示しています。

変更された診断メッセージ

A number of existing diagnostic messages have been improved or corrected:

既にある多くの診断メッセージが改良されたり修正されたりしました:

  • A new warning category illegalproto allows finer-grained control of warnings around function prototypes.

    新しい警告カテゴリ illegalproto は、関数プロトタイプの関する警告を より細かい粒度で制御できるようにします。

    The two warnings:

    二つの警告:

    Illegal character in prototype for %s : %s
    Prototype after '%c' for %s : %s

    have been moved from the syntax top-level warnings category into a new first-level category, illegalproto. These two warnings are currently the only ones emitted during parsing of an invalid/illegal prototype, so one can now use

    これらは、syntax トップレベル警告カテゴリから新しい第一レベルカテゴリ illegalproto に移動しました。 これら二つの警告は今のところ不正なプロトタイプをパースしたときに 出力される唯一のカテゴリなので、以下のようにすることで

      no warnings 'illegalproto';

    to suppress only those, but not other syntax-related warnings. Warnings where prototypes are changed, ignored, or not met are still in the prototype category as before.

    これらだけを抑制し、その他の文法関係の警告はそのままにできます。 プロトタイプが変更、無視、遭遇しなかったときの警告は今まで通り prototype カテゴリのままです。

  • Deep recursion on subroutine "%s"

    It is now possible to change the depth threshold for this warning from the default of 100, by recompiling the perl binary, setting the C pre-processor macro PERL_SUB_DEPTH_WARN to the desired value.

    この警告が出る深さの閾値は、デフォルトでは 100 ですが、C プリプロセッサ マクロ PERL_SUB_DEPTH_WARN を好みの値に変えて perl バイナリを 再コンパイルすることによって、変更できるようになりました。

  • Illegal character in prototype warning is now more precise when reporting illegal characters after _

    Illegal character in prototype 警告は、_ の後の不正な文字を 報告するときにより正確になりました。

  • mro merging error messages are now very similar to those produced by Algorithm::C3.

    mro 結合エラーメッセージは、Algorithm::C3 が生成するものと とても似ているものになりました。

  • Amelioration of the error message "Unrecognized character %s in column %d"

    エラーメッセージ "Unrecognized character %s in column %d" の改善

    Changes the error message to "Unrecognized character %s; marked by <-- HERE after %s<-- HERE near column %d". This should make it a little simpler to spot and correct the suspicious character.

    このエラーメッセージは "Unrecognized character %s; marked by <-- HERE after %s<-- HERE near column %d" に変更されました。 これによって、怪しい文字の特定と修正が少しだけ簡単になったはずです。

  • Perl now explicitly points to $. when it causes an uninitialized warning for ranges in scalar context.

    スカラコンテキストでの範囲に関する未初期化警告を引き起こすとき、 明示的に $. を示すようになりました。

  • split は、無効コンテキストで呼び出されると警告するようになりました。

  • printf-style functions called with too few arguments will now issue the warning "Missing argument in %s" [perl #71000]

    printf 形式の関数呼び出しで引数が足りない場合、警告 "Missing argument in %s" が発生するようになりました。 [perl #71000]

  • Perl now properly returns a syntax error instead of segfaulting if each, keys, or values is used without an argument.

    each, keys, values が引数なしで使われた場合、 セグメンテンションフォールトではなく、正しく文法エラーを 返すようになりました。

  • tell() now fails properly if called without an argument and when no previous file was read.

    何もファイルを読み込んでいない状態で tell() が引数なしで 呼び出された場合、正しく失敗するようになりました。

    tell() now returns -1, and sets errno to EBADF, thus restoring the 5.8.x behaviour.

    tell()-1 を返し、errno に EBADF がセットされます; これにより 5.8.x での振る舞いが再現されました。

  • overload no longer implicitly unsets fallback on repeated 'use overload' lines.

    overload は繰り返して 'use overload' 行があった場合でも、 暗黙のうちにフォールバックを解除しなくなりました。

  • POSIX::strftime() can now handle Unicode characters in the format string.

    POSIX::strftime() はフォーマット文字列で Unicode 文字が 扱えるようになりました。

  • The syntax category was removed from 5 warnings that should only be in deprecated.

    deprecated カテゴリだけであるべき 5 個の警告から syntax カテゴリが 取り除かれました。

  • Three fatal pack/unpack error messages have been normalized to panic: %s

    三つの致命的な pack/unpack エラーメッセージが panic: %s に 正規化されました。

  • Unicode character is illegal has been rephrased to be more accurate

    Unicode character is illegal はより正確になるように言い換えられました。

    It now reads Unicode non-character is illegal in interchange and the perldiag documentation has been expanded a bit.

    現在は Unicode non-character is illegal in interchange となり、 perldiag 文書が少し拡張されました。

  • Currently, all but the first of the several characters that the charnames handler may return are discarded when used in a regular expression pattern bracketed character class. If this happens then the warning Using just the first character returned by \N{} in character class will be issued.

    現在のところ、charnames ハンドラが複数の文字を返した場合の先頭以外の 文字は、これが正規表現や大かっこ文字クラスの中で使われたときには 捨てられます。 もしこれが起きると、 Using just the first character returned by \N{} in character class 警告が発生します。

  • The warning Missing right brace on \N{} or unescaped left brace after \N. Assuming the latter will be issued if Perl encounters a \N{ but doesn't find a matching }. In this case Perl doesn't know if it was mistakenly omitted, or if "match non-newline" followed by "match a {" was desired. It assumes the latter because that is actually a valid interpretation as written, unlike the other case. If you meant the former, you need to add the matching right brace. If you did mean the latter, you can silence this warning by writing instead \N\{.

    Missing right brace on \N{} or unescaped left brace after \N. Assuming the latter 警告は、Perl が \N{ に遭遇したけれども 対応する } がない場合に発生します。 この場合、これが間違って省略されたのか、あるいは「非改行にマッチング」の 後に「{ にマッチング」を想定しているのかが Perl には分かりません。 他の場合と異なり、後者は実際書いたままのものを有効に解釈できるので、 後者を仮定します。 もし前者を意味していたのなら、対応する右中かっこを追加する必要があります。 もし後者を意味していたのなら、代わりに \N\{ と書くことで 警告を黙らせることができます。

  • gmtime and localtime called with numbers smaller than they can reliably handle will now issue the warnings gmtime(%.0f) too small and localtime(%.0f) too small.

    確実に扱える値より小さい値で gmtimelocaltime を呼び出すと、 gmtime(%.0f) too smalllocaltime(%.0f) too small の警告が 出るようになりました。

The following diagnostic messages have been removed:

以下の診断メッセージは削除されました:

  • Runaway format

  • Can't locate package %s for the parents of %s

    In general this warning it only got produced in conjunction with other warnings, and removing it allowed an ISA lookup optimisation to be added.

    一般的に、この警告は他の警告と同時にのみ生成され、これを取り除くことによって ISA 読み出しの最適化が追加できるようになりました。

  • v-string in use/require is non-portable

ツールの変更

  • h2ph now looks in include-fixed too, which is a recent addition to gcc's search path.

    h2ph は、 最近 gcc の検索パスとして追加された、include-fixed を見るように なりました。

  • h2xs no longer incorrectly treats enum values like macros. It also now handles C++ style comments (//) properly in enums.

    h2xs は マクロのような enum 値を間違って扱わなくなりました。 また、enum での C++ 形式のコメント (//) を扱うようになりました。

  • perl5db.pl now supports LVALUE subroutines. Additionally, the debugger now correctly handles proxy constant subroutines, and subroutine stubs.

    perl5db.plLVALUE サブルーチンを対応するようになりました。 さらに、デバッガは代理定数サブルーチンとサブルーチンスタブを正しく 扱えるようになりました。

  • perlbug now uses %Module::CoreList::bug_tracker to print out upstream bug tracker URLs. If a user identifies a particular module as the topic of their bug report and we're able to divine the URL for its upstream bug tracker, perlbug now provide a message to the user explaining that the core copies the CPAN version directly, and provide the URL for reporting the bug directly to the upstream author.

    perlbug は、上流のバグトラッカー URL の出力に %Module::CoreList::bug_tracker を使うようになりました。 もしユーザーが送るバグ報告の話題としてあるモジュールがあることが分かり、 そのモジュールの上流のバグトラッカーの URL が分かる場合は、perlbug は、 コアは CPAN バージョンを直接コピーしていることをユーザーに説明する メッセージと、上流の作者に直接バグを報告するための URL を出力します。

    perlbug no longer reports "Message sent" when it hasn't actually sent the message

    perlbug は、実際にはメッセージを送れなかった場合には "Message sent" と報告しなくなりました。

  • perlthanks is a new utility for sending non-bug-reports to the authors and maintainers of Perl. Getting nothing but bug reports can become a bit demoralising. If Perl 5.12 works well for you, please try out perlthanks. It will make the developers smile.

    perlthanks は、Perl の作者と管理者にバグ報告ではないレポートを送るための 新しいツールです。 バグレポートでしかないものを受け取るのは少しがっかりさせるものに なりつつあります。 もしあなたのところで Perl 5.12 がうまく働いているなら、 perlthanks を試してみてください。 開発者を笑顔にすることでしょう。

  • Perl's developers have fixed bugs in a2p having to do with the match() operator in list context. Additionally, a2p no longer generates code that uses the $[ variable.

    Perl の開発者は、match() をリストコンテキストで 使わなければならなくなるという a2p のバグを修正しました。 さらに、a2p はもはや $[ 変数を使ったコードを生成しなくなりました。

バグ修正の抜粋

  • U+0FFFF is now a legal character in regular expressions.

    U+0FFFF は正規表現で有効な文字となりました。

  • pp_qr now always returns a new regexp SV. Resolves RT #69852.

    pp_qr は常に新しい正規表現 SV を返すようになりました。 RT #69852 を解決しました。

    Instead of returning a(nother) reference to the (pre-compiled) regexp in the optree, use reg_temp_copy() to create a copy of it, and return a reference to that. This resolves issues about Regexp::DESTROY not being called in a timely fashion (the original bug tracked by RT #69852), as well as bugs related to blessing regexps, and of assigning to regexps, as described in correspondence added to the ticket.

    命令木の(プリコンパイルされた)正規表現へのリファレンスを返すのではなく、 そのコピーを作成するために reg_temp_copy() を使い、それに対する リファレンスを返します。 これは Regexp::DESTROY が適切なタイミングでで呼び出されないという 問題(元々のバグは RT #69852 で追跡されています)を解決し、 チケットに追加された文章で記述されているような、正規表現の bless と 正規表現への代入に関するバグも解決しました。

    It transpires that we also need to undo the SvPVX() sharing when ithreads cloning a Regexp SV, because mother_re is set to NULL, instead of a cloned copy of the mother_re. This change might fix bugs with regexps and threads in certain other situations, but as yet neither tests nor bug reports have indicated any problems, so it might not actually be an edge case that it's possible to reach.

    これにより、iスレッドが正規表現 SV のクローンを作るとき、SvPVX() の 共有を取り消す必要もあることがわかります; なぜなら mother_re は mother_re をクローンしたコピーではなく、NULL が セットされるからです。 この変更はその他のある種の状況での正規表現とスレッドに関するバグを 修正するかもしれませんが、未だにテストやバグ報告は何の問題も 示していないので、実際には到達する可能性のある境界条件では ないのかもしれません。

  • Several compilation errors and segfaults when perl was built with -Dmad were fixed.

    perl を -Dmad 付きでコンパイルするとコンパイルエラーや セグメンテーションフォールトが起きていたのを修正しました。

  • Fixes for lexer API changes in 5.11.2 which broke NYTProf's savesrc option.

    5.11.2 で行われた 字句解析 API の変更が NYTProf の savesrc オプションを 壊していたのを修正しました。

  • -t should only return TRUE for file handles connected to a TTY

    -t は TTY と接続されているファイルハンドルに対してのみ TRUE を 返すべきでした。

    The Microsoft C version of isatty() returns TRUE for all character mode devices, including the /dev/null-style "nul" device and printers like "lpt1".

    The Microsoft C 版の isatty() は、 /dev/null 形式の "nul" デバイスや "lpt1" のようなプリンタを含む 全てのキャラクタデバイスに対して TRUE を返します。

  • Fixed a regression caused by commit fafafbaf which caused a panic during parameter passing [perl #70171]

    引数を渡す間の panic を引き起こす fafafbaf をコミットしたことによる エンバグを修正しました [perl #70171]

  • On systems which in-place edits without backup files, -i'*' now works as the documentation says it does [perl #70802]

    バックアップファイルなしでその場で修正するシステムで、 -i'*' が文書に記されているとおりに動作するようになりました。 [perl #70802]

  • Saving and restoring magic flags no longer loses readonly flag.

    マジックフラグの保存と復帰で読み込み専用フラグを 失わないようになりました。

  • The malformed syntax grep EXPR LIST (note the missing comma) no longer causes abrupt and total failure.

    不正な文法 grep EXPR LIST (カンマがないことに注意) で、 突然完全に失敗しなくなりました。

  • Regular expressions compiled with qr{} literals properly set $' when matching again.

    qr{} リテラルを使ってコンパイルされた正規表現で、再び マッチングしたときに適切に $' がセットされるようになりました。

  • Using named subroutines with sort should no longer lead to bus errors [perl #71076]

    sort で名前付きサブルーチンを使ったときに、バスエラーを 引き起こさなくなりました。 [perl #71076]

  • Numerous bugfixes catch small issues caused by the recently-added Lexer API.

    最近追加された語句解析 API によって引き起こされた多くの小さな問題が 修正されました。

  • Smart match against @_ sometimes gave false negatives. [perl #71078]

    @_ を使ったスマートマッチングが時々間違っていました。 [perl #71078]

  • [email protected] may now be assigned a read-only value (without error or busting the stack).

    [email protected] は (エラーやスタック破壊なしに) 読み込み専用値を 代入できるようになりました。

  • sort called recursively from within an active comparison subroutine no longer causes a bus error if run multiple times. [perl #71076]

    動作中の比較サブルーチンの中から sort を再帰的に呼び出すと、 複数回実行してもバスエラーが起きなくなりました。[perl #71076]

  • Tie::Hash::NamedCapture::* will not abort if passed bad input (RT #71828)

    Tie::Hash::NamedCapture::* は、悪い入力を渡すと中断するようになりました (RT #71828)

  • @_ and $_ no longer leak under threads (RT #34342 and #41138, also #70602, #70974)

    @_ と $_ はスレッドでリークしなくなりました (RT #34342 と #41138, また #70602, #70974)

  • -I on shebang line now adds directories in front of @INC as documented, and as does -I when specified on the command-line.

    シェバン行での -I は文書通り、コマンドラインで指定した -I と 同様、@INC の先頭に追加されるようになりました。

  • kill is now fatal when called on non-numeric process identifiers. Previously, an undef process identifier would be interpreted as a request to kill process 0, which would terminate the current process group on POSIX systems. Since process identifiers are always integers, killing a non-numeric process is now fatal.

    kill は、非数値プロセス識別子で呼び出されたときには致命的エラーに なるようになりました。 以前は、プロセス識別子として undef を渡すと、プロセス 0 を kill すると 解釈され、POSIX システムで現在のプロセスグループが終了していました。 プロセス識別子は常に整数なので、非数値プロセスを kill しようとするのは 致命的エラーとなりました。

  • 5.10.0 inadvertently disabled an optimisation, which caused a measurable performance drop in list assignment, such as is often used to assign function parameters from @_. The optimisation has been re-instated, and the performance regression fixed. (This fix is also present in 5.10.1)

    5.10.0 では不注意によって最適化が無効化されていたため、 例えば @_ から関数の引数への代入でよく使われるような、 リスト代入において目に見えるほどの性能低下を引き起こしていました。 この最適化は再導入され、性能面の退行が修正されました。 (この修正は 5.10.1 でも行われています)

  • Fixed memory leak on while (1) { map 1, 1 } [RT #53038].

    while (1) { map 1, 1 } でのメモリリークが修正されました [RT #53038]。

  • Some potential coredumps in PerlIO fixed [RT #57322,54828].

    PerlIO でのコアダンプの可能性が修正されました [RT #57322,54828]。

  • The debugger now works with lvalue subroutines.

    デバッガは左辺値サブルーチンでも動作するようになりました。

  • The debugger's m command was broken on modules that defined constants [RT #61222].

    定数が定義されたモジュールでは、デバッガの m コマンドが壊れていました [RT #61222]。

  • crypt and string complement could return tainted values for untainted arguments [RT #59998].

    crypt と文字列補完は汚染されていない引数から汚染された値を返すことが ありました [RT #59998].

  • The -i.suffix command-line switch now recreates the file using restricted permissions, before changing its mode to match the original file. This eliminates a potential race condition [RT #60904].

    -i.suffix コマンドラインオプションは、元のファイルに一致するように モードを変更する前に、制限されたパーミッションを使ってファイルを 再作成します。 これは競合条件の可能性を除去します [RT #60904]。

  • On some Unix systems, the value in $? would not have the top bit set ($? & 128) even if the child core dumped.

    Unix システムによっては、$? の値が、子がコアダンプしたときでも 最上位ビット ($? & 128) がされないことがありました。

  • Under some circumstances, $^R could incorrectly become undefined [RT #57042].

    状況によっては、$^R が間違って未定義になりました [RT #57042]。

  • In the XS API, various hash functions, when passed a pre-computed hash where the key is UTF-8, might result in an incorrect lookup.

    XS API で、様々なハッシュ関数において、キーが UTF-8 の時に予め 計算されたハッシュを渡すと、読み出しを間違うことがありました。

  • XS code including XSUB.h before perl.h gave a compile-time error [RT #57176].

    perl.h の前に XSUB.h をインクルードした XS コードでコンパイル時 エラーが発生していました [RT #57176]。

  • $object->isa('Foo') would report false if the package Foo didn't exist, even if the object's @ISA contained Foo.

    $object->isa('Foo') は、たとえ オブジェクトの @ISAFoo を含んでいても、パッケージに Foo が存在していなければ偽を 返すようになりました。

  • Various bugs in the new-to 5.10.0 mro code, triggered by manipulating @ISA, have been found and fixed.

    5.10.0 で新規導入された mro コードで、@ISA を操作することによって 引き起こされる様々なバグが発見され、修正されました。

  • Bitwise operations on references could crash the interpreter, e.g. $x=\$y; $x |= "foo" [RT #54956].

    $x=\$y; $x |= "foo" のような、リファレンスに対するビット単位演算子が インタプリタをクラッシュさせることがありました [RT #54956]。

  • Patterns including alternation might be sensitive to the internal UTF-8 representation, e.g.

    代替を含むパターンが内部 UTF-8 表現に敏感になっていました;

        my $byte = chr(192);
        my $utf8 = chr(192); utf8::upgrade($utf8);
        $utf8 =~ /$byte|X}/i;       # failed in 5.10.0
  • Within UTF8-encoded Perl source files (i.e. where use utf8 is in effect), double-quoted literal strings could be corrupted where a \xNN, \0NNN or \N{} is followed by a literal character with ordinal value greater than 255 [RT #59908].

    UTF8-エンコードされた (つまり use utf8 が有効な) Perl ソースファイル内で、 ダブルクォートされたリテラル文字列が、 could be corrupted where a \xNN, \0NNN, \N{} の後に その値が 255 を超えるリテラル文字が続いている場合に、壊れることがありました [RT #59908]。

  • B::Deparse failed to correctly deparse various constructs: readpipe STRING [RT #62428], CORE::require(STRING) [RT #62488], sub foo(_) [RT #62484].

    B::Deparse は様々な構造を逆パースするのに失敗していました: readpipe STRING [RT #62428], CORE::require(STRING) [RT #62488], sub foo(_) [RT #62484].

  • Using setpgrp with no arguments could corrupt the perl stack.

    setpgrp を引数なしで使うと、perl のスタックが壊れることがありました。

  • The block form of eval is now specifically trappable by Safe and ops. Previously it was erroneously treated like string eval.

    ブロック形式の eval は特別に Safeops でトラップ可能に なりました。 以前は間違って文字列の eval のように扱われていました。

  • In 5.10.0, the two characters [~ were sometimes parsed as the smart match operator (~~) [RT #63854].

    5.10.0 では、2 つの文字 [~ が時々スマートマッチング演算子 (~~) としてパースされていました [RT #63854]。

  • In 5.10.0, the * quantifier in patterns was sometimes treated as {0,32767} [RT #60034, #60464]. For example, this match would fail:

    5.10.0 では、パターン中の * 量指定子が時々 {0,32767} として扱われていました[RT #60034, #60464]。 例えば、以下はマッチングに失敗していました:

        ("ab" x 32768) =~ /^(ab)*$/
  • shmget was limited to a 32 bit segment size on a 64 bit OS [RT #63924].

    shmget は 64 ビット OS で 32 ビットセグメントサイズに制限されていました [RT #63924]。

  • Using next or last to exit a given block no longer produces a spurious warning like the following:

    given ブロックから出るために nextlast を使ったときに、 以下のような誤った警告が出力されなくなりました:

        Exiting given via last at foo.pl line 123
  • Assigning a format to a glob could corrupt the format; e.g.:

    以下のように、フォーマットからグロブへの代入を行うと、 フォーマットが壊れることがありました:

         *bar=*foo{FORMAT}; # foo format now bad
  • Attempting to coerce a typeglob to a string or number could cause an assertion failure. The correct error message is now generated, Can't coerce GLOB to $type.

    型グロブを文字列や数値に変換しようとすると、アサーション失敗が 発生することがありました。 正しいエラーメッセージである Can't coerce GLOB to $type が 生成されるようになりました。

  • Under use filetest 'access', -x was using the wrong access mode. This has been fixed [RT #49003].

    use filetest 'access' 中に、-x は間違ったアクセスモードを 使っていました。 これは修正されました [RT #49003]。

  • length on a tied scalar that returned a Unicode value would not be correct the first time. This has been fixed.

    Unicode 値を返す tie されたスカラに対する length が、初回は 正しく動作していませんでした。 これは修正されました。

  • Using an array tie inside in array tie could SEGV. This has been fixed. [RT #51636]

    配列 tie の中で配列 tie を使うと SEGV になることがありました。 これは修正されました。 [RT #51636]

  • A race condition inside PerlIOStdio_close() has been identified and fixed. This used to cause various threading issues, including SEGVs.

    PerlIOStdio_close() 内での競合条件が識別され、修正されました。 これは SEGV を含む、様々なスレッドの問題を引き起こしていました。

  • In unpack, the use of () groups in scalar context was internally placing a list on the interpreter's stack, which manifested in various ways, including SEGVs. This is now fixed [RT #50256].

    unpack で、スカラコンテキストで () グループを使うと、内部的に インタプリタのスタックにリストが置かれ、SEGV を含む様々な現象が 起きていました。 これは修正されました [RT #50256]。

  • Magic was called twice in substr, \&$x, tie $x, $m and chop. These have all been fixed.

    substr, \&$x, tie $x, $m, chop で、マジックが 2 回 呼び出されていました。 これらは全て修正されました。

  • A 5.10.0 optimisation to clear the temporary stack within the implicit loop of s///ge has been reverted, as it turned out to be the cause of obscure bugs in seemingly unrelated parts of the interpreter [commit ef0d4e17921ee3de].

    5.10.0 での、s///ge の暗黙のループ中の一時的なスタックをクリアするという 最適化は差し戻されました; これがインタプリタの無関係な部分での 不明瞭なバグの原因となっていたからです [commit ef0d4e17921ee3de]。

  • The line numbers for warnings inside elsif are now correct.

    elsif 内での警告の行番号が正しくなりました。

  • The .. operator now works correctly with ranges whose ends are at or close to the values of the smallest and largest integers.

    .. 演算子は、どちらかの端が整数の最小値や最大値に近い値でも 正しく動作するようになりました。

  • binmode STDIN, ':raw' could lead to segmentation faults on some platforms. This has been fixed [RT #54828].

    binmode STDIN, ':raw' は、プラットフォームによってはセグメンテーション フォルトを引き起こすことがありました。 これは修正されました [RT #54828]。

  • An off-by-one error meant that index $str, ... was effectively being executed as index "$str\0", .... This has been fixed [RT #53746].

    index $str, ... が実際には index "$str\0", ... として実行されるという 境界条件のエラーがありました。 これは修正されました [RT #53746]。

  • Various leaks associated with named captures in regexes have been fixed [RT #57024].

    正規表現での名前付き捕捉に関連する様々なリークが修正されました [RT #57024]。

  • A weak reference to a hash would leak. This was affecting DBI [RT #56908].

    ハッシュへの弱いリファレンスがリークを起こすことがありました。 これは DBI に影響を与えていました [RT #56908]。

  • Using (?|) in a regex could cause a segfault [RT #59734].

    正規表現で (?|) を使うとセグメンテンションフォールトを引き起こすことが ありました [RT #59734]。

  • Use of a UTF-8 tr// within a closure could cause a segfault [RT #61520].

    クロージャ内で UTF-8 の tr// を使うとセグメンテンションフォールトを 引き起こすことがありました [RT #61520]。

  • Calling Perl_sv_chop() or otherwise upgrading an SV could result in an unaligned 64-bit access on the SPARC architecture [RT #60574].

    Perl_sv_chop() やその他で SV を昇格させると、SPARC アーキテクチャでは アライメントされていない 64-ビットアクセスをする場合がありました [RT #60574]。

  • In the 5.10.0 release, inc_version_list would incorrectly list 5.10.* after 5.8.*; this affected the @INC search order [RT #67628].

    5.10.0 リリースでは、inc_version_list は間違って 5.8.* の後に 5.10.* をリストしていました; これは @INC の検索順に影響を 与えていました [RT #67628]。

  • In 5.10.0, pack "a*", $tainted_value returned a non-tainted value [RT #52552].

    5.10.0 では、pack "a*", $tainted_value は汚染されていない値を 返していました [RT #52552]。

  • In 5.10.0, printf and sprintf could produce the fatal error panic: utf8_mg_pos_cache_update when printing UTF-8 strings [RT #62666].

    5.10.0 では、printfsprintf で UTF-8 文字列を表示するときに 致命的エラー panic: utf8_mg_pos_cache_update が出ることがありました [RT #62666]。

  • In the 5.10.0 release, a dynamically created AUTOLOAD method might be missed (method cache issue) [RT #60220,60232].

    5.10.0 リリースでは、動的に作成した AUTOLOAD メソッドが失われることが ありました (メソッドキャッシュの問題です) [RT #60220,60232]。

  • In the 5.10.0 release, a combination of use feature and //ee could cause a memory leak [RT #63110].

    5.10.0 リリースでは、use feature//ee の組み合わせで メモリリークを起こすことがありました [RT #63110]。

  • -C on the shebang (#!) line is once more permitted if it is also specified on the command line. -C on the shebang line used to be a silent no-op if it was not also on the command line, so perl 5.10.0 disallowed it, which broke some scripts. Now perl checks whether it is also on the command line and only dies if it is not [RT #67880].

    shebang (#!) 行 での -C は、コマンドラインでも指定されている場合は 再び許可されるようになりました。 shebang 行での -C は、もし コマンドラインで指定されていなかった 場合には暗黙に no-op となっていました; これは perl 5.10.0 では 不許可となりましたが、これによって動かなくなるスクリプトもありました。 perl はコマンドラインでも指定されているかどうかを調べて、 指定されていないときにだけ die するようになりました [RT #67880]。

  • In 5.10.0, certain types of re-entrant regular expression could crash, or cause the following assertion failure [RT #60508]:

    5.10.0 で、ある種の再入可能な正規表現によってクラッシュしたり、 以下のアサーション失敗を出力したりすることがありました [RT #60508]:

        Assertion rx->sublen >= (s - rx->subbeg) + i failed
  • Perl now includes previously missing files from the Unicode Character Database.

    以前は入っていなかった Unicode Character Database からのファイルも 含むようになりました。

  • Perl now honors TMPDIR when opening an anonymous temporary file.

    Perl は無名一時ファイルを開くときに TMPDIR を使うようになりました。

プラットフォーム固有の変更

Perl is incredibly portable. In general, if a platform has a C compiler, someone has ported Perl to it (or will soon). We're happy to announce that Perl 5.12 includes support for several new platforms. At the same time, it's time to bid farewell to some (very) old friends.

Perl はものすごく移植性が高いです。 一般的に、あるプラットフォームに C コンパイラがあれば、誰かが Perl を移植しています (あるいはそのうちに移植します)。 私たちは、Perl 5.12 でいくつかの新しいプラットフォームに対応したことを 喜んでお伝えいたします。 同時に、(とても)古い友人のいくつかに別れの挨拶をする時が来ました。

新しいプラットフォーム

Haiku

Perl's developers have merged patches from Haiku's maintainers. Perl should now build on Haiku.

Perl の開発者は Haiku 管理者からのパッチをマージしました。 Perl は Haiku でビルドできるようになったはずです。

MirOS BSD

Perl should now build on MirOS BSD.

Perl は MirOS BSD でビルドできるようになったはずです。

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

Domain/OS
MiNT
Tenon MachTen

更新されたプラットフォーム

AIX
  • Removed libbsd for AIX 5L and 6.1. Only flock() was used from libbsd.

    AIX 5L と 6.1 のための libbsd が取り除かれました。 flock() だけが libbsd を使っていました。

  • Removed libgdbm for AIX 5L and 6.1 if libgdbm < 1.8.3-5 is installed. The libgdbm is delivered as an optional package with the AIX Toolbox. Unfortunately the versions below 1.8.3-5 are broken.

    libgdbm < 1.8.3-5 がインストールされている場合、 AIX 5L and 6.1 のための libgdbm が取り除かれました。 libgdbm は AIX Toolbox の追加パッケージとして配布されています。 残念ながらバージョン 1.8.3-5 以前のものは壊れています。

  • Hints changes mean that AIX 4.2 should work again.

    AIX 4.2 で再び動作するようにヒントが変更されました。

Cygwin
  • Perl now supports IPv6 on Cygwin 1.7 and newer.

    Cygwin 1.7 以降で IPv6 に対応しました。

  • On Cygwin we now strip the last number from the DLL. This has been the behaviour in the cygwin.com build for years. The hints files have been updated.

    Cygwin においては、DLL から最後の番号を取り除くことにしました。 これは何年間も cygwin.com のビルドの振る舞いとなっています。 ヒントファイルが更新されました。

Darwin (Mac OS X)
  • Skip testing the be_BY.CP1131 locale on Darwin 10 (Mac OS X 10.6), as it's still buggy.

    まだバグっぽいので、Darwin 10 (Mac OS X 10.6) での be_BY.CP1131 ロケールの テストはスキップするようになりました。

  • Correct infelicities in the regexp used to identify buggy locales on Darwin 8 and 9 (Mac OS X 10.4 and 10.5, respectively).

    Darwin 8 と 9 (それぞれ Mac OS X 10.4 と 10.5) でのバグっぽいロケールを 識別するために使われている正規表現での問題を修正しました。

DragonFly BSD
  • Fix thread library selection [perl #69686]

    スレッドライブラリ選択が修正されました。 [perl #69686]

FreeBSD
  • The hints files now identify the correct threading libraries on FreeBSD 7 and later.

    ヒントファイルは FreeBSD 7 以降での正しいスレッドライブラリを 識別するようになりました。

Irix
  • We now work around a bizarre preprocessor bug in the Irix 6.5 compiler: cc -E - unfortunately goes into K&R mode, but cc -E file.c doesn't.

    Irix 6.5 コンパイラのプリプロセッサにある奇妙なバグを回避するように なりました: cc -E - は残念ながら K&R モードになりますが、cc -E file.c では なりません。

NetBSD
  • Hints now supports versions 5.*.

    ヒントがバージョン 5.* に対応しました。

OpenVMS
  • -UDEBUGGING is now the default on VMS.

    -UDEBUGGING は VMS でのデフォルトとなりました。

    Like it has been everywhere else for ages and ages. Also make command-line selection of -UDEBUGGING and -DDEBUGGING work in configure.com; before the only way to turn it off was by saying no in answer to the interactive question.

    長年をかけて、他のどの場所でも同じようになっています。 また、make コマンドラインでの -UDEBUGGING と -DDEBUGGING は configure.com で動作します; 以前はこれを無効にする方法は対話的質問に no を答えることだけでした。

  • The default pipe buffer size on VMS has been updated to 8192 on 64-bit systems.

    VMS のデフォルトのパイプバッファサイズは、64 ビットシステムでは 8192 に更新されました。

  • Reads from the in-memory temporary files of PerlIO::scalar used to fail if $/ was set to a numeric reference (to indicate record-style reads). This is now fixed.

    PerlIO::scalar のメモリ内一時ファイルからの読み込みは、 $/ が(レコード風読み込みを示すために)数値リファレンスにセットされていると 失敗していました。 これは修正されました。

  • VMS now supports getgrgid.

    VMS が getgrgid に対応するようになりました。

  • Many improvements and cleanups have been made to the VMS file name handling and conversion code.

    VMS ファイル名の扱いと変換に関するコードに対して多くの改良と整理が 行われました。

  • Enabling the PERL_VMS_POSIX_EXIT logical name now encodes a POSIX exit status in a VMS condition value for better interaction with GNV's bash shell and other utilities that depend on POSIX exit values. See "$?" in perlvms for details.

    論理名 PERL_VMS_POSIX_EXIT を有効にすることで、VMS 条件値を POSIX 返りステータスに変換し、GNV の bash シェルやその他の POSIX 返り値に 依存しているユーティリティとの相互作用を高めます。 詳細については "$?" in perlvms を参照してください。

  • File::Copy now detects Unix compatibility mode on VMS.

    File::Copy は VMS の Unix 互換モードを検出するようになりました。

Stratus VOS
  • Various changes from Stratus have been merged in.

    Stratus からの様々な変更がマージされました。

Symbian
  • There is now support for Symbian S60 3.2 SDK and S60 5.0 SDK.

    Symbian S60 3.2 SDK と S60 5.0 SDK に対応するようになりました。

Windows
  • Perl 5.12 supports Windows 2000 and later. The supporting code for legacy versions of Windows is still included, but will be removed during the next development cycle.

    Perl 5.12 は Windows 2000 以降に対応します。 Windows のレガシー版に対応するコードもまだ含まれていますが、 次の開発サイクルで削除される予定です。

  • Initial support for building Perl with MinGW-w64 is now available.

    Perl を MinGW-w64 で Perl をビルドするための初期サポートが 利用可能です。

  • perl.exe now includes a manifest resource to specify the trustInfo settings for Windows Vista and later. Without this setting Windows would treat perl.exe as a legacy application and apply various heuristics like redirecting access to protected file system areas (like the "Program Files" folder) to the users "VirtualStore" instead of generating a proper "permission denied" error.

    perl.exe は、Windows Vista 以降のための trustInfo 設定を 指定するためのマニフェストリソースを含むようになりました。 この設定なしでは、Windows は perl.exe をレガシー アプリケーションとして扱い、("Program Files" フォルダのような) 保護されたファイルシステムエリアへのアクセスを、 適切な "permission denied" エラーを生成するのではなく、 ユーザーの "VirtualStore" にリダイレクトする、と言った、様々な 発見的な動作を適用します。

    The manifest resource also requests the Microsoft Common-Controls version 6.0 (themed controls introduced in Windows XP). Check out the Win32::VisualStyles module on CPAN to switch back to old style unthemed controls for legacy applications.

    また、マニフェストリソースは Microsoft コモンコントロールバージョン 6.0 (Windows XP で導入されたテーマ対応版) を要求します。 レガシーアプリケーションのための古い形式のテーマ非対応版に 戻すには、CPAN の Win32::VisualStyles モジュールをチェックしてください。

  • The -t filetest operator now only returns true if the filehandle is connected to a console window. In previous versions of Perl it would return true for all character mode devices, including NUL and LPT1.

    -t ファイルテスト演算子は、ファイルハンドルがコンソールウィンドウに 接続されている場合にのみ真を返します。 以前のバージョンの Perl では、NULLPT1 を含む、全ての キャラクタモードデバイスにおいて真を返します。

  • The -p filetest operator now works correctly, and the Fcntl::S_IFIFO constant is defined when Perl is compiled with Microsoft Visual C. In previous Perl versions -p always returned a false value, and the Fcntl::S_IFIFO constant was not defined.

    -p ファイルテスト演算子は正しく動作するようになり、また、 Perl が Microsoft Visual C でコンパイルされたときには Fcntl::S_IFIFO 定数が定義されるようになりました。 以前のバージョンの Perl では -p は常に偽の値を返し、 Fcntl::S_IFIFO 定数は定義されていませんでした。

    This bug is specific to Microsoft Visual C and never affected Perl binaries built with MinGW.

    このバグは Microsoft Visual C 固有で、MinGW でビルドされた Perl バイナリには影響ありません。

  • The socket error codes are now more widely supported: The POSIX module will define the symbolic names, like POSIX::EWOULDBLOCK, and stringification of socket error codes in $! works as well now;

    ソケットのエラーコードにより広く対応するようになりました: POSIX モジュールは POSIX::EWOULDBLOCK のようなシンボリックな名前を 定義するようになり、$! のソケットエラーコードの文字列化も 動作するようになりました;

      C:\>perl -MPOSIX -E "$!=POSIX::EWOULDBLOCK; say $!"
      A non-blocking socket operation could not be completed immediately.
  • flock() will now set sensible error codes in $!. Previous Perl versions copied the value of $^E into $!, which caused much confusion.

    flock() は実用的なエラーコードを $! にセットするようになりました。 以前のバージョンの Perl は $^E の値を $! にコピーしていたので、 多くの混乱を引き起こしていました。

  • select() now supports all empty fd_sets more correctly.

    select() は全ての空 fd_set をより正しく対応するようになりました。

  • '.\foo' and '..\foo' were treated differently than './foo' and '../foo' by do and require [RT #63492].

    dorequire において、'.\foo''..\foo''./foo''../foo' とは異なって扱われていました [RT #63492]。

  • Improved message window handling means that alarm and kill messages will no longer be dropped under race conditions.

    メッセージウィンドウの扱いが改良され、alarmkill のメッセージが 競合状態でも欠落しなくなりました。

  • Various bits of Perl's build infrastructure are no longer converted to win32 line endings at release time. If this hurts you, please report the problem with the perlbug program included with perl.

    Perl のビルド基盤のさまざまな部分で、もはやリリース時に win32 用の 行末に変換しなくなりました。 もしこれが問題になる場合は、perl に含まれている perlbug プログラムで 問題を報告してください。

既知の問題

This is a list of some significant unfixed bugs, which are regressions from either 5.10.x or 5.8.x.

以下はいくつかの重要な未修正のバグの一覧で、5.10.x か 5.8.x からの 退行です。

  • Some CPANPLUS tests may fail if there is a functioning file ../../cpanp-run-perl outside your build directory. The failure shouldn't imply there's a problem with the actual functional software. The bug is already fixed in [RT #74188] and is scheduled for inclusion in perl-v5.12.1.

    ../../cpanp-run-perl がビルドディレクトリの外にある場合、 いくつかの CPANPLUS テストが失敗します。 失敗しても、実際のソフトウェアに問題があるというわけではないはずです。 このバグは [RT #74188] で既に修正されていて、perl-v5.12.1 に 含まれる予定です。

  • List::Util::first misbehaves in the presence of a lexical $_ (typically introduced by my $_ or implicitly by given). The variable which gets set for each iteration is the package variable $_, not the lexical $_ [RT #67694].

    List::Util::first は (典型的には my $_given による) レキシカルな $_ の存在について振る舞いを間違えていました。 each の反復で設定される変数はレキシカルな $_ ではなくパッケージ変数の $_ です [RT #67694]。

    A similar issue may occur in other modules that provide functions which take a block as their first argument, like

    同様の問題は、以下のように、最初の引数としてブロックを取る関数を提供している その他のモジュールにも発生するかもしれません。

        foo { ... $_ ...} list
  • Some regexes may run much more slowly when run in a child thread compared with the thread the pattern was compiled into [RT #55600].

    正規表現によっては、パターンをコンパイルしたスレッドで実行するのに比べて 子スレッドではとても遅くなることがあります [RT #55600]。

  • Things like "\N{LATIN SMALL LIGATURE FF}" =~ /\N{LATIN SMALL LETTER F}+/ will appear to hang as they get into a very long running loop [RT #72998].

    "\N{LATIN SMALL LIGATURE FF}" =~ /\N{LATIN SMALL LETTER F}+/ の ようなものは、とても長い実行ループに入るので、ハングアップしたかのように 見えます [RT #72998]。

  • Several porters have reported mysterious crashes when Perl's entire test suite is run after a build on certain Windows 2000 systems. When run by hand, the individual tests reportedly work fine.

    何人かの移植担当者が、ある種の Windows 2000 システムでビルドした後 Perl のテストスイート全体を実行すると、なぜかクラッシュすると 報告しています。 手動で実行した場合は、個々のテストは正しく動作します。

正誤表

  • This one is actually a change introduced in 5.10.0, but it was missed from that release's perldelta, so it is mentioned here instead.

    これは実際には 5.10.0 で導入された変更ですが、5.10.0 の perldelta からは 漏れているので、代わりにここで言及します。

    A bugfix related to the handling of the /m modifier and qr resulted in a change of behaviour between 5.8.x and 5.10.0:

    /m 修飾子と qr の扱いに関するバグ修正の結果、5.8.x と 5.10.0 で 振る舞いが変わっています:

        # matches in 5.8.x, doesn't match in 5.10.0
        $re = qr/^bar/; "foo\nbar" =~ /$re/m;

Acknowledgements

Perl 5.12.0 represents approximately two years of development since Perl 5.10.0 and contains over 750,000 lines of changes across over 3,000 files from over 200 authors and committers.

Perl 5.12.0 は、Perl 5.10.0 以降、200 人以上の作者とコミッタによって、 3,000 以上のファイルに 750,000 行以上の変更を加えて、 ほぼ 2 年間開発されてきました。

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.12.0:

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

Aaron Crane, Abe Timmerman, Abhijit Menon-Sen, Abigail, Adam Russell, Adriano Ferreira, Ævar Arnfjörð Bjarmason, Alan Grover, Alexandr Ciornii, Alex Davies, Alex Vandiver, Andreas Koenig, Andrew Rodland, [email protected], Andy Armstrong, Andy Dougherty, Jose AUGUSTE-ETIENNE, Benjamin Smith, Ben Morrow, bharanee rathna, Bo Borgerson, Bo Lindbergh, Brad Gilbert, Bram, Brendan O'Dea, brian d foy, Charles Bailey, Chip Salzenberg, Chris 'BinGOs' Williams, Christoph Lamprecht, Chris Williams, chromatic, Claes Jakobsson, Craig A. Berry, Dan Dascalescu, Daniel Frederick Crisman, Daniel M. Quinlan, Dan Jacobson, Dan Kogai, Dave Mitchell, Dave Rolsky, David Cantrell, David Dick, David Golden, David Mitchell, David M. Syzdek, David Nicol, David Wheeler, Dennis Kaarsemaker, Dintelmann, Peter, Dominic Dunlop, Dr.Ruud, Duke Leto, Enrico Sorcinelli, Eric Brine, Father Chrysostomos, Florian Ragwitz, Frank Wiegand, Gabor Szabo, Gene Sullivan, Geoffrey T. Dairiki, George Greer, Gerard Goossen, Gisle Aas, Goro Fuji, Graham Barr, Green, Paul, Hans Dieter Pearcey, Harmen, H. Merijn Brand, Hugo van der Sanden, Ian Goodacre, Igor Sutton, Ingo Weinhold, James Bence, James Mastros, Jan Dubois, Jari Aalto, Jarkko Hietaniemi, Jay Hannah, Jerry Hedden, Jesse Vincent, Jim Cromie, Jody Belka, John E. Malmberg, John Malmberg, John Peacock, John Peacock via RT, John P. Linderman, John Wright, Josh ben Jore, Jos I. Boumans, Karl Williamson, Kenichi Ishigaki, Ken Williams, Kevin Brintnall, Kevin Ryde, Kurt Starsinic, Leon Brocard, Lubomir Rintel, Luke Ross, Marcel Grünauer, Marcus Holland-Moritz, Mark Jason Dominus, Marko Asplund, Martin Hasch, Mashrab Kuvatov, Matt Kraai, Matt S Trout, Max Maischein, Michael Breen, Michael Cartmell, Michael G Schwern, Michael Witten, Mike Giroux, Milosz Tanski, Moritz Lenz, Nicholas Clark, Nick Cleaton, Niko Tyni, Offer Kaye, Osvaldo Villalon, Paul Fenwick, Paul Gaborit, Paul Green, Paul Johnson, Paul Marquess, Philip Hazel, Philippe Bruhat, Rafael Garcia-Suarez, Rainer Tammer, Rajesh Mandalemula, Reini Urban, Renée Bäcker, Ricardo Signes, Ricardo SIGNES, Richard Foley, Rich Rauenzahn, Rick Delaney, Risto Kankkunen, Robert May, Roberto C. Sanchez, Robin Barker, SADAHIRO Tomoyuki, Salvador Ortiz Garcia, Sam Vilain, Scott Lanning, Sébastien Aperghis-Tramoni, Sérgio Durigan Júnior, Shlomi Fish, Simon 'corecode' Schubert, Sisyphus, Slaven Rezic, Smylers, Steffen Müller, Steffen Ullrich, Stepan Kasal, Steve Hay, Steven Schubiger, Steve Peters, Tels, The Doctor, Tim Bunce, Tim Jenness, Todd Rinaldo, Tom Christiansen, Tom Hukins, Tom Wyant, Tony Cook, Torsten Schoenfeld, Tye McQueen, Vadim Konovalov, Vincent Pit, Hio YAMASHINA, Yasuhiro Matsumoto, Yitzchak Scott-Thoennes, Yuval Kogman, Yves Orton, Zefram, Zsban Ambrus

This is woefully incomplete as it's automatically generated from version control history. In particular, it doesn't include the names of the (very much appreciated) contributors who reported issues in previous versions of Perl that helped make Perl 5.12.0 better. For a more complete list of all of Perl's historical contributors, please see the AUTHORS file in the Perl 5.12.0 distribution.

これはバージョンコントロール履歴から自動的に生成しているので、 悲惨なほどに不完全です。 特に、Perl 5.12.0 をよりよくするための助けとなった、以前のバージョンの Perl の問題を報告してくれた(とてもありがたい)貢献者の名前を含んでいません。 全ての Perl の歴史的な貢献者のより完全な一覧はについては、 どうか Perl 5.12.0 配布に含まれている AUTHORS を参照してください。

Our "retired" pumpkings Nicholas Clark and Rafael Garcia-Suarez deserve special thanks for their brilliant and substantive ongoing contributions. Nicholas personally authored over 30% of the patches since 5.10.0. Rafael comes in second in patch authorship with 11%, but is first by a long shot in committing patches authored by others, pushing 44% of the commits since 5.10.0 in this category, often after providing considerable coaching to the patch authors. These statistics in no way comprise all of their contributions, but express in shorthand that we couldn't have done it without them.

私たちの「引退した」パンプキングである Nicholas Clark と Rafael Garcia-Suarez は、素晴らしく現実的に継続されている貢献に対して 特別な感謝に値します。 Nicholas は個人的に、5.10.0 以降のパッチの 30% 以上を書いています。 Rafael はパッチの量では 11% で 2 位ですが、他の人が書いたパッチの コミット量では断トツの 1 位で、5.10.0 以降この分野ではコミットの 44% が 彼のものです; これはしばしばパッチ作者への少なからぬ指導の後のものです。 これらの統計資料は彼らの貢献の全てを表すには全く不足していますが、 彼らなしではリリースできなかったことを手短に表現しています。

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 コミュニティ全体に感謝します。

バグ報告

If you find what you think is a bug, you might check the articles recently posted to the comp.lang.perl.misc newsgroup and the perl bug database at http://rt.perl.org/perlbug/. There may also be information at http://www.perl.org/, the Perl Home Page.

もしバグと思われるものを見つけたら、comp.lang.perl.misc ニュースグループに 最近投稿された記事や http://rt.perl.org/perlbug/ にある 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 analyzed 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 please send it to [email protected] This points to a closed subscription unarchived mailing list, which includes all the core committers, who be able to help assess the impact of issues, figure out a resolution, and help co-ordinate the release of patches to mitigate or fix the problem across all platforms on which Perl is supported. Please only use this address for security issues in the Perl core, not for modules independently distributed on CPAN.

もし報告しようとしているバグがセキュリティに関するもので、公開されている メーリングリストに送るのが不適切なものなら、 [email protected] に送ってください。 このアドレスは、問題の影響を評価し、解決法を見つけ、Perl が対応している 全てのプラットフォームで問題を軽減または解決するパッチをリリースするのを 助けることが出来る、全てのコアコミッタが参加している非公開の メーリングリストになっています。 このアドレスは、独自に CPAN で配布されているモジュールではなく、 Perl コアのセキュリティ問題だけに使ってください。

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

http://dev.perl.org/perl5/errata.html for a list of issues found after this release, as well as a list of CPAN modules known to be incompatible with this release.

http://dev.perl.org/perl5/errata.html には、このリリース以降に 発見された問題や、このリリースと互換性のないとわかった CPAN モジュールの 一覧があります。