=encoding utf8 =head1 NAME =begin original perl5140delta - what is new for perl v5.14.0 =end original perl5140delta - perl v5.14.0 での変更点 =head1 DESCRIPTION =begin original This document describes differences between the 5.12.0 release and the 5.14.0 release. =end original この文書は 5.12.0 リリースと 5.14.0 リリースの変更点を記述しています。 =begin original If you are upgrading from an earlier release such as 5.10.0, first read L, which describes differences between 5.10.0 and 5.12.0. =end original 5.10.0 のような以前のメジャーバージョンから更新する場合は、まず 5.10.0 と 5.12.0 の違いについて記述している L を読んでください。 =begin original Some of the bug fixes in this release have been backported to subsequent releases of 5.12.x. Those are indicated with the 5.12.x version in parentheses. =end original このリリースで修正されたバグのいくつかは 5.12.x のリリースに バックポートされました。 そのようなものはかっこの中に 5.12.x のバージョン番号を書いて示しています。 =head1 Notice (注意) =begin original As described in L, the release of Perl 5.14.0 marks the official end of support for Perl 5.10. Users of Perl 5.10 or earlier should consider upgrading to a more recent release of Perl. =end original L に記述されているように、Perl 5.14.0 によって Perl 5.10 の サポートが公式に終了します。 Perl 5.10 以前のユーザーはより新しい Perl にアップグレードすることを 検討するべきです。 =head1 Core Enhancements (コアの拡張) =head2 Unicode =head3 Unicode Version 6.0 is now supported (mostly) (Unicode Version 6.0 に (ほぼ) 対応しました) =begin original Perl comes with the Unicode 6.0 data base updated with L, with one exception noted below. See L for details on the new release. Perl does not support any Unicode provisional properties, including the new ones for this release. =end original Perl は L で 更新された Unicode 6.0 データベースを同梱していますが、後述する 一つの例外があります。 新しいリリースについて詳しくは L を参照してください。 Perl は、このリリースで新しいものを含む、全ての Unicode 仮特性は 対応していません。 =begin original Unicode 6.0 has chosen to use the name C for the character at U+1F514, which is a symbol that looks like a bell, and is used in Japanese cell phones. This conflicts with the long-standing Perl usage of having C mean the ASCII C character, U+0007. In Perl 5.14, C<\N{BELL}> continues to mean U+0007, but its use generates a deprecation warning message unless such warnings are turned off. The new name for U+0007 in Perl is C, which corresponds nicely with the existing shorthand sequence for it, C<"\a">. C<\N{BEL}> means U+0007, with no warning given. The character at U+1F514 has no name in 5.14, but can be referred to by C<\N{U+1F514}>. In Perl 5.16, C<\N{BELL}> will refer to U+1F514; all code that uses C<\N{BELL}> should be converted to use C<\N{ALERT}>, C<\N{BEL}>, or C<"\a"> before upgrading. =end original Unicode 6.0 は文字 U+1F514 に C という名前を選びました; これは日本の携帯電話で使われている、ベルのような形のシンボルです。 これは、C が ASCII C U+0007 を意味するという、長年の Perl の利用法と衝突します。 Perl 5.14 では、C<\N{BELL}> は U+0007 を意味するままですが、非推奨 警告をオフにしていない限りは非推奨警告メッセージが出力されます。 Perl での U+0007 の新しい名前は C です; これは既にある 短縮記法である C<"\a"> といい感じに対応します。 C<\N{BEL}> は U+0007 を意味し、警告も出ません。 5.14 では文字 U+1F514 に名前はありませんが、 C<\N{U+1F514}> で 参照できます。 Perl 5.16 では C<\N{BELL}> は U+1F514 を参照します; C<\N{BELL}> を使っている全てのコードはアップグレードする前に C<\N{ALERT}>, C<\N{BEL}>, C<"\a"> のいずれかを使うように変換するべきです。 =head3 Full functionality for C (C の完全な機能) =begin original This release provides full functionality for C. Under its scope, all string operations executed and regular expressions compiled (even if executed outside its scope) have Unicode semantics. See L. However, see L, below. =end original このリリースでは C に関する完全な機能が 提供されます。 このスコープ内では、全ての文字列操作の処理と正規表現のコンパイルは (たとえ実行はスコープ外でも) Unicode の意味論を持ちます。 L を参照してください。 しかし、後述する L を 参照してください。 =begin original This feature avoids most forms of the "Unicode Bug" (see L for details). If there is any possibility that your code will process Unicode strings, you are I encouraged to use this subpragma to avoid nasty surprises. =end original この機能はほとんどの形の「Unicode バグ」(詳しくは L を参照してください。) を回避します。 もしコード中で Unicode 文字列を操作する可能性があるなら、 不快な驚きを回避するためにこの副プラグマを使うことを I<強く> 推奨します。 =head3 C<\N{I}> and C enhancements (C<\N{I}> と C の拡張) =over =item * =begin original C<\N{I}> and C now know about the abbreviated character names listed by Unicode, such as NBSP, SHY, LRO, ZWJ, etc.; all customary abbreviations for the C0 and C1 control characters (such as ACK, BEL, CAN, etc.); and a few new variants of some C1 full names that are in common usage. =end original C<\N{I}> と C は NBSP, SHY, LRO, ZWJ のような、 Unicode によってリストされている短縮文字名、 (ACK, BEL, CAN などのような)C0 と C1 制御文字の慣例的省略形、 一般的に使われている C1 完全名のいくつかのバリエーションを 認識するようになりました。 =item * =begin original Unicode has several I, in which particular sequences of code points are given names. C<\N{I}> now recognizes these. =end original Unicode には多くの I<名前付き文字シーケンス> (named character sequences) が あり、特定の符号位置の並びには名前があります。 C<\N{I}> はこれを認識するようになりました。 =item * =begin original C<\N{I}>, C, and C now know about every character in Unicode. In earlier releases of Perl, they didn't know about the Hangul syllables nor several CJK (Chinese/Japanese/Korean) characters. =end original C<\N{I}>, C, C は Unicode の 全ての文字を認識するようになりました。 Perl の以前のリリースでは、ハングル音節文字や CJK (中国/日本/韓国) の多くの 文字を認識していませんでした。 =item * =begin original It is now possible to override Perl's abbreviations with your own custom aliases. =end original Perl の省略型を独自の別名でオーバーライドできるようになりました。 =item * =begin original You can now create a custom alias of the ordinal of a character, known by C<\N{I}>, C, and C. Previously, aliases had to be to official Unicode character names. This made it impossible to create an alias for unnamed code points, such as those reserved for private use. =end original C<\N{I}>, C, C が 認識する文字の番号への独自の別名を作成できるようになりました。 以前は、別名は公式の Unicode 文字名に対するものである必要がありました。 これにより、プライベート用途のために予約されている符号位置のように 名前のない符号位置に対する別名を作ることができませんでした。 =item * =begin original The new function charnames::string_vianame() is a run-time version of C<\N{I}}>, returning the string of characters whose Unicode name is its parameter. It can handle Unicode named character sequences, whereas the pre-existing charnames::vianame() cannot, as the latter returns a single code point. =end original 新しい関数である charnames::string_vianame() は C<\N{I}}> の実行時版で、引数の Unicode 名を持つ文字の 文字列を返します。 これは Unicode の名前付き文字の並びを扱うことができます; 一方既にある charnames::vianame() は一つの符号位置を返すので 扱うことができません。 =back =begin original See L for details on all these changes. =end original これら全ての変更について詳しくは L を参照してください。 =head3 New warnings categories for problematic (non-)Unicode code points. (問題のある (非) Unicode 符号位置のための新しい警告カテゴリ) =begin original Three new warnings subcategories of "utf8" have been added. These allow you to turn off some "utf8" warnings, while allowing other warnings to remain on. The three categories are: C when UTF-16 surrogates are encountered; C when Unicode non-character code points are encountered; and C when code points above the legal Unicode maximum of 0x10FFFF are encountered. =end original "utf8" 副カテゴリに三つの新しい警告が追加されました。 これらによって "utf8" 警告をの一部をオフにできるようにして、残りを 警告するままにできるようになります。 三つのカテゴリとは: UTF-16 サロゲートに遭遇したときの C; Unicode の非文字符号位置に遭遇したときの C; Unicode の正当な上限である 0x10FFFF を超える符号位置に遭遇したときの C です。 =head3 Any unsigned value can be encoded as a character (全ての符号なし値は文字にエンコードできます) =begin original With this release, Perl is adopting a model that any unsigned value can be treated as a code point and encoded internally (as utf8) without warnings, not just the code points that are legal in Unicode. However, unless utf8 or the corresponding sub-category (see previous item) of lexical warnings have been explicitly turned off, outputting or executing a Unicode-defined operation such as upper-casing on such a code point generates a warning. Attempting to input these using strict rules (such as with the C<:encoding(UTF-8)> layer) will continue to fail. Prior to this release, handling was inconsistent and in places, incorrect. =end original このリリースでは、Perl は(Unicode として正当でない符号位置でも)全ての 符号なし値を符号位置として扱い、警告なしで (utf8 として)内部でエンコードできるモデルを採用しています。 しかし、utf8 やそれに対応する(前述した)副カテゴリの警告を明示的に レキシカルにオフにしない限り、このような 符号位置に対して(大文字化のような) Unicode が定義している出力や操作を行うと 警告が生成されます。 (C<:encoding('UTF-8')> 層を使うような) 厳密なルールを使っての このような値の入力は失敗するままです。 このリリースの前では、扱いは非常に矛盾していて、あちこちで間違っています。 =begin original Unicode non-characters, some of which previously were erroneously considered illegal in places by Perl, contrary to the Unicode Standard, are now always legal internally. Inputting or outputting them works the same as with the non-legal Unicode code points, because the Unicode Standard says they are (only) illegal for "open interchange". =end original 非 Unicode 文字 (その一部は以前は Unicode 標準に反して Perl では 間違って不正なものとされていました) は常に内部で有効なものとなりました。 それらの入出力は、Unicode 標準が「開かれた交換」のため(だけ)に不正で あると言っているように、不正な Unicode 符号位置と同様に動作します。 =head3 Unicode database files not installed (Unicode データベースファイルはインストールされません) =begin original The Unicode database files are no longer installed with Perl. This doesn't affect any functionality in Perl and saves significant disk space. If you need these files, you can download them from L. =end original Unicode データベースファイルは Perl にインストールされなくなりました。 これは Perl の機能には何の影響も与えず、かなりのディスク容量を節約します。 これらのファイルが必要な場合は、 L からダウンロードできます。 =head2 Regular Expressions (正規表現) =head3 C<(?^...)> construct signifies default modifiers (C<(?^...)> 構造はデフォルト修飾子を示します) =begin original An ASCII caret C<"^"> immediately following a C<"(?"> in a regular expression now means that the subexpression does not inherit surrounding modifiers such as C, but reverts to the Perl defaults. Any modifiers following the caret override the defaults. =end original 正規表現中、ASCII キャレット C<"^"> の直後に C<"(?"> があると、 (C のような)それを囲む修飾子を継承せず、 Perl のデフォルトに戻ることを意味するようになりました。 キャレットに引き続く任意の修飾子はデフォルトを上書きします。 =begin original Stringification of regular expressions now uses this notation. For example, C would previously be stringified as C<(?i-xsm:hlagh)>, but now it's stringified as C<(?^i:hlagh)>. =end original 正規表現の文字列化はこの記法を使うようになりました。 例えば、以前は C は C<(?i-xsm:hlagh)> に 文字列化されていましたが、C<(?^i:hlagh)> に文字列化されるようになります。 =begin original The main purpose of this change is to allow tests that rely on the stringification I to have to change whenever new modifiers are added. See L. =end original この変更の主な目的は、新しい修飾子が追加されたときに変更する必要の I<ない> 文字列化に依存したテストが行えるようにすることです。 L を参照してください。 =begin original This change is likely to break code that compares stringified regular expressions with fixed strings containing C. =end original この変更は、文字列化された正規表現を C を含む固定文字列と 比較しているコードを壊しそうです。 =head3 C, C, C, and C modifiers (C, C, C, C 修飾子) =begin original Four new regular expression modifiers have been added. These are mutually exclusive: one only can be turned on at a time. =end original 四つの新しい正規表現修飾子が追加されました。 これらは互いに排他です: 同時には一つだけをオンにできます。 =over =item * =begin original The C modifier says to compile the regular expression as if it were in the scope of C, even if it is not. =end original C 修飾子は、C スコープ内でない場合でも C スコープ内であるかのように正規表現をコンパイルします。 =item * =begin original The C modifier says to compile the regular expression as if it were in the scope of a C pragma. =end original C 修飾子は、C プラグマのスコープ内に あるかのように正規表現をコンパイルします。 =item * =begin original The C (default) modifier is used to override any C and C pragmas in effect at the time of compiling the regular expression. =end original (デフォルトの) C 修飾子は、正規表現のコンパイル時に効果のある 全ての C プラグマと C プラグマを 上書きするために使われます。 =item * =begin original The C regular expression modifier restricts C<\s>, C<\d> and C<\w> and the POSIX (C<[[:posix:]]>) character classes to the ASCII range. Their complements and C<\b> and C<\B> are correspondingly affected. Otherwise, C behaves like the C modifier, in that case-insensitive matching uses Unicode semantics. =end original C 正規表現修飾子は C<\s>, C<\d>, C<\w> および POSIX (C<[[:posix:]]>) 文字クラスを ASCII の範囲に制限します。 それぞれの逆の効果を持つものと、C<\b> および C<\B> も同様に影響します。 その他では、C は C 修飾子と同様に振る舞うので、大文字小文字を 無視するマッチングは Unicode の意味論を使います。 =begin original If the C modifier is repeated, then additionally in case-insensitive matching, no ASCII character can match a non-ASCII character. For example, =end original C 修飾子が繰り返されると、さらに、大文字小文字を無視するマッチングでは ASCII 文字でないものはマッチングしません。 例えば、 "k" =~ /\N{KELVIN SIGN}/ai "\xDF" =~ /ss/ai =begin original match but =end original はマッチングしますが "k" =~ /\N{KELVIN SIGN}/aai "\xDF" =~ /ss/aai =begin original do not match. =end original はマッチングしません。 =back =begin original See L for more detail. =end original さらなる詳細については L を参照してください。 =head3 Non-destructive substitution (非破壊的置換) =begin original The substitution (C) and transliteration (C) operators now support an C option that copies the input variable, carries out the substitution on the copy, and returns the result. The original remains unmodified. =end original 置換 (C) と変換 (C) 演算子は、入力変数をコピーしてから 置換を行い、結果を返す C オプションに対応しました。 元データは変更されないままです。 my $old = "cat"; my $new = $old =~ s/cat/dog/r; # $old is "cat" and $new is "dog" =begin original This is particularly useful with C. See L for more examples. =end original これは特に C で有用です。 さらなる例については L を参照してください。 =head3 Re-entrant regular expression engine (再入可能な正規表現エンジン) =begin original It is now safe to use regular expressions within C<(?{...})> and C<(??{...})> code blocks inside regular expressions. =end original 正規表現の中で C<(?{...})> と C<(??{...})> コードブロックで 安全に正規表現を使えるようになりました。 =begin original These blocks are still experimental, however, and still have problems with lexical (C) variables and abnormal exiting. =end original しかし、これらのブロックはまだ実験的で、レキシカル (C) 変数では まだ問題があり、異常終了します。 =head3 C (C) =begin original The C pragma now has the ability to turn on regular expression flags till the end of the lexical scope: =end original C プラグマは、レキシカルスコープの終わりまで正規表現フラグを 有効にする機能をもつようになりました: use re "/x"; "foo" =~ / (.+) /; # /x implied =begin original See L for details. =end original 詳しくは L を参照してください。 =head3 \o{...} for octals (8 進数のための \o{...}) =begin original There is a new octal escape sequence, C<"\o">, in doublequote-like contexts. This construct allows large octal ordinals beyond the current max of 0777 to be represented. It also allows you to specify a character in octal which can safely be concatenated with other regex snippets and which won't be confused with being a backreference to a regex capture group. See L. =end original ダブルクォート風コンテキストで使える、新しい 8 進エスケープシーケンス C<"\o"> が導入されました。 この構造により、現在の最大である 0777 を超える 8 進数を使えるように なります。 また、安全に他の正規表現と結合でき、正規表現捕捉グループと混乱することなく、 8 進数で文字を指定できるようになりました。 L を参照してください。 =head3 Add C<\p{Titlecase}> as a synonym for C<\p{Title}> (C<\p{Title}> の同義語としての C<\p{Titlecase}>) =begin original This synonym is added for symmetry with the Unicode property names C<\p{Uppercase}> and C<\p{Lowercase}>. =end original この同義語は、Unicode 特性名である C<\p{Uppercase}> および C<\p{Lowercase}> との対称性のために追加されました。 =head3 Regular expression debugging output improvement (正規表現デバッグ出力の改良) =begin original Regular expression debugging output (turned on by C) now uses hexadecimal when escaping non-ASCII characters, instead of octal. =end original (C で有効になる) 正規表現デバッグ表示は、 非 ASCII 文字をエスケープするときに 8 進数ではなく 16 進数を 使うようになりました。 =head3 Return value of C (C の返り値) =begin original Custom regular expression engines can now determine the return value of C on an entry of C<%+> or C<%->. =end original カスタム正規表現エンジンは C<%+> や C<%-> の配列に対する C の 返り値を判定するようになりました。 =head2 Syntactical Enhancements (文法的な拡張) =head3 Array and hash container functions accept references (配列とハッシュのコンテナ関数はリファレンスを受け付けます) =begin original B This feature is considered experimental, as the exact behaviour may change in a future version of Perl. =end original B<警告:> この機能は実験的と考えられているので、正確な振る舞いは将来の バージョンの Perl では変わるかもしれません。 =begin original All builtin functions that operate directly on array or hash containers now also accept unblessed hard references to arrays or hashes: =end original 配列やハッシュのコンテナを直接操作する全ての組み込み関数は bless されていない配列やハッシュのハードリファレンスも 受け付けるようになりました。 =begin original |----------------------------+---------------------------| | Traditional syntax | Terse syntax | |----------------------------+---------------------------| | push @$arrayref, @stuff | push $arrayref, @stuff | | unshift @$arrayref, @stuff | unshift $arrayref, @stuff | | pop @$arrayref | pop $arrayref | | shift @$arrayref | shift $arrayref | | splice @$arrayref, 0, 2 | splice $arrayref, 0, 2 | | keys %$hashref | keys $hashref | | keys @$arrayref | keys $arrayref | | values %$hashref | values $hashref | | values @$arrayref | values $arrayref | | ($k,$v) = each %$hashref | ($k,$v) = each $hashref | | ($k,$v) = each @$arrayref | ($k,$v) = each $arrayref | |----------------------------+---------------------------| =end original |----------------------------+---------------------------| | 伝統的文法 | 簡潔文法 | |----------------------------+---------------------------| | push @$arrayref, @stuff | push $arrayref, @stuff | | unshift @$arrayref, @stuff | unshift $arrayref, @stuff | | pop @$arrayref | pop $arrayref | | shift @$arrayref | shift $arrayref | | splice @$arrayref, 0, 2 | splice $arrayref, 0, 2 | | keys %$hashref | keys $hashref | | keys @$arrayref | keys $arrayref | | values %$hashref | values $hashref | | values @$arrayref | values $arrayref | | ($k,$v) = each %$hashref | ($k,$v) = each $hashref | | ($k,$v) = each @$arrayref | ($k,$v) = each $arrayref | |----------------------------+---------------------------| =begin original This allows these builtin functions to act on long dereferencing chains or on the return value of subroutines without needing to wrap them in C<@{}> or C<%{}>: =end original これにより、これらの組み込み関数は、長いデリファレンスチェーンや サブルーチンの返り値をC<@{}> や C<%{}> で囲む必要がなくなりました: push @{$obj->tags}, $new_tag; # old way push $obj->tags, $new_tag; # new way for ( keys %{$hoh->{genres}{artists}} ) {...} # old way for ( keys $hoh->{genres}{artists} ) {...} # new way =head3 Single term prototype (単一表現プロトタイプ) =begin original The C<+> prototype is a special alternative to C<$> that acts like C<\[@%]> when given a literal array or hash variable, but will otherwise force scalar context on the argument. See L. =end original C<+> プロトタイプは C<$> の特殊な代替物で、リテラルな配列やハッシュ変数が 与えられたときには C<\[@%]> のように働きますが、その他の場合では 引数にスカラコンテキストを強制します。 L を参照してください。 =head3 C block syntax (C ブロック文法) =begin original A package declaration can now contain a code block, in which case the declaration is in scope inside that block only. So C is precisely equivalent to C<{ package Foo; ... }>. It also works with a version number in the declaration, as in C, which is its most attractive feature. See L. =end original パッケージ宣言にコードブロックを含むことができるようになりました; ただし宣言のスコープがそのブロックの内側だけの場合です。 従って、C は正確に C<{ package Foo; ... }> と同じです。 これはまた、もっとも魅力のある機能である C のように 宣言でのバージョン番号でも動作します。 L を参照してください。 =head3 Statement labels can appear in more places (文ラベルはより多くの場所に置けるようになりました) =begin original Statement labels can now occur before any type of statement or declaration, such as C. =end original 文ラベルは C など、あらゆる種類の文や宣言の前に 置けるようになりました。 =head3 Stacked labels (スタックしたラベル) =begin original Multiple statement labels can now appear before a single statement. =end original 一つの文の前に複数の文ラベルを置けるようになりました。 =head3 Uppercase X/B allowed in hexadecimal/binary literals (大文字の X/B を 16 進/2 進リテラルとして使えます) =begin original Literals may now use either upper case C<0X...> or C<0B...> prefixes, in addition to the already supported C<0x...> and C<0b...> syntax [perl #76296]. =end original リテラルは、以前から対応していた C<0x...> および C<0b...> の接頭辞に 加えて、大文字の C<0X...> および C<0B...> も使えるようになりました [perl #76296]。 =begin original C, Ruby, Python, and PHP already support this syntax, and it makes Perl more internally consistent: a round-trip with C now returns C<16>, just like C. =end original C, Ruby, Python, PHP はすでにこの文法に対応していて、Perl でも内部的に より一貫性があるようになりました: C という往復は、 C と同様に C<16> を返します。 =head3 Overridable tie functions (オーバーライド可能な tie 関数) =begin original C, C and C can now be overridden [perl #75902]. =end original C, C, C はオーバーライド可能になりました [perl #75902]。 =head2 Exception Handling (例外処理) =begin original To make them more reliable and consistent, several changes have been made to how C, C, and C<$@> behave. =end original 信頼性と一貫性の向上のために、C, C, C<$@> の振る舞いが いくつか変更されました。 =over =item * =begin original When an exception is thrown inside an C, the exception is no longer at risk of being clobbered by destructor code running during unwinding. Previously, the exception was written into C<$@> early in the throwing process, and would be overwritten if C was used internally in the destructor for an object that had to be freed while exiting from the outer C. Now the exception is written into C<$@> last thing before exiting the outer C, so the code running immediately thereafter can rely on the value in C<$@> correctly corresponding to that C. (C<$@> is still also set before exiting the C, for the sake of destructors that rely on this.) =end original C の中で例外が投げられたとき、例外が実行中のデストラクタコードの 巻き戻しで上書きされる可能性がなくなりました。 以前は、例外は例外処理の始めの方で C<$@> に書き込まれていて、もし C が解放されるオブジェクトのデストラクタとして内部的に 使われているときに外側の C から終了しようとしている場合、 上書きされていました。 今では例外は外側の C を抜ける前の最後の作業として C<$@> に 書き込まれるので、直後に実行されるコードはその C に対応する C<$@> の値を正しく利用できます。 (デストラクタがこれに依存しているかも知れないので、C<$@> は C を 抜ける前にも設定されます。) =begin original Likewise, a C inside an C no longer clobbers any exception thrown in its scope. Previously, the restoration of C<$@> upon unwinding would overwrite any exception being thrown. Now the exception gets to the C anyway. So C is safe before a C. =end original 同様に C の中の C はスコープ内の例外を上書きすることは なくなりました。 以前は、巻き戻しによる C<$@> の復元によって、投げられた例外が 上書きされることがありました。 今では例外はとにかく C に渡されます。 そのため、C の前の C は安全です。 =begin original Exceptions thrown from object destructors no longer modify the C<$@> of the surrounding context. (If the surrounding context was exception unwinding, this used to be another way to clobber the exception being thrown.) Previously such an exception was sometimes emitted as a warning, and then either was string-appended to the surrounding C<$@> or completely replaced the surrounding C<$@>, depending on whether that exception and the surrounding C<$@> were strings or objects. Now, an exception in this situation is always emitted as a warning, leaving the surrounding C<$@> untouched. In addition to object destructors, this also affects any function call run by XS code using the C flag. =end original オブジェクトのデストラクタから投げられた例外は周りのコンテキストの C<$@> を変更しなくなりました。 (もし周りのコンテキストが例外の巻き戻しなら、これは投げられた例外が 上書きされるもう一つの場合でした。) 以前はこのような例外は時々例外を出力して、 (周りの C<$@> が文字列かオブジェクトかに依存して)周りの C<$@> に 文字列を追加したり、周りの C<$@> を完全に書き換えたりしていました。 今ではこのような状況での例外は常に警告を出力して、周りの C<$@> は 無変更のままになります。 オブジェクトのデストラクタに加えて、これは C フラグを使った XS コードによって実行される関数呼び出しにも影響を与えます。 =item * =begin original Warnings for C can now be objects in the same way as exceptions for C. If an object-based warning gets the default handling of writing to standard error, it is stringified as before with the filename and line number appended. But a C<$SIG{__WARN__}> handler now receives an object-based warning as an object, where previously it was passed the result of stringifying the object. =end original C の例外と同じ方法で、C の警告もオブジェクトになりました。 オブジェクトベースの警告が(標準エラーへの書き込みという)デフォルトの扱いを 受けると、今まで通り文字列化され、ファイル名と行番号が現れます。 しかし C<$SIG{__WARN__}> ハンドラは以前はオブジェクトを文字列化した 結果を受けとっていましたが、オブジェクトとしてオブジェクトベースの 警告を受けとるようになります。 =back =head2 Other Enhancements (その他の拡張) =head3 Assignment to C<$0> sets the legacy process name with prctl() on Linux (C<$0> への代入は Linux では prctl() を使って伝統的なプロセス名を設定します) =begin original On Linux the legacy process name is now set with L, in addition to altering the POSIX name via C, as Perl has done since version 4.000. Now system utilities that read the legacy process name such as I, I, and I recognize the name you set when assigning to C<$0>. The string you supply is truncated at 16 bytes; this limitation is imposed by Linux. =end original Linux では、伝統的なプロセス名は、perl が バージョン 4.000 から行っている C 経由で POSIX 名を置き換えることに加えて、L を使って 設定されます。 I, I, I のような伝統的なプロセス名を読み込むシステム ユーティリティは C<$0> へ代入することで設定した名前を 認識するようになります。 文字列は 16 バイトで切り詰められます; これは Linux による制限です。 =head3 srand() now returns the seed (srand() は種を返すようになりました) =begin original This allows programs that need to have repeatable results not to have to come up with their own seed-generating mechanism. Instead, they can use srand() and stash the return value for future use. One example is a test program with too many combinations to test comprehensively in the time available for each run. It can test a random subset each time and, should there be a failure, log the seed used for that run so this can later be used to produce the same results. =end original これにより、再現性のある結果が必要なプログラムが独自の種生成機構を使う 必要がなくなります。 代わりに、srand() を使って、返り値を将来の利用のために 保管しておいてください。 一つの例としては実行毎に網羅的にテストを行うには組み合わせが多すぎる テストプログラムです。 毎回ランダムな部分集合をテストして、もし失敗したら、その時の種を ログに記録することで同じ結果を生成するために使えます。 =head3 printf-like functions understand post-1980 size modifiers (printf 風の関数は 1980 年代以降のサイズ修飾子を理解します) =begin original Perl's printf and sprintf operators, and Perl's internal printf replacement function, now understand the C90 size modifiers "hh" (C), "z" (C), and "t" (C). Also, when compiled with a C99 compiler, Perl now understands the size modifier "j" (C) (but this is not portable). =end original Perl の演算子 printf と sprintf、および Perl の内部の printf 代替 関数は、C90 サイズ修飾子である "hh" (C), "z" (C), "t" (C) を認識するようになりました。 また、C99 コンパイラでコンパイルした場合、Perl はサイズ修飾子 "j" (C) を認識するようになりました(しかしこれは 互換性がありません)。 =begin original So, for example, on any modern machine, C returns "1". =end original それで、例えば、最近のマシンなら、C は "1" を 返します。 =head3 New global variable C<${^GLOBAL_PHASE}> (新しいグローバル変数 C<${^GLOBAL_PHASE}>) =begin original A new global variable, C<${^GLOBAL_PHASE}>, has been added to allow introspection of the current phase of the Perl interpreter. It's explained in detail in L and in L. =end original 新しいグローバル変数 C<${^GLOBAL_PHASE}> が追加され、Perl インタプリタの 現在のフェーズの内部状態がわかるようになりました。 これは L と L で 詳しく説明されています。 =head3 C<-d:-foo> calls C (C<-d:-foo> は C を呼び出します) =begin original The syntax B<-d:foo> was extended in 5.6.1 to make B<-d:foo=bar> equivalent to B<-MDevel::foo=bar>, which expands internally to C. Perl now allows prefixing the module name with B<->, with the same semantics as B<-M>; that is: =end original The syntax B<-d:foo> was extended in 5.6.1 to make B<-d:foo=bar> equivalent to B<-MDevel::foo=bar>, which expands internally to C. Perl は、モジュール名の接頭辞に C<-> を使えるようになりました; これは B<-M> と同じ意味論です; I<すなわち> =over 4 =item C<-d:-foo> =begin original Equivalent to B<-M-Devel::foo>: expands to C and calls C<< Devel::foo->unimport() >> if that method exists. =end original B<-M-Devel::foo> と等価で、C に拡張され、もし メソッドがあるなら C<< Devel::foo->unimport() >> を呼び出します。 =item C<-d:-foo=bar> =begin original Equivalent to B<-M-Devel::foo=bar>: expands to C, and calls C<< Devel::foo->unimport("bar") >> if that method exists. =end original B<-M-Devel::foo=bar> と等価で、C に拡張され、 もしメソッドがあるなら C<< Devel::foo->unimport('bar') >> を呼び出します。 =back =begin original This is particularly useful for suppressing the default actions of a C module's C method whilst still loading it for debugging. =end original これは、C モジュールの C メソッドのデフォルトのアクションを 抑制する一方、デバッグのために読み込みたい場合に特に有用です。 =head3 Filehandle method calls load L on demand (ファイルハンドルメソッド呼び出しは L をオンデマンドで読み込みます) =begin original When a method call on a filehandle would die because the method cannot be resolved and L has not been loaded, Perl now loads L via C and attempts method resolution again: =end original ファイルハンドルへのメソッド呼び出しが、メソッドが解決できないために die し、L が読み込まれていない場合、Perl は C 経由で L を読み込んで、もう一度メソッド解決を試みます: open my $fh, ">", $file; $fh->binmode(":raw"); # loads IO::File and succeeds =begin original This also works for globs like C, C, and C: =end original これはまた、C, C, C のようなグロブに対しても 動作します: STDOUT->autoflush(1); =begin original Because this on-demand load happens only if method resolution fails, the legacy approach of manually loading an L parent class for partial method support still works as expected: =end original このオンデマンドの読み込みはメソッド解決が失敗したときにのみ発生するので、 部分的なメソッド対応のために L 親クラスを手動で読み込むという 伝統的な手法も予想通り動作します: use IO::Handle; open my $fh, ">", $file; $fh->autoflush(1); # IO::File not loaded =head3 Improved IPv6 support (改良された IPv6 対応) =begin original The C module provides new affordances for IPv6, including implementations of the C and C functions, along with related constants and a handful of new functions. See L. =end original C モジュールは IPv6 に関する新しい情報を提供します; C 関数と C 関数の実装、 関連する定数、便利な新しい関数などです。 L を参照してください。 =head3 DTrace probes now include package name (DTrace プローブはパッケージ名を含むようになりました) =begin original The C probes now include an additional argument, C, which contains the package the subroutine being entered or left was compiled in. =end original C プローブは追加の引数 C を含むようになりました; これは 出入りすることでコンパイルされたパッケージを含んでいます。 =begin original For example, using the following DTrace script: =end original 例えば、以下の DTrace スクリプトを使って: perl$target:::sub-entry { printf("%s::%s\n", copyinstr(arg0), copyinstr(arg3)); } =begin original and then running: =end original 実行すると: $ perl -e 'sub test { }; test' =begin original C will print: =end original C は以下のように表示します: main::test =head2 New C APIs (新しい C API) =begin original See L. =end original L を参照してください。 =head1 Security (セキュリティ) =head2 User-defined regular expression properties (ユーザー定義正規表現特性) =begin original L documented that you can create custom properties by defining subroutines whose names begin with "In" or "Is". However, Perl did not actually enforce that naming restriction, so C<\p{foo::bar}> could call foo::bar() if it existed. The documented convention is now enforced. =end original L で、"In" または "Is" で 始まる名前のサブルーチンを定義することでカスタム特性を作ることができると 文書化されています。 しかし、Perl は実際にはこの命名の制限は実行しておらず、 \C が foo::bar() を(存在していれば) 呼び出していました。 文書化された規約は実行されるようになりました。 =begin original Also, Perl no longer allows tainted regular expressions to invoke a user-defined property. It simply dies instead [perl #82616]. =end original また、Perl はユーザー定義特性を起動するのに汚染された正規表現を 使わなくなりました。 代わりに単に die します [perl #82616]。 =head1 Incompatible Changes (互換性がなくなる変更) =begin original Perl 5.14.0 is not binary-compatible with any previous stable release. =end original Perl 5.14.0 は以前の安定リリースとバイナリ互換性はありません。 =begin original In addition to the sections that follow, see L. =end original 以下の章に加えて、L を参照してください。 =head2 Regular Expressions and String Escapes (正規表現と文字列のエスケープ) =head3 Inverted bracketed character classes and multi-character folds (反転させた大かっこ文字クラスと複数文字の折り畳み) =begin original Some characters match a sequence of two or three characters in C regular expression matching under Unicode rules. One example is C which matches the sequence C. =end original いくつかの文字は、Unicode ルールでの C 正規表現マッチングでは 2 または 3 文字の並びにマッチングします。 一つの例としては、C は C という並びに マッチングします。 'ss' =~ /\A[\N{LATIN SMALL LETTER SHARP S}]\z/i # Matches =begin original This, however, can lead to very counter-intuitive results, especially when inverted. Because of this, Perl 5.14 does not use multi-character C matching in inverted character classes. =end original しかしこれは、特に反転させたときに、とても非直観的な結果を導いていました。 これにより、Perl 5.14 は反転させた文字クラスでの複数文字の C マッチングを使わなくなりました。 'ss' =~ /\A[^\N{LATIN SMALL LETTER SHARP S}]+\z/i # ??? =begin original This should match any sequences of characters that aren't the C nor what C matches under C. C<"s"> isn't C, but Unicode says that C<"ss"> is what C matches under C. So which one "wins"? Do you fail the match because the string has C or accept it because it has an C followed by another C? =end original これは、C や、C の元で C にマッチングしないあらゆる 文字の並びにマッチングするべきです。 C<"s"> は C ではありませんが、Unicode は C の元では C<"ss"> は C にマッチングするとしています。 そこで、どちらが「勝つ」べきでしょうか? 文字列に C があるという理由でマッチングは失敗するでしょうか、それとも 一つの C に匹津津井で一つの C があるので成功するでしょうか? =begin original Earlier releases of Perl did allow this multi-character matching, but due to bugs, it mostly did not work. =end original Perl の以前のリリースは複数文字のマッチングを許していましたが、バグにより、 ほとんど動作していませんでした。 =head3 \400-\777 (\400-\777) =begin original In certain circumstances, C<\400>-C<\777> in regexes have behaved differently than they behave in all other doublequote-like contexts. Since 5.10.1, Perl has issued a deprecation warning when this happens. Now, these literals behave the same in all doublequote-like contexts, namely to be equivalent to C<\x{100}>-C<\x{1FF}>, with no deprecation warning. =end original ある種の環境では、正規表現中での C<\400>-C<\777> の使用は、 その他の全てのダブルクォート風コンテキストでの使用と異なっていました。 5.10.1 から、Perl はこれが起きたときには非推奨警告メッセージを 出力していました。 今では、これらのリテラルは全てダブルクォート風コンテキストと同じ 振る舞いをするようになりました; つまり、C<\x{100}>-C<\x{1FF}> と等価で、 非推奨警告も出ません。 =begin original Use of C<\400>-C<\777> in the command-line option B<-0> retain their conventional meaning. They slurp whole input files; previously, this was documented only for B<-0777>. =end original C<\400>-C<\777> のコマンドラインオプションでの使用 B<-0> は、 慣習的な今の意味のままです。 これは入力ファイル全体を読み込みます; 以前は、これは B<-0777> とだけ 文書化されていました。 =begin original Because of various ambiguities, you should use the new C<\o{...}> construct to represent characters in octal instead. =end original 様々なあいまいさがあるので、8 進数で文字を表現する場合は 新しい C<\o{...}> 構文を使うべきです。 =head3 Most C<\p{}> properties are now immune to case-insensitive matching (ほとんどの C<\p{}> 特性は大文字小文字なしのマッチングから免除されるようになりました) =begin original For most Unicode properties, it doesn't make sense to have them match differently under C case-insensitive matching. Doing so can lead to unexpected results and potential security holes. For example =end original ほとんどの Unicode 特性について、C 大文字小文字無視オプションの ありなしでマッチングが変わるというのは意味がありません。 このことで予想外の結果と潜在的なセキュリティーホールを導きます。 例えば m/\p{ASCII_Hex_Digit}+/i =begin original could previously match non-ASCII characters because of the Unicode matching rules (although there were several bugs with this). Now matching under C gives the same results as non-C matching except for those few properties where people have come to expect differences, namely the ones where casing is an integral part of their meaning, such as C and C, both of which match the same code points as matched by C. Details are in L. =end original これは以前は Unicode マッチングルールによって(これに関するいくつかのバグが ありましたが)非 ASCII 文字にマッチングします。 今では C の下では、人々が違いを心に浮かべるようないくつかの 特性(特に C and C (どちらも C でマッチングする符号位置と同じものにマッチングします) のような、意味的に大文字小文字が不可欠な部分を占めるような名前のもの)を除いて、 非 C マッチングと同じ結果となります。 詳細は L にあります。 =begin original User-defined property handlers that need to match differently under C must be changed to read the new boolean parameter passed to them, which is non-zero if case-insensitive matching is in effect and 0 otherwise. See L. =end original C によってマッチングの結果を変える必要があるユーザー定義特性ハンドラは、 大文字小文字を無視するマッチングが有効の時には非 0、そうでない場合は 0 を 取る、新しく渡される真偽値パラメータを読むように変更しなければなりません。 L を参照してください。 =head3 \p{} implies Unicode semantics (\p{} は Unicode の意味論を暗黙に使います) =begin original Specifying a Unicode property in the pattern indicates that the pattern is meant for matching according to Unicode rules, the way C<\N{I}> does. =end original パターン中に指定された Unicode 特性マッチングは、C<\N{I}> と同様、この パターンは Unicode ルールに従ってマッチングすることを 意味しているということを示すようになりました。 =head3 Regular expressions retain their localeness when interpolated (正規表現は展開されたときにロケール性を保持します) =begin original Regular expressions compiled under C now retain this when interpolated into a new regular expression compiled outside a C, and vice-versa. =end original C が有効な状態でコンパイルされた正規表現は、C の 外側でコンパイルされた新しい正規表現に展開されたときも有効のままになります (また逆も成り立ちます)。 =begin original Previously, one regular expression interpolated into another inherited the localeness of the surrounding regex, losing whatever state it originally had. This is considered a bug fix, but may trip up code that has come to rely on the incorrect behaviour. =end original 以前は、他の正規表現に展開された正規表現はその時点でのロケール状態を 継承し、最初に持っていたロケール状態を失っていました。 これはバグ修正と考えられていますが、この正しくない振る舞いに依存していた コードをつまずかせるかもしれません。 =head3 Stringification of regexes has changed (正規表現の文字列化は変更されました) =begin original Default regular expression modifiers are now notated using C<(?^...)>. Code relying on the old stringification will fail. This is so that when new modifiers are added, such code won't have to keep changing each time this happens, because the stringification will automatically incorporate the new modifiers. =end original デフォルトの正規表現修飾子は C<(?^...)> を使って 記録されるようになりました。 古い文字列化に依存しているコードは動きません。 これは、文字列化は自動的に新しい修飾子に組み込まれるので、 これが起きる度に変更し続ける必要をなくすためです。 =begin original Code that needs to work properly with both old- and new-style regexes can avoid the whole issue by using (for perls since 5.9.5; see L): =end original 旧方式と新方式の正規表現の両方で正しく動作する必要のあるコードでは、 (perl 5.9.5 以降では; L 参照) 以下のものを使って問題全体を 回避できます: use re qw(regexp_pattern); my ($pat, $mods) = regexp_pattern($re_ref); =begin original If the actual stringification is important or older Perls need to be supported, you can use something like the following: =end original もし実際の文字列化が重要であるか、より古い Perl に対応する必要が ある場合は、以下のような方法が使えます: # Accept both old and new-style stringification my $modifiers = (qr/foobar/ =~ /\Q(?^/) ? "^" : "-xism"; =begin original And then use C<$modifiers> instead of C<-xism>. =end original それから C<-xism> のかわりに C<$modifiers> を使います。 =head3 Run-time code blocks in regular expressions inherit pragmata (正規表現内の実行時コードブロックはプラグマを継承します) =begin original Code blocks in regular expressions (C<(?{...})> and C<(??{...})>) previously did not inherit pragmata (strict, warnings, etc.) if the regular expression was compiled at run time as happens in cases like these two: =end original 正規表現中のコードブロック (C<(?{...})> と C<(??{...})>) は、 以前は正規表現が実行中に以下の二つのような状態になった場合に全ての プラグマ(strict, warnings など) が継承されていませんでした: use re "eval"; $foo =~ $bar; # when $bar contains (?{...}) $foo =~ /$bar(?{ $finished = 1 })/; =begin original This bug has now been fixed, but code that relied on the buggy behaviour may need to be fixed to account for the correct behaviour. =end original このバグは修正されましたが、 このバグっぽい振る舞いに依存しているコードは正しい振る舞いに 対応するように修正する必要があるかも知れません。 =head2 Stashes and Package Variables (スタッシュとパッケージ変数) =head3 Localised tied hashes and arrays are no longed tied (ローカル化された tie されたハッシュと配列はもう tie しません) =begin original In the following: =end original 以下のような場合: tie @a, ...; { local @a; # here, @a is a now a new, untied array } # here, @a refers again to the old, tied array =begin original Earlier versions of Perl incorrectly tied the new local array. This has now been fixed. This fix could however potentially cause a change in behaviour of some code. =end original 以前のバージョンの Perl では間違って新しいローカルな配列を tie していました。 これは修正されました。 しかしこの修正によってコードの振る舞いの変化を引き起こすかも知れません。 =head3 Stashes are now always defined (スタッシュはいつも定義されるようになりました) =begin original C now always returns true, even when no symbols have yet been defined in that package. =end original C は、例えこのパッケージでまだ何のシンボルも 定義されていなくても、常に真を返します。 =begin original This is a side-effect of removing a special-case kludge in the tokeniser, added for 5.10.0, to hide side-effects of changes to the internal storage of hashes. The fix drastically reduces hashes' memory overhead. =end original これは、5.10.0 で追加された、ハッシュの内部ストレージの変更の副作用を 隠すためのトークナイザの特別な場合のその場しのぎの副作用です。 この修正はハッシュのメモリオーバーヘッドを劇的に減少させます。 =begin original Calling defined on a stash has been deprecated since 5.6.0, warned on lexicals since 5.6.0, and warned for stashes and other package variables since 5.12.0. C has always exposed an implementation detail: emptying a hash by deleting all entries from it does not make C false. Hence C is not valid code to determine whether an arbitrary hash is empty. Instead, use the behaviour of an empty C<%hash> always returning false in scalar context. =end original スタッシュに対して defined を呼び出すことは 5.6.0 から非推奨になり、 レキシカルでは 5.6.0 から警告が出力され、スタッシュとその他の パッケージ変数に対しては 5.12.0 から警告を出していました。 C は常に実装の詳細を露出させていました: 全てのエントリを削除することでハッシュを空にしても C は偽になりませんでした。 従って、C は、任意のハッシュが空かどうかを判定するには 不正なコードです。 代わりに、空の C<%hash> はスカラコンテキストでは常に偽を返すという 振る舞いを使ってください。 =head3 Clearing stashes (スタッシュのクリア) =begin original Stash list assignment C<%foo:: = ()> used to make the stash temporarily anonymous while it was being emptied. Consequently, any of its subroutines referenced elsewhere would become anonymous, showing up as "(unknown)" in C. They now retain their package names such that C returns the original sub name if there is still a reference to its typeglob and "foo::__ANON__" otherwise [perl #79208]. =end original スタッシュリスト代入 C<%foo:: = ()> は、一時的に無名の空のスタッシュを 作っていました。 その結果、どこかでリファレンスされているサブルーチンも無名になり、 C では "(unknown)" になります。 今ではパッケージ名を保持するようになったので、C は型グロブへの リファレンスがあれば元のサブルーチン名を、さもなければ "foo::__ANON__" を返します [perl #79208]。 =head3 Dereferencing typeglobs (型グロブのデリファレンス) =begin original If you assign a typeglob to a scalar variable: =end original 型グロブをスカラ変数に代入すると: $glob = *foo; =begin original the glob that is copied to C<$glob> is marked with a special flag indicating that the glob is just a copy. This allows subsequent assignments to C<$glob> to overwrite the glob. The original glob, however, is immutable. =end original C<$glob> にコピーされたグロブは、このグロブが単なるコピーであることを 示す特別なフラグが付けられます。 これにより、引き続く C<$glob> への代入によってグロブを上書きできます。 しかし、元のグロブは変更されません。 =begin original Some Perl operators did not distinguish between these two types of globs. This would result in strange behaviour in edge cases: C would not untie the scalar if the last thing assigned to it was a glob (because it treated it as C, which unties a handle). Assignment to a glob slot (such as C<*$glob = \@some_array>) would simply assign C<\@some_array> to C<$glob>. =end original 一部の Perl 演算子はこの2種類のグロブを区別していませんでした。 これにより、エッジケースでは不思議な振る舞いを見せていました: C は、最後に代入されたものがグロブの場合はスカラを untie しませんでした (なぜならこれはハンドルを untie する C として扱われるからです)。 (C<*$glob = \@some_array> のような) グロブスロットへの代入は単に C<\@some_array> を C<$glob> に代入します。 =begin original To fix this, the C<*{}> operator (including its C<*foo> and C<*$foo> forms) has been modified to make a new immutable glob if its operand is a glob copy. This allows operators that make a distinction between globs and scalars to be modified to treat only immutable globs as globs. (C, C and C have been left as they are for compatibility's sake, but will warn. See L.) =end original これを修正するために、C<*{}> 演算子 (C<*foo> と C<*$foo> の 形式を含みます) は、もしオペランドがグロブのコピーなら新しい変更不能の グロブを作るように修正されました。 これにより、演算子がグロブとスカラを修正するときの区別は、変更不能のグロブを グロブとして扱うだけになりました。 (C, C, C は、互換性の理由によりそのまま残されましたが、 警告が出ます。 L を参照してください。) =begin original This causes an incompatible change in code that assigns a glob to the return value of C<*{}> when that operator was passed a glob copy. Take the following code, for instance: =end original これは、演算子がグロブのコピーを渡すときに C<*{}> の返り値をグロブに 代入するコードでは非互換の変更になります。 例えば、以下のようなコードの場合: $glob = *foo; *$glob = *bar; =begin original The C<*$glob> on the second line returns a new immutable glob. That new glob is made an alias to C<*bar>. Then it is discarded. So the second assignment has no effect. =end original 2 行目の C<*$glob> は新しい変更不能のグロブを返します。 新しいグロブは C<*bar> への別名として作られます。 それからこれは捨てられます。 従って、2 行目の代入では何も起こりません。 =begin original See L for more detail. =end original さらなる詳細については L を 参照してください。 =head3 Magic variables outside the main package (main パッケージ外のマジカル変数) =begin original In previous versions of Perl, magic variables like C<$!>, C<%SIG>, etc. would "leak" into other packages. So C<%foo::SIG> could be used to access signals, C<${"foo::!"}> (with strict mode off) to access C's C, etc. =end original Perl の以前のバージョンでは、 C<$!>, C<%SIG> などのようなマジカル変数は 他のパッケージへ「漏洩」していました。 それで C<%foo::SIG> がシグナルのアクセスに使えたり、 (strict モードがオフなら) C<${"foo::!"}> (with strict mode off) が C の C へのアクセスに使えたり、などです。 =begin original This was a bug, or an "unintentional" feature, which caused various ill effects, such as signal handlers being wiped when modules were loaded, etc. =end original これはバグ、あるいは「想定外の」機能でした; これにより、モジュールが 読み込まれるときにシグナルハンドラがクリアされるといったさまざまな 悪影響を引き起こしていました。 =begin original This has been fixed (or the feature has been removed, depending on how you see it). =end original これは修正されました (あるいは見方によっては、この機能は取り除かれました)。 =head3 local($_) strips all magic from $_ (local($_) は $_ から全てのマジカルな機能を取り去ります) =begin original local() on scalar variables gives them a new value but keeps all their magic intact. This has proven problematic for the default scalar variable $_, where L recommends that any subroutine that assigns to $_ should first localize it. This would throw an exception if $_ is aliased to a read-only variable, and could in general have various unintentional side-effects. =end original スカラ変数に local() を行うと新しい値が与えられますが、全てのマジカルな 機能はそのままでした。 L はデフォルトスカラ変数 $_ に代入する全てのサブルーチンはまず ローカル化することを勧めていますが、$_ に対しては問題があることが 判明しています。 これにより、もし $_ が読み込み専用変数の別名となっていると例外が 投げられ、一般的には様々な想定外の副作用があります。 =begin original Therefore, as an exception to the general rule, local($_) will not only assign a new value to $_, but also remove all existing magic from it as well. =end original 従って、一般的なルールへの例外として、local($_)は $_ に新しい値を 代入するだけでなく、全てのマジカルな機能が取り除かれるようになりました。 =head3 Parsing of package and variable names (パッケージ名と変数名のパース) =begin original Parsing the names of packages and package variables has changed: multiple adjacent pairs of colons, as in C, are now all treated as package separators. =end original パッケージ名とパッケージ変数のパースが変わりました: C のような連続するコロンの組は、全てパッケージセパレータとして 扱われます。 =begin original Regardless of this change, the exact parsing of package separators has never been guaranteed and is subject to change in future Perl versions. =end original この変更に関係なく、パッケージセパレータの正確なパースは保証されず、 将来のバージョンの Perl では変更される可能性があります。 =head2 Changes to Syntax or to Perl Operators (文法や Perl の演算子の変更) =head3 C return values (C の返り値) =begin original C blocks now return the last evaluated expression, or an empty list if the block was exited by C. Thus you can now write: =end original C ブロックは最後に評価した式を返すようになりました (ブロックが C で終了した場合は空リストを返します)。 従って、以下のように書けるようになりました: my $type = do { given ($num) { break when undef; "integer" when /^[+-]?[0-9]+$/; "float" when /^[+-]?[0-9]+(?:\.[0-9]+)?$/; "unknown"; } }; =begin original See L for details. =end original 詳しくは L を参照してください。 =head3 Change in parsing of certain prototypes (ある種のプロトタイプのパースの変更) =begin original Functions declared with the following prototypes now behave correctly as unary functions: =end original 以下のプロトタイプで宣言された関数は、正しく単項関数として 振る舞うようになりました: * \$ \% \@ \* \& \[...] ;$ ;* ;\$ ;\% etc. ;\[...] =begin original Due to this bug fix [perl #75904], functions using the C<(*)>, C<(;$)> and C<(;*)> prototypes are parsed with higher precedence than before. So in the following example: =end original このバグ修正 [perl #75904] により、C<(*)>, C<(;$)>, C<(;*)> プロトタイプを 使った関数は以前より高い優先順位でパースされます。 従って、以下のようなコードは: sub foo(;$); foo $a < $b; =begin original the second line is now parsed correctly as C<< foo($a) < $b >>, rather than C<< foo($a < $b) >>. This happens when one of these operators is used in an unparenthesised argument: =end original 2 行目は C<< foo($a < $b) >> ではなく、正しく C<< foo($a) < $b >> と パースされます。 これはかっこなしの引数で以下の演算子のいずれかが使われたときに起こります: < > <= >= lt gt le ge == != <=> eq ne cmp ~~ & | ^ && || // .. ... ?: = += -= *= etc. , => =head3 Smart-matching against array slices (配列スライスに対するスマートマッチング) =begin original Previously, the following code resulted in a successful match: =end original 以前は、以下のコードはマッチングに成功していました: my @a = qw(a y0 z); my @b = qw(a x0 z); @a[0 .. $#b] ~~ @b; =begin original This odd behaviour has now been fixed [perl #77468]. =end original このおかしな振る舞いは修正されました [perl #77468]。 =head3 Negation treats strings differently from before (否定は文字列を以前より異なったものとして扱います) =begin original The unary negation operator, C<->, now treats strings that look like numbers as numbers [perl #57706]. =end original 単項否定演算子 C<-> は数値のように見える文字列を数値として扱うように なりました [perl #57706]。 =head3 Negative zero (負数のゼロ) =begin original Negative zero (-0.0), when converted to a string, now becomes "0" on all platforms. It used to become "-0" on some, but "0" on others. =end original 負数のゼロ (-0.0) は、文字列に変換したとき、どのプラットフォームでも "0" になるようになりました。 以前はプラットフォームによって "-0" だったり "0" だったりしていました。 =begin original If you still need to determine whether a zero is negative, use C or the L module on CPAN. =end original 未だにゼロが負数かどうかを決定したい場合は、 C とするか、CPAN にある L モジュールを使ってください。 =head3 C<:=> is now a syntax error (C<:=> は文法エラーになりました) =begin original Previously C was exactly equivalent to C, with the C<:> being treated as the start of an attribute list, ending before the C<=>. The use of C<:=> to mean C<: => was deprecated in 5.12.0, and is now a syntax error. This allows future use of C<:=> as a new token. =end original 今までは、C は正確に C と等価でした; C<:> で属性リストが開始し、C<=> の前で終了していると扱われていました。 C<: => の意味となる C<:=> の使い方は 5.12.0 では非推奨となり、 今回文法エラーとなりました。 これにより、将来 C<:=> を新しいトークンとして使えるようになります。 =begin original Outside the core's tests for it, we find no Perl 5 code on CPAN using this construction, so we believe that this change will have little impact on real-world codebases. =end original これのためのコアのテスト以外、CPAN にこの構造を使っている Perl 5 の コードはありませんでした。 実際の世界のコードベースではほとんど影響を与えないと信じています。 =begin original If it is absolutely necessary to have empty attribute lists (for example, because of a code generator), simply avoid the error by adding a space before the C<=>. =end original (例えば、コードジェネレータのために) 空の要素リストがどうしても必要な場合は、 単に C<=> の前に空白を追加することでエラーを回避してください。 =head3 Change in the parsing of identifiers (識別子のパースの変更) =begin original Characters outside the Unicode "XIDStart" set are no longer allowed at the beginning of an identifier. This means that certain accents and marks that normally follow an alphabetic character may no longer be the first character of an identifier. =end original Unicode の "XIDStart" 集合外の文字は識別子の先頭としてはもはや 許されなくなりました。 これは、普通は英文字に引き続くある種のアクセントやマークはもはや 識別子の最初の文字にはならないことを意味します。 =head2 Threads and Processes (スレッドとプロセス) =head3 Directory handles not copied to threads (ディレクトリハンドルはスレッドにコピーされません) =begin original On systems other than Windows that do not have a C function, newly-created threads no longer inherit directory handles from their parent threads. Such programs would usually have crashed anyway [perl #75154]. =end original Windows 以外で C 関数のないシステムでは、新しく作られたスレッドが 親スレッドからディレクトリハンドルを継承しなくなりました。 このようなプログラムはどちらにしろ普通はクラッシュします[perl #75154]。 =head3 C on shared pipes (共有されたパイプに対する C) =begin original To avoid deadlocks, the C function no longer waits for the child process to exit if the underlying file descriptor is still in use by another thread. It returns true in such cases. =end original デッドロックを避けるために、C 関数は、もし基となるファイル記述子が 他のスレッドで使われている場合は、子プロセスの終了を待たなくなりました。 このような場合は真を返します。 =head3 fork() emulation will not wait for signalled children (fork() エミュレーションはシグナルを送られた子プロセスを待ちません) =begin original On Windows parent processes would not terminate until all forked children had terminated first. However, C is inherently unstable on pseudo-processes, and C might not get delivered if the child is blocked in a system call. =end original Windows では、親プロセスはフォークした子プロセスが全て終了するまで 終了しません。 しかし、C は本質的に疑似プロセスにとっては不安定で、 C は、子プロセスがシステムコールでブロックしているときは 配達されないかもしれません。 =begin original To avoid the deadlock and still provide a safe mechanism to terminate the hosting process, Perl now no longer waits for children that have been sent a SIGTERM signal. It is up to the parent process to waitpid() for these children if child-cleanup processing must be allowed to finish. However, it is also then the responsibility of the parent to avoid the deadlock by making sure the child process can't be blocked on I/O. =end original デッドロックを避けつつ、ホスティングプロセスを終了するための安全な 機構を提供するために、SIGTERM シグナルを送られた子プロセスを 待たなくなりました。 これは、子プロセスの後片付け処理が終了できるようにしなければならない 場合にこれらの子プロセスに waitpid() をする親プロセス次第です。 しかし、子プロセスが I/O をブロックできないことを確実にすることで デッドロックを避けるために親が責任を持ちます。 =begin original See L for more information about the fork() emulation on Windows. =end original Windows での fork() エミュレーションに関するさらなる情報については L を参照してください。 =head2 Configuration (設定) =head3 Naming fixes in Policy_sh.SH may invalidate Policy.sh (Policy_sh.SH の命名の修正によって Policy.sh が不正になりました) =begin original Several long-standing typos and naming confusions in F have been fixed, standardizing on the variable names used in F. =end original F での、いくつの長年のタイプミスと命名の混乱が修正され、 F で使われる変数名が正規化されました。 =begin original This will change the behaviour of F if you happen to have been accidentally relying on its incorrect behaviour. =end original これは、この間違ったふるまいに偶然依存している場合の F の 振る舞いが変更されます。 =head3 Perl source code is read in text mode on Windows (Windows では Perl ソースコードをテキストモードで読み込みます) =begin original Perl scripts used to be read in binary mode on Windows for the benefit of the L module (which is no longer part of core Perl). This had the side-effect of breaking various operations on the C filehandle, including seek()/tell(), and even simply reading from C after filehandles have been flushed by a call to system(), backticks, fork() etc. =end original Perl スクリプトは、Windows では L モジュール (もはや コア Perl の一部ではありません) のメリットを使うためにバイナリモードで 読み込まれていました。 これは、C ファイルハンドルに対する seek()/tell() および 単に system(), 逆クォート, fork() などの呼び出しによってファイルハンドルが フラッシュした後に C からの読み込みを含む様々な操作を 壊すという副作用がありました。 =begin original The default build options for Windows have been changed to read Perl source code on Windows in text mode now. L will (hopefully) be updated on CPAN to automatically handle this situation [perl #28106]. =end original Windows でのデフォルトのビルドオプションは、Windows では Perl の ソースコードをテキストモードで読み込むように変更されました。 L が(出来れば)この状況を自動的に扱えるように CPAN で更新されます [perl #28106]。 =head1 Deprecations (廃止予定) =begin original See also L. =end original L も参照してください。 =head2 Omitting a space between a regular expression and subsequent word (正規表現と引き続く単語の間の空白の省略) =begin original Omitting the space between a regular expression operator or its modifiers and the following word is deprecated. For example, C<< m/foo/sand $bar >> is for now still parsed as C<< m/foo/s and $bar >>, but will now issue a warning. =end original 正規表現演算子やその修飾子と、引き続く単語の間の空白を省略することは 非推奨となりました。 例えば、C<< m/foo/sand $bar >> はまだ C<< m/foo/s and $bar >> と パースされますが、警告が出ます。 =head2 C<\cI> (C<\cI>) =begin original The backslash-c construct was designed as a way of specifying non-printable characters, but there were no restrictions (on ASCII platforms) on what the character following the C could be. Now, a deprecation warning is raised if that character isn't an ASCII character. Also, a deprecation warning is raised for C<"\c{"> (which is the same as simply saying C<";">). =end original バックスラッシュ-c 構造は表示できない文字を指定する方法として 設計されましたが、(ASCII プラットフォームでは) C に引き続く文字に 制限はありませんでした。 この文字が ASCII 文字でない場合は非推奨警告が出るようになりました。 また、C<"\c{"> (これは単に C<";"> と書くのと同じです) でも非推奨警告が出ます。 =head2 C<"\b{"> and C<"\B{"> (C<"\b{"> と C<"\B{">) =begin original In regular expressions, a literal C<"{"> immediately following a C<"\b"> (not in a bracketed character class) or a C<"\B{"> is now deprecated to allow for its future use by Perl itself. =end original 正規表現において、リテラルの C<"{"> の(大かっこの文字クラスの中でなく)直後に C<"\b"> や C<"\B{"> を続けることは、Perl 自身が将来使えるようにするために、 非推奨となりました。 =head2 Perl 4-era .pl libraries (Perl 4 時代の .pl ライブラリ) =begin original Perl bundles a handful of library files that predate Perl 5. This bundling is now deprecated for most of these files, which are now available from CPAN. The affected files now warn when run, if they were installed as part of the core. =end original Perl は Perl 5 より前のライブラリファイルを少量同梱しています。 同梱ファイルのほとんどは(今では CPAN から利用可能ですが) 非推奨となりました。 影響を受けるファイルは、コアの一部としてインストールされている場合は 実行時に警告が出るようになりました。 =begin original This is a mandatory warning, not obeying B<-X> or lexical warning bits. The warning is modelled on that supplied by F for deprecated-in-core F<.pm> libraries. It points to the specific CPAN distribution that contains the F<.pl> libraries. The CPAN versions, of course, do not generate the warning. =end original これは B<-X> やレキシカルな警告ビットに従うのではなく、強制的な警告です。 この警告は、コアで非推奨となった F<.pm> ライブラリのための F によって供給されます。 これは F<.pl> ライブラリを含んでいる特定の CPAN 配布を示しています。 もちろん、CPAN 版は警告は出ません。 =head2 List assignment to C<$[> (C<$[> へのリスト代入) =begin original Assignment to C<$[> was deprecated and started to give warnings in Perl version 5.12.0. This version of Perl (5.14) now also emits a warning when assigning to C<$[> in list context. This fixes an oversight in 5.12.0. =end original C<$[> への代入は Perl バージョン 5.12.0 から非推奨となり、警告が出ます。 このバージョン (5.14) の Perl はまた、リストコンテキストでの C<$[> への代入も 警告を出すようになりました。 これは 5.12.0 での見落としを修正します。 =head2 Use of qw(...) as parentheses (かっことしての qw(...) の使用) =begin original Historically the parser fooled itself into thinking that C literals were always enclosed in parentheses, and as a result you could sometimes omit parentheses around them: =end original 歴史的に、パーサは C リテラルは常にかっこに囲まれていると考えるように 自分をだましていて、結果として、時々それらの周りのかっこを省略できました: for $x qw(a b c) { ... } =begin original The parser no longer lies to itself in this way. Wrap the list literal in parentheses like this: =end original パーサはもはや自分自身をこの方法でだましません。 以下のように、リストリテラルをかっこで囲んでください: for $x (qw(a b c)) { ... } =begin original This is being deprecated because the parentheses in C are not part of expression syntax. They are part of the statement syntax, with the C statement wanting literal parentheses. The synthetic parentheses that a C expression acquired were only intended to be treated as part of expression syntax. =end original これは、C のかっこは式の文法の一部ではないので、 非推奨となりました。 これは文の文法の一部で、C 文はリテラルなかっこが必要です。 C 式が要求する合成されたかっこは、式文法の一部として扱うことを 対象としているだけです。 =begin original Note that this does not change the behaviour of cases like: =end original これは以下のような場合の振る舞いは変更しないことに注意してください: use POSIX qw(setlocale localeconv); our @EXPORT = qw(foo bar baz); =begin original where parentheses were never required around the expression. =end original ここでは式の回りにかっこは不要です。 =head2 C<\N{BELL}> (C<\N{BELL}>) =begin original This is because Unicode is using that name for a different character. See L for more explanation. =end original これは、Unicode がこの名前を違う文字に使っているからです。 さらなる説明については L を 参照してください。 =head2 C (C) =begin original C (without the initial C) has been deprecated and now produces a warning. This is to allow future use of C in new operators. The match-once functionality is still available as C. =end original (最初の C のない) C は非推奨となり、警告を出すようになりました。 これは、将来 C を新しい演算子として使えるようにするためです。 一度だけマッチングする機能は今でも C として利用可能です。 =head2 Tie functions on scalars holding typeglobs (型グロブを保持しているスカラに対する tie 関数) =begin original Calling a tie function (C, C, C) with a scalar argument acts on a filehandle if the scalar happens to hold a typeglob. =end original tie 関数 (C, C, C) をスカラ引数で呼び出すと、 もしそのスカラがたまたま型グロブを保持していた場合はファイルハンドルに対して 動作します。 =begin original This is a long-standing bug that will be removed in Perl 5.16, as there is currently no way to tie the scalar itself when it holds a typeglob, and no way to untie a scalar that has had a typeglob assigned to it. =end original これは Perl 5.16 で削除される予定の長年のバグです; 型グロブを保持している スカラ自身を tie する方法がなく、型グロブを代入されたスカラを untie する方法もないからです。 =begin original Now there is a deprecation warning whenever a tie function is used on a handle without an explicit C<*>. =end original tie 関数が明示的な C<*> なしにハンドルに対して使われると、非推奨警告が 出るようになりました。 =head2 User-defined case-mapping (ユーザー定義の大文字小文字定義) =begin original This feature is being deprecated due to its many issues, as documented in L. This feature will be removed in Perl 5.16. Instead use the CPAN module L, which provides improved functionality. =end original この機能は L に 文書化されているように多くの問題を抱えているので、非推奨となりました。 この機能は Perl 5.16 で削除されます。 代わりに、改良された機能を提供する、CPAN モジュール L を 使ってください。 =head2 Deprecated modules (非推奨モジュール) =begin original The following module will be removed from the core distribution in a future release, and should be installed from CPAN instead. Distributions on CPAN that require this should add it to their prerequisites. The core version of these module now issues a deprecation warning. =end original 以下のモジュールは将来のリリースではコア配布からは取り除かれ、 代わりに CPAN からインストールするようになります。 CPAN での配布物のでこのモジュールが必要な場合は、事前条件に追加する 必要があります。 これらのモジュールのコア版は、非推奨警告を発生させます。 =begin original If you ship a packaged version of Perl, either alone or as part of a larger system, then you should carefully consider the repercussions of core module deprecations. You may want to consider shipping your default build of Perl with a package for the deprecated module that installs into C or C Perl library directories. This will inhibit the deprecation warnings. =end original 単独、あるいはより大きいシステムの一部として、パッケージ版の Perl を 出荷する場合、非推奨のコアモジュールの影響を注意深く検討するべきです。 非推奨モジュールを perl ライブラリディレクトリ C か C にインストールして Perl のデフォルトビルドを 出荷したいかもしれません。 これは非推奨警告を抑制します。 =begin original Alternatively, you may want to consider patching F 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. =end original あるいは、F にパッチを当てて、 あなたのパッケージシステムや配布が、単一のパッケージのインストールがある 機能を提供するリリースから、同じ機能を得るために複数のパッケージを インストールすることをシステム管理者が知る必要があるより新しいリリースへの 段階的な移行する方法と一貫した、あなたのパッケージシステムや Perl の配布に固有の警告メッセージを提供したいかもしれません。 =begin original You can silence these deprecation warnings by installing the module in question from CPAN. To install the latest version of it by role rather than by name, just install C. =end original モジュールを CPAN からインストールすることによって、非推奨警告を 消すことができます。 これら全ての最新版をインストールするには、単に C をインストールしてください。 =over =item L =begin original We strongly recommend that you install and use L instead of L, as L offers significantly improved profiling and reporting. =end original L の代わりに L をインストールして使うことを 強く推奨します; L は著しく改良されたプロファイリングと報告を提供します。 =back =head1 Performance Enhancements (性能の改善) =head2 "Safe signals" optimisation (「安全なシグナル」の最適化) =begin original Signal dispatch has been moved from the runloop into control ops. This should give a few percent speed increase, and eliminates nearly all the speed penalty caused by the introduction of "safe signals" in 5.8.0. Signals should still be dispatched within the same statement as they were previously. If this does I happen, or if you find it possible to create uninterruptible loops, this is a bug, and reports are encouraged of how to recreate such issues. =end original シグナル発行は実行ループから制御 op に移動しました。 これにより、速度が数 % 向上し、5.8.0 で導入された「安全なシグナル」による 速度の低下のほとんど全てを取り除けているはずです。 シグナルは以前と同じように、同じ文の中で発行されます。 もしこれが I<起こらない> か、あるいはもし中断不能なループが作成できることを 発見したなら、それはバグです; 問題を再現する方法を報告してください。 =head2 Optimisation of shift() and pop() calls without arguments (引数なしの shift() と pop() の最適化) =begin original Two fewer OPs are used for shift() and pop() calls with no argument (with implicit C<@_>). This change makes shift() 5% faster than C on non-threaded perls, and 25% faster on threaded ones. =end original 引数なしの (C<@_> が使われる) shift() と pop() の呼び出しでは使われる op が二つ少なくなりました。 この変更により、C と比べて shift() はスレッドなし perl で 5%、スレッド化 perl で 25 % 速くなります。 =head2 Optimisation of regexp engine string comparison work (正規表現の文字列比較作業の最適化) =begin original The C API function for case-insensitive comparison of strings (which is used heavily by the regexp engine) was substantially refactored and optimised -- and its documentation much improved as a free bonus. =end original (正規表現エンジンによって激しく利用される)大文字小文字を無視した文字列 比較を行う C API 関数は大幅にリファクタリングされ 最適化されました - そしておまけとしてドキュメントが大幅に向上しました。 =head2 Regular expression compilation speed-up (正規表現のコンパイルの高速化) =begin original Compiling regular expressions has been made faster when upgrading the regex to utf8 is necessary but this isn't known when the compilation begins. =end original 正規表現を utf8 に昇格する必要があるけれどもコンパイル開始時には 分かっていなかった場合の正規表現のコンパイルが高速化されました。 =head2 String appending is 100 times faster (文字列追加は 100 倍速くなりました) =begin original When doing a lot of string appending, perls built to use the system's C could end up allocating a lot more memory than needed in a inefficient way. =end original 多くの文字列追加を行うとき、システムの C 実装を使うように ビルドされている perl は、最終的に必要な分よりもとても 多くのメモリを非効率な方法で割り当ててしまうことがありました。 =begin original C, the function used to allocate more memory if necessary when appending to a string, has been taught to round up the memory it requests to a certain geometric progression, making it much faster on certain platforms and configurations. On Win32, it's now about 100 times faster. =end original 文字列を追加するときにもし必要ならより多くのメモリを割り当てていた C 関数は、ある種の等比級数に切り上げたメモリを伝えるようになり、 特定のプラットフォームと設定ではとても早くなりました。 Win32 では、これは約 100 倍高速です。 =head2 Eliminate C accessor functions under ithreads (iスレッドでの C アクセサ関数の削除) =begin original When C was first developed, and interpreter state moved into an interpreter struct, thread- and interpreter-local C variables were defined as macros that called accessor functions (returning the address of the value) outside the Perl core. The intent was to allow members within the interpreter struct to change size without breaking binary compatibility, so that bug fixes could be merged to a maintenance branch that necessitated such a size change. This mechanism was redundant and penalised well-behaved code. It has been removed. =end original C が最初に開発され、インタプリタの状態が interpreter 構造体に 移動したとき、スレッドとインタプリタローカルな C 変数は、 アクセサ関数を呼び出して perl コアの外側のアドレスを返すマクロとして 定義されていました。 この目的は、バイナリ互換性を壊すことなく interpreter 構造体にある メンバのサイズを変えられるようにすることでした; それでバグ修正はそのようなサイズ変更が必要なメンテナンスブランチに マージできるようになっていました。 この機構は冗長であり、正しい振る舞いをするコードがこれによって ペナルティを受けていました。 これは削除されました。 =head2 Freeing weak references (弱い参照の解放) =begin original When there are many weak references to an object, freeing that object can under some circumstances take O(I>) time to free, where I is the number of references. The circumstances in which this can happen have been reduced [perl #75254] =end original あるオブジェクトに多くの弱い参照があると、そのオブジェクトを解放するときに 状況によっては O(I>) (I は参照の数) の時間がかかることが ありました。 そうなる状況の数は減少しました [perl #75254]。 =head2 Lexical array and hash assignments (レキシカルな配列やハッシュへの代入) =begin original An earlier optimisation to speed up C and C assignments caused a bug and was disabled in Perl 5.12.0. =end original C と C の代入を高速化するために 以前行われた最適化はバグを引き起こしていたので Perl 5.12.0 で 無効化されました。 =begin original Now we have found another way to speed up these assignments [perl #82110]. =end original このような代入を高速化する新しい方法が発見されました [perl #82110]。 =head2 C<@_> uses less memory (C<@_> のメモリ消費が減りました) =begin original Previously, C<@_> was allocated for every subroutine at compile time with enough space for four entries. Now this allocation is done on demand when the subroutine is called [perl #72416]. =end original 以前は、C<@_> の割り当ては四つのエントリに十分なスペースで全ての サブルーチンに対してコンパイル時に行われていました。 この割り当てはサブルーチンが呼び出されるときにオンデマンドで 行われるようになりました [perl #72416]。 =head2 Size optimisations to SV and HV structures (SV 構造体と HV 構造体のサイズ最適化) =begin original C has been eliminated from C, saving 1 IV per hash and on some systems will cause C to become cache-aligned. To avoid this memory saving causing a slowdown elsewhere, boolean use of C now calls C instead (which is equivalent), so while the fill data when actually required are now calculated on demand, cases when this needs to be done should be rare. =end original C は C から削除され、ハッシュ毎に 1 IV 節約される ことにより、システムによっては C がキャッシュ境界に 一致するようになりました。 このメモリ節約が他の場所での低速化を引き起こすことを避けるために、 C の真偽値での使用は代わりに (等価である) C を 使うようになりました; それで実際に必要なときに埋められるデータは オンデマンドで計算されるようになりましたが、これが必要になるような状況は 稀なはずです。 =begin original The order of structure elements in SV bodies has changed. Effectively, the NV slot has swapped location with STASH and MAGIC. As all access to SV members is via macros, this should be completely transparent. This change allows the space saving for PVHVs documented above, and may reduce the memory allocation needed for PVIVs on some architectures. =end original SV ボディの構造体要素の順番が変更されました。 事実上は、NV スロットが STASH および MAGIC の位置と交換されました。 SV メンバへの全てのアクセスはマクロ経由なので、これは完全に透過的です。 この変更により、上述した PVHV のスペース節約が可能になり、 アーキテクチャによっては PVIV に必要なメモリ割り当てが減少します。 =begin original C, C, and C now allocate only the parts of the C body they actually use, saving some space. =end original C, C, C は実際に使用される C ボディの一部としてのみ 割り当てられるようになり、スペースが節約されます。 =begin original Scalars containing regular expressions now allocate only the part of the C body they actually use, saving some space. =end original 正規表現を含むスカラは実際に使用される C ボディの一部としてのみ 割り当てられるようになり、スペースが節約されます。 =head2 Memory consumption improvements to Exporter (Exporter のメモリ消費の改善) =begin original The C<@EXPORT_FAIL> AV is no longer created unless needed, hence neither is the typeglob backing it. This saves about 200 bytes for every package that uses Exporter but doesn't use this functionality. =end original C<@EXPORT_FAIL> AV は必要になるまで作成されなくなり、従ってどちらもそれに もどる型グロブではありません。 これにより、Exporter を使うけれどもこの機能を使わないパッケージ毎に 200 バイトほど節約できます。 =head2 Memory savings for weak references (弱い参照のメモリ節約) =begin original For weak references, the common case of just a single weak reference per referent has been optimised to reduce the storage required. In this case it saves the equivalent of one small Perl array per referent. =end original 弱い参照については、参照先毎に一つだけの弱い参照というよくあるケースでは 必要なメモリを減らすように最適化されました。 この場合、参照先毎に等価な一つの小さな Perl 配列を節約できます。 =head2 C<%+> and C<%-> use less memory (C<%+> と C<%-> のメモリ消費が減りました) =begin original The bulk of the C module used to be in the Perl core. It has now been moved to an XS module to reduce overhead for programs that do not use C<%+> or C<%->. =end original C モジュールの塊が Perl コアで使われていました。 これは XS モジュールに移動し、C<%+> や C<%-> を使わないプログラムのための オーバーヘッドが減少しました。 =head2 Multiple small improvements to threads (スレッドに関する複数の小さな改善) =begin original The internal structures of threading now make fewer API calls and fewer allocations, resulting in noticeably smaller object code. Additionally, many thread context checks have been deferred so they're done only as needed (although this is only possible for non-debugging builds). =end original スレッドのための内部構造体は API 呼び出しと割り当てが減少し、 結果としてオブジェクトコードが大幅に小さくなりました。 さらに、多くのスレッドコンテキストチェックは保留されていたので、 必要になったときにだけ行うようになりました(ただしこれはデバッグビルドでない 場合にのみ可能です)。 =head2 Adjacent pairs of nextstate opcodes are now optimized away (連続している netstate op コードの組は最適化で削除されます) =begin original Previously, in code such as =end original 以前は、以下のようなコードは use constant DEBUG => 0; sub GAK { warn if DEBUG; print "stuff\n"; } =begin original the ops for C would be folded to a C op (C), but the C op would remain, resulting in a runtime op dispatch of C, C, etc. =end original C のための op は C op (C) に畳み込まれますが、 C op はそのまま残るので、実行時に C, C といった op が発行されていました。 =begin original The execution of a sequence of C ops is indistinguishable from just the last C op so the peephole optimizer now eliminates the first of a pair of C ops except when the first carries a label, since labels must not be eliminated by the optimizer, and label usage isn't conclusively known at compile time. =end original 連続した C op の実行は単なる最後の C op の実行と 同じなので、覗き穴最適器は最初の C op の組を 削除するようになりました; 先頭がラベルの場合は例外です; なぜならラベルは 最適化器によって削除されてはならず、ラベルの利用法はコンパイル時には決定的には 分かっていないからです。 =head1 Modules and Pragmata (モジュールとプラグマ) =head2 New Modules and Pragmata (新しいモジュールとプラグマ) =over 4 =item * =begin original L 0.003 has been added as a dual-life module. It supports a subset of YAML sufficient for reading and writing F and F files included with CPAN distributions or generated by the module installation toolchain. It should not be used for any other general YAML parsing or generation task. =end original L 0.003 が二重管理モジュールとして追加されました。 これは CPAN 配布に含まれていたり、モジュールインストールツールチェーンによって 生成される F と F のファイルを読み書きするのに 十分な、YAML のサブセットに対応しています。 その他の一般的な YAML のパースや生成のために使うべきではありません。 =item * =begin original L version 2.110440 has been added as a dual-life module. It provides a standard library to read, interpret and write CPAN distribution metadata files (like F and F that describe a distribution, its contents, and the requirements for building it and installing it. The latest CPAN distribution metadata specification is included as L and notes on changes in the specification over time are given in L. =end original L バージョン 2.110440 が二重管理モジュールとして追加されました。 これは、配布、内容、ビルドとインストールに必要なものを記述した (F や F のような) CPAN 配布メタデータファイルを 読み込み、解釈、書き込みするための標準ライブラリを提供します。 最新の CPAN 配布メタデータ仕様は L に含まれていて、 仕様の変更履歴は L に記録されています。 =item * =begin original L 0.012 has been added as a dual-life module. It is a very small, simple HTTP/1.1 client designed for simple GET requests and file mirroring. It has been added so that F and L can "bootstrap" HTTP access to CPAN using pure Perl without relying on external binaries like L or L. =end original L 0.012 が二重管理モジュールとして追加されました。 これは、単純な GET リクエストとファイルミラーのために設計された とても小さく単純な HTTP/1.1 クライアントです。 これは、F と L が L や L といった 外部バイナリに頼ることなくピュア Perl を使って CPAN への 「ブートストラップ」HTTP アクセスを可能にするために追加されました。 =item * =begin original L 2.27105 has been added as a dual-life module to allow CPAN clients to read F files in CPAN distributions. =end original CPAN クライアントが CPAN 配布の F を読み込めるように、 L 2.27105 が二重管理モジュールとして追加されました。 =item * =begin original L 1.000004 has been added as a dual-life module. It gathers package and POD information from Perl module files. It is a standalone module based on L for use by other module installation toolchain components. L has been deprecated in favor of this module instead. =end original L 1.000004 が二重管理モジュールとして追加されました。 これは Perl のモジュールファイルからパッケージと POD の情報を集めます。 これは他のモジュールのインストールツールチェーンの要素として使うための、 L を基にした単独のモジュールです。 L は非推奨となり、代わりにこのモジュールを 使うべきです。 =item * =begin original L 1.002 has been added as a dual-life module. It maps Perl operating system names (like "dragonfly" or "MSWin32") to more generic types with standardized names (like "Unix" or "Windows"). It has been refactored out of L and L and consolidates such mappings into a single location for easier maintenance. =end original L 1.002 が二重管理モジュールとして追加されました。 これは ("dragonfly" や "MSWin32" のような) Perl の オペレーティングシステム名を、("Unix" や "Windows" のような)より一般的で 標準化された名前にマッピングします。 これは L と L からリファクタリングされ、 このようなマッピングをより簡単に保守するために一つの場所に集約されました。 =item * =begin original The following modules were added by the L upgrade. See below for details. =end original L のアップグレードによって以下のモジュールが 追加されました。 詳しくは以下を参照してください。 L L L L L L =item * =begin original L version 0.101020 has been added as a dual-life module. It provides a standard library to model and manipulates module prerequisites and version constraints defined in L. =end original L バージョン 0.101020 が二重管理モジュールとして 追加されました。 L に定義されている前提条件とバージョン定数のモデルと 操作を標準ライブラリに提供します。 =back =head2 Updated Modules and Pragma (更新されたモジュールとプラグマ) =over 4 =item * =begin original L has been upgraded from version 0.12 to 0.14. =end original L はバージョン 0.12 から 0.14 に更新されました。 =item * =begin original L has been upgraded from version 0.38 to 0.48. =end original L はバージョン 0.38 から 0.48 に更新されました。 =begin original Updates since 0.38 include: a safe print method that guards L from changes to C<$\>; a fix to the tests when run in core Perl; support for TZ files; a modification for the lzma logic to favour L; and a fix for an issue with NetBSD-current and its new L executable. =end original 0.38 から更新されたものは: L を C<$\> の変更から守る、 安全な表示メソッド; コア Perl で実行されたときのテストの修正; TZ ファイル対応; lzma のロジックに L を使う修正; NetBSD-current と新しい L 実行ファイルに関する問題の修正。 =item * =begin original L has been upgraded from version 1.54 to 1.76. =end original L はバージョン 1.54 から 1.76 に更新されました。 =begin original Important changes since 1.54 include the following: =end original 1.54 からの重要な変更は以下の通りです: =over =item * =begin original Compatibility with busybox implementations of L. =end original L busybox 実装との互換性。 =item * =begin original A fix so that write() and create_archive() close only filehandles they themselves opened. =end original write() と create_archive() が自分自身で開いたファイルハンドルしか 閉じない問題の修正。 =item * =begin original A bug was fixed regarding the exit code of extract_archive. =end original extract_archive の終了コードに関するバグが修正されました。 =item * =begin original The L utility has a new option to allow safe creation of tarballs without world-writable files on Windows, allowing those archives to be uploaded to CPAN. =end original L ユーティリティは、Windows で誰でも書き込み可能な ファイルなしに安全に tarball を作成できるようになり、これらの アーカイブを CPAN にアップロード出来るようになりました。 =item * =begin original A new L utility for using regular expressions against the contents of files in a tar archive. =end original tar アーカイブ内のファイルの内容に対して正規表現を使う、新しい L ユーティリティ。 =item * =begin original L extended headers are now skipped. =end original L 拡張ヘッダが読み飛ばされるようになりました。 =back =item * =begin original L has been upgraded from version 0.87 to 0.89. =end original L はバージョン 0.87 から 0.89 に更新されました。 =item * =begin original L has been upgraded from version 2.06_01 to 2.1001. =end original L はバージョン 2.06_01 から 2.1001 に更新されました。 =item * =begin original L has been upgraded from version 5.70 to 5.71. =end original L はバージョン 5.70 から 5.71 に更新されました。 =item * =begin original The L module has been upgraded from version 1.23 to 1.29. =end original L はバージョン 1.23 から 1.29 に更新されました。 =begin original It no longer crashes when taking apart a C containing characters outside the octet range or compiled in a C scope. =end original 8 進数の範囲外の文字を含んでいるときや、C スコープで コンパイルされた C で分解したときにクラッシュしなくなりました。 =begin original The size of the shared object has been reduced by about 40%, with no reduction in functionality. =end original 共有オブジェクトのサイズは、機能を減らすことなしにおよそ 40% 減少しました。 =item * =begin original L has been upgraded from version 0.78 to 0.83. =end original L はバージョン 0.78 から 0.83 に更新されました。 =begin original L marks rv2sv(), rv2av(), and rv2hv() ops with the new C flag as "DREFed". =end original L は rv2sv(), rv2av(), rv2hv() op に対して新しいフラグ C フラグを "DREFed" に設定します。 =begin original It no longer produces mangled output with the B<-tree> option [perl #80632]. =end original B<-tree> オプションで壊れた出力を出さなくなりました [perl #80632]。 =item * =begin original L has been upgraded from version 1.12 to 1.16. =end original L はバージョン 1.12 から 1.16 に更新されました。 =item * =begin original L has been upgraded from version 0.96 to 1.03. =end original L はバージョン 0.96 から 1.03 に更新されました。 =begin original The deparsing of a C op has changed when it has both a change of package relative to the previous nextstate, or a change of C<%^H> or other state and a label. The label was previously emitted first, but is now emitted last (5.12.1). =end original C op の逆パースは、以前の nextstate へのパッケージ相対への 変更か、C<%^H> あるいはその他の状態とラベルの変更で、変更されました。 以前はラベルは最初に出力されていましたが、最後に出力されるように なりました (5.12.1)。 =begin original The C or similar form is now correctly handled by L (5.12.3). =end original C や同様の形式が L で正しく 扱えるようになりました (5.12.3)。 =begin original L now properly handles the code that applies a conditional pattern match against implicit C<$_> as it was fixed in [perl #20444]. =end original L は暗黙の C<$_> に対して条件付きパターンマッチングを適用する コードを正しく扱えるようになりました; [perl #20444] で修正されました。 =begin original Deparsing of C followed by a variable with funny characters (as permitted under the C pragma) has also been fixed [perl #33752]. =end original C の後に (C プラグマの元で許されるような)変わった文字の 変数が続いたときの逆パースも修正されました [perl #33752]。 =item * =begin original L has been upgraded from version 1.11_01 to 1.13. =end original L はバージョン 1.11_01 から 1.13 に更新されました。 =item * =begin original L has been upgraded from version 2.15 to 2.16. =end original L はバージョン 2.15 から 2.16 に更新されました。 =item * =begin original L has been upgraded from version 1.11 to 1.12. =end original L はバージョン 1.11 から 1.12 に更新されました。 =item * =begin original L has been upgraded from version 0.23 to 0.27. =end original L はバージョン 0.23 から 0.27 に更新されました。 =item * =begin original L has been upgraded from version 1.15 to 1.20. =end original L はバージョン 1.15 から 1.20 に更新されました。 =begin original L now detects incomplete L overrides and avoids using bogus C<@DB::args>. To provide backtraces, Carp relies on particular behaviour of the caller() builtin. L now detects if other code has overridden this with an incomplete implementation, and modifies its backtrace accordingly. Previously incomplete overrides would cause incorrect values in backtraces (best case), or obscure fatal errors (worst case). =end original L は、不完全な L のオーバーライドを 検出して、偽の C<@DB::args> の使用を回避するようになりました。 バックトレースを提供するために、Carp は caller() 組み込み関数の 特定の振る舞いに依存しています。 L は、この関数が不完全な実装のコードでオーバーライドされていることを 検出して、そのバックトレースをそれに応じて修正します。 以前は、不完全なオーバーライドによってバックトレースの値が間違ったり(最良の 場合)、不明瞭な致命的エラーが発生したり(最悪の場合)していました。 =begin original This fixes certain cases of "Bizarre copy of ARRAY" caused by modules overriding caller() incorrectly (5.12.2). =end original これは、caller() を正しくオーバーライドしていないモジュールによって 引き起こされる "Bizarre copy of ARRAY" が起きる場合を 修正します (5.12.2)。 =begin original It now also avoids using regular expressions that cause Perl to load its Unicode tables, so as to avoid the "BEGIN not safe after errors" error that ensue if there has been a syntax error [perl #82854]. =end original これは Perl による Unicode テーブルの読み込みを引き起こし、 文法エラーがあったときに "BEGIN not safe after errors" が起こることを引き起こす正規表現の使用を回避します [perl #82854]。 =item * =begin original L has been upgraded from version 3.48 to 3.52. =end original L はバージョン 3.48 から 3.52 に更新されました。 =begin original This provides the following security fixes: the MIME boundary in multipart_init() is now random and the handling of newlines embedded in header values has been improved. =end original これは以下のセキュリティ修正を提供します: multipart_init() の MIME 境界が ランダムになり、ヘッダ値に含まれている改行の扱いが改良されました。 =item * =begin original L has been upgraded from version 2.024 to 2.033. =end original L はバージョン 2.024 から 2.033 に更新されました。 =begin original It has been updated to use L 1.0.6. =end original L 1.0.6 を使うように更新されました。 =item * =begin original L has been upgraded from version 2.024 to 2.033. =end original L はバージョン 2.024 から 2.033 に更新されました。 =item * =begin original L has been upgraded from version 1.20 to 1.21. =end original L はバージョン 1.20 から 1.21 に更新されました。 =begin original Unicode constants work once more. They have been broken since Perl 5.10.0 [CPAN RT #67525]. =end original 再び Unicode 定数が動作するようになりました。 これは Perl 5.10.0 から壊れていました [CPAN RT #67525]。 =item * =begin original L has been upgraded from version 1.94_56 to 1.9600. =end original L はバージョン 1.94_56 から 1.9600 に更新されました。 =begin original Major highlights: =end original 主な注目点は: =over 4 =item * much less configuration dialog hassle (面倒な設定ダイアログが大幅に減少) =item * support for F (F 対応) =item * support for L (L 対応) =item * support for L to reduce the dependency on FTP sites (FTP サイトへの依存性を現状させるための L 対応) =item * automatic mirror selection (自動ミラー選択) =item * iron out all known bugs in configure_requires (configure_require にある知られている全てのバグの解決) =item * support for distributions compressed with L (L によって圧縮した配布対応) =item * allow F on the command line to mean C (コマンドラインでの F が C を意味するように) =back =item * =begin original L has been upgraded from version 0.90 to 0.9103. =end original L はバージョン 0.90 から 0.9103 に更新されました。 =begin original A change to F resolves L and L, both of which related to failures to install distributions that use C (5.12.2). =end original F の変更により、 L<[perl #55964]|http://rt.perl.org/rt3/Ticket/Display.html?id=55964> と L<[perl #57106]|http://rt.perl.org/rt3/Ticket/Display.html?id=57106> が 解決します; どちらも C を使ったインストールの 失敗に関係しています (5.12.2)。 =begin original A dependency on L was not recognised as a core module dependency. This has been fixed. =end original L の依存性はコアモジュールの依存性として認識されていませんでした。 これは修正されました。 =begin original L now includes support for F and F. =end original L は F と F に対応するようになりました。 =item * =begin original L has been upgraded from version 0.46 to 0.54. =end original L はバージョン 0.46 から 0.54 に更新されました。 =item * =begin original L has been upgraded from version 2.125 to 2.130_02. =end original L はバージョン 2.125 から 2.130_02 に更新されました。 =begin original The indentation used to be off when C<$Data::Dumper::Terse> was set. This has been fixed [perl #73604]. =end original C<$Data::Dumper::Terse> がセットされているときにインデントが なくなっていました。 これは修正されました [perl #73604]。 =begin original This upgrade also fixes a crash when using custom sort functions that might cause the stack to change [perl #74170]. =end original この更新は、スタックが変わるようなカスタムソート関数を使ったときの クラッシュも修正しました [perl #74170]。 =begin original L no longer crashes with globs returned by C<*$io_ref> [perl #72332]. =end original L は C<*$io_ref> で返されたグロブでクラッシュしなくなりました [perl #72332]。 =item * =begin original L has been upgraded from version 1.820 to 1.821. =end original L はバージョン 1.820 から 1.821 に更新されました。 =item * =begin original L has been upgraded from version 0.03 to 0.04. =end original L はバージョン 0.03 から 0.04 に更新されました。 =item * =begin original L has been upgraded from version 20080331.00 to 20110228.00. =end original L はバージョン 20080331.00 から 20110228.00 に更新されました。 =begin original Merely loading L now no longer triggers profiling to start. Both C and C behave as before and start the profiler. =end original 単に L を読み込んでも、もはやプロファイリング開始を 引き起こさなくなりました。 C と C は今まで通り振る舞い、 プロファイラを開始します。 =begin original B: L is deprecated and will be removed from a future version of Perl. We strongly recommend that you install and use L instead, as it offers significantly improved profiling and reporting. =end original B<注意>: L は非推奨で、将来のバージョンの Perl で 削除されます。 代わりに L をインストールして使うことを強く勧めます; これは著しく改良されたプロファイリングと報告を提供します。 =item * =begin original L has been upgraded from version 1.04 to 1.07. =end original L はバージョン 1.04 から 1.07 に更新されました。 =item * =begin original L has been upgraded from version 1.03 to 1.05. =end original L はバージョン 1.03 から 1.05 に更新されました。 =item * =begin original L has been upgraded from version 1.19 to 1.22. =end original L はバージョン 1.19 から 1.22 に更新されました。 =begin original It now renders pod links slightly better, and has been taught to find descriptions for messages that share their descriptions with other messages. =end original POD リンクを少しよくレンダリングするようになり、他のメッセージと説明を 共有している説明を知らせるようになりました。 =item * =begin original L has been upgraded from version 2.39 to 2.51. =end original L はバージョン 2.39 から 2.51 に更新されました。 =begin original It is now safe to use this module in combination with threads. =end original このモジュールをスレッドとともに使っても安全になりました。 =item * =begin original L has been upgraded from version 5.47 to 5.61. =end original L はバージョン 5.47 から 5.61 に更新されました。 =begin original L now more closely mimics L/L. =end original L はさらに C/C を真似るようになりました。 =begin original L accepts all POSIX filenames. =end original L は全ての POSIX ファイル名を受け付けます。 =begin original New SHA-512/224 and SHA-512/256 transforms (ref. NIST Draft FIPS 180-4 [February 2011]) =end original 新しい SHA-512/224 と SHA-512/256 の変換 (参照: NIST Draft FIPS 180-4 [February 2011]) =item * =begin original L has been upgraded from version 1.03 to 1.04. =end original L はバージョン 1.03 から 1.04 に更新されました。 =item * =begin original L has been upgraded from version 1.13 to 1.16. =end original L はバージョン 1.13 から 1.16 に更新されました。 =item * =begin original L has been upgraded from version 1.10 to 1.13. =end original L はバージョン 1.10 から 1.13 に更新されました。 =begin original It fixes a buffer overflow when passed a very long file name. =end original とても長いファイル名を渡したときのバッファオーバーフローを修正しました。 =begin original It no longer inherits from L; hence it no longer produces weird error messages for unsuccessful method calls on classes that inherit from L [perl #84358]. =end original L から継承しなくなりました; これにより、L から 継承するクラスのメソッド呼び出しに失敗したという奇妙なエラーメッセージは もはや出力されなくなりました [perl #84358]。 =item * =begin original L has been upgraded from version 2.39 to 2.42. =end original L はバージョン 2.39 から 2.42 に更新されました。 =begin original Now, all 66 Unicode non-characters are treated the same way U+FFFF has always been treated: in cases when it was disallowed, all 66 are disallowed, and in cases where it warned, all 66 warn. =end original 66 Unicode 非文字全ては U+FFFF と同じように扱われるようになりました: U+FFFF が不許可の場合は 66 全てが不許可となり、U+FFFF が警告を出す場合は 66 全てで警告を出します。 =item * =begin original L has been upgraded from version 1.01 to 1.02. =end original L はバージョン 1.01 から 1.02 に更新されました。 =item * =begin original L has been upgraded from version 1.11 to 1.13. =end original L はバージョン 1.11 から 1.13 に更新されました。 =begin original The implementation of L has been refactored to use about 55% less memory. =end original L の実装がリファクタリングされ、メモリ消費が 55% 減りました。 =begin original On some platforms with unusual header files, like Win32 L using C headers, some constants that weren't actually error numbers have been exposed by L. This has been fixed [perl #77416]. =end original C を使う Win32 L のように、変わったヘッダファイルを 使うプラットフォームで、実際にはエラー番号ではない定数がL によって 露出していました。 これは修正されました [perl #77416]。 =item * =begin original L has been upgraded from version 5.64_01 to 5.64_03. =end original L はバージョン 5.64_01 から 5.64_03 に更新されました。 =begin original Exporter no longer overrides C<$SIG{__WARN__}> [perl #74472] =end original Exporter はもはや C<$SIG{__WARN__}> をオーバーロードしなくなりました [perl #74472] =item * =begin original L has been upgraded from version 0.27 to 0.280203. =end original L はバージョン 0.27 から 0.280203 に更新されました。 =item * =begin original L has been upgraded from version 1.16 to 1.17. =end original L はバージョン 1.16 から 1.17 に更新されました。 =item * =begin original L has been upgraded from 0.22 to 0.23. =end original L はバージョン 0.22 から 0.23 に更新されました。 =begin original The L helper code generated by C can now croak() for missing constants, or generate a complete C subroutine in XS, allowing simplification of many modules that use it (L, L, L, L, L, L). =end original C で生成された L ヘルパーコードは、 定数が足りないときに croak() したり、XS の完全な C を 生成したりするようになり、これを使っている多くのモジュール (L, L, L, L, L, L) を単純化できるようになりました。 =begin original L can now optionally push the names of all constants onto the package's C<@EXPORT_OK>. =end original L はオプションとして全ての定数の名前を パッケージの C<@EXPORT_OK> に push できるようになりました。 =item * =begin original L has been upgraded from version 1.55 to 1.56. =end original L はバージョン 1.55 から 1.56 に更新されました。 =item * =begin original L has been upgraded from version 6.56 to 6.57_05. =end original L はバージョン 6.56 から 6.57_05 に更新されました。 =item * =begin original L has been upgraded from version 1.57 to 1.58. =end original L はバージョン 1.57 から 1.58 に更新されました。 =item * =begin original L has been upgraded from version 2.21 to 2.2210. =end original L はバージョン 2.21 から 2.2210 に更新されました。 =item * =begin original L has been upgraded from version 1.06 to 1.11. =end original L はバージョン 1.06 から 1.11 に更新されました。 =item * =begin original L has been upgraded from version 2.78 to 2.82. =end original L はバージョン 2.78 から 2.82 に更新されました。 =item * =begin original L has been upgraded from version 4.4 to 4.41. =end original L はバージョン 4.4 から 4.41 に更新されました。 =item * =begin original L has been upgraded from version 2.17 to 2.21. =end original L はバージョン 2.17 から 2.21 に更新されました。 =item * =begin original L has been upgraded from version 1.01 to 1.04. =end original L はバージョン 1.01 から 1.04 に更新されました。 =begin original It allows patterns containing literal parentheses: they no longer need to be escaped. On Windows, it no longer adds an extra F<./> to file names returned when the pattern is a relative glob with a drive specification, like F [perl #71712]. =end original これにより、リテラルなかっこを含むパターンを指定できるようになりました: もはやエスケープする必要はありません。 Windows では、パターンがドライブ指定付きの相対グロブのとき、もはや 返されたファイル名に追加の F<./> が付かなくなりました [perl #71712]。 =item * =begin original L has been upgraded from version 0.24 to 0.32. =end original L はバージョン 0.24 から 0.32 に更新されました。 =begin original L is now supported for the "http" scheme. =end original L は 'http' スキームに対応しました。 =begin original The L utility is supported on FreeBSD, NetBSD, and Dragonfly BSD for the C and C schemes. =end original L ユーティリティは、C と C のスキームに対して FreeBSD, NetBSD, Dragonfly BSD に対応しました。 =item * =begin original L has been upgraded from version 1.15 to 1.19. =end original L はバージョン 1.15 から 1.19 に更新されました。 =begin original It improves handling of backslashes on Windows, so that paths like F are no longer generated [perl #71710]. =end original Windows でのバックスラッシュの扱いが改良され、F のような パスはもはや生成されなくなりました [perl #71710]。 =item * =begin original L has been upgraded from version 1.07 to 1.12. =end original L はバージョン 1.07 から 1.12 に更新されました。 =item * =begin original L has been upgraded from version 3.31 to 3.33. =end original L はバージョン 3.31 から 3.33 に更新されました。 =begin original Several portability fixes were made in L: a colon is now recognized as a delimiter in native filespecs; caret-escaped delimiters are recognized for better handling of extended filespecs; catpath() returns an empty directory rather than the current directory if the input directory name is empty; and abs2rel() properly handles Unix-style input (5.12.2). =end original L で、いくつかの移植性に関する修正が行われました: コロンはネイティブ filespecs でデリミタとして認識されるようになりました; キャレットでエスケープされたデリミタは拡張 filespecs でのよりよい 扱いのために認識されるようになりました。 catpath() は、入力ディレクトリ名が空の場合は現在のディレクトリではなく 空ディレクトリを返します; abs2rel() は Unix 型の入力を正しく扱います (5.12.2)。 =item * =begin original L has been upgraded from 1.02 to 1.05. =end original L はバージョン 1.02 から 1.05 に更新されました。 =begin original The C<-x> and C<-X> file test operators now work correctly when run by the superuser. =end original C<-x> と C<-X> のファイルテスト演算子はスーパーユーザーによって 実行されたときに正しく動作するようになりました。 =item * =begin original L has been upgraded from version 0.84 to 0.86. =end original L はバージョン 0.84 から 0.86 に更新されました。 =item * =begin original L has been upgraded from 1.10 to 1.14. =end original L はバージョン 1.10 から 1.14 に更新されました。 =begin original This fixes a memory leak when DBM filters are used. =end original これは DBM フィルタが使われたときのメモリリークを修正します。 =item * =begin original L has been upgraded from 0.07 to 0.11. =end original L はバージョン 0.07 から 0.11 に更新されました。 =begin original L no longer emits spurious "uninitialized" warnings when recursively locking hashes that have undefined values [perl #74280]. =end original L は、未定義値があるハッシュを再帰的にロックしたときにも 偽の "uninitialized" 警告が出なくなりました [perl #74280]。 =item * =begin original L has been upgraded from version 1.04 to 1.09. =end original L はバージョン 1.04 から 1.09 に更新されました。 =item * =begin original L has been upgraded from version 1.01 to 1.02. =end original L はバージョン 1.01 から 1.02 に更新されました。 =item * =begin original L has been upgraded from version 0.03 to 0.08. =end original L はバージョン 0.03 から 0.08 に更新されました。 =begin original langinfo() now defaults to using C<$_> if there is no argument given, just as the documentation has always claimed. =end original langinfo() は、既に文書に書かれている通りに、引数がなかった場合は デフォルトとして C<$_> を使うようになりました。 =item * =begin original L has been upgraded from version 0.35 to 0.35_01. =end original L はバージョン 0.35 から 0.35_01 に更新されました。 =item * =begin original L has been upgraded from version 0.05 to 0.0601. =end original L はバージョン 0.05 から 0.0601 に更新されました。 =item * =begin original L has been upgraded from version 1.25_02 to 1.25_04. =end original L はバージョン 1.25_02 から 1.25_04 に更新されました。 =begin original This version of L includes a new L, which now allows L objects (and objects in derived classes) to be removed from an L set even if the underlying file descriptor is closed or invalid. =end original このバージョンの L には新しい L が含まれていて、 L オブジェクト (および派生クラスのオブジェクト) を、 たとえ基とのあるファイル記述子が閉じていたり不正であったりしていても、 L 集合から削除できるようになります。 =item * =begin original L has been upgraded from version 0.54 to 0.70. =end original L はバージョン 0.54 から 0.70 に更新されました。 =begin original Resolves an issue with splitting Win32 command lines. An argument consisting of the single character "0" used to be omitted (CPAN RT #62961). =end original Win32 コマンドラインの分割での問題が解決しました。 単一の文字 "0" からなる引数が省かれていました (CPAN RT #62961)。 =item * =begin original L has been upgraded from 1.05 to 1.09. =end original L はバージョン 1.05 から 1.09 に更新されました。 =begin original open3() now produces an error if the C call fails, allowing this condition to be distinguished from a child process that exited with a non-zero status [perl #72016]. =end original open3() は、C 呼び出しが失敗するとエラーとなるようになり、子プロセスが 非 0 のステータスで終了した場合と区別できるようになりました [perl #72016]。 =begin original The internal xclose() routine now knows how to handle file descriptors as documented, so duplicating C in a child process using its file descriptor now works [perl #76474]. =end original 内部の xclose() ルーチンは文書通りにファイルハンドルを扱う方法を 知るようになり、C を使う子プロセスで複製しても 動作するようになりました [perl #76474]。 =item * =begin original L has been upgraded from version 2.01 to 2.03. =end original L はバージョン 2.01 から 2.03 に更新されました。 =item * =begin original L has been upgraded from version 0.62 to 0.63. =end original L はバージョン 0.62 から 0.63 に更新されました。 =item * =begin original L has been upgraded from version 1.14 to 1.19. =end original L はバージョン 1.14 から 1.19 に更新されました。 =begin original L now supports external caches. =end original Locale::Maketext は外部キャッシュに対応しました。 =begin original This upgrade also fixes an infinite loop in C when working with tainted values (CPAN RT #40727). =end original この更新により、汚染された値の場合に C が無限ループになる問題も 修正されました (CPAN RT #40727)。 =begin original C<< ->maketext >> calls now back up and restore C<$@> so error messages are not suppressed (CPAN RT #34182). =end original C<< ->maketext >> 呼び出しが C<$@> をバックアップおよび復元するように なったので、エラーメッセージが削除されなくなりました (CPAN RT #34182)。 =item * =begin original L has been upgraded from version 0.02 to 0.04. =end original L はバージョン 0.02 から 0.04 に更新されました。 =item * =begin original L has been upgraded from version 0.06 to 0.08. =end original L はバージョン 0.06 から 0.08 に更新されました。 =item * =begin original L has been upgraded from version 1.89_01 to 1.994. =end original L はバージョン 1.89_01 から 1.994 に更新されました。 =begin original This fixes, among other things, incorrect results when computing binomial coefficients [perl #77640]. =end original これは、その他のものと共に、2 項係数を計算するときの間違った結果が 修正されました [perl #77640]。 =begin original It also prevents C from crashing under C. [perl #73534]. =end original これはまた、C での C で クラッシュしなくなりました [perl #73534]。 =item * =begin original L has been upgraded from version 0.19 to 0.28. =end original L はバージョン 0.19 から 0.28 に更新されました。 =item * =begin original L has been upgraded from version 0.24 to 0.26_02. =end original L はバージョン 0.24 から 0.26_02 に更新されました。 =item * =begin original L has been upgraded from version 1.01_03 to 1.02. =end original L はバージョン 1.01_03 から 1.02 に更新されました。 =item * =begin original L has been upgraded from 3.08 to 3.13. =end original L はバージョン 3.08 から 3.13 に更新されました。 =begin original Includes new functions to calculate the length of encoded and decoded base64 strings. =end original エンコード/デコードされた base64 文字列の長さを計算する新しい 関数が含まれています。 =begin original Now provides encode_base64url() and decode_base64url() functions to process the base64 scheme for "URL applications". =end original 「URL アプリケーション」のための base64 スキームを処理するための、 encode_base64url() 関数と decode_base64url() 関数が提供されます。 =item * =begin original L has been upgraded from version 0.3603 to 0.3800. =end original L はバージョン 0.3603 から 0.3800 に更新されました。 =begin original A notable change is the deprecation of several modules. L has been deprecated and L now relies on the L pragma directly. L has been deprecated in favor of a standalone copy called L. L has been deprecated in favor of L. =end original 注目すべき変更は、いくつかのモジュールの非推奨化です。 L は非推奨となり、 L は L プラグマに直接依存するようになりました。 L は非推奨となり、L と呼ばれる スタンドアロンのコピーを選びました。 L は非推奨となり、L を選びました。 =begin original L now also generates F and F files in accordance with version 2 of the CPAN distribution metadata specification, L. The older format F and F files are still generated. =end original L は、CPAN 配布メタデータ仕様 L の バージョン 2 に従った F と F も 生成するようになりました。 古い形式の F と F ファイルはまだ生成されます。 =item * =begin original L has been upgraded from version 2.29 to 2.47. =end original L はバージョン 2.29 から 2.47 に更新されました。 =begin original Besides listing the updated core modules of this release, it also stops listing the C module. That module never existed in core. The scripts generating L confused it with L, which actually is a core module as of Perl 5.8.7. =end original このリリースで更新されたモジュールの一覧の他に、 C モジュールを一覧に載せるのを停止しました。 このモジュールはコアには含まれません。 L を生成するスクリプトが、5.8.7 からコアに入った L モジュールとこれとを混乱していました。 =item * =begin original L has been upgraded from version 0.16 to 0.18. =end original L はバージョン 0.16 から 0.18 に更新されました。 =item * =begin original L has been upgraded from version 0.34 to 0.44. =end original L はバージョン 0.34 から 0.44 に更新されました。 =item * =begin original The L pragma has been upgraded from version 1.02 to 1.07. =end original L はバージョン 1.02 から 1.07 に更新されました。 =item * =begin original L has been upgraded from version 1.08 to 1.12. =end original L はバージョン 1.08 から 1.12 に更新されました。 =begin original This fixes a memory leak when DBM filters are used. =end original これは DBM フィルタが使われたときのメモリリークを修正します。 =item * =begin original L has been upgraded from version 2.36 to 2.38. =end original L はバージョン 2.36 から 2.38 に更新されました。 =item * =begin original L has been upgraded from version 0.64 to 0.65. =end original L はバージョン 0.64 から 0.65 に更新されました。 =item * =begin original L has been upgraded from version 0.36 to 0.38. =end original L はバージョン 0.36 から 0.38 に更新されました。 =item * =begin original L has been upgraded from version 1.07 to 1.10. =end original L はバージョン 1.07 から 1.10 に更新されました。 =begin original This fixes a memory leak when DBM filters are used. =end original これは DBM フィルタが使われたときのメモリリークを修正します。 =item * =begin original L has been upgraded from version 1.15 to 1.18. =end original L はバージョン 1.15 から 1.18 に更新されました。 =item * =begin original The L pragma has been upgraded from 1.10 to 1.13. =end original L はバージョン 1.10 から 1.13 に更新されました。 =begin original C can now handle subroutines that are themselves blessed into overloaded classes [perl #71998]. =end original C は、自分自身オーバーロードされたクラスに bless されている サブルーチンを扱うことが出来るようになりました [perl #71998]。 =begin original The documentation has greatly improved. See L below. =end original 文書が大きく改良されました。 以下の L を参照してください。 =item * =begin original L has been upgraded from version 0.26 to 0.28. =end original L はバージョン 0.26 から 0.28 に更新されました。 =item * =begin original The L pragma has been upgraded from version 0.223 to 0.225. =end original L はバージョン 0.223 から 0.225 に更新されました。 =item * =begin original L has been upgraded from version 1.40 to 1.4401. =end original L はバージョン 1.40 から 1.4401 に更新されました。 =begin original The latest Parse::CPAN::Meta can now read YAML and JSON files using L and L, which are now part of the Perl core. =end original 最新の Parse::CPAN::Meta は、Perl コアの一部となった L と L を使って YAML と JSON のファイルを読み込めるようになりました。 =item * =begin original L has been upgraded from version 0.12 to 0.14. =end original L はバージョン 0.12 から 0.14 に更新されました。 =item * =begin original L has been upgraded from 0.07 to 0.11. =end original L はバージョン 0.07 から 0.11 に更新されました。 =begin original A read() after a seek() beyond the end of the string no longer thinks it has data to read [perl #78716]. =end original 文字列の末尾を超えた seek() の後で read() しても、もはや読み込むデータが あるとは判断しなくなりました [perl #78716]。 =item * =begin original L has been upgraded from version 0.09 to 0.11. =end original L はバージョン 0.09 から 0.11 に更新されました。 =item * =begin original L has been upgraded from version 1.09 to 1.11. =end original L はバージョン 1.09 から 1.11 に更新されました。 =item * =begin original L has been upgraded from version 0.58 to 0.59. =end original L はバージョン 0.58 から 0.59 に更新されました。 =item * =begin original L has been upgraded from version 3.15_02 to 3.15_03. =end original L はバージョン 3.15_02 から 3.15_03 に更新されました。 =item * =begin original L has been upgraded from version 3.13 to 3.16. =end original L はバージョン 3.13 から 3.16 に更新されました。 =item * =begin original L has been upgraded from 1.19 to 1.24. =end original L はバージョン 1.19 から 1.24 に更新されました。 =begin original It now includes constants for POSIX signal constants. =end original POSIX シグナル定数のための定数が追加されました。 =item * =begin original The L pragma has been upgraded from version 0.11 to 0.18. =end original L はバージョン 0.11 から 0.18 に更新されました。 =begin original The C subpragma is new. =end original C 副プラグマが新しいです。 =begin original The regmust() function used to crash when called on a regular expression belonging to a pluggable engine. Now it croaks instead. =end original regmust() 関数はプラグ可能なエンジン所有の正規表現を呼び出すと クラッシュしていました。 今では代わりに croak します。 =begin original regmust() no longer leaks memory. =end original regmust() はもはやメモリリークしなくなりました。 =item * =begin original L has been upgraded from version 2.25 to 2.29. =end original L はバージョン 2.25 から 2.29 に更新されました。 =begin original Coderefs returned by reval() and rdo() are now wrapped via wrap_code_refs() (5.12.1). =end original reval() と rdo() で返されるコードリファレンスは wrap_code_refs() で ラップされるようになりました (5.12.1)。 =begin original This fixes a possible infinite loop when looking for coderefs. =end original これにより、コードリファレンスを検索したときに無限ループになる 可能性がある問題が修正されます。 =begin original It adds several C routines to the default share. =end original デフォルトの共有のためにいくつかの C ルーチンが 追加されました。 =item * =begin original L has been upgraded from version 1.06 to 1.09. =end original L はバージョン 1.06 から 1.09 に更新されました。 =item * =begin original L has been upgraded from 1.17 to 1.18. =end original L はバージョン 1.17 から 1.18 に更新されました。 =begin original It now works in taint mode [perl #72062]. =end original 汚染モードでも動作するようになりました [perl #72062]。 =item * =begin original The L pragma has been upgraded from version 1.04 to 1.05. =end original L はバージョン 1.04 から 1.05 に更新されました。 =begin original It no longer tries to modify read-only arguments when generating a backtrace [perl #72340]. =end original バックトレースを生成するときに、もはや読み込み専用引数を変更しようと しなくなりました [perl #72340]。 =item * =begin original L has been upgraded from version 1.87 to 1.94. =end original L はバージョン 1.87 から 1.94 に更新されました。 =begin original See L above. =end original 上述の L を参照してください。 =item * =begin original L has been upgraded from version 2.22 to 2.27. =end original L はバージョン 2.22 から 2.27 に更新されました。 =begin original Includes performance improvement for overloaded classes. =end original オーバーロードされたクラスの性能が向上しました。 =begin original This adds support for serialising code references that contain UTF-8 strings correctly. The L minor version number changed as a result, meaning that L users who set C<$Storable::accept_future_minor> to a C value will see errors (see L for more details). =end original これは UTF-8 文字列を含むコードリファレンスの正しいシリアル化対応が 追加されました。 結果として L のマイナーバージョン番号が変更されたので、 C<$Storable::accept_future_minor> を C 値に設定している L ユーザーはエラーを見ることになります (さらなる詳細については L を 参照してください)。 =begin original Freezing no longer gets confused if the Perl stack gets reallocated during freezing [perl #80074]. =end original 凍結 (freezing) 中に Perl のスタックが再配置されたとき、凍結はもはや 混乱しなくなりました [perl #80074]。 =item * =begin original L has been upgraded from version 1.11 to 1.16. =end original L はバージョン 1.11 から 1.16 に更新されました。 =item * =begin original L has been upgraded from version 2.02 to 3.00. =end original L はバージョン 2.02 から 3.00 に更新されました。 =item * =begin original L has been upgraded from version 0.20 to 0.26. =end original L はバージョン 0.20 から 0.26 に更新されました。 =item * =begin original L has been upgraded from version 3.17 to 3.23. =end original L はバージョン 3.17 から 3.23 に更新されました。 =item * =begin original L has been upgraded from version 0.94 to 0.98. =end original L はバージョン 0.94 から 0.98 に更新されました。 =begin original Among many other things, subtests without a C or C now have an implicit done_testing() added to them. =end original その他の多くのことの他に、C や C のない副テストには 暗黙に done_testing() が追加されるようになりました。 =item * =begin original L has been upgraded from version 2.09 to 2.12. =end original L はバージョン 2.09 から 2.12 に更新されました。 =begin original It provides two new methods that give more control over the decrementing of semaphores: C and C. =end original セマフォをデクリメントすることをさらに制御する二つの新しいメソッドが 提供されます: C と C です。 =item * =begin original L has been upgraded from version 2.11 to 2.12. =end original L はバージョン 2.11 から 2.12 に更新されました。 =item * =begin original The L pragma has been upgraded from version 1.75 to 1.83. =end original L はバージョン 1.75 から 1.83 に更新されました。 =item * =begin original The L pragma has been upgraded from version 1.32 to 1.37. =end original L はバージョン 1.32 から 1.36 に更新されました。 =item * =begin original L has been upgraded from version 1.03 to 1.04. =end original L はバージョン 1.03 から 1.04 に更新されました。 =begin original Calling C<< Tie::Hash->TIEHASH() >> used to loop forever. Now it Cs. =end original C<< Tie::Hash->TIEHASH() >> の呼び出しが無限ループしていました。 今では C します。 =item * =begin original L has been upgraded from version 0.06 to 0.08. =end original L はバージョン 0.06 から 0.08 に更新されました。 =item * =begin original L has been upgraded from version 1.38 to 1.39. =end original L はバージョン 1.38 から 1.39 に更新されました。 =item * =begin original L has been upgraded from version 1.9719 to 1.9721_01. =end original L はバージョン 1.9719 から 1.9721_01 に更新されました。 =item * =begin original L has been upgraded from version 1.1901_01 to 1.2000. =end original L はバージョン 1.1901_01 から 1.2000 に更新されました。 =item * =begin original L has been upgraded from version 1.15_01 to 1.20_01. =end original L はバージョン 1.15_01 から 1.20_01 に更新されました。 =item * =begin original L has been upgraded from version 0.52_01 to 0.73. =end original L はバージョン 0.52_01 から 0.73 に更新されました。 =begin original L has been updated to use Unicode 6.0.0. =end original L は Unicode 6.0.0 を使うように更新されました。 =begin original L now supports a plethora of new locales: I, and I. =end original L は大量の新しいロケールに対応しました: I, I =begin original The following modules have been added: =end original 以下のモジュールが追加されました: =begin original L for C which makes tailoring of CJK Unified Ideographs in the order of CLDR's big5han ordering. =end original C のための L は CJK 統合表意文字を CLDR の big5han 順序で調整します。 =begin original L for C which makes tailoring of CJK Unified Ideographs in the order of CLDR's gb2312han ordering. =end original C のための L は CJK 統合表意文字を CLDR の gb2312han 順序で調整します。 =begin original L which makes tailoring of 6355 kanji (CJK Unified Ideographs) in the JIS X 0208 order. =end original L は 6355 文字の漢字 (CJK 統合表意文字) を JIS X 0208 の順序で調整します。 =begin original L which makes tailoring of CJK Unified Ideographs in the order of CLDR's Korean ordering. =end original L は CJK 統合表意文字を CLDR の 韓国語順序で調整します。 =begin original L for C which makes tailoring of CJK Unified Ideographs in the order of CLDR's pinyin ordering. =end original C のための L は CJK 統合表意文字を CLDR のピンイン順序で調整します。 =begin original L for C which makes tailoring of CJK Unified Ideographs in the order of CLDR's stroke ordering. =end original C のための L は CJK 統合表意文字を CLDR の筆画順序で調整します。 =begin original This also sees the switch from using the pure-Perl version of this module to the XS version. =end original これはまた、このモジュールの ピュア Perl 版から XS 版への切り替えを 見るようになりました。 =item * =begin original L has been upgraded from version 1.03 to 1.10. =end original L はバージョン 1.03 から 1.10 に更新されました。 =item * =begin original L has been upgraded from version 0.27 to 0.32. =end original L はバージョン 0.27 から 0.32 に更新されました。 =begin original A new function, Unicode::UCD::num(), has been added. This function returns the numeric value of the string passed it or C if the string in its entirety has no "safe" numeric value. (For more detail, and for the definition of "safe", see L.) =end original 新しい関数である Unicode::UCD::num() が追加されました。 この関数は、渡された文字列の数値としての値か、あるいは文字列が全体的に 「安全」な数値としての値がない場合は C を返します。 (さらなる詳細と、「安全」の定義については、L を 参照してください。) =begin original This upgrade also includes several bug fixes: =end original この更新には多くのバグ修正も含まれています: =over 4 =item charinfo() =over 4 =item * =begin original It is now updated to Unicode Version 6.0.0 with I, excepting that, just as with Perl 5.14, the code point at U+1F514 has no name. =end original Unicode Version 6.0.0 の I で更新されましたが、 Perl 5.14 と同様、符号位置 U+1F514 には名前がないという例外があります。 =item * =begin original Hangul syllable code points have the correct names, and their decompositions are always output without requiring L to be installed. =end original ハングル音節符号位置に正しい名前が付き、その分解は常に L をインストールする必要なしに出力されます。 =item * =begin original CJK (Chinese-Japanese-Korean) code points U+2A700 to U+2B734 and U+2B740 to U+2B81D are now properly handled. =end original CJK (Chinese-Japanese-Korean) 符号位置 U+2A700 から U+2B734 と、 U+2B740 から U+2B81D は正しく扱えるようになりました。 =item * =begin original Numeric values are now output for those CJK code points that have them. =end original これらの CJK 符号位置はが持っている数値を出力するようになりました。 =item * =begin original Names output for code points with multiple aliases are now the corrected ones. =end original 複数の別名のある符号位置の名前は正しくなりました。 =back =item charscript() =begin original This now correctly returns "Unknown" instead of C for the script of a code point that hasn't been assigned another one. =end original 他の値が割り当てられていない符号位置の用字では C ではなく 正しく "Unknown" を返すようになりました。 =item charblock() =begin original This now correctly returns "No_Block" instead of C for the block of a code point that hasn't been assigned to another one. =end original 他の値が割り当てられていない符号位置のブロックでは C ではなく 正しく "No_Block" を返すようになりました。 =back =item * =begin original The L pragma has been upgraded from 0.82 to 0.88. =end original L はバージョン 0.82 から 0.88 に更新されました。 =begin original Because of a bug, now fixed, the is_strict() and is_lax() functions did not work when exported (5.12.1). =end original バグにより、エクスポートされたときにis_strict() 関数と is_lax() 関数が 動作していませんでしたが、修正されました (5.12.1)。 =item * =begin original The L pragma has been upgraded from version 1.09 to 1.12. =end original L はバージョン 1.09 から 1.12 に更新されました。 =begin original Calling C without arguments is now significantly more efficient. =end original 引数なしの C の呼び出しは、大幅に効率的になりました。 =item * =begin original The L pragma has been upgraded from version 1.01 to 1.02. =end original L はバージョン 1.01 から 1.02 に更新されました。 =begin original It is now possible to register warning categories other than the names of packages using L. See L for more information. =end original L を使ったパッケージ名以外の警告カテゴリを 登録できるようになりました。 さらなる情報については L を参照してください。 =item * =begin original L has been upgraded from version 0.10 to 0.13. =end original L はバージョン 0.10 から 0.13 に更新されました。 =item * =begin original L has been upgraded from version 1.03 to 1.05. =end original L はバージョン 1.03 から 1.05 に更新されました。 =begin original Two bugs have been fixed [perl #84086]: =end original 二つのバグが修正されました [perl #84086]: =begin original The symbol table name was lost when tying a hash, due to a thinko in C. The result was that all tied hashes interacted with the local symbol table. =end original C での思い違いによって、ハッシュを tie したときにシンボル テーブル名が失われていました。 結果として、全ての tie されたハッシュがローカルシンボルテーブルと 相互作用していました。 =begin original Unless a symbol table name had been explicitly specified in the call to the constructor, querying the special key C<:LOCAL> failed to identify objects connected to the local symbol table. =end original コンストラクタへの呼び出しでシンボルテーブル名が明示的に指定されない限り、 特殊キー C<:LOCAL> の検索は、ローカルシンボルテーブルに接続したオブジェクトの 識別に失敗していました。 =item * =begin original The L module has been upgraded from version 0.39 to 0.44. =end original L はバージョン 0.39 から 0.44 に更新されました。 =begin original This release has several new functions: Win32::GetSystemMetrics(), Win32::GetProductInfo(), Win32::GetOSDisplayName(). =end original このリリースにはいくつかの新しい関数があります: Win32::GetSystemMetrics(), Win32::GetProductInfo(), Win32::GetOSDisplayName() です。 =begin original The names returned by Win32::GetOSName() and Win32::GetOSDisplayName() have been corrected. =end original Win32::GetOSName() と Win32::GetOSDisplayName() から返される名前が 正しくなりました。 =item * =begin original L has been upgraded from version 0.03 to 0.05. =end original L はバージョン 0.03 から 0.05 に更新されました。 =back =head2 Removed Modules and Pragmata (削除されたモジュールとプラグマ) =begin original As promised in Perl 5.12.0's release notes, the following modules have been removed from the core distribution, and if needed should be installed from CPAN instead. =end original Perl 5.12.0 のリリースノートで約束した通り、以下のモジュールがコア配布から 削除されました; もし必要なら代わりに CPAN からインストールしてください。 =over =item * =begin original L has been removed from the Perl core. Prior version was 0.36. =end original L は Perl コアから削除されました。 以前のバージョンは 0.36 でした。 =item * =begin original L has been removed from the Perl core. Prior version was 1.02. =end original L は Perl コアから削除されました。 以前のバージョンは 1.02 でした。 =item * =begin original L has been removed from the Perl core. Prior version was 2.16. =end original L は Perl コアから削除されました。 以前のバージョンは 2.16 でした。 =back =begin original The removal of L has been deferred until after 5.14, as the implementation of L shipped with 5.12.0 did not correctly issue the warning that it was to be removed from core. =end original L の削除は 5.14 以降まで延期されました; 5.12.0 で出荷された L の実装が、コアから削除される予定であるという 警告を正しく出力していなかったからです。 =head1 Documentation (文書) =head2 New Documentation (新しい文書) =head3 L =begin original L has been updated to contain GPL version 1, as is included in the F distributed with Perl (5.12.1). =end original L は Perl と配布されている F に含まれていたままの形の GPL バージョン 1 を含むように更新されました。 =head3 Perl 5.12.x delta files =begin original The perldelta files for Perl 5.12.1 to 5.12.3 have been added from the maintenance branch: L, L, L. =end original Perl 5.12.1 から 5.12.3の perldelta ファイルがメンテナンスブランチから 追加されました: L, L, L。 =head3 L =begin original New style guide for POD documentation, split mostly from the NOTES section of the L manpage. =end original POD 文書のための新しいスタイルガイドで、ほとんどは L man ページの NOTES の節から分離されました。 =head3 L, L, L, and L (L, L, L, L) =begin original See L, below. =end original 後述する L を参照してください。 =head2 Changes to Existing Documentation (既存の文書の変更) =head3 L is now complete (L が完全になりました) =begin original The L manpage that came with Perl 5.12.0 was missing several modules due to a bug in the script that generates the list. This has been fixed [perl #74332] (5.12.1). =end original Perl 5.12.0 の L ページは、リストを生成するスクリプトのバグにより、 多くのモジュールが漏れていました。 これは修正されました [perl #74332] (5.12.1)。 =head3 Replace incorrect tr/// table in L (L の間違った tr/// の置き換え) =begin original L contains a helpful table to use in C to convert between EBCDIC and Latin1/ASCII. The table was the inverse of the one it describes, though the code that used the table worked correctly for the specific example given. =end original L には EBCDIC と Latin1/ASCII を変換するために C を使うのに便利な表があります。 表は記述されているのと逆になっていましたが、表で使われているコードは 特定の例では正しく動作していました。 =begin original The table has been corrected and the sample code changed to correspond. =end original 表は逆順に変更され、サンプルコードも対応するように変更されました。 =begin original The table has also been changed to hex from octal, and the recipes in the pod have been altered to print out leading zeros to make all values the same length. =end original また、表は 8 進数から 16 進数に変更され、pod にあるレシピは全ての値が 同じ長さになるように先頭にゼロが表示されるように変更されました。 =head3 Tricks for user-defined casing (ユーザー定義の大文字小文字定義に関するトリック) =begin original L now contains an explanation of how to override, mangle and otherwise tweak the way Perl handles upper-, lower- and other-case conversions on Unicode data, and how to provide scoped changes to alter one's own code's behaviour without stomping on anybody else's. =end original L は、Perl が Unicode データに対して大文字、小文字、それ以外 の変換をどのように行うかについてのオーバーライド、切り刻み、およびその他の 調整方法に関する説明と、 他の人のコードの振る舞いを変えることなく自分のコードの振る舞いを変えるための、 範囲的な変更を提供する方法を含むようになりました。 =head3 INSTALL explicitly states that Perl requires a C89 compiler (INSTALL で Perl が C89 コンパイラが必要であることを明示的に宣言しました) =begin original This was already true, but it's now Officially Stated For The Record (5.12.2). =end original これは既に真でしたが、記録として公式に表明しました (5.12.2)。 =head3 Explanation of C<\xI> and C<\oI> escapes (C<\xI> エスケープと C<\oI> エスケープの説明) =begin original L has been updated with more detailed explanation of these two character escapes. =end original L はこれら二つの文字エスケープに関するより詳細な説明で 更新されました。 =head3 B<-0I> switch (B<-0I> オプション) =begin original In L, the behaviour of the B<-0NNN> switch for B<-0400> or higher has been clarified (5.12.2). =end original L において、B<-0NNN> オプションのうち B<-0400> 以上のものの 振る舞いが明確化されました (5.12.2)。 =head3 Maintenance policy (メンテナンスポリシー) =begin original L now contains the policy on what patches are acceptable for maintenance branches (5.12.1). =end original L に、メンテナンスブランチにどのようなパッチが受け入れられるかに ついてのポリシーが追加されました (5.12.1)。 =head3 Deprecation policy (非推奨ポリシー) =begin original L now contains the policy on compatibility and deprecation along with definitions of terms like "deprecation" (5.12.2). =end original L に、「非推奨」("deprecation") のような言葉の定義とともに、 互換性と非推奨に関するポリシーが追加されました (5.12.2)。 =head3 New descriptions in L (L の新しい記述) =begin original The following existing diagnostics are now documented: =end original 以下の示す、既存の診断メッセージが文書化されました: =over 4 =item * L =item * L =item * L =item * L =item * L =item * L =item * L =item * L =back =head3 L =begin original L has been expanded to cover many more popular books. =end original L はより多くの有名な書籍を対象とするように拡張されました。 =head3 C macro (C マクロ) =begin original The documentation for the C macro in L was simply wrong in stating that get-magic is not processed. It has been corrected. =end original L にある C マクロの説明は get-magic が処理されないという 説明が単純に間違っていました。 これは修正されました。 =head3 op manipulation functions (op 操作関数) =begin original Several API functions that process optrees have been newly documented. =end original op 木を処理するためのいくつかの API 関数が新たに文書化されました。 =head3 L revamp (L の刷新) =begin original L reorders the variables and groups them by topic. Each variable introduced after Perl 5.000 notes the first version in which it is available. L also has a new section for deprecated variables to note when they were removed. =end original L は、変数の順序を変えて、主題毎にグループ化しました。 Perl 5.000 以降に導入された変数はそれぞれ利用可能になったバージョンを 記しています。 L は、非推奨の変数がいつ削除されたかを記すための新しい節が 追加されました。 =head3 Array and hash slices in scalar context (スカラコンテキストでの配列とハッシュのスライス) =begin original These are now documented in L. =end original これらは L で文書化されました。 =head3 C and formats (C とフォーマット) =begin original L and L have been corrected to state that C affects formats. =end original L と L は、C がフォーマットに与える 影響を述べるように修正されました。 =head3 L =begin original L's documentation has practically undergone a rewrite. It is now much more straightforward and clear. =end original L の文書はほとんど書き直されました。 はるかに直接的で明確になりました。 =head3 perlhack and perlrepository revamp (perlhack と perlrepository の刷新) =begin original The L document is now much shorter, and focuses on the Perl 5 development process and submitting patches to Perl. The technical content has been moved to several new documents, L, L, L, and L. This technical content has been only lightly edited. =end original L 文書はとても短くなり、Perl 5 開発プロセスと Perl への パッチの投稿に焦点を当てています。 技術的な内容は新しい文書である L, L, L, L に移動しました。 技術的な内容は軽く編集されただけです。 =begin original The perlrepository document has been renamed to L. This new document is just a how-to on using git with the Perl source code. Any other content that used to be in perlrepository has been moved to L. =end original perlrepository 文書は L に名前が変わりました。 この新しい文書は単に git で Perl ソースコードを扱うための手引き書です。 perlrepository にあったその他の内容は L に移動しました。 =head3 Time::Piece examples (Time::Piece の例) =begin original Examples in L have been updated to show the use of L. =end original L の例が L の使い方を示すように更新されました。 =head1 Diagnostics (診断メッセージ) =begin original The following additions or changes have been made to diagnostic output, including warnings and fatal error messages. For the complete list of diagnostic messages, see L. =end original 以下の追加や変更が、警告や致命的エラーメッセージ含む診断出力に行われました。 完全な診断メッセージの一覧については、L を参照してください。 =head2 New Diagnostics (新しい診断メッセージ) =head3 New Errors (新しいエラー) =over =item Closure prototype called =begin original This error occurs when a subroutine reference passed to an attribute handler is called, if the subroutine is a closure [perl #68560]. =end original このエラーは、属性ハンドラに渡されたサブルーチンのリファレンスが 呼び出されたとき、そのサブルーチンがクロージャだったときに起こります [perl #68560]。 =item Insecure user-defined property %s =begin original Perl detected tainted data when trying to compile a regular expression that contains a call to a user-defined character property function, meaning C<\p{IsFoo}> or C<\p{InFoo}>. See L and L. =end original Perl は、ユーザー定義文字特性関数 (C<\p{IsFoo}> や C<\p{InFoo}>) の 呼び出しを含む正規表現をコンパイルしようとしたときに汚染されているデータを 検出しました。 L と L を 参照してください。 =item panic: gp_free failed to free glob pointer - something is repeatedly re-creating entries =begin original This new error is triggered if a destructor called on an object in a typeglob that is being freed creates a new typeglob entry containing an object with a destructor that creates a new entry containing an object etc. =end original この新しいエラーは、新しいエントリを含むオブジェクトを作る デストラクタのオブジェクトを含む新しい型グロブを作る解放された 型グロブの中のオブジェクトのデストラクタ、といったものが 呼び出されたときに起こります。 =item Parsing code internal error (%s) =begin original This new fatal error is produced when parsing code supplied by an extension violates the parser's API in a detectable way. =end original この新しい致命的エラーは、エクステンションによって供給されたパースコードが 検知できる方法でパーサの API に違反しているときに発生します。 =item refcnt: fd %d%s =begin original This new error only occurs if a internal consistency check fails when a pipe is about to be closed. =end original この新しいエラーは、パイプを閉じようとしているときに内部の一貫性チェックに 失敗したときにのみ発生します。 =item Regexp modifier "/%c" may not appear twice =begin original The regular expression pattern has one of the mutually exclusive modifiers repeated. =end original 正規表現パターンに、相互に排他な修飾子の一つが繰り返されています。 =item Regexp modifiers "/%c" and "/%c" are mutually exclusive =begin original The regular expression pattern has more than one of the mutually exclusive modifiers. =end original 正規表現パターンに、相互に排他な修飾子が複数あります。 =item Using !~ with %s doesn't make sense =begin original This error occurs when C is used with C or C. =end original このエラーは、C が C や C で使われたときに起こります。 =back =head3 New Warnings (新しい警告) =over =item "\b{" is deprecated; use "\b\{" instead =item "\B{" is deprecated; use "\B\{" instead =begin original Use of an unescaped "{" immediately following a C<\b> or C<\B> is now deprecated in order to reserve its use for Perl itself in a future release. =end original エスケープされていない "{" の直後に C<\b> または C<\B> を使うことは、 Perl 自身の将来のリリースでの使用を予約するために非推奨となりました。 =item Operation "%s" returns its argument for ... =begin original Performing an operation requiring Unicode semantics (such as case-folding) on a Unicode surrogate or a non-Unicode character now triggers this warning. =end original Unicode サロゲートや非 Unicode 文字に対して (大文字小文字の畳み込みのような) Unicode の意味論 を要求する操作を実行すると、この警告が発生します。 =item Use of qw(...) as parentheses is deprecated =begin original See L, above, for details. =end original 詳しくは、上述の L を参照してください。 =back =head2 Changes to Existing Diagnostics (既存の診断メッセージの変更) =over 4 =item * =begin original The "Variable $foo is not imported" warning that precedes a C error has now been assigned the "misc" category, so that C will suppress it [perl #73712]. =end original C の下での "Variable $foo is not imported" 警告は "misc" カテゴリに割り当てられたので、C はこれを 抑制します [perl #73712]。 =item * =begin original warn() and die() now produce "Wide character" warnings when fed a character outside the byte range if C is a byte-sized handle. =end original warn() と die() は、C がバイト単位で扱われているときに バイトの範囲外の文字が送られると "Wide character" 警告を 出すようになりました。 =item * =begin original The "Layer does not match this perl" error message has been replaced with these more helpful messages [perl #73754]: =end original "Layer does not match this perl" エラーメッセージはより助けになる、 以下のメッセージに置き換えられました [perl #73754]: =over 4 =item * PerlIO layer function table size (%d) does not match size expected by this perl (%d) =item * PerlIO layer instance size (%d) does not match size expected by this perl (%d) =back =item * =begin original The "Found = in conditional" warning that is emitted when a constant is assigned to a variable in a condition is now withheld if the constant is actually a subroutine or one generated by C, since the value of the constant may not be known at the time the program is written [perl #77762]. =end original 条件文の中で定数が変数に代入されるときに出力される "Found = in conditional" 警告は、定数が実際にはサブルーチンあるいは C で生成されたものである場合には出力されなくなりました; なぜなら定数の値はプログラムが書かれた時点ではわからないかもしれないからです [perl #77762]。 =item * =begin original Previously, if none of the gethostbyaddr(), gethostbyname() and gethostent() functions were implemented on a given platform, they would all die with the message "Unsupported socket function 'gethostent' called", with analogous messages for getnet*() and getserv*(). This has been corrected. =end original 以前は、もしプラットフォームに gethostbyaddr(), gethostbyname(), gethostent() 関数のどれも実装されていない場合、すべて "Unsupported socket function 'gethostent' called" というメッセージと getnet*() および getserv*() と似たメッセージで die していました。 これは修正されました。 =item * =begin original The warning message about unrecognized regular expression escapes passed through has been changed to include any literal "{" following the two-character escape. For example, "\q{" is now emitted instead of "\q". =end original 認識できない正規表現エスケープが渡された時の警告メッセージは、 2 文字のエスケープに引き続く "{" が含まれるようになりました。 例えば、"\q" の代わりに "\q{" が出力されます。 =back =head1 Utility Changes (ツールの変更) =head3 L =over 4 =item * =begin original L now looks in the EMAIL environment variable for a return address if the REPLY-TO and REPLYTO variables are empty. =end original L は、REPLY-TO と REPLYTO の変数が空のとき、リターンアドレスとして EMAIL 環境変数を見るようになりました。 =item * =begin original L did not previously generate a "From:" header, potentially resulting in dropped mail; it now includes that header. =end original L は以前は "From:" ヘッダを生成していなかったので、メールが 削除されてしまう可能性がありました; このヘッダが含まれるようになりました。 =item * =begin original The user's address is now used as the Return-Path. =end original ユーザーのアドレスは Return-Path として使われるようになりました。 =begin original Many systems these days don't have a valid Internet domain name, and perlbug@perl.org does not accept email with a return-path that does not resolve. So the user's address is now passed to sendmail so it's less likely to get stuck in a mail queue somewhere [perl #82996]. =end original 最近の多くのシステムは有効なインターネットドメイン名を持っておらず、 perlbug@perl.org は解決できない return-path をもつ電子メールは 受け付けません。 それで、どこかのメールキューで引っかかる可能性を減らすために、 ユーザーのアドレスが sendmail に渡されるようになりました [perl #82996]。 =item * =begin original L now always gives the reporter a chance to change the email address it guesses for them (5.12.2). =end original F は常に、推測された電子メールアドレスを変更する機会を 報告者に与えるようになりました (5.12.2)。 =item * =begin original L should no longer warn about uninitialized values when using the B<-d> and B<-v> options (5.12.2). =end original F は、B<-d> と B<-v> オプションを使ったときに非初期化値に関して 警告を出さなくなりました (5.12.2)。 =back =head3 L =over =item * =begin original The remote terminal works after forking and spawns new sessions, one per forked process. =end original 新しいセッションを fork と spawn した後、fork したプロセス毎に一つ、 リモート端末が動作します。 =back =head3 L =over 4 =item * =begin original L is a new utility to apply pattern matching to the contents of files in a tar archive. It comes with C. =end original L 、tar アーカイブ内のファイルの内容に対してパターンマッチングを 適用するための新しいユーティリティです。 これは C に同梱されています。 =back =head1 Configuration and Compilation (設定とコンパイル) =begin original See also L, above. =end original 上述の L も 参照してください。 =over 4 =item * =begin original CCINCDIR and CCLIBDIR for the mingw64 cross-compiler are now correctly under F<$(CCHOME)\mingw\include> and F<\lib> rather than immediately below F<$(CCHOME)>. =end original mingw64 クロスコンパイラ用の CCINCDIR と CCLIBDIR は、直後に記述している F<$(CCHOME)> ではなく、正しく F<$(CCHOME)\mingw\include> と F<\lib> を 使うようになりました。 =begin original This means the "incpath", "libpth", "ldflags", "lddlflags" and "ldflags_nolargefiles" values in F and F are now set correctly. =end original これは、F と F "incpath", "libpth", "ldflags", "lddlflags", "ldflags_nolargefiles" の値が正しく設定されることを意味します。 =item * =begin original C has been adjusted to account for F separation. =end original C は F の分割に対応するように 調整されました。 =item * =begin original On compilers that support it, B<-Wwrite-strings> is now added to cflags by default. =end original 対応しているコンパイラでは、B<-Wwrite-strings> がデフォルトで cflags に 追加されるようになりました。 =item * =begin original The L module can now (once again) be included in a static Perl build. The special-case handling for this situation got broken in Perl 5.11.0, and has now been repaired. =end original L モジュールは(再び)静的 Perl ビルドに含まれるようになりました。 この状況のための特殊ケースの扱いは Perl 5.11.0 で壊れていましたが、 修復されました。 =item * =begin original The previous default size of a PerlIO buffer (4096 bytes) has been increased to the larger of 8192 bytes and your local BUFSIZ. Benchmarks show that doubling this decade-old default increases read and write performance by around 25% to 50% when using the default layers of perlio on top of unix. To choose a non-default size, such as to get back the old value or to obtain an even larger value, configure with: =end original PerlIO バッファの以前のデフォルトサイズ (4096 バイト) は、8192 バイトと ローカルの BUFSIZ のどちらか大きい方に増やされました。 ベンチマークに寄れば、10 年単位の古いデフォルトを倍にすることで、 unix の top で perlIO のデフォルト層を使ったときに 25% から 50% 読み書き性能が向上しました。 古い値に戻したり、より大きな値にするために、デフォルトでないサイズを 選択したい場合は、以下のように設定します: ./Configure -Accflags=-DPERLIOBUF_DEFAULT_BUFSIZ=N =begin original where N is the desired size in bytes; it should probably be a multiple of your page size. =end original ここで N は設定したいバイト数です; これはおそらくページサイズの倍数に するべきでしょう。 =item * =begin original An "incompatible operand types" error in ternary expressions when building with C has been fixed (5.12.2). =end original C でビルドしたときに 3 項演算子で "C" エラーが発生する問題が修正されました (5.12.2)。 =item * =begin original Perl now skips setuid L tests on partitions it detects mounted as C (5.12.2). =end original Perl は、C でマウントされていることが検出されたパーティションでは L の setuid でのテストを省略するようになりました (5.12.2)。 =back =head1 Platform Support (プラットフォーム対応) =head2 New Platforms (新しいプラットフォーム) =over 4 =item AIX =begin original Perl now builds on AIX 4.2 (5.12.1). =end original Perl を AIX 4.2 でビルドできるようになりました (5.12.1)。 =back =head2 Discontinued Platforms (中断したプラットフォーム) =over 4 =item Apollo DomainOS =begin original The last vestiges of support for this platform have been excised from the Perl distribution. It was officially discontinued in version 5.12.0. It had not worked for years before that. =end original このプラットフォームの対応の最後の名残が Perl 配布から削除されました。 これはバージョン 5.12.0 で公式に中断されました。 それ以前何年も作業されていませんでした。 =item MacOS Classic =begin original The last vestiges of support for this platform have been excised from the Perl distribution. It was officially discontinued in an earlier version. =end original このプラットフォームの対応の最後の名残が Perl 配布から削除されました。 これはもっと前のバージョンで公式に中断されました。 =back =head2 Platform-Specific Notes (プラットフォーム固有の注意) =head3 AIX =over =item * =begin original F has been updated with information about the XL C/C++ V11 compiler suite (5.12.2). =end original F は、XL C/C++ V11 コンパイラスイートに関する情報で 更新されました (5.12.2)。 =back =head3 ARM =over =item * =begin original The C configuration probe on ARM has been fixed (5.12.2). =end original ARM での C 設定調査が修正されました (5.12.2)。 =back =head3 Cygwin =over 4 =item * =begin original L has been updated to build manpages on cygwin. =end original L は cygwin で man ページをビルドするように更新されました。 =item * =begin original Improved rebase behaviour =end original 改良された rebase の振る舞い =begin original If a DLL is updated on cygwin the old imagebase address is reused. This solves most rebase errors, especially when updating on core DLL's. See L for more information. =end original cygwin で DLL が更新されると、古いイメージベースアドレスは再利用されます。 これはほとんどの rebase エラー、特にコア DLL の更新時のエラーを 解決します。 さらなる情報については L を 参照してください。 =item * =begin original Support for the standard cygwin dll prefix (needed for FFIs) =end original 標準 cygwin dll 接頭辞の対応 (FFI で必要) =item * =begin original Updated build hints file =end original 更新されたビルドヒントファイル =back =head3 FreeBSD 7 =over =item * =begin original FreeBSD 7 no longer contains F. At build time, Perl now skips the F check for versions 7 and higher and assumes ELF (5.12.1). =end original FreeBSD 7 はもはや F を含んでいません。 ビルド時に、バージョンが 7 以上の場合は F のチェックを スキップし、ELF を仮定します (5.12.1)。 =back =head3 HP-UX =over =item * =begin original Perl now allows B<-Duse64bitint> without promoting to C on HP-UX (5.12.1). =end original HP-UX で C に昇格することなく B<-Duse64bitint> を 使えるようになりました (5.12.1)。 =back =head3 IRIX =over =item * =begin original Conversion of strings to floating-point numbers is now more accurate on IRIX systems [perl #32380]. =end original 文字列から浮動小数点数への変換は IRIX システムでより精密になりました [perl #32380]。 =back =head3 Mac OS X =over =item * =begin original Early versions of Mac OS X (Darwin) had buggy implementations of the setregid(), setreuid(), setrgid(,) and setruid() functions, so Perl would pretend they did not exist. =end original 初期のバージョンの Mac OS X (Darwin) は setregid(), setreuid(), setrgid(,), setruid() 関数の実装がバグっていたので、Perl はそれらが 存在しない振りをしていました。 =begin original These functions are now recognised on Mac OS 10.5 (Leopard; Darwin 9) and higher, as they have been fixed [perl #72990]. =end original これらの関数はMac OS 10.5 (Leopard; Darwin 9) で認められるようになったので、 これは修正されました [perl #72990]。 =back =head3 MirBSD =over =item * =begin original Previously if you built Perl with a shared F on MirBSD (the default config), it would work up to the installation; however, once installed, it would be unable to find F. Path handling is now treated as in the other BSD dialects. =end original 以前は、MirBSD で共有 F で Perl をビルドする(デフォルト設定)と、 インストールまでは動作します; しかし一旦インストールすると、 F が見つからなくなります。 Path の扱いは、他の BSD 方言と同じように扱われるようになりました。 =back =head3 NetBSD =over =item * =begin original The NetBSD hints file has been changed to make the system malloc the default. =end original NetBSD ヒントファイルは、システムの malloc がデフォルトに なるように変更されました。 =back =head3 OpenBSD =over =item * =begin original OpenBSD E 3.7 has a new malloc implementation which is I-based, and as such can release memory back to the OS; however, Perl's use of this malloc causes a substantial slowdown, so we now default to using Perl's malloc instead [perl #75742]. =end original OpenBSD E 3.7 は I-ベースの新しい malloc の実装があり、 メモリを OS に返せるようになっています; しかし、Perl のこの malloc の 使用によりかなりの速度低下を引き起こすので、代わりに Perl の malloc を 使うことを新しいデフォルトにしました [perl #75742]。 =back =head3 OpenVOS =over =item * =begin original Perl now builds again with OpenVOS (formerly known as Stratus VOS) [perl #78132] (5.12.3). =end original Perl は再び (以前は Stratus VOS として知られていた) OpenVOS で ビルドできるようになりました [perl #78132] (5.12.3)。 =back =head3 Solaris =over =item * =begin original DTrace is now supported on Solaris. There used to be build failures, but these have been fixed [perl #73630] (5.12.3). =end original DTrace は Solaris に対応しました。 以前はビルドに失敗していましたが、これは修正されました [perl #73630] (5.12.3)。 =back =head3 VMS =over =item * =begin original Extension building on older (pre 7.3-2) VMS systems was broken because configure.com hit the DCL symbol length limit of 1K. We now work within this limit when assembling the list of extensions in the core build (5.12.1). =end original 古い (7.3-2 以前の) VMS システムでのエクステンションのビルドは、 configure.com が DCL シンボル長の制限である 1K に引っかかったために 壊れていました。 コアビルドのエクステンションの一覧のアセンブル時にはこの制限内に なるようにしました (5.12.1)。 =item * =begin original We fixed configuring and building Perl with B<-Uuseperlio> (5.12.1). =end original Perl の B<-Uuseperlio> 付きでの設定とビルドを修正しました (5.12.1)。 =item * =begin original C now honours the default permissions on VMS. =end original C は VMS のデフォルトパーミッションを 考慮するようになりました。 =begin original When C became the default and C became the default bottom layer, the most common path for creating files from Perl became C, which has always explicitly used C<0666> as the permission mask. This prevents inheriting permissions from RMS defaults and ACLs, so to avoid that problem, we now pass C<0777> to open(). In theVMS CRTL, C<0777> has a special meaning over and above intersecting with the current umask; specifically, it allows Unix syscalls to preserve native default permissions (5.12.3). =end original C がデフォルトになり、C がデフォルトの底の層になったとき、 Perl からファイルを作成する最も一般的な方法は、パーミッションマスクとして 常に明示的に C<0666> を使う C になりました。 これはパーミッションを RMS デフォルトと ACL から継承するのを 妨げるので、この問題を回避するために、 open() に C<0777> を渡すようになりました。 theVMS CRTL において、C<0777> は現在の umask との交差に加えて、特別な 意味を持ちます; 特に、これは Unix syscall がネイティブなデフォルトのパーミッションを 保存できるようになります (5.12.3)。 =item * =begin original The shortening of symbols longer than 31 characters in the core C sources and in extensions is now by default done by the C compiler rather than by xsubpp (which could only do so for generated symbols in XS code). You can reenable xsubpp's symbol shortening by configuring with -Uuseshortenedsymbols, but you'll have some work to do to get the core sources to compile. =end original コア C ソースとエクステンションでの 31 文字より長いシンボルの短縮化は デフォルトでは xsubpp (XS コードで生成されたシンボルに対してのみ できます) ではなく C コンパイラで行うようになりました。 設定時に -Uuseshortenedsymbols を指定することで、xsubpp のシンボル短縮化を 再有効化できますが、コアソースをコンパイルするには多少の作業が必要です。 =item * =begin original Record-oriented files (record format variable or variable with fixed control) opened for write by the C layer will now be line-buffered to prevent the introduction of spurious line breaks whenever the perlio buffer fills up. =end original レコード指向ファイル (レコード形式変数や固定制御付き変数) を C 層で 書き込みように開いたとき、PerlIO バッファが埋まったときに偽の行分割が 導入されるのを避けるために、行バッファリングを使うようになりました。 =item * =begin original F is now installed on VMS. This was an oversight in v5.12.0 which caused some extensions to fail to build (5.12.2). =end original F がインストールされるようになりました。 これは v5.12.0 にあったミスで、これによりいくつかのエクステンションが ビルドできなくなっていました (5.12.2)。 =item * =begin original Several memory leaks in L have been fixed (5.12.2). =end original L のいくつかのメモリリークが 修正されました (5.12.2)。 =item * =begin original A memory leak in Perl_rename() due to a double allocation has been fixed (5.12.2). =end original 二重割り当てによる Perl_rename() でのメモリリークが 修正されました (5.12.2)。 =item * =begin original A memory leak in vms_fid_to_name() (used by realpath() and realname()> has been fixed (5.12.2). =end original (realpath() と realname() で使われている) vms_fid_to_name() での メモリリークが修正されました (5.12.2)。 =back =head3 Windows =begin original See also L and L, above. =end original 上述の L と L も参照してください。 =over 4 =item * =begin original Fixed build process for SDK2003SP1 compilers. =end original SDK2003SP1 コンパイラのビルドプロセスが修正されました。 =item * =begin original Compilation with Visual Studio 2010 is now supported. =end original Visual Studio 2010 でのコンパイルに対応しました。 =item * =begin original When using old 32-bit compilers, the define C<_USE_32BIT_TIME_T> is now set in C<$Config{ccflags}>. This improves portability when compiling XS extensions using new compilers, but for a Perl compiled with old 32-bit compilers. =end original 古い 32-ビットコンパイラを使ったとき、C<_USE_32BIT_TIME_T> 定義が C<$Config{ccflags}> に設定されます。 これによって、新しいコンパイラを使って XS エクステンションを コンパイルするけれども、Perl 本体は古い 32-ビットコンパイラで コンパイルしたときの互換性が向上します。 =item * =begin original C<$Config{gccversion}> is now set correctly when Perl is built using the mingw64 compiler from L [perl #73754]. =end original C<$Config{gccversion}> は、Perl が L の mingw64 コンパイラを使ってビルドされたときに正しく 設定されるようになりました [perl #73754]。 =item * =begin original When building Perl with the mingw64 x64 cross-compiler C, C, C, C and C values in F and F were not previously being set correctly because, with that compiler, the include and lib directories are not immediately below C<$(CCHOME)> (5.12.2). =end original Perl を mingw64 x64 クロスコンパイラでビルドするとき、 F と F にある C, C, C, C, C の 値が正しくセットされていませんでした; これは、このコンパイラでは、インクルードとライブラリのディレクトリが C<$(CCHOME)> の直下ではないからです (5.12.2)。 =item * =begin original The build process proceeds more smoothly with mingw and dmake when F is in the PATH, due to a C fix. =end original C の修正により、PATH に F がある時に mingw と dmake を 使ってよりスムーズにビルドプロセスが進むようになりました。 =item * =begin original Support for building with Visual C++ 2010 is now underway, but is not yet complete. See F or L for more details. =end original Visual C++ 2010 でのビルド対応が進行中ですが、まだ完全ではありません。 さらなる詳細については F や L を参照してください。 =item * =begin original The option to use an externally-supplied crypt(), or to build with no crypt() at all, has been removed. Perl supplies its own crypt() implementation for Windows, and the political situation that required this part of the distribution to sometimes be omitted is long gone. =end original 外部供給される crypt() を使ったり、全く crypt() を使わずにビルドするための オプションは削除されました。 Perl は Windows 用に独自の crypt() 実装を提供し、 ときどきこの配布の一部を省略する必要があるという政治的な状況は なくなって久しいです。 =back =head1 Internal Changes (内部の変更) =head2 New APIs (新しい API) =head3 CLONE_PARAMS structure added to ease correct thread creation (正しいスレッド作成を容易にするために CLONE_PARAMS 構造体が追加されました) =begin original Modules that create threads should now create C structures by calling the new function Perl_clone_params_new(), and free them with Perl_clone_params_del(). This will ensure compatibility with any future changes to the internals of the C structure layout, and that it is correctly allocated and initialised. =end original スレッドを作成するモジュールは、新しい関数である Perl_clone_params_new() を 呼び出すことで C 構造体を作成し、Perl_clone_params_del() で 解放するようになりました。 これにより、将来 C の内部配置が変更されたときの互換性を 確保して、正しく割り当てと初期化が行われるようにします。 =head3 New parsing functions (新しいパース関数) =begin original Several functions have been added for parsing Perl statements and expressions. These functions are meant to be used by XS code invoked during Perl parsing, in a recursive-descent manner, to allow modules to augment the standard Perl syntax. =end original 文や式のパースのためのいくつかの関数が追加されました: これらの関数は、Perl のパース中に再帰下降の方式で XS コードによって起動され、 モジュールが標準 Perl 文法を拡張できるようにします。 =over =item * =begin original L parses a sequence of statements, up to closing brace or EOF. =end original L は文の並びを、閉じ中かっこか EOF までパースします。 =item * =begin original L parses a complete Perl statement, including optional label. =end original L はオプションの ラベルを含む、完全な Perl 文をパースします。 =item * =begin original L parses a statement without a label. =end original L はラベル抜きの文をパースします。 =item * =begin original L parses a code block. =end original L はコードブロックをパースします。 =item * =begin original L parses a statement label, separate from statements. =end original L は文から分離して、文のラベルを パースします。 =item * =begin original L|perlapi/parse_fullexpr>, L|perlapi/parse_listexpr>, L|perlapi/parse_termexpr>, and L|perlapi/parse_arithexpr> parse expressions at various precedence levels. =end original L|perlapi/parse_fullexpr>, L|perlapi/parse_listexpr>, L|perlapi/parse_termexpr>, L|perlapi/parse_arithexpr> はさまざまな 優先順位レベルで、再帰降下パースを実行します。 =back =head3 Hints hash API (ヒントハッシュ API) =begin original A new C API for introspecting the hinthash C<%^H> at runtime has been added. See C, C, C, C, and C in L for details. =end original ヒントハッシュ C<%^H> を実行時に内部調査するための新しい C API が 追加されました。 詳しくは L の C, C, C, C, C を 参照してください。 =begin original A new, experimental API has been added for accessing the internal structure that Perl uses for C<%^H>. See the functions beginning with C in L. =end original Perl が C<%^H> のために使う内部構造にアクセスするための新しい実験的な API が追加されました。 L の、C で始まる関数を参照してください。 =head3 C interface to caller() (caller() への C インターフェース) =begin original The C function has been added as an XSUB-writer's equivalent of caller(). See L for details. =end original C 関数は、XSUB-作者のための caller() の等価物として追加されました。 詳しくは L を参照してください。 =head3 Custom per-subroutine check hooks (サブルーチン毎のカスタムチェックフック) =begin original XS code in an extension module can now annotate a subroutine (whether implemented in XS or in Perl) so that nominated XS code will be called at compile time (specifically as part of op checking) to change the op tree of that subroutine. The compile-time check function (supplied by the extension module) can implement argument processing that can't be expressed as a prototype, generate customised compile-time warnings, perform constant folding for a pure function, inline a subroutine consisting of sufficiently simple ops, replace the whole call with a custom op, and so on. This was previously all possible by hooking the C op checker, but the new mechanism makes it easy to tie the hook to a specific subroutine. See L. =end original エクステンションモジュールの XS コードはサブルーチンに (XS で 実装されているか Perl で実装されているか) のアノテーションが 付けられるようになったので、任命された XS コードはそのサブルーチンの op 木を変更するためにコンパイル時 (具体的には op チェックの一部として) 呼び出されます。 (エクステンションモジュールによって供給される) コンパイル時のチェック関数は プロトタイプとして記述できない引数処理の実装、カスタマイズされた コンパイル時警告の生成、純粋な関数のための定数の畳み込みの実行、 充分に単純な op からなるサブルーチンのインライン化、呼び出し全体の カスタム op への置き換えなどが可能です。 以前はこれは全て C op チェッカをフックすることで可能でしたが、 新しい機構は簡単にフックを特定のサブルーチンに結びつけることができます。 L を参照してください。 =begin original To help in writing custom check hooks, several subtasks within standard C op checking have been separated out and exposed in the API. =end original カスタムチェックフックを書くのを助けるために、標準の C op チェックに あるいくつかの副タスクが分離され、API に露出しました。 =head3 Improved support for custom OPs (カスタム op への改良された対応) =begin original Custom ops can now be registered with the new C C function and the C structure. This will make it easier to add new properties of custom ops in the future. Two new properties have been added already, C and C. =end original カスタム ops は新しい C C 関数と C 構造体で 登録できるようになりました。 これにより、将来カスタム op の新しいプロパティをより簡単に 追加できるようになります。 二つの新しいプロパティである C と C が既に 追加されています。 =begin original C is one of the OA_*OP constants. It allows L and other introspection mechanisms to work with custom ops that aren't BASEOPs. C is a pointer to a function that will be called for ops of this type from C. =end original C は OA_*OP 定数の一つです。 これにより、L やその他の内部検査機構が BASEOP でないカスタム op で 動作するようになります。 C は、C からこの種類の op を呼び出す関数への ポインタです。 =begin original See L and L for more detail. =end original さらなる詳細については L と L を参照してください。 =begin original The old C/C interface is still supported but discouraged. =end original 古い C/C インターフェースもまだ 対応していますが、勧められません。 =head3 Scope hooks (スコープフック) =begin original It is now possible for XS code to hook into Perl's lexical scope mechanism at compile time, using the new C function. See L. =end original 新しい C 関数を使って、コンパイル時の Perl の レキシカルスコープ機構にフックする XS コードが可能になりました。 L を参照してください。 =head3 The recursive part of the peephole optimizer is now hookable (覗き穴最適化器の再帰部分がフック可能になりました) =begin original In addition to C, for hooking into the toplevel peephole optimizer, a C is now available to hook into the optimizer recursing into side-chains of the optree. =end original C に加えて、トップレベル覗き穴最適化器をフックするために、 op 木の再度チェーンへの再帰する最適化器へフックするための C が利用可能になりました。 =head3 New non-magical variants of existing functions (既存の関数の新しい非マジカル版) =begin original The following functions/macros have been added to the API. The C<*_nomg> macros are equivalent to their non-C<_nomg> variants, except that they ignore get-magic. Those ending in C<_flags> allow one to specify whether get-magic is processed. =end original 以下の関数/マクロが API に追加されました。 C<*_nomg> マクロは C<_nomg> なし版と等価ですが、get-magic を無視します。 C<_flags> で終わっているものは、get-magic を処理するかどうかを 指定できます。 sv_2bool_flags SvTRUE_nomg sv_2nv_flags SvNV_nomg sv_cmp_flags sv_cmp_locale_flags sv_eq_flags sv_collxfrm_flags =begin original In some of these cases, the non-C<_flags> functions have been replaced with wrappers around the new functions. =end original これらのケースのいくつかでは、非-C<_flags> 関数は新しい関数の ラッパーと置き換えられました。 =head3 pv/pvs/sv versions of existing functions (既存の関数のpv/pvs/sv 版) =begin original Many functions ending with pvn now have equivalent C versions. =end original 末尾に pvn が付く多くの関数に、等価な C 版が追加されました。 =head3 List op-building functions (リスト op 構築関数) =begin original List op-building functions have been added to the API. See L, L, and L in L. =end original リスト op 構築関数が API に追加されました。 L の L, L, L を参照してください。 =head3 C =begin original The L macro, part of op building that constructs the execution-order op chain, has been added to the API. =end original 実行順 op チェーンを構成する op 構築の一部である L マクロが追加されました。 =head3 Localisation functions (ローカル化関数) =begin original The C, C, C and C functions have been added to the API. =end original C, C, C, C 関数が API に追加されました。 =head3 Stash names (スタッシュ名) =begin original A stash can now have a list of effective names in addition to its usual name. The first effective name can be accessed via the C macro, which is now the recommended name to use in MRO linearisations (C being a fallback if there is no C). =end original スタッシュは、通常の名前に追加して、有向な名前のリストを持つように なりました。 最初の有効な名前は C マクロ経由でアクセスでき、これは MRO 線形化で使う推奨される名前となりました (C がない場合は C にフォールバックします)。 =begin original These names are added and deleted via C and C. These two functions are I part of the API. =end original これらの名前は C と C を使って追加および 削除されます。 これら二つの関数は API の一部では I<ありません>。 =head3 New functions for finding and removing magic (マジックの検索と削除のための新しい関数) =begin original The L|perlapi/mg_findext> and L|perlapi/sv_unmagicext> functions have been added to the API. They allow extension authors to find and remove magic attached to scalars based on both the magic type and the magic virtual table, similar to how sv_magicext() attaches magic of a certain type and with a given virtual table to a scalar. This eliminates the need for extensions to walk the list of C pointers of an C to find the magic that belongs to them. =end original L|perlapi/mg_findext> 関数と L|perlapi/sv_unmagicext> 関数が API に追加されました。 これらはエクステンションの作者がマジックの種類およびマジックの仮想テーブルを 基に、スカラに付加されているマジックを探したり削除したりできるようにします; sv_magicext() が特定の種類と与えられた仮想テーブルのマジックをスカラに 付与する方法と同様です。 これにより、C に付与されているマジックを探すために、エクステンションが その C ポインタを辿る必要をなくします。 =head3 C =begin original This function returns the SV representing C<$_>, whether it's lexical or dynamic. =end original この関数は、レキシカルであろうと動的であろうと、C<$_> を表現する SV を返します。 =head3 C =begin original Perl_croak_no_modify() is short-hand for C. =end original Perl_croak_no_modify() は C の 簡略形です。 =head3 C define (C 定義) =begin original The C define has been added to provide the best-guess incantation to use for static inline functions, if the C compiler supports C99-style static inline. If it doesn't, it'll give a plain C. =end original C コンパイラが C99 形式の静的インライン関数に対応している場合、 静的インライン関数を使うような指示を提供する、 C 定義が追加されました。 対応していない場合は、普通の C を返します。 =begin original C can be used to check if the compiler actually supports inline functions. =end original C はコンパイラが実際にインライン関数に対応しているか どうかをチェックするのに使えます。 =head3 New C option for hexadecimal escapes (16 進エスケープのための新しい C オプション) =begin original A new option, C, has been added to C to dump all characters above ASCII in hexadecimal. Before, one could get all characters as hexadecimal or the Latin1 non-ASCII as octal. =end original C に、ASCII 以上の全ての文字を 16 進数でダンプする C オプションが新しく追加されました。 以前は、全ての文字を 16 進数にするか、Latin1 非-ASCII を 8 進数にするか でした。 =head3 C =begin original C has been added to the API, but is considered experimental. =end original C が API に追加されましたが、実験的なものと考えられています。 =head3 op_scope() and op_lvalue() (op_scope() と op_lvalue()) =begin original The op_scope() and op_lvalue() functions have been added to the API, but are considered experimental. =end original op_scope() 関数と op_lvalue() 関数が API に追加されましたが、実験的なものと 考えられています。 =head2 C API Changes (C API の変更) =head3 C has been removed (C は削除されました) =begin original The option to define C to expose older 5.005 symbols for backwards compatibility has been removed. Its use was always discouraged, and MakeMaker contains a more specific escape hatch: =end original 後方互換性のために古い 5.005 のシンボルを露出させるための C を定義するオプションは削除されました。 この使用は常に勧められず、 MakeMaker はより具体的な回避方法を持っています: perl Makefile.PL POLLUTE=1 =begin original This can be used for modules that have not been upgraded to 5.6 naming conventions (and really should be completely obsolete by now). =end original これは、まだ 5.6 命名規約に更新されていない (そして今では完全に 古いものである) モジュールで使えます。 =head3 Check API compatibility when loading XS modules (XS モジュールを読み込むときのチェック API の互換性) =begin original When Perl's API changes in incompatible ways (which usually happens between major releases), XS modules compiled for previous versions of Perl will no longer work. They need to be recompiled against the new Perl. =end original Perl の API が互換性のない形で変更されたとき (普通はメジャーリリース間で 起こります)、以前のバージョンの Perl 用にコンパイルされた XS モジュールは もはや動作しなくなります。 新しい Perl 用に再コンパイルする必要があります。 =begin original The C macro has been added to ensure that modules are recompiled and to prevent users from accidentally loading modules compiled for old perls into newer perls. That macro, which is called when loading every newly compiled extension, compares the API version of the running perl with the version a module has been compiled for and raises an exception if they don't match. =end original C マクロは、確実にモジュールが再コンパイルされて、 ユーザーが間違って古い perl 用にコンパイルされたモジュールを新しい perl で 読み込むのを防ぐために追加されました。 新しくコンパイルされたエクステンションが読み込まれる度に呼び出される このマクロは、実行中の perl の API のバージョンと、モジュールのコンパイルされた バージョンを比較し、それが一致しなければ例外を発生させます。 =head3 Perl_fetch_cop_label =begin original The first argument of the C API function C has changed from C to C, to insulate the user from implementation details. =end original C API 関数 C の第 1 引数は、ユーザーから実装詳細を 分離するために、C から C に変更されました。 =begin original This API function was marked as "may change", and likely isn't in use outside the core. (Neither an unpacked CPAN nor Google's codesearch finds any other references to it.) =end original この API 関数は「変更されるかもしれない」という印が付けられ、 コアの外で使われることはなさそうです。 (CPAN を展開したものや Google コードサーチではこれを参照しているものは 見つかりませんでした。) =head3 GvCV() and GvGP() are no longer lvalues (GvCV() と GvGP() はもはや左辺値ではありません) =begin original The new GvCV_set() and GvGP_set() macros are now provided to replace assignment to those two macros. =end original 新しい GvCV_set() マクロと GvGP_set() マクロがこれら二つのマクロへの 代入の代替として提供されています。 =begin original This allows a future commit to eliminate some backref magic between GV and CVs, which will require complete control over assignment to the C slot. =end original これにより、C スロットへの代入を完全に制御するのに必要な、 GV と CV の間の後方参照マジックを取り除くためのコミットが将来 出来るようになります。 =head3 CvGV() is no longer an lvalue (CvGV() はもはや左辺値ではありません) =begin original Under some circumstances, the CvGV() field of a CV is now reference-counted. To ensure consistent behaviour, direct assignment to it, for example C is now a compile-time error. A new macro, C has been introduced to run this operation safely. Note that modification of this field is not part of the public API, regardless of this new macro (and despite its being listed in this section). =end original ある種の状況では、CV の CvGV() フィールドは参照カウントされます。 一貫性のある振る舞いを保証するために、例えば C のような 直接の代入はコンパイルエラーになります。 新しいマクロである C が、この操作を安全に行うために 導入されました。 この新しいマクロにも関わらず(そしてこの節に書いているにも関わらず) このフィールドの変更は公式 API の一部ではないことに注意してください。 =head3 CvSTASH() is no longer an lvalue (CvSTASH() はもはや左辺値ではありません) =begin original The CvSTASH() macro can now only be used as an rvalue. CvSTASH_set() has been added to replace assignment to CvSTASH(). This is to ensure that backreferences are handled properly. These macros are not part of the API. =end original CvSTASH() マクロは右辺値としてのみ使えるようになりました。 CvSTASH_set() が、CvSTASH() への代入の代わりとして追加されました。 これは、バックリファレンスが正しく扱われるのを保証するためです。 これらのマクロは API の一部ではありません。 =head3 Calling conventions for C and C (C と C の呼び出し規約) =begin original The way the parser handles labels has been cleaned up and refactored. As a result, the newFOROP() constructor function no longer takes a parameter stating what label is to go in the state op. =end original パーサがラベルを扱う方法が整理され、リファクタリングされました。 結果として、newFOROP() コンストラクタ関数は、もはやどのラベルが状態に 入るかを示す引数を取らなくなりました。 =begin original The newWHILEOP() and newFOROP() functions no longer accept a line number as a parameter. =end original newWHILEOP() 関数と newFOROP() 関数はもはや行番号を引数として 受け付けなくなりました。 =head3 Flags passed to C and C (C と C に渡されるフラグ) =begin original Some of the flags parameters to uvuni_to_utf8_flags() and utf8n_to_uvuni() have changed. This is a result of Perl's now allowing internal storage and manipulation of code points that are problematic in some situations. Hence, the default actions for these functions has been complemented to allow these code points. The new flags are documented in L. Code that requires the problematic code points to be rejected needs to change to use the new flags. Some flag names are retained for backward source compatibility, though they do nothing, as they are now the default. However the flags C, C, C, and C have been removed, as they stem from a fundamentally broken model of how the Unicode non-character code points should be handled, which is now described in L. See also the Unicode section under L. =end original uvuni_to_utf8_flags() と utf8n_to_uvuni() へのフラグ引数の一部が 変更されました。 これは、ある種の状況で問題となる符号位置の内部保管と操作が可能になった 結果です。 従って、これらの関数のデフォルトアクションはこれらの符号位置を認めるように 補完されました。 新しいフラグは L で文書化されています。 問題のある符号位置を拒絶することが必要なコードは、この新しいフラグを 使うように変更する必要があります。 一部のフラグ名は後方ソース互換性のために保持していますが、何もしません; 今ではデフォルトとなっています。 しかし C, C, C, C は削除されました; L に記述されているように、 Unicode 非文字符号位置をどう扱うべきかに関して本質的に壊れたモデルに 基づくものだからです。 L の Unicode の節も参照してください。 =head2 Deprecated C APIs (非推奨の C API) =over =item C =begin original C 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. =end original C はもはや Perl の公式 API の一部ではありません。 これを呼び出すと非推奨警告が生成され、将来のリリースで削除されます。 =item C =begin original The sv_compile_2op() API function is now deprecated. Searches suggest that nothing on CPAN is using it, so this should have zero impact. =end original sv_compile_2op() API 関数は非推奨となりました。 検索した結果 CPAN にこれを使っているものはありませんでしたので、 これの影響はないはずです。 =begin original It attempted to provide an API to compile code down to an optree, but failed to bind correctly to lexicals in the enclosing scope. It's not possible to fix this problem within the constraints of its parameters and return value. =end original これは op 木へのコードをコンパイルするための API を提供しようとしましたが、 囲まれたスコープ内のレキシカルに対して正しく結びつけることに失敗していました。 引数と返り値の制限の中でこの問題を修正することは不可能です。 =item C =begin original The C function has been deprecated. It appeared that its design was insufficient for reliably getting the lexical C<$_> at run-time. =end original C 関数は非推奨となりました。 この設計は、確実に実行時にレキシカルな C<$_> を得るには不十分と思われます。 =begin original Use the new C function or the C macro instead. They directly return the right SV representing C<$_>, whether it's lexical or dynamic. =end original 代わりに、新しい C 関数か C マクロを使ってください。 これらはレキシカルか動的かに関わらず、 C<$_> を表現する正しい SV を 直接返します。 =item C and C =begin original Those are left from an old implementation of C using C++ objects, which was removed in Perl 5.8. Nowadays these macros do exactly nothing, so they shouldn't be used anymore. =end original これらは Perl 5.8 で削除された、C++ オブジェクトを使った C の 古い実装から残されていました。 今ではこれらのマクロは全く何もしないので、もう使うべきではありません。 =begin original For compatibility, they are still defined for external C code. Only extensions defining C must be updated now. =end original 互換性のために、これらはまだ外部 C コードのために定義されています。 C を定義しているエクステンションだけが今回 更新しなければなりません。 =back =head2 Other Internal Changes (その他の内部の変更) =head3 Stack unwinding (スタックの巻き戻し) =begin original The protocol for unwinding the C stack at the last stage of a C has changed how it identifies the target stack frame. This now uses a separate variable C, where previously it relied on the C pointer in the C context frame that has nominally just been discarded. This change means that code running during various stages of Perl-level unwinding no longer needs to take care to avoid destroying the ghost frame. =end original C の最終ステージの C スタックの巻き戻しのための手順は、どのように ターゲットスタックフレームを識別するかが変更されました。 今では別の変数 C を使うようになりました; 以前は 名目上捨てられた C コンテキストフレームにある C ポインタに依存していました。 この変更は、Perl レベルの巻き戻しのさまざまなステージで実行中の コードが、もはや幽霊フレームを破壊することを避けるために気をつかう 必要はありません。 =head3 Scope stack entries (スコープスタックエントリ) =begin original The format of entries on the scope stack has been changed, resulting in a reduction of memory usage of about 10%. In particular, the memory used by the scope stack to record each active lexical variable has been halved. =end original スコープスタックのエントリの形式が変更され、結果としてメモリ消費が約 10 % 減少しました。 特に、それぞれのアクティブなレキシカル変数を記録するためのスコープスタックで 使われるメモリは半分になりました。 =head3 Memory allocation for pointer tables (ポインタテーブルのためのメモリ割り当て) =begin original Memory allocation for pointer tables has been changed. Previously C allocated memory from the same arena system as C bodies and Cs, with freed memory remaining bound to those arenas until interpreter exit. Now it allocates memory from arenas private to the specific pointer table, and that memory is returned to the system when C is called. Additionally, allocation and release are both less CPU intensive. =end original ポインタテーブルのためのメモリ割り当てが変更されました。 以前は C は C ボディおよび C と同じ領域から メモリを割り当て、解放されたメモリはインタプリタが終了するまでその領域に 残っていました。 今では特定のポインタテーブル専用の領域からメモリを割り当てられ、このメモリは C が呼び出されるとシステムに返されます。 さらに、割り当てと解放は両方とも CPU パワーを使わなくなります。 =head3 C =begin original The C macro now calls C. C is now a noop but should still be used to ensure past and future compatibility. =end original C マクロは C を呼び出すようになりました。 C は何もしなくなりましたが、過去と将来の互換性のために まだ残されています。 =head3 String comparison routines renamed (文字列比較ルーチンの名前が変わりました) =begin original The C functions have been renamed and are now called C, C, and C. The old names are still available as macros. =end original C 関数は名前が変わり、C, C, C と呼ばれます。 古い名前もまだマクロとして利用可能です。 =head3 C and C implementations merged (C と C の実装がマージされました) =begin original The opcode bodies for C and C and for C and C have been merged. The implementation functions Perl_do_chop() and Perl_do_chomp(), never part of the public API, have been merged and moved to a static function in F. This shrinks the Perl binary slightly, and should not affect any code outside the core (unless it is relying on the order of side-effects when C is passed a I of values). =end original C および C のオペコードボディと C および C の オペコードボディがマージされました。 実装関数である Perl_do_chop() と Perl_do_chomp() (公式 API ではありません) は マージされ、F の静的関数として移動しました。 これにより Perl バイナリが少し小さくなり、(C が I の値を 渡されたときの副作用の順序に依存していない限り) コアの外側のコードには 一切影響を与えないはずです。 =head1 Selected Bug Fixes (バグ修正の抜粋) =head2 I/O =over 4 =item * =begin original Perl no longer produces this warning: =end original Perl は以下のような警告は出さなくなりました: $ perl -we 'open(my $f, ">", \my $x); binmode($f, "scalar")' Use of uninitialized value in binmode at -e line 1. =item * =begin original Opening a glob reference via C<< open($fh, ">", \*glob) >> no longer causes the glob to be corrupted when the filehandle is printed to. This would cause Perl to crash whenever the glob's contents were accessed [perl #77492]. =end original C<< open($fh, ">", \*glob) >> 経由でグロブリファレンスを開いたとき、 ファイルハンドルに出力されたときにグロブが壊れなくなりました。 これはグロブの内容にアクセスされたときに Perl のクラッシュを 引き起こしていました [perl #77492]。 =item * =begin original PerlIO no longer crashes when called recursively, such as from a signal handler. Now it just leaks memory [perl #75556]. =end original PerlIO は、シグナルハンドラからのように、再帰的に呼び出されても もはやクラッシュしなくなりました。 今では単にメモリリークします [perl #75556]。 =item * =begin original Most I/O functions were not warning for unopened handles unless the "closed" and "unopened" warnings categories were both enabled. Now only C is necessary to trigger these warnings, as had always been the intention. =end original ほとんどの I/O 関数は、"closed" と "unopened" の両方の警告カテゴリが 有効になっていない限り、開いていないハンドルに対して警告を 出していませんでした。 今では(意図していた通り)これらの警告を 出すには C だけが必要です; =item * =begin original There have been several fixes to PerlIO layers: =end original PerlIO 層でいくつかの修正が行われました: =begin original When C pushes the C<:crlf> layer on top of the stack, it no longer enables crlf layers lower in the stack so as to avoid unexpected results [perl #38456]. =end original C が C<:crlf> 層をスタックの一番上にプッシュしたとき、 想定外の結果を引き起こさないように、スタックの下の方にある crlf 層を 有効にしなくなりました [perl #38456]。 =begin original Opening a file in C<:raw> mode now does what it advertises to do (first open the file, then C it), instead of simply leaving off the top layer [perl #80764]. =end original C<:raw> モードでファイルを開くと、単に最上位層を取り除くのではなく、 公表している通りの動作(まずファイルを開き、それから C を 実行する)を実行するようになりました [perl #80764]。 =begin original The three layers C<:pop>, C<:utf8>, and C<:bytes> didn't allow stacking when opening a file. For example this: =end original 三つの層 C<:pop>, C<:utf8>, C<:bytes> はファイルを開くときに スタックできませんでした。 例えばこれは: open(FH, ">:pop:perlio", "some.file") or die $!; =begin original would throw an "Invalid argument" error. This has been fixed in this release [perl #82484]. =end original "Invalid argument" エラーを投げていました。 これはこのリリースで修正されました [perl #82484]。 =back =head2 Regular Expression Bug Fixes (正規表現のバグ修正) =over =item * =begin original The regular expression engine no longer loops when matching C<"\N{LATIN SMALL LIGATURE FF}" =~ /f+/i> and similar expressions [perl #72998] (5.12.1). =end original 正規表現エンジンは C<"\N{LATIN SMALL LIGATURE FF}" =~ /f+/i> や 同様の式でもはやループしなくなりました [perl #72998] (5.12.1)。 =item * =begin original The trie runtime code should no longer allocate massive amounts of memory, fixing #74484. =end original trie 実行時コードはもはや大量のメモリを割り当てなくなりました; #74484 を修正しています。 =item * =begin original Syntax errors in C<< (?{...}) >> blocks no longer cause panic messages [perl #2353]. =end original C<< (?{...}) >> ブロック内の文法エラーでももはやパニックメッセージを 引き起こさなくなりました [perl #2353]。 =item * =begin original A pattern like C<(?:(o){2})?> no longer causes a "panic" error [perl #39233]. =end original C<(?:(o){2})?> のようなパターンはもはや "panic" エラーを 引き起こさなくなりました [perl #39233]。 =item * =begin original A fatal error in regular expressions containing C<(.*?)> when processing UTF-8 data has been fixed [perl #75680] (5.12.2). =end original UTF-8 データを処理するときの C<(.*?)> を含む正規表現での致命的エラーは 修正されました [perl #75680] (5.12.2)。 =item * =begin original An erroneous regular expression engine optimisation that caused regex verbs like C<*COMMIT> sometimes to be ignored has been removed. =end original 間違った正規表現エンジンの最適化によって C<*COMMIT> のような正規表現動詞が 時々無視されていた問題が修正されました。 =item * =begin original The regular expression bracketed character class C<[\8\9]> was effectively the same as C<[89\000]>, incorrectly matching a NULL character. It also gave incorrect warnings that the C<8> and C<9> were ignored. Now C<[\8\9]> is the same as C<[89]> and gives legitimate warnings that C<\8> and C<\9> are unrecognized escape sequences, passed-through. =end original 正規表現の大かっこで囲った文字クラス C<[\8\9]> は実際には C<[89\000]> と同様になっていて、間違って NULL 文字にマッチングしていました。 またこれは間違って C<8> と C<9> は無視されるという警告が出ていました。 今では C<[\8\9]> は C<[89]> と同じになり、C<\8> とC<\9> は 認識できないエスケープシーケンスなのでそのまま通すという正しい警告が出ます。 =item * =begin original A regular expression match in the right-hand side of a global substitution (C) that is in the same scope will no longer cause match variables to have the wrong values on subsequent iterations. This can happen when an array or hash subscript is interpolated in the right-hand side, as in C [perl #19078]. =end original 同じスコープにある全体置換 (C) の右側にある正規表現マッチングは、 もはや引き続く反復で間違った値を持つ変数にマッチングしなくなりました。 これは、C のように、配列やハッシュの添え字が 右側で展開されたときに起こります [perl #19078]。 =item * =begin original Several cases in which characters in the Latin-1 non-ASCII range (0x80 to 0xFF) used not to match themselves, or used to match both a character class and its complement, have been fixed. For instance, U+00E2 could match both C<\w> and C<\W> [perl #78464] [perl #18281] [perl #60156]. =end original Latin-1 の非 ASCII 範囲 (0x80 から 0xFF) の文字は場合によっては 自分自身とマッチングしなかったり、ある文字クラスとその逆クラスの 兵法にマッチングしていたりしていましたが、これは修正されました。 例えば、U+00E2 は C<\w> と C<\W> の両方にマッチングしていました [perl #78464] [perl #18281] [perl #60156]。 =item * =begin original Matching a Unicode character against an alternation containing characters that happened to match continuation bytes in the former's UTF8 representation (like C) would cause erroneous warnings [perl #70998]. =end original (C のように) 前の UTF8 表現の継続バイトとマッチングするような 文字を含む選択に対して Unicode 文字をマッチングすると、 間違った警告を引き起こしていました [perl #70998]。 =item * =begin original The trie optimisation was not taking empty groups into account, preventing "foo" from matching C [perl #78356]. =end original トライ木最適化は空グループを考慮に入れておらず、"foo" が C にマッチングするのを 妨げていました [perl #78356]。 =item * =begin original A pattern containing a C<+> inside a lookahead would sometimes cause an incorrect match failure in a global match (for example, C) [perl #68564]. =end original 前方参照内に C<+> を含むパターンは時々 (例えば C のような) グローバルマッチングで間違ってマッチングに失敗していました [perl #68564]。 =item * =begin original A regular expression optimisation would sometimes cause a match with a C<{n,m}> quantifier to fail when it should have matched [perl #79152]. =end original 正規表現最適化によって、C<{n,m}> 量指定子付きのマッチングで マッチングするべきところ、時々失敗していました [perl #79152]。 =item * =begin original Case-insensitive matching in regular expressions compiled under C now works much more sanely when the pattern or target string is internally encoded in UTF8. Previously, under these conditions the localeness was completely lost. Now, code points above 255 are treated as Unicode, but code points between 0 and 255 are treated using the current locale rules, regardless of whether the pattern or the string is encoded in UTF8. The few case-insensitive matches that cross the 255/256 boundary are not allowed. For example, 0xFF does not caselessly match the character at 0x178, LATIN CAPITAL LETTER Y WITH DIAERESIS, because 0xFF may not be LATIN SMALL LETTER Y in the current locale, and Perl has no way of knowing if that character even exists in the locale, much less what code point it is. =end original C の影響下でコンパイルされた大文字小文字を無視する 正規表現マッチングは、パターンやターゲット文字列が内部的に UTF8 で エンコーディングされているときに、はるかにまともに動作するようになりました。 以前は、このような条件ではロケール性は完全に失われていました。 今では、255 を超える符号位置は Unicode として扱われますが、0 から 255 までは パターンや文字列が UTF8 でエンコーディングされているかどうかにかかわらず 現在のロケールルールを使って扱われるようになりました。 255/256 の境界をまたぐような稀な大文字小文字を無視するマッチングは 認められません。 例えば、0xFF は 0x178 LATIN CAPITAL LETTER Y WITH DIAERESIS と 大文字小文字なしにマッチングします; 0xFF は現在のロケールでは LATIN SMALL LETTER Y に含まれず、Perl はロケール中にこの文字が 含まれているかや、ましてやどの符号位置かを知る方法がないからです。 =item * =begin original The C<(?|...)> regular expression construct no longer crashes if the final branch has more sets of capturing parentheses than any other branch. This was fixed in Perl 5.10.1 for the case of a single branch, but that fix did not take multiple branches into account [perl #84746]. =end original The C<(?|...)> 正規表現構造は、最後の枝がその他の枝よりも多い捕捉かっこの 集合を持つ場合にクラッシュしていました。 これは単一の枝の場合は Perl 5.10.1 で修正されましたが、 これは複数の枝を考慮に入れていませんでした [perl #84746]。 =item * =begin original A bug has been fixed in the implementation of C<{...}> quantifiers in regular expressions that prevented the code block in C from seeing the C<$2> sometimes [perl #84294]. =end original 正規表現での C<{...}> 量指定子の実装により、 C というコードブロックで時々 C<$2> が 見えなくなるというバグが修正されました [perl #84294]。 =back =head2 Syntax/Parsing Bugs (文法/パースバグ) =over =item * =begin original C no longer crashes, but produces a syntax error [perl #74114] (5.12.1). =end original C はもはやクラッシュせず、文法エラーを出します [perl #74114] (5.12.1)。 =item * =begin original A label right before a string eval (C) no longer causes the label to be associated also with the first statement inside the eval [perl #74290] (5.12.1). =end original 文字列 eval (C) の直前のラベルは、もはや eval 内の 最初の文と結びつけられなくなりました [perl #74290] (5.12.1)。 =item * =begin original The C form of C no longer tries to turn on features or pragmata (like L) [perl #70075] (5.12.2). =end original C 形式の C はもはや機能や (L のような) プラグマを 有効にしようとしなくなりました [perl #70075] (5.12.2)。 =item * =begin original C now behaves as documented, rather than behaving identically to C. Previously, C in a C block was erroneously executing the C and C behaviour, which only C was documented to provide [perl #69050]. =end original C は C と同様に振る舞うのではなく、 文書化されている通りに振る舞うようになりました。 以前は、C ブロック内の C は間違って C と C の振る舞いを実行していました; C だけが文書化されていました [perl #69050]。 =item * =begin original A regression introduced in Perl 5.12.0, making C<< my $x = 3; $x = length(undef) >> result in C<$x> set to C<3> has been fixed. C<$x> will now be C [perl #85508] (5.12.2). =end original Perl 5.12.0 で導入された退行により、C<< my $x = 3; $x = length(undef) >> で C<$x> が C<3> に設定されていました。 C<$x> は C になります [perl #85508] (5.12.2)。 =item * =begin original When strict "refs" mode is off, C<%{...}> in rvalue context returns C if its argument is undefined. An optimisation introduced in Perl 5.12.0 to make C faster when used as a boolean did not take this into account, causing C (and C when C<$foo> is undefined) to be an error, which it should be so in strict mode only [perl #81750]. =end original strict "refs" モードがオフのとき、右辺値コンテキストでの C<%{...}> は 引数が未定義のときには C を返します。 Perl 5.12.0 で導入された、C が真偽値として使われるときに 高速化する最適化はこれを考慮に入れておらず、 C (および C<$foo> が未定義のときのand C) は、 strict モードが有効のときにだけエラーになるべきですが、そうでないときも エラーになっていました [perl #81750]。 =item * =begin original Constant-folding used to cause =end original 定数の畳み込みは、以下のもの $text =~ ( 1 ? /phoo/ : /bear/) =begin original to turn into =end original から以下への変換 $text =~ /phoo/ =begin original at compile time. Now it correctly matches against C<$_> [perl #20444]. =end original をコンパイル時に行っていました。 これは C<$_> に対して正しくマッチングするようになりました [perl #20444]。 =item * =begin original Parsing Perl code (either with string C or by loading modules) from within a C block no longer causes the interpreter to crash [perl #70614]. =end original C ブロック内からの (文字列 C かモジュール読み込みによる) Perl コードのパースは、もはやインタプリタをクラッシュさせなくなりました [perl #70614]。 =item * =begin original String Cs no longer fail after 2 billion scopes have been compiled [perl #83364]. =end original 20 億のスコープをコンパイルした後でももはや文字列 C に 失敗しなくなりました [perl #83364]。 =item * =begin original The parser no longer hangs when encountering certain Unicode characters, such as U+387 [perl #74022]. =end original U+387 のような、ある種の Unicode 文字に遭遇してもパーサはもはや ハングアップしなくなりました [perl #74022]。 =item * =begin original Defining a constant with the same name as one of Perl's special blocks (like C) stopped working in 5.12.0, but has now been fixed [perl #78634]. =end original (C のような) Perl の特殊ブロックと同じ名前の定数の定義は 5.12.0 から動作しなくなっていました。 これは修正されました [perl #78634]。 =item * =begin original A reference to a literal value used as a hash key (C<$hash{\"foo"}>) used to be stringified, even if the hash was tied [perl #79178]. =end original ハッシュキーとして使われるリテラル値へのリファレンス (C<$hash{\"foo"}>) は、 ハッシュが tie されていても文字列化されていました [perl #79178]。 =item * =begin original A closure containing an C statement followed by a constant or variable is no longer treated as a constant [perl #63540]. =end original A closure containing an C 文に引き続いて定数や変数があるクロージャはもはや定数として 扱われなくなりました [perl #63540]。 =item * =begin original C can now be used with attributes. It used to mean the same thing as C if any attributes were present [perl #68658]. =end original C は属性とともに使えるようになりました。 属性があっても、C と同じ意味になっていました [perl #68658]。 =item * =begin original Expressions like C<< @$a > 3 >> no longer cause C<$a> to be mentioned in the "Use of uninitialized value in numeric gt" warning when C<$a> is undefined (since it is not part of the C<< > >> expression, but the operand of the C<@>) [perl #72090]. =end original C<< @$a > 3 >> のような式は、(C<< > >> 式の一部ではなく、C<@> の オペランドなので) C<$a> が未定義のときにもはや "Use of uninitialized value in numeric gt" 警告を出さなくなりました [perl #72090]。 =item * =begin original Accessing an element of a package array with a hard-coded number (as opposed to an arbitrary expression) would crash if the array did not exist. Usually the array would be autovivified during compilation, but typeglob manipulation could remove it, as in these two cases which used to crash: =end original (任意の式でなく) ハードコードされた数値でパッケージ配列の要素に アクセスすると、その要素がないときにクラッシュしていました。 普通は配列はコンパイル中に自動有効化されますが、型グロブの操作は これを取り除き、以下の二つのケースでクラッシュしていました: *d = *a; print $d[0]; undef *d; print $d[0]; =item * =begin original The B<-C> command-line option, when used on the shebang line, can now be followed by other options [perl #72434]. =end original B<-C> コマンドラインオプションはシェバン行で使われたときに、他のオプションの 後で使えるようになりました [perl #72434]。 =item * =begin original The C module was returning Cs instead of Cs for C [perl #80622]. This was due to a bug in the Perl core, not in C itself. =end original The C モジュールは C に対して C ではなく C を返していました [perl #80622]。 これは C 自身ではなく Perl コアのバグによるものでした。 =back =head2 Stashes, Globs and Method Lookup (スタッシュ、グロブ、メソッド検索) =begin original Perl 5.10.0 introduced a new internal mechanism for caching MROs (method resolution orders, or lists of parent classes; aka "isa" caches) to make method lookup faster (so C<@ISA> arrays would not have to be searched repeatedly). Unfortunately, this brought with it quite a few bugs. Almost all of these have been fixed now, along with a few MRO-related bugs that existed before 5.10.0: =end original Perl 5.10.0 では、メソッド検索をより速くするために MRO キャッシュする (メソッド解決順序、つまり親クラスのリスト; またの名を "isa" キャッシュ) ための新しい内部機構が導入されました (これにより C<@ISA> が繰り返し検索する 必要がなくなりました)。 残念ながら、これにはいくつかバグがありました。 そのほとんどは、5.10.0 以前からあった MRO 関係のバグと共に、 今では修正されました: =over =item * =begin original The following used to have erratic effects on method resolution, because the "isa" caches were not reset or otherwise ended up listing the wrong classes. These have been fixed. =end original 以下のようなことをするとメソッド解決に間違った影響を与えていました; なぜなら "isa" キャッシュがリセットされなかったり、最終的に 間違ったクラスの一覧となったりしていたからです。 これらは修正されました。 =over =item Aliasing packages by assigning to globs [perl #77358] (グロブに代入することでパッケージに別名をつける [perl #77358]) =item Deleting packages by deleting their containing stash elements (含まれているスタッシュ要素を削除することでパッケージを削除する) =item Undefining the glob containing a package (C) (パッケージを含むグロブを未定義化する (C)) =item Undefining an ISA glob (C) (ISA グロブを未定義化する (C)) =item Deleting an ISA stash element (C) (ISA スタッシュ要素を削除する (C)) =item Sharing @ISA arrays between classes (via C<*Foo::ISA = \@Bar::ISA> or C<*Foo::ISA = *Bar::ISA>) [perl #77238] =back =begin original C would even stop a new C<@Foo::ISA> array from updating caches. =end original C は新しい C<@Foo::ISA> の配列がキャッシュを 更新しないようになりました。 =item * =begin original Typeglob assignments would crash if the glob's stash no longer existed, so long as the glob assigned to were named C or the glob on either side of the assignment contained a subroutine. =end original 型グロブの代入は、グロブのスタッシュがもはや存在しないときに 代入されたグロブが C という名前か、代入のどちらかの側にサブルーチンが 含まれているとクラッシュしていました。 =item * =begin original C, which is accessible to Perl via C is now updated properly when packages are deleted or removed from the C<@ISA> of other classes. This allows many packages to be created and deleted without causing a memory leak [perl #75176]. =end original C 経由で Perl にアクセスできる C は、 パッケージが削除されたり、他のクラスの C<@ISA> からパッケージが 取り除かれたとき、適切に更新されるようになりました。 これにより多くのパッケージがメモリリークなしに作成および 削除できるようになります [perl #75176]。 =back =begin original In addition, various other bugs related to typeglobs and stashes have been fixed: =end original さらに、型グロブとスタッシュに関する様々なその他のバグが修正されました: =over =item * =begin original Some work has been done on the internal pointers that link between symbol tables (stashes), typeglobs, and subroutines. This has the effect that various edge cases related to deleting stashes or stash entries (for example, <%FOO:: = ()>), and complex typeglob or code-reference aliasing, will no longer crash the interpreter. =end original シンボルテーブル(スタッシュ)、型グロブ、サブルーチンの間のリンクとなる 内部ポインタに対していくつかの作業が行われました。 この降下により、スタッシュやスタッシュのエントリの削除 (例えば <%FOO:: = ()>)や、複雑な型グロブとコードリファレンスの別名によって もはやインタプリタをクラッシュさせなくなりました。 =item * =begin original Assigning a reference to a glob copy now assigns to a glob slot instead of overwriting the glob with a scalar [perl #1804] [perl #77508]. =end original グロブのコピーへのリファレンスの代入は、スカラのグロブを 上書きするのではなく、グロブスロットへの代入になりました [perl #1804] [perl #77508]。 =item * =begin original A bug when replacing the glob of a loop variable within the loop has been fixed [perl #21469]. This means the following code will no longer crash: =end original ループ中のループ変数のグロブを置き換えるときのバグが修正されました [perl #21469]。 これにより、以下のようなコードでもはやクラッシュしなくなりました: for $x (...) { *x = *y; } =item * =begin original Assigning a glob to a PVLV used to convert it to a plain string. Now it works correctly, and a PVLV can hold a glob. This would happen when a nonexistent hash or array element was passed to a subroutine: =end original グロブから PVLV への代入は、普通の文字列へ変換されていました。 今ではこれは正しく動作し、PVLV はグロブを保持できるようになりました。 これは存在しないハッシュや配列の要素がサブルーチンに渡された時に 起きていました: sub { $_[0] = *foo }->($hash{key}); # $_[0] would have been the string "*main::foo" =begin original It also happened when a glob was assigned to, or returned from, an element of a tied array or hash [perl #36051]. =end original また、グロブがtie された配列やハッシュに代入したりそこから返されたり したときにも起きていました [perl #36051]。 =item * =begin original When trying to report C, crashes could occur if the glob holding the global variable in question had been detached from its original stash by, for example, C. This has been fixed by disabling the reporting of variable names in those cases. =end original C を報告しようとするとき、 例えば C のように、問題になっているグローバル変数を 保持しているグロブが元のスタッシュから分離されたときに クラッシュすることがありました。 これは、このような場合には変数名を報告しないようにすることで 修正されました。 =item * =begin original During the restoration of a localised typeglob on scope exit, any destructors called as a result would be able to see the typeglob in an inconsistent state, containing freed entries, which could result in a crash. This would affect code like this: =end original スコープ終了によってローカル化された型グロブが復元している間に、 結果として呼び出されるデストラクタが、解放されているエントリを含む 一貫性のない状態の型グロブを参照することができ、結果として クラッシュすることがありました。 これは以下のようなコードに影響していました: local *@; eval { die bless [] }; # puts an object in $@ sub DESTROY { local $@; # boom } =begin original Now the glob entries are cleared before any destructors are called. This also means that destructors can vivify entries in the glob. So Perl tries again and, if the entries are re-created too many times, dies with a "panic: gp_free ..." error message. =end original グロブのエントリは、デストラクタが呼び出される前に クリアされるようになりました。 これはまた、デストラクタがグロブのエントリを有効化できることを意味します。 それで Perl は再挑戦し、もしエントリが何度も再作成されると "panic: gp_free ..." エラーメッセージを出して die します。 =item * =begin original If a typeglob is freed while a subroutine attached to it is still referenced elsewhere, the subroutine is renamed to C<__ANON__> in the same package, unless the package has been undefined, in which case the C<__ANON__> package is used. This could cause packages to be sometimes autovivified, such as if the package had been deleted. Now this no longer occurs. The C<__ANON__> package is also now used when the original package is no longer attached to the symbol table. This avoids memory leaks in some cases [perl #87664]. =end original 型グロブが解放されたときに、それに付加されているサブルーチンがまだ 他の場所から参照されていると、サブルーチンは同じパッケージで C<__ANON__> という名前に代わります(パッケージ名が未定義の場合は C<__ANON__> パッケージが使われます)。 これにより、例えばパッケージが削除されたときなどに、パッケージが 自動有効化されていました。 これはもはや起きなくなりました。 C<__ANON__> パッケージはまた、元のパッケージがもはやシンボルテーブルに 付加されていないときにも使われるようになりました。 これによりいくつかの場合でのメモリリークを防ぎます [perl #87664]。 =item * =begin original Subroutines and package variables inside a package whose name ends with C<::> can now be accessed with a fully qualified name. =end original 名前が C<::> で終わるようなパッケージ内の、サブルーチンやパッケージ変数は 完全修飾名でアクセスできるようになりました。 =back =head2 Unicode =over =item * =begin original What has become known as "the Unicode Bug" is almost completely resolved in this release. Under C (which is automatically selected by C and above), the internal storage format of a string no longer affects the external semantics. [perl #58182]. =end original "the Unicode Bug" として知られるようになったものはほとんど完全に このリリースで解決しています。 C (これは C 以降では自動的に 選択されます) の基では、文字列の内部ストレージ表現はもはや外部の 意味論に影響を受けません [perl #58182]。 =begin original There are two known exceptions: =end original 二つの知られている例外があります: =over =item 1 =begin original The now-deprecated, user-defined case-changing functions require utf8-encoded strings to operate. The CPAN module L has been written to replace this feature without its drawbacks, and the feature is scheduled to be removed in 5.16. =end original 今では非推奨となった、ユーザー定義の大文字小文字変換関数は、操作するのに utf8-エンコードされた文字列を要求します。 CPAN モジュール L が欠点なしにこの機能を置き換えるために 作成され、この機能は 5.16 で削除することが計画されています。 =item 2 =begin original quotemeta() (and its in-line equivalent C<\Q>) can also give different results depending on whether a string is encoded in UTF-8. See L. =end original quotemeta() (およびインラインで等価な C<\Q>) も、文字列が UTF-8 で エンコーディングされているかどうかに依存して異なる結果を返します。 L を参照してください。 =back =item * =begin original Handling of Unicode non-character code points has changed. Previously they were mostly considered illegal, except that in some place only one of the 66 of them was known. The Unicode Standard considers them all legal, but forbids their "open interchange". This is part of the change to allow internal use of any code point (see L). Together, these changes resolve [perl #38722], [perl #51918], [perl #51936], and [perl #63446]. =end original Unicode 非文字符号位置の扱いが変更されました。 以前は、これらの 66 のうちの一つが一部の場所で知られていることを除けば、 これらはほとんど不正であると考えられていました。 Unicode 標準はこれら全ては有効であるけれども、"open interchange" を 妨げるものであると考えられています。 これは、どのような符号位置でも内部利用できるようにする変更の一部です (L を参照してください)。 同時に、これらの変更は [perl #38722], [perl #51918], [perl #51936], [perl #63446] を解決します。 =item * =begin original Case-insensitive C<"/i"> regular expression matching of Unicode characters that match multiple characters now works much more as intended. For example =end original 複数の文字にマッチングする Unicode 文字への大文字小文字を無視する C<"/i"> 正規表現は意図通り以上に動作するようになりました。 例えば "\N{LATIN SMALL LIGATURE FFI}" =~ /ffi/ui =begin original and =end original および "ffi" =~ /\N{LATIN SMALL LIGATURE FFI}/ui =begin original are both true. Previously, there were many bugs with this feature. What hasn't been fixed are the places where the pattern contains the multiple characters, but the characters are split up by other things, such as in =end original は両方とも真です。 以前は、この機能には多くのバグがありました。 まだ修正されていないものは、パターンに複数の文字が含まれている場所で あるけれども、その文字は以下のように、他のことによって分割されている 場合です "\N{LATIN SMALL LIGATURE FFI}" =~ /(f)(f)i/ui =begin original or =end original または "\N{LATIN SMALL LIGATURE FFI}" =~ /ffi*/ui =begin original or =end original または "\N{LATIN SMALL LIGATURE FFI}" =~ /[a-f][f-m][g-z]/ui =begin original None of these match. =end original これらのいずれもマッチングしません。 =begin original Also, this matching doesn't fully conform to the current Unicode Standard, which asks that the matching be made upon the NFD (Normalization Form Decomposed) of the text. However, as of this writing (April 2010), the Unicode Standard is currently in flux about what they will recommend doing with regard in such scenarios. It may be that they will throw out the whole concept of multi-character matches. [perl #71736]. =end original また、このマッチングはテキストの NFD (Normalization Form Decomposed) の マッチングによるという現在のUnicode 標準を完全には満たしていません。 しかし、これを書いている時点(2010 年 4 月)では、Unicode 標準は このような状況で推奨される動作について今のところ不安定です。 複数文字マッチングという概念全体を放り出すことになるかも知れません [perl #71736]。 =item * =begin original Naming a deprecated character in C<\N{I}> no longer leaks memory. =end original 非推奨の文字への C<\N{I}> での命名でもはや メモリリークしなくなりました。 =item * =begin original We fixed a bug that could cause C<\N{I}> constructs followed by a single C<"."> to be parsed incorrectly [perl #74978] (5.12.1). =end original C<\N{I}> 構造に引き続いて単一の C<"."> がある場合に間違って パースされることによるバグを修正しました [perl #74978] (5.12.1)。 =item * =begin original C now correctly handles characters above C<"\x{7fffffff}"> [perl #73246]. =end original C は C<"\x{7fffffff}"> 以上の文字を正しく扱えるようになりました [perl #73246]。 =item * =begin original Passing to C an offset beyond the end of the string when the string is encoded internally in UTF8 no longer causes panics [perl #75898]. =end original 文字列が内部的に UTF8 でエンコーディングされているときに C に文字列の末尾を超えたオフセットを渡してももはや panic を 引き起こさなくなりました [perl #75898]。 =item * =begin original warn() and die() now respect utf8-encoded scalars [perl #45549]. =end original warn() と die() は utf8-エンコードされたスカラを 認識するようになりました [perl #45549]。 =item * =begin original Sometimes the UTF8 length cache would not be reset on a value returned by substr, causing C to give wrong answers. With C<${^UTF8CACHE}> set to -1, it would also produce a "panic" error message [perl #77692]. =end original 時々 UTF8 の length キャッシュが substr の返り値によってリセットされず、 そのために C が間違った答えを 返していました。 C<${^UTF8CACHE}> に -1 をセットしていると、"panic" エラーメッセージも 引き起こしていました [perl #77692]。 =back =head2 Ties, Overloading and Other Magic (tie、オーバーロードおよびその他のマジック) =over =item * =begin original Overloading now works properly in conjunction with tied variables. What formerly happened was that most ops checked their arguments for overloading I checking for magic, so for example an overloaded object returned by a tied array access would usually be treated as not overloaded [RT #57012]. =end original オーバーロードは tie された変数と組み合わされたも正しく 動作するようになりました。 以前起きていたのは、ほとんどの op は引数のオーバーロードのチェックを マジックのチェックの I<前に> 行っていたので、例えば tie された 配列アクセスによって返されたオーバーロードされたオブジェクトは 普通はオーバーロードされていないものとして扱われていました [RT #57012]。 =item * =begin original Various instances of magic (like tie methods) being called on tied variables too many or too few times have been fixed: =end original tie された変数に対して、(tie メソッドのような) さまざまな種類のマジックを 呼び出す回数が多すぎたり少なすぎたりする問題が修正されました: =over =item * =begin original C<< $tied->() >> did not always call FETCH [perl #8438]. =end original C<< $tied->() >> はいつも呼び出されませんでした FETCH [perl #8438]。 =item * =begin original Filetest operators and C and C were calling FETCH too many times. =end original ファイルテスト演算子と C と C は FETCH を呼び出す回数が 多すぎました。 =item * =begin original The C<=> operator used to ignore magic on its right-hand side if the scalar happened to hold a typeglob (if a typeglob was the last thing returned from or assigned to a tied scalar) [perl #77498]. =end original C<=> 演算子は、もしスカラがたまたま型グロブを保持していた場合 (もし型グロブが tie スカラから返されたり代入されたりした最後のものだった 場合)、右側のマジックを無視していました [perl #77498]。 =item * =begin original Dereference operators used to ignore magic if the argument was a reference already (such as from a previous FETCH) [perl #72144]. =end original デリファレンス演算子は、もし引数が (以前の FETCH からのように) すでにリファレンスで合った場合にマジックを無視していました [perl #72144]。 =item * =begin original C now calls set-magic (so changes made by C are respected by method calls) [perl #78400]. =end original C は set-magic を呼び出すようになりました (それで C はメソッド呼び出しに尊重されるように変更されました) [perl #78400]。 =item * =begin original In-memory files created by C<< open($fh, ">", \$buffer) >> were not calling FETCH/STORE at all [perl #43789] (5.12.2). =end original C<< open($fh, ">", \$buffer) >> によって作成されたインメモリファイルは FETCH/STORE を全く呼び出していませんでした [perl #43789] (5.12.2)。 =item * =begin original utf8::is_utf8() now respects get-magic (like C<$1>) (5.12.1). =end original utf8::is_utf8() は (C<$1> と同様) get-magic を尊重します (5.12.1)。 =back =item * =begin original Non-commutative binary operators used to swap their operands if the same tied scalar was used for both operands and returned a different value for each FETCH. For instance, if C<$t> returned 2 the first time and 3 the second, then C<$t/$t> would evaluate to 1.5. This has been fixed [perl #87708]. =end original 交換可能でない 2 項演算子は、もし同じ tie されたスカラが両方の オペランドに使われていて、それぞれの FETCH で異なった値が返されると、 オペランドを交換していました。 例えば、もし C<$t> が 1 回目は 2 を返し、2 回目に 3 を返していた場合、 C<$t/$t> は 1.5 と評価していました。 これは修正されました [perl #87708]。 =item * =begin original String C now detects taintedness of overloaded or tied arguments [perl #75716]. =end original 文字列の C は、オーバーロードされたり tie された引数の汚染を 検出するようになりました [perl #75716]。 =item * =begin original String C and regular expression matches against objects with string overloading no longer cause memory corruption or crashes [perl #77084]. =end original 文字列の C と文字列をオーバーロードしているオブジェクトに対して マッチングしている正規表現は、もはやメモリ破壊やクラッシュを引き起こさなく なりました [perl #77084]。 =item * =begin original L now honors C<< <> >> overloading on tied arguments. =end original L は C<< <> >> のオーバーロードや tie された引数に対応しました。 =item * =begin original C<< >> always respects overloading now if the expression is overloaded. =end original C<< >> は、式がオーバーロードされている場合は常にオーバーロードを 尊重するようになりました。 =begin original Because "S<< <> as >> glob" was parsed differently from "S<< <> as >> filehandle" from 5.6 onwards, something like C<< <$foo[0]> >> did not handle overloading, even if C<$foo[0]> was an overloaded object. This was contrary to the documentation for L, and meant that C<< <> >> could not be used as a general overloaded iterator operator. =end original "S<< <> as >> glob" は 5.6 以降 "S<< <> as >> filehandle" とは 異なったパースが行われるので、C<< <$foo[0]> >> のようなものは、 たとえ C<$foo[0]> がオーバーロードされたオブジェクトでも、 オーバーロードを扱えませんでした。 これは L の文書に反しており、C<< <> >> は一般的な オーバーロードされた反復子演算子として使えないことを意味していました。 =item * =begin original The fallback behaviour of overloading on binary operators was asymmetric [perl #71286]. =end original 2 項演算子でのオーバーロードのフォールバックの振る舞いは非対称でした [perl #71286]。 =item * =begin original Magic applied to variables in the main package no longer affects other packages. See L above [perl #76138]. =end original main パッケージの変数に適用されるマジックはもはや他のパッケージに 影響を与えなくなりました。 上述の L を 参照してください [perl #76138]。 =item * =begin original Sometimes magic (ties, taintedness, etc.) attached to variables could cause an object to last longer than it should, or cause a crash if a tied variable were freed from within a tie method. These have been fixed [perl #81230]. =end original 時々、変数に付いているマジック (tie や汚染など) によって、 本来あるべきよりも長い間オブジェクトを存続させたり、tie 変数が tie メソッド内で解放された時にクラッシュを引き起こしたりしていました。 これらは修正されました [perl #81230]。 =item * =begin original DESTROY methods of objects implementing ties are no longer able to crash by accessing the tied variable through a weak reference [perl #86328]. =end original tie を実装しているオブジェクトの DESTROY メソッドは、tie された変数に 弱い参照によってアクセスされてももはやクラッシュしなくなりました [perl #86328]。 =item * =begin original Fixed a regression of kill() when a match variable is used for the process ID to kill [perl #75812]. =end original マッチングした変数が kill するプロセス ID に使われたときの kill() の 退行が修正されました [perl #75812]。 =item * =begin original C<$AUTOLOAD> used to remain tainted forever if it ever became tainted. Now it is correctly untainted if an autoloaded method is called and the method name was not tainted. =end original C<$AUTOLOAD> は、一度汚染されると、永遠に汚染されたままになっていました。 オーバーロードされたメソッドが呼び出され、そのメソッド名が汚染されていない 場合は、正しく汚染が除去されるようになりました。 =item * =begin original C now dies when passed a tainted scalar for the format. It did already die for arbitrary expressions, but not for simple scalars [perl #82250]. =end original C は、フォーマットとして汚染されたスカラが渡されると die するように なりました。 すでに任意の式では die していましたが、単純なスカラでは die して いませんでした [perl #82250]。 =item * =begin original C, C, C, and C no longer return untainted strings when the argument is tainted. This has been broken since perl 5.8.9 [perl #87336]. =end original C, C, C, C は、引数が汚染されているときに もはや汚染されていない文字列を返さなくなりました。 これは perl 5.8.9 から壊れていました [perl #87336]。 =back =head2 The Debugger (デバッガ) =over =item * =begin original The Perl debugger now also works in taint mode [perl #76872]. =end original Perl デバッガは汚染モードでも動作するようになりました [perl #76872]。 =item * =begin original Subroutine redefinition works once more in the debugger [perl #48332]. =end original サブルーチンの再定義は再びデバッガで動作するようになりました [perl #48332]。 =item * =begin original When B<-d> is used on the shebang (C<#!>) line, the debugger now has access to the lines of the main program. In the past, this sometimes worked and sometimes did not, depending on the order in which things happened to be arranged in memory [perl #71806]. =end original シェバン(C<#!>) 行で B<-d> が使われたとき、デバッガはメインプログラムの 行にアクセスするようになりました。 以前は、これはメモリ配置の順番に依存して、動作したり動作しなかったり していました [perl #71806]。 =item * =begin original A possible memory leak when using L to set C<@DB::args> has been fixed (5.12.2). =end original C<@DB::args> を設定するのに L を 使ったときのメモリリークの可能性が修正されました (5.12.2)。 =item * =begin original Perl no longer stomps on C<$DB::single>, C<$DB::trace>, and C<$DB::signal> if these variables already have values when C<$^P> is assigned to [perl #72422]. =end original C<$^P> が代入されたとき、すでに C<$DB::single>, C<$DB::trace>, C<$DB::signal> に値が入っている時には、値を変更しなくなりました [perl #72422]。 =item * =begin original C<#line> directives in string evals were not properly updating the arrays of lines of code (C<< @{"_< ..."} >>) that the debugger (or any debugging or profiling module) uses. In threaded builds, they were not being updated at all. In non-threaded builds, the line number was ignored, so any change to the existing line number would cause the lines to be misnumbered [perl #79442]. =end original 文字列 eval 中の C<#line> 指示子は、デバッガ(あるいはデバッグや プロファイリング用のモジュール)が使っているコードの行の配列 (C<< @{"_< ..."} >>) を正しく更新しsていませんでした。 スレッドビルドでは、これらは全く更新されていませんでした。 非スレッドビルドでは、行番号が無視されていたので、すでに存在している 行番号の変更では行番号の間違いを引き起こしていました [perl #79442]。 =back =head2 Threads (スレッド) =over =item * =begin original Perl no longer accidentally clones lexicals in scope within active stack frames in the parent when creating a child thread [perl #73086]. =end original 子スレッドを作るときに、親のアクティブなスタックフレーム内のスコープ内の レキシカルを間違ってクローン化しなくなりました [perl #73086]。 =item * =begin original Several memory leaks in cloning and freeing threaded Perl interpreters have been fixed [perl #77352]. =end original スレッド化 Perl インタプリタのクローン化と解放でのいくつかの メモリリークが修正されました [perl #77352]。 =item * =begin original Creating a new thread when directory handles were open used to cause a crash, because the handles were not cloned, but simply passed to the new thread, resulting in a double free. =end original ディレクトリハンドルが開いているときに新しいスレッドを作成すると、 ハンドルはクローン化されずに単に新しいスレッドに渡されていたために、 二重解放が起こってクラッシュしていました。 =begin original Now directory handles are cloned properly on Windows and on systems that have a C function. On other systems, new threads simply do not inherit directory handles from their parent threads [perl #75154]. =end original Windows や C 関数があるシステムではディレクトリハンドルは 正しくクローン化されるようになりました。 その他のシステムでは、新しいスレッドは単にディレクトリハンドルを 親スレッドから継承しなくなりました [perl #75154]。 =item * =begin original The typeglob C<*,>, which holds the scalar variable C<$,> (output field separator), had the wrong reference count in child threads. =end original The typeglob C<*,>, which holds the scalar variable スカラ変数 C<$,> (出力フィールドセパレータ) を保持している型グロブ C<*,> は子スレッドで間違った参照カウントを持っていました。 =item * =begin original [perl #78494] When pipes are shared between threads, the C function (and any implicit close, such as on thread exit) no longer blocks. =end original [perl #78494] スレッド間でパイプが共有されたとき、C 関数 (およびスレッド終了時のような暗黙のクローズ) はブロックしなくなりました。 =item * =begin original Perl now does a timely cleanup of SVs that are cloned into a new thread but then discovered to be orphaned (that is, their owners are I cloned). This eliminates several "scalars leaked" warnings when joining threads. =end original Perl は、SV が新しいスレッドにクローン化されたけれども親がいなくなっている (つまり、この所有者はクローン化 I<されなかった>) ことを発見した場合、 定期的に SV を掃除します。 これは、スレッドを結合したときのいくつかの "scalars leaked" 警告を 除去します。 =back =head2 Scoping and Subroutines (スコープとサブルーチン) =over =item * =begin original Lvalue subroutines are again able to return copy-on-write scalars. This had been broken since version 5.10.0 [perl #75656] (5.12.3). =end original 左辺値サブルーチンは再びコピーオンライトスカラを返せるようになりました。 これはバージョン 5.10.0 で壊れていました [perl #75656] (5.12.3)。 =item * =begin original C no longer causes C to return the wrong file name for the scope that called C and other scopes higher up that had the same file name [perl #68712]. =end original C は、呼び出された C のスコープと、より高いその他の スコープで同じファイル名があるときに、もはや C が間違った ファイル名を返さなくなりました [perl #68712]。 =item * =begin original C with a C<($$)>-prototyped comparison routine used to cause the value of C<@_> to leak out of the sort. Taking a reference to C<@_> within the sorting routine could cause a crash [perl #72334]. =end original C<($$)> プロトタイプを持つ比較ルーチンを使う C は、 C<@_> の値をソート処理外に漏らしていました。 ソートルーチン内で C<@_> のリファレンスを取ると、クラッシュを 引き起こしていました [perl #72334]。 =item * =begin original Match variables (like C<$1>) no longer persist between calls to a sort subroutine [perl #76026]. =end original (C<$1> のような) マッチング変数はソートサブルーチンの呼び出しの間で もはや持続しなくなりました [perl #76026]。 =item * =begin original Iterating with C over an array returned by an lvalue sub now works [perl #23790]. =end original 左辺値サブルーチンから返された配列に対する C による 反復が動作するようになりました [perl #23790]。 =item * =begin original C<$@> is now localised during calls to C to prevent action at a distance [perl #78844]. =end original C<$@> は、離れたところでの行動を防ぐために、C の呼び出しの間は ローカル化されるようになりました [perl #78844]。 =item * =begin original Calling a closure prototype (what is passed to an attribute handler for a closure) now results in a "Closure prototype called" error message instead of a crash [perl #68560]. =end original クロージャプロトタイプ(クロージャのために属性ハンドラに渡されるもの) を 呼び出すと、クラッシュせずに "Closure prototype called" エラーメッセージが 出力されるようになりました [perl #68560]。 =item * =begin original Mentioning a read-only lexical variable from the enclosing scope in a string C no longer causes the variable to become writable [perl #19135]. =end original 文字列 C 内のスコープから読み込み専用レキシカル変数に触れると、 変数が書き込み可能になっていました [perl #19135]。 =back =head2 Signals (シグナル) =over =item * =begin original Within signal handlers, C<$!> is now implicitly localized. =end original シグナルハンドル内では、C<$!> は暗黙にローカル化されるようになりました。 =item * =begin original CHLD signals are no longer unblocked after a signal handler is called if they were blocked before by C [perl #82040]. =end original CHLD シグナルは、先に C によってブロックされていた 場合、シグナルハンドラの後でもはやブロック解除されなくなりました [perl #82040]。 =item * =begin original A signal handler called within a signal handler could cause leaks or double-frees. Now fixed [perl #76248]. =end original シグナルハンドラ内でシグナルハンドルが呼び出されると、リークや二重解放を 引き起こしていました。 これは修正されました [perl #76248]。 =back =head2 Miscellaneous Memory Leaks (さまざまなメモリリーク) =over =item * =begin original Several memory leaks when loading XS modules were fixed (5.12.2). =end original XS モジュールを読み込むときのいくつかのメモリリークが修正されました (5.12.2)。 =item * =begin original L, L, L, and L could, when used in combination with lvalues, result in leaking the scalar value they operate on, and cause its destruction to happen too late. This has now been fixed. =end original L, L, L, L は、左辺値と組み合わせて 使われたとき、操作したスカラ値をメモリリークし、デストラクタの実行が 遅すぎることになっていました。 これは修正されました。 =item * =begin original The postincrement and postdecrement operators, C<++> and C<-->, used to cause leaks when used on references. This has now been fixed. =end original ポストインクリメント演算子とポストデクリメント演算子(C<++> と C<-->) は リファレンスに使われるとメモリリークを起こしていました。 これは修正されました。 =item * =begin original Nested C and C blocks no longer leak memory when processing large lists [perl #48004]. =end original ネストした C と C のブロックは、大きなリストを処理しても もはやメモリリークしなくなりました [perl #48004]。 =item * =begin original C> and C> no longer leak memory [perl #78436] [perl #69050]. =end original C> と C> はもはやメモリリークしなくなりました [perl #78436] [perl #69050]。 =item * =begin original C<.=> followed by C<< <> >> or C would leak memory if C<$/> contained characters beyond the octet range and the scalar assigned to happened to be encoded as UTF8 internally [perl #72246]. =end original C<.=> に引き続いて C<< <> >> や C があると、 C<$/> に 8 進数の範囲を超えた文字が含まれていて、代入するスカラが 内部的に UTF8 でエンコーディングされている場合にメモリリークしていました [perl #72246] =item * =begin original C no longer leaks memory on non-threaded builds. =end original C は非スレッド化ビルドでもメモリリークしなくなりました。 =back =head2 Memory Corruption and Crashes (メモリ破壊とクラッシュ) =over =item * =begin original glob() no longer crashes when C<%File::Glob::> is empty and C isn't present [perl #75464] (5.12.2). =end original glob() は、C<%File::Glob::> が空で、C が 存在しないときでももはやクラッシュしなくなりました [perl #75464] (5.12.2)。 =item * =begin original readline() has been fixed when interrupted by signals so it no longer returns the "same thing" as before or random memory. =end original readline() は、シグナルで中断されなくなり、もはや以前と「同じもの」を返したり ランダムなメモリを返したりしなくなりました。 =item * =begin original When assigning a list with duplicated keys to a hash, the assignment used to return garbage and/or freed values: =end original 複製されたキーを持つリストをハッシュに代入したとき、代入によって ゴミや解放された値を返していました: @a = %h = (list with some duplicate keys); =begin original This has now been fixed [perl #31865]. =end original これは修正されました [perl #31865]。 =item * =begin original The mechanism for freeing objects in globs used to leave dangling pointers to freed SVs, meaning Perl users could see corrupted state during destruction. =end original グロブでオブジェクトを解放する機構は解放した SV に繋がっていない ポインタを残したままにしていたので、デストラクタ中に壊れた状態を 見ることが可能でした。 =begin original Perl now frees only the affected slots of the GV, rather than freeing the GV itself. This makes sure that there are no dangling refs or corrupted state during destruction. =end original Perl は GV 自身を解放するのではなく、 GV で影響のあるスロットのみを 解放するようになりました。 これにより、デストラクタ中に繋がっていない参照や壊れた状態が 見えないようになりました。 =item * =begin original The interpreter no longer crashes when freeing deeply-nested arrays of arrays. Hashes have not been fixed yet [perl #44225]. =end original インタプリタは、深くネストした配列の配列の解放したときにもはや クラッシュしなくなりました。 ハッシュはまだ修正されていません [perl #44225]。 =item * =begin original Concatenating long strings under C no longer causes Perl to crash [perl #78674]. =end original C の基で長い文字列を結合してもクラッシュしなくなりました [perl #78674]。 =item * =begin original Calling C<< ->import >> on a class lacking an import method could corrupt the stack, resulting in strange behaviour. For instance, =end original import メソッドのないクラスの C<< ->import >> 呼び出しでスタックが壊れ、 おかしな振る舞いを見せていました。 例えば、 push @a, "foo", $b = bar->import; =begin original would assign "foo" to C<$b> [perl #63790]. =end original これは "foo" を C<$b> に代入していました [perl #63790]。 =item * =begin original The C function could crash when called with the MSG_TRUNC flag [perl #75082]. =end original C 関数は、MSG_TRUNC フラグ付きで呼び出されたときに クラッシュすることがありました [perl #75082]。 =item * =begin original C no longer crashes when passed a tainted format picture. It also taints C<$^A> now if its arguments are tainted [perl #79138]. =end original C は汚染されたフォーマットピクチャーを渡されたときに、もはや クラッシュしなくなりました。 また、引数が汚染されているときには C<$^A> も汚染されるようになりました [perl #79138]。 =item * =begin original A bug in how we process filetest operations could cause a segfault. Filetests don't always expect an op on the stack, so we now use TOPs only if we're sure that we're not Cing the C<_> filehandle. This is indicated by C (as checked in ck_ftst) [perl #74542] (5.12.1). =end original ファイルテスト操作の処理でのバグによりセグメンテーションフォールトが 起きていました。 ファイルテストは常に op がスタック上にあることを想定しないので、 C<_> ファイルハンドルを C したのではないことが分かっているときにだけ TOP を使うようになりました。 これは (ck_ftst でチェックされる) C によって示されます [perl #74542] (5.12.1)。 =item * =begin original unpack() now handles scalar context correctly for C<%32H> and C<%32u>, fixing a potential crash. split() would crash because the third item on the stack wasn't the regular expression it expected. C would return both the unpacked result and the checksum on the stack, as would C [perl #73814] (5.12.2). =end original unpack() は、スカラコンテキストでの C<%32H> と C<%32u> がクラッシュする 可能性がある問題が修正され、正しく扱えるようになりました。 split() は、スタック上の 3 番目のアイテムが想定している正規表現では ないことによってクラッシュしていました。 C は C のように、unpack された 結果とスタック上のチェックサムの両方を返していました [perl #73814] (5.12.2)。 =back =head2 Fixes to Various Perl Operators (様々な Perl 演算子への修正) =over =item * =begin original The C<&>, C<|>, and C<^> bitwise operators no longer coerce read-only arguments [perl #20661]. =end original C<&>, C<|>, C<^> ビット単位演算子は読み込み専用引数を強制しなくなりました [perl #20661]。 =item * =begin original Stringifying a scalar containing "-0.0" no longer has the effect of turning false into true [perl #45133]. =end original "-0.0" を含むスカラの文字列化は、もはや偽を真に変える効果を 持たなくなりました [perl #45133]。 =item * =begin original Some numeric operators were converting integers to floating point, resulting in loss of precision on 64-bit platforms [perl #77456]. =end original 一部の数値演算子は整数を浮動小数点数に変換して、結果として 64-ビット プラットフォームでは精度が落ちていました [perl #77456]。 =item * =begin original sprintf() was ignoring locales when called with constant arguments [perl #78632]. =end original sprintf() は、定数引数で呼び出されるとロケールを無視していました [perl #78632]。 =item * =begin original Combining the vector (C<%v>) flag and dynamic precision would cause C to confuse the order of its arguments, making it treat the string as the precision and vice-versa [perl #83194]. =end original C で ベクトル (C<%v>) フラグと動的精度を結合すると、引数の順序を 混乱して、文字列を精度として扱ったりその逆になったりしていました [perl #83194]。 =back =head2 Bugs Relating to the C API (C API に関連するバグ) =over =item * =begin original The C-level C function would sometimes cause a spurious syntax error on the last line of the file if it lacked a final semicolon [perl #74006] (5.12.1). =end original C-レベルの C 関数は、最後のセミコロンがない場合、時々 ファイルの最後の行で間違った文法エラーを出すことがありました [perl #74006] (5.12.1)。 =item * =begin original The C and C C functions now set C<$@> correctly when there is a syntax error and no C flag, and never set it if the C flag is present [perl #3719]. =end original C と C の C 関数は、文法エラーがあって C フラグがないときに C<$@> を正しく設定するようになり、 C フラグがあるときには設定しなくなりました [perl #3719]。 =item * =begin original The XS multicall API no longer causes subroutines to lose reference counts if called via the multicall interface from within those very subroutines. This affects modules like L. Calling one of its functions with an active subroutine as the first argument could cause a crash [perl #78070]. =end original XS マルチコール API は、サブルーチン内からマルチコールインターフェースで 呼び出されたときにサブルーチンの参照カウントを失っていました。 これは L のようなモジュールに影響していました。 最初の引数としてアクティブなサブルーチンを指定してこれらの関数を 呼び出すとクラッシュを引き起こしていました [perl #78070]。 =item * =begin original The C function available to XS modules now calls magic before downgrading the SV, to avoid warnings about wide characters [perl #72398]. =end original XS モジュールで利用可能な C は、ワイド文字に関する 警告を避けるために、SV が降格する前にマジックを呼び出すようになりました [perl #72398]。 =item * =begin original The ref types in the typemap for XS bindings now support magical variables [perl #72684]. =end original XS バインディングのための typemap の ref 型はマジカル変数に 対応しました [perl #72684]。 =item * =begin original C no longer calls C on its second argument (the source string) if the flags passed to it do not include SV_GMAGIC. So it now matches the documentation. =end original C が、渡されたフラグに SV_GMAGIC が含まれていない ときには 2 番目の引数 (ソース文字列) に C 呼び出さなくなりました。 これで文書と一致します。 =item * =begin original C no longer leaks memory. This fixes a memory leak in C [perl #73520]. =end original C はもはやメモリリークしなくなりました。 この修正は C のメモリリークを修正します [perl #73520]。 =item * =begin original F now correctly redefines fgets under PERL_IMPLICIT_SYS [perl #55049] (5.12.1). =end original F は PERL_IMPLICIT_SYS のときに正しく fgets を再定義するように なりました [perl #55049] (5.12.1)。 =item * =begin original XS code using fputc() or fputs() on Windows could cause an error due to their arguments being swapped [perl #72704] (5.12.1). =end original Windows で fputc() あるいは fputs() を使った XS コードは、引数が 入れ替わることによりエラーを引き起こすことがありました [perl #72704] (5.12.1)。 =item * =begin original A possible segfault in the C default typemap has been fixed (5.12.2). =end original デフォルト typemap C でセグメンテンションフォールトが 起きる可能性があった問題が修正されました (5.12.2)。 =item * =begin original A bug that could cause "Unknown error" messages when C is called from an XS destructor has been fixed (5.12.2). =end original XS のデストラクタから "C" が呼び出されたときに "C" が起きることがあるバグが修正されました (5.12.2)。 =back =head1 Known Problems (既知の問題) =begin original This is a list of significant unresolved issues which are regressions from earlier versions of Perl or which affect widely-used CPAN modules. =end original これは、以前のバージョンの Perl からの退行や、広く使われている CPAN モジュールに影響する、重要な未解決問題の一覧です。 =over 4 =item * =begin original C misbehaves in the presence of a lexical C<$_> (typically introduced by C or implicitly by C). The variable that gets set for each iteration is the package variable C<$_>, not the lexical C<$_>. =end original C は、レキシカルな C<$_> (典型的には C や、 暗黙に C によって起こります) があると間違った振る舞いをします。 それぞれの反復のために準備している変数はパッケージ変数の C<$_> であって、 レキシカルな C<$_> ではありません。 =begin original A similar issue may occur in other modules that provide functions which take a block as their first argument, like =end original 同様な問題は、以下のように、ブロックを最初の引数に取る関数を提供している その他のモジュールにも起こります。 foo { ... $_ ...} list =begin original See also: L =end original L も 参照してください。 =item * =begin original readline() returns an empty string instead of undef when it is interrupted by a signal. =end original readline() がシグナルで中断したとき、undef ではなく空文字列を返します。 =item * =begin original The changes in prototype handling break L. A patch has been sent upstream and will hopefully appear on CPAN soon. =end original プロトタイプの扱いの変更は L を壊します。 パッチはすでに上流に送信されていて、うまくいけばもうすぐ CPAN に 現れるでしょう。 =item * =begin original The upgrade to F has caused some tests in the F distribution on CPAN to fail. (Specifically, F<02_mymeta.t> tests 5 and 21; F<18_all_from.t> tests 6 and 15; F<19_authors.t> tests 5, 13, 21, and 29; and F<20_authors_with_special_characters.t> tests 6, 15, and 23 in version 1.00 of that distribution now fail.) =end original F への更新により、CPAN の F 配布の いくつかのテストが失敗するようになりました。 (具体的には、バージョン 1.00 では F<02_mymeta.t> テスト 5 と 21; F<18_all_from.t> テスト 6 と 15; F<19_authors.t> テスト 5, 13, 21, 29; F<20_authors_with_special_characters.t> テスト 6, 15, 23 が失敗します。) =item * =begin original On VMS, C tests will fail due to a bug in the CRTL's implementation of C: previous timer values would be cleared if a timer expired but not if the timer was reset before expiring. HP OpenVMS Engineering have corrected the problem and will release a patch in due course (Quix case # QXCM1001115136). =end original VMS では、C のテストは CRTL の C 実装のバグにより 失敗していました: 以前は、タイマーの値は時間切れになると クリアされていましたが、もしタイマーが時間切れになる前にリセットされると クリアされませんでした。 HP OpenVMS Engineering はこの問題を修正し、後日パッチをリリースします (Quix case # QXCM1001115136)。 =item * =begin original On VMS, there were a handful of C test failures we didn't get to before the release; please watch CPAN for updates. =end original VMS では、以前は成功していた C のテストの一部が 失敗するようになっています; CPAN の更新を見守ってください。 =back =head1 Errata (正誤表) =head2 keys(), values(), and each() work on arrays (keys(), values(), each() は配列でも動作します) =begin original You can now use the keys(), values(), and each() builtins on arrays; previously you could use them only on hashes. See L for details. This is actually a change introduced in perl 5.12.0, but it was missed from that release's L. =end original keys(), values(), each() 組み込み関数を配列に対しても使えるように なりました(以前はハッシュに対してしか使えませんでした)。 詳しくは L を参照してください。 これは実際には perl 5.12.0 で導入されましたが、このリリースの L から漏れていました。 =head2 split() and C<@_> (split() と C<@_>) =begin original split() no longer modifies C<@_> when called in scalar or void context. In void context it now produces a "Useless use of split" warning. This was also a perl 5.12.0 change that missed the perldelta. =end original split() はスカラコンテキストや無効コンテキストで呼び出されたときに C<@_> を変更されなくなりました。 無効コンテキストでは "Useless use of split" 警告が出ます。 これは perl 5.12.0 でも変更されていましたが、perldelta から漏れていました。 =head1 Obituary (追悼) =begin original Randy Kobes, creator of http://kobesearch.cpan.org/ and contributor/maintainer to several core Perl toolchain modules, passed away on September 18, 2010 after a battle with lung cancer. The community was richer for his involvement. He will be missed. =end original http://kobesearch.cpan.org/ の作者であり、いくつかのコア Perl ツールチェーンモジュールの貢献者/メンテナである Randy Kobes は肺がんとの闘病の末に 2010 年 9 月 18 日に亡くなりました。 コミュニティは彼の関与によってより豊かになりました。 Perl コミュニティへの彼の貢献は忘れません。 彼は残念なことでした。 =head1 Acknowledgements =begin original Perl 5.14.0 represents one year of development since Perl 5.12.0 and contains nearly 550,000 lines of changes across nearly 3,000 files from 150 authors and committers. =end original Perl 5.14.0 は、Perl 5.12.0 以降、150 人の作者とコミッタによって、 約 3,000 のファイルに 550,000 行以上の変更を加えて、 ほぼ 1 年間開発されてきました。 =begin original 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.14.0: =end original Perl は、活気のあるユーザーと開発者のコミュニティのおかげで 20 年を超えて繁栄しています。 以下の人々が、Perl 5.14.0 になるための改良に貢献したことが 分かっています: Aaron Crane, Abhijit Menon-Sen, Abigail, Ævar Arnfjörð Bjarmason, Alastair Douglas, Alexander Alekseev, Alexander Hartmaier, Alexandr Ciornii, Alex Davies, Alex Vandiver, Ali Polatel, Allen Smith, Andreas König, Andrew Rodland, Andy Armstrong, Andy Dougherty, Aristotle Pagaltzis, Arkturuz, Arvan, A. Sinan Unur, Ben Morrow, Bo Lindbergh, Boris Ratner, Brad Gilbert, Bram, brian d foy, Brian Phillips, Casey West, Charles Bailey, Chas. Owens, Chip Salzenberg, Chris 'BinGOs' Williams, chromatic, Craig A. Berry, Curtis Jewell, Dagfinn Ilmari Mannsåker, Dan Dascalescu, Dave Rolsky, David Caldwell, David Cantrell, David Golden, David Leadbeater, David Mitchell, David Wheeler, Eric Brine, Father Chrysostomos, Fingle Nark, Florian Ragwitz, Frank Wiegand, Franz Fasching, Gene Sullivan, George Greer, Gerard Goossen, Gisle Aas, Goro Fuji, Grant McLean, gregor herrmann, H.Merijn Brand, Hongwen Qiu, Hugo van der Sanden, Ian Goodacre, James E Keenan, James Mastros, Jan Dubois, Jay Hannah, Jerry D. Hedden, Jesse Vincent, Jim Cromie, Jirka Hruška, John Peacock, Joshua ben Jore, Joshua Pritikin, Karl Williamson, Kevin Ryde, kmx, Lars Dɪᴇᴄᴋᴏᴡ 迪拉斯, Larwan Berke, Leon Brocard, Leon Timmermans, Lubomir Rintel, Lukas Mai, Maik Hentsche, Marty Pauley, Marvin Humphrey, Matt Johnson, Matt S Trout, Max Maischein, Michael Breen, Michael Fig, Michael G Schwern, Michael Parker, Michael Stevens, Michael Witten, Mike Kelly, Moritz Lenz, Nicholas Clark, Nick Cleaton, Nick Johnston, Nicolas Kaiser, Niko Tyni, Noirin Shirley, Nuno Carvalho, Paul Evans, Paul Green, Paul Johnson, Paul Marquess, Peter J. Holzer, Peter John Acklam, Peter Martini, Philippe Bruhat (BooK), Piotr Fusik, Rafael Garcia-Suarez, Rainer Tammer, Reini Urban, Renee Baecker, Ricardo Signes, Richard Möhn, Richard Soderberg, Rob Hoelz, Robin Barker, Ruslan Zakirov, Salvador Fandiño, Salvador Ortiz Garcia, Shlomi Fish, Sinan Unur, Sisyphus, Slaven Rezic, Steffen Müller, Steve Hay, Steven Schubiger, Steve Peters, Sullivan Beck, Tatsuhiko Miyagawa, Tim Bunce, Todd Rinaldo, Tom Christiansen, Tom Hukins, Tony Cook, Tye McQueen, Vadim Konovalov, Vernon Lyon, Vincent Pit, Walt Mankowski, Wolfram Humann, Yves Orton, Zefram, and Zsbán Ambrus. =begin original 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.14.0 better. For a more complete list of all of Perl's historical contributors, please see the C file in the Perl 5.14.0 distribution. =end original これはバージョンコントロール履歴から自動的に生成しているので、 悲惨なほどに不完全です。 特に、Perl 5.14.0 をよりよくするための助けとなった、以前のバージョンの Perl の問題を報告してくれた(とてもありがたい)貢献者の名前を含んでいません。 全ての Perl の歴史的な貢献者のより完全な一覧はについては、 どうか Perl 5.14.0 配布に含まれている C を参照してください。 =begin original 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. =end original このバージョンに含まれている変更の多くは、Perl コアに含まれている CPAN モジュール由来のものです。 私たちは Perl が繁栄するのを助けている CPAN コミュニティ全体に感謝します。 =head1 Reporting Bugs (バグ報告) =begin original 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. =end original もしバグと思われるものを見つけたら、comp.lang.perl.misc ニュースグループに 最近投稿された記事や http://rt.perl.org/perlbug/ にある Perl バグ データベースを確認してください。 Perl ホームページ、http://www.perl.org にも情報があります。 =begin original If you believe you have an unreported bug, please run the L 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 C, will be sent off to perlbug@perl.org to be analysed by the Perl porting team. =end original もしまだ報告されていないバグだと確信したら、そのリリースに含まれている L プログラムを実行してください。 バグの再現スクリプトを十分小さく、しかし有効なコードに切りつめることを 意識してください。 バグレポートは C の出力と一緒に perlbug@perl.org に送られ Perl porting チームによって解析されます。 =begin original 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 perl5-security-report@perl.org. 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 use this address for security issues in the Perl core I, not for modules independently distributed on CPAN. =end original もし報告しようとしているバグがセキュリティに関するもので、公開されている メーリングリストに送るのが不適切なものなら、 perl5-security-report@perl.org に送ってください。 このアドレスは、問題の影響を評価し、解決法を見つけ、Perl が対応している 全てのプラットフォームで問題を軽減または解決するパッチをリリースするのを 助けることが出来る、全てのコアコミッタが参加している非公開の メーリングリストになっています。 このアドレスは、独自に CPAN で配布されているモジュールではなく、 Perl コアのセキュリティ問題だけに使ってください。 =head1 SEE ALSO =begin original The F file for an explanation of how to view exhaustive details on what changed. =end original 変更点の完全な詳細を見る方法については F ファイル。 =begin original The F file for how to build Perl. =end original Perl のビルド方法については F ファイル。 =begin original The F file for general stuff. =end original 一般的なことについては F ファイル。 =begin original The F and F files for copyright information. =end original 著作権情報については F 及び F ファイル。 =begin meta Translate: SHIRAKATA Kentaro =end meta =cut