perl5400delta
perl5380delta
perl5361delta
perl5360delta
perl5341delta
perl5340delta
perl5321delta
perl5320delta
perl5303delta
perl5302delta
perl5301delta
perl5300delta
perl5283delta
perl5282delta
perl5281delta
perl5280delta
perl5263delta
perl5262delta
perl5261delta
perl5260delta
perl5244delta
perl5243delta
perl5242delta
perl5241delta
perl5240delta
perl5224delta
perl5223delta
perl5222delta
perl5221delta
perl5220delta
perl5203delta
perl5202delta
perl5201delta
perl5200delta
perl5184delta
perl5182delta
perl5181delta
perl5180delta
perl5163delta
perl5162delta
perl5161delta
perl5160delta
perl5144delta
perl5143delta
perl5142delta
perl5141delta
perl5140delta
perl5125delta
perl5124delta
perl5123delta
perl5122delta
perl5100delta
perl5101delta
perl5121delta
perl5120delta
perl5100delta
perl5101delta
perl58delta
perl582delta
perl587delta
perl581delta
perl586delta
perl588delta
perl584delta
perl585delta
perl583delta
perl58delta
perl582delta
perl587delta
perl581delta
perl586delta
perl588delta
perl584delta
perl585delta
perl583delta
perl58delta
perl582delta
perl581delta
perl584delta
perl583delta
perl58delta
- 名前
- 説明
- コアの拡張
- New
package NAME VERSION
syntax - The
...
operator - 暗黙の strict
- Unicode の改良
- 2038 年問題準拠
- qr のオーバーロード
- プラグ可能なキーワード
- さらに内部のための API
- オーバーライド可能な関数検索
- プラグ可能なメソッド解決順序のための適切なインターフェース
\N
experimental regex escape- DTrace 対応
- Support for
configure_requires
in CPAN module metadata each
is now more flexiblewhen
as a statement modifier$,
flexibility- when 句での //
- シェル環境から警告を有効にする
delete local
- 抽象名前空間ソケットへの対応
- substr の引数の 32 ビット制限は取り除かれました
- New
- 互換性がなくなる可能性のある変更
- 非推奨
- Unicode のオーバーホール
- モジュールとプラグマ
- 文書
- パフォーマンスの向上の抜粋
- インストールと設定の改良
- 内部の変更
- テスト
- 新しい、または変更された診断メッセージ
- ツールの変更
- バグ修正の抜粋
- プラットフォーム固有の変更
- 既知の問題
- 正誤表
- Acknowledgements
- バグ報告
- SEE ALSO
名前¶
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 asuse NAME VERSION
$VERSION
はuse 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 = ...
andeval $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
として 3
や 5,
といったものは使えなくなりました。
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.
CPAN
と CPANPLUS
は、ほとんどの最近の CPAN 配布が含んでいる メタデータファイル META.yml の configure_requires
キーワードに 対応しました。 これにより、Makefile.PL や Build.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::MakeMaker
か Module::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::VERSION
と version オブジェクトコンストラクタは 曖昧なバージョン番号を取ります。 バージョンが不正な場合、致命的エラーになります。 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
の中で、ARCHLIB
と PRIVLIB
は現在のバージョンの site_perl
および vendor_perl
の後に現れるようになりました。 site_perl
と vendor_perl
にインストールされたモジュールは、 ARCHLIB
や PRIVLIB
にインストールされたものより優先して 読み込まれます。
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 usewhen ([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 inwhen (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 (sinceundef
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 experimentalTest::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, theExtUtils::MakeMaker::bytes
andExtUtils::MakeMaker::vmsish
modules have been removed from this distribution.ExtUtils::MakeMaker
のアップグレードの一部として、ExtUtils::MakeMaker::bytes
とExtUtils::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 ause 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 name3,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
orsite
perl library directories. This will inhibit the deprecation warnings.単独、あるいはより大きいシステムの一部として、パッケージ版の Perl を 出荷する場合、非推奨のコアモジュールの影響を注意深く検討するべきです。 いくつか、あるいは全ての非推奨モジュールを perl ライブラリディレクトリ
vendor
かsite
にインストールして 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 aCR LF
sequence.\X
はCR LF
シーケンスに分割されません。 -
\X
will now match a sequence which includes theZWJ
andZWNJ
characters.\X
は、ZWJ
とZWNJ
の文字を含むシーケンスにも マッチングするようになりました。 -
\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 aZWSP
. 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 theFatal
module. The bundled version is 2.06_01. Note that in this release, using a string eval whenautodie
is in effect can cause the autodie behaviour to leak into the surrounding scope. See "BUGS" in autodie for more details.autodie
はFatal
モジュール代用品で、新しくレキシカルスコープを 持つものです。 同梱されているバージョンは 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 ofbase
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 suppressesUse 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 theunicode_strings
feature:feature
はunicode_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 thestash_name
method to allow subclasses ofless
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 somemro::
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 newwarnings::fatal_enabled()
function. It also includes a newillegalproto
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 でした。
非推奨になったモジュールとプラグマ¶
See "Deprecated Modules" above.
上述の "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 syntaxunless (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 operatorswhen()
がほとんどのファイルテスト演算子を特別に扱うことが文書化されました。 -
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 bykeys %hash
. This makes operations such assort keys %hash
in the scope ofuse 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 thanif (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 withEXISTS
andDELETE
methods.無効コンテキストで (
@a = reverse @a
のように) 配列を反転して 自分自身に代入する場合、その場で行われるようになり、 以前より数桁速くなりました。 これはまた存在しない要素をできるだけ保存します; つまり、マジカルでない 配列やEXISTS
とDELETE
メソッドを持つ 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
andvendorarch
are the same, then they are only added to@INC
once.vendorlib
とvendorarch
が同じなら、@INC
には 1 回だけ 追加されます。 -
$Config{usedevel}
and the C-levelPERL_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
andperl -V
. Unpushed local commits are automatically added to the list of local patches displayed byperl -V
.Unix では、もし git レポジトリを含むツリーからビルドするなら、 設定プロセスは
perl -v
とperl -V
の出力での表示のために、 チェックアウトしたコミットハッシュを記録します。 プッシュされないローカルのコミットは自動的にperl -V
によって表示されるローカルパッチの一覧に追加されます。 -
Perl now supports SystemTap's
dtrace
compatibility layer and an issue with linkingminiperl
has been fixed in the process.SystemTap の
dtrace
互換層に対応し、その過程でminiperl
が リンクするときの問題を修正しました。 -
perldoc now uses
less -R
instead ofless
for improved behaviour in the face ofgroff
's new usage of ANSI escape codes.perldoc は、
groff
の ANSI エスケープコードの新しい使い方に直面したときの 振る舞いを改善するために、less
ではなくless -R
を使うようになりました。 -
perl -V
now reports use of the compile-time optionsUSE_PERL_ATOF
andUSE_ATTRIBUTES_FOR_PERLIO
.perl -V
はコンパイル時オプションUSE_PERL_ATOF
とUSE_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 theerrno
variable.errno
変数を一時的に補完することを形式化するための、dSAVEDERRNO
,dSAVE_ERRNO
,SAVE_ERRNO
,RESTORE_ERRNO
という 新しいマクロが追加されました。 -
The function
Perl_sv_insert_flags
has been added to augmentPerl_sv_insert
.Perl_sv_insert
関数を拡大するために、Perl_sv_insert_flags
関数が 追加されました。 -
The function
Perl_newSV_type(type)
has been added, equivalent toPerl_newSV()
followed byPerl_sv_upgrade(type)
.Perl_newSV()
の後Perl_sv_upgrade(type)
を実行するのと等価な、Perl_newSV_type(type)
関数が追加されました。 -
The function
Perl_newSVpvn_flags()
has been added, equivalent toPerl_newSVpvn()
and then performing the action relevant to the flag.Perl_newSVpvn_flags()
関数が追加されました; これはPerl_newSVpvn()
と 等価で、それからフラグに関連する動作を行います。Two flag bits are currently supported.
現在のところ二つのフラグビットに対応しています。
-
SVf_UTF8
will callSvUTF8_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 callsPerl_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 toPerl_croak
.Perl_croak
へのラッパとして、Perl_croak_xs_usage
関数が追加されました。 -
Perl now exports the functions
PerlIO_find_layer
andPerlIO_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 thanPL_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 viaSvMAGIC()
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 onSvRMAGICAL()
. 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 byNULL
in the core code, and non-dual-life modules, asNULL
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 awayconst
, returning avoid *
. MacrosMUTABLE_SV(av)
,MUTABLE_SV(cv)
etc build on this, casting toAV *
etc without casting awayconst
. This allows proper compile-time auditing ofconst
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()
andmXPUSHs()
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
, setTEST_JOBS
in your environment to the number of tests to run in parallel, and runmake 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/TESTPERL5OPT
と t/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
andmake test_harness
run to completion automatically.いくつかのテストは、テストが時間切れになった後に kill することで
make test
とmake 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
andPVGV
.t/io/pvbm.t は 内部型
PVBM
とPVGV
の間で想定外の相互作用がないことを チェックします。 -
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
anddbmclose
.t/op/dbm.t は
dbmopen
とdbmclose
をテストします。 -
t/op/index_thr.t tests the interaction of
index
and threads.t/op/index_thr.t は
index
とスレッドの相互作用をテストします。 -
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.t は
qr
がリークしていないことをテストします。 -
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.t は
Tie::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.t は
setpgrp
が動作するかをチェックします。 -
t/op/substr_thr.t tests the interaction of
substr
and threads.t/op/substr_thr.t は
substr
とスレッドの相互作用をテストします。 -
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.t は
qr
をテストします。 -
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 togmtime
andlocaltime
, do not cause an internal overflow or an excessively long loop.t/op/time_loop.t は、
2**63
よりも大きい unix time をテストします; これはgmtime
とlocaltime
で扱えるようになっていて、内部 オーバーフローや, 過度に長いループを引き起こしません。
新しい、または変更された診断メッセージ¶
新しい診断メッセージ¶
-
SV allocation tracing has been added to the diagnostics enabled by
-Dm
. The tracing can alternatively output via thePERL_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
, anducfirst
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 thecharnames
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 warningDeprecated 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 thecharnames
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
, orvalues
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 toEBADF
, 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 indeprecated
.deprecated
カテゴリだけであるべき 5 個の警告からsyntax
カテゴリが 取り除かれました。 -
Three fatal
pack
/unpack
error messages have been normalized topanic: %s
三つの致命的な
pack
/unpack
エラーメッセージがpanic: %s
に 正規化されました。 -
Unicode character is illegal
has been rephrased to be more accurateUnicode 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 warningUsing 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
andlocaltime
called with numbers smaller than they can reliably handle will now issue the warningsgmtime(%.0f) too small
andlocaltime(%.0f) too small
.確実に扱える値より小さい値で
gmtime
とlocaltime
を呼び出すと、gmtime(%.0f) too small
とlocaltime(%.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.pl は
LVALUE
サブルーチンを対応するようになりました。 さらに、デバッガは代理定数サブルーチンとサブルーチンスタブを正しく 扱えるようになりました。 -
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] -
$@
may now be assigned a read-only value (without error or busting the stack).$@
は (エラーやスタック破壊なしに) 読み込み専用値を 代入できるようになりました。 -
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, anundef
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 packageFoo
didn't exist, even if the object's@ISA
containedFoo
.$object->isa('Foo')
は、たとえ オブジェクトの@ISA
にFoo
を含んでいても、パッケージに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 bySafe
andops
. Previously it was erroneously treated like stringeval
.ブロック形式の
eval
は特別にSafe
とops
でトラップ可能に なりました。 以前は間違って文字列の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
orlast
to exit agiven
block no longer produces a spurious warning like the following:given
ブロックから出るためにnext
やlast
を使ったときに、 以下のような誤った警告が出力されなくなりました: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 arraytie
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
andchop
. 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 asindex "$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 list5.10.*
after5.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
andsprintf
could produce the fatal errorpanic: utf8_mg_pos_cache_update
when printing UTF-8 strings [RT #62666].5.10.0 では、
printf
とsprintf
で 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, butcc -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 では、NUL と LPT1 を含む、全ての キャラクタモードデバイスにおいて真を返します。 -
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_set
s more correctly.select() は全ての空
fd_set
をより正しく対応するようになりました。 -
'.\foo'
and'..\foo'
were treated differently than'./foo'
and'../foo'
bydo
andrequire
[RT #63492].do
とrequire
において、'.\foo'
と'..\foo'
が'./foo'
と'../foo'
とは異なって扱われていました [RT #63492]。 -
Improved message window handling means that
alarm
andkill
messages will no longer be dropped under race conditions.メッセージウィンドウの扱いが改良され、
alarm
とkill
のメッセージが 競合状態でも欠落しなくなりました。 -
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 bymy $_
or implicitly bygiven
). 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 andqr
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 モジュールの 一覧があります。