perldelta - what is new for perl v5.8.9

目次


NAME 名前

perldelta - what is new for perl v5.8.9

perldelta - perl v5.8.9 の新機能


DESCRIPTION 説明

This document describes differences between the 5.8.8 release and the 5.8.9 release.

このドキュメントでは 5.8.8 リリースと 5.8.9 リリースとでの相異点を 説明します.


Incompatible Changes 非互換となる修正

There are no changes intentionally incompatible with 5.8.8. If any exist, they are bugs and reports are welcome.

5.8.8 と意図的な非互換はありません. もしなにか非互換と思われる事項が ありましたら, それらはバグでしょう. ぜひ報告をお願いします.


Core Enhancements コアの機能拡張

Unicode Character Database 5.1.0. Unicode 文字データベース 5.1.0.

The copy of the Unicode Character Database included in Perl 5.8 has been updated to 5.1.0 from 4.1.0. See http://www.unicode.org/versions/Unicode5.1.0/#NotableChanges for the notable changes.

Perl 5.8 に含まれる Unicode 文字データベースのコピーは 4.1.0 から 5.1.0 に更新されました. 主な変更点は http://www.unicode.org/versions/Unicode5.1.0/#NotableChanges を参照してください.

stat and -X on directory handles ディレクトリハンドルに対する stat 及び -X

It is now possible to call stat and the -X filestat operators on directory handles. As both directory and file handles are barewords, there can be ambiguities over which was intended. In these situations the file handle semantics are preferred. Both also treat *FILE{IO} filehandles like *FILE filehandles.

ディレクトリハンドルに対して stat 及び -X ファイルstat演算を 行えるようになりました. ディレクトリ及びファイルハンドルが共に ベアワードだった場合には, どちらになるかはあいまいです. その様なときにはファイルハンドルとしての動作が優先されます. どちらでも *FILE ファイルハンドルのように *FILE{IO} として扱われます.

Source filters in @INC @INC でのソースフィルタ

It's possible to enhance the mechanism of subroutine hooks in @INC by adding a source filter on top of the filehandle opened and returned by the hook. This feature was planned a long time ago, but wasn't quite working until now. See perlfunc 内 "require" [CPAN] for details. (Nicholas Clark)

フックによって開かれて返されたファイルハンドルに対して ソースフィルタを加えることで @INC での関数によるフックの メカニズムを強化できるようになりました. この機能は長い間予定は立てられていましたが, これまでは実装されていませんでした. 詳細は perlfunc 内 "require" [CPAN] を参照してください. (Nicholas Clark)

Exceptions in constant folding 定数畳み込み時の例外

The constant folding routine is now wrapped in an exception handler, and if folding throws an exception (such as attempting to evaluate 0/0), perl now retains the current optree, rather than aborting the whole program. Without this change, programs would not compile if they had expressions that happened to generate exceptions, even though those expressions were in code that could never be reached at runtime. (Nicholas Clark, Dave Mitchell)

定数畳み込み処理が例外ハンドラに補足されるようになり, 畳み込み時に例外が投げられた場合には(例えば 0/0 の評価時), perl はプログラム全体を中断するのではなく その時点の optree を維持するようになりました. この変更 なしには, プログラムは例外を生成する式を持っているプログラムを, たとえその式が実行時に到達しない箇所であったとしても コンパイルできません. (Nicholas Clark, Dave Mitchell)

no VERSION

You can now use no followed by a version number to specify that you want to use a version of perl older than the specified one.

特定のバージョンより古い perl を使いたいときに no に続けてバージョン番号を指定することで できるようになりました.

Improved internal UTF-8 caching code 内部の UTF-8 キャッシュコードの改善

The code that caches calculated UTF-8 byte offsets for character offsets for a string has been re-written. Several bugs have been located and eliminated, and the code now makes better use of the information it has, so should be faster. In particular, it doesn't scan to the end of a string before calculating an offset within the string, which should speed up some operations on long strings. It is now possible to disable the caching code at run time, to verify that it is not the cause of suspected problems.

文字列に於いて文字オフセットのために算出された UTF-8 バイトオフセット のキャッシュを行うコードが書き直されました. いくつかのバグは落ち着き削除され, そしてコードはそこに持っている情報をより良く, そして高速に使えるように なりました. 特に, 文字列のオフセットを計算する前に 文字列の最後まで計算しないために, 長い文字列に於いて高速になりました. また実行時に疑わしい問題の原因かどうかを確認できるように, キャッシュ部分のコードを無効にできるようになりました.

Runtime relocatable installations 実行時再配置インストール

There is now Configure support for creating a perl tree that is relocatable at run time. see "Relocatable installations".

Configure は実行時に再配置可能な perl tree の設置をサポートしました. "再配置可能なインストール" を参照してください.

New internal variables 新しい内部変数

${^CHILD_ERROR_NATIVE}

This variable gives the native status returned by the last pipe close, backtick command, successful call to wait or waitpid, or from the system operator. See perlvar [CPAN] for details. (Contributed by Gisle Aas.)

この変数は最後のパイプクローズ, バックティックコマンド(``), wait若しくはwaitpidの成功した呼び出し, 若しくはsystem演算子 からのネイティブなステータスを返します. 詳細は perlvar [CPAN] を参照してください. (Gisle Aas より提供)

${^UTF8CACHE}

This variable controls the state of the internal UTF-8 offset caching code. 1 for on (the default), 0 for off, -1 to debug the caching code by checking all its results against linear scans, and panicing on any discrepancy.

この変数は内部の UTF-8 オフセットキャッシュコードの状態を 制御します. 1で有効に(デフォルト), 0 で無効に, -1 で線形探索の結果と比較することでキャッシュコードのデバッグを行い, それ以外の値ではpanicします.

readpipe is now overridable readpipe() がオーバーライド可能になりました

The built-in function readpipe is now overridable. Overriding it permits also to override its operator counterpart, qx// (a.k.a. ``).

組み込み関数 readpipe() がオーバーライド可能になりました. これによってこれに対応する演算子, qx// (a.k.a. ``) もオーバーライドすることができます.

simple exception handling macros 簡単な例外処理マクロ

Perl 5.8.9 (and 5.10.0 onwards) now provides a couple of macros to do very basic exception handling in XS modules. You can use these macros if you call code that may croak, but you need to do some cleanup before giving control back to Perl. See perlguts 内 "Exception Handling" [CPAN] for more details.

Perl 5.8.9 (及び 5.10.0 より以降)では XS モジュールでの とても基本的な例外処理を行うためのいくつかのマクロが提供されます. croak するかもしれない処理を呼ぶけれど, Perl に制御を戻す前に クリーンアップ処理を行いたい時にこれらのマクロを使うことが出来ます. 詳細は perlguts 内 "Exception Handling" [CPAN] を参照してください.

-D option enhancements -D オプションの強化

XS-assisted SWASHGET XS補助による SWASHGET

Some pure-perl code that the regexp engine was using to retrieve Unicode properties and transliteration mappings has been reimplemented in XS. (SADAHIRO Tomoyuki)

Unicode プロパティや transliteration mapping を得るために 正規表現エンジンが使ういくつかの pure-perl コードが XS で再実装されました. (SADAHIRO Tomoyuki)

Constant subroutines 定数関数

The interpreter internals now support a far more memory efficient form of inlineable constants. Storing a reference to a constant value in a symbol table is equivalent to a full typeglob referencing a constant subroutine, but using about 400 bytes less memory. This proxy constant subroutine is automatically upgraded to a real typeglob with subroutine if necessary. The approach taken is analogous to the existing space optimisation for subroutine stub declarations, which are stored as plain scalars in place of the full typeglob.

インタプリタは埋め込み可能な定数のよりもっとメモリ効率の良い形式を 内部的にサポートしました. シンボルテーブルに定数値へのリファレンスを 格納することは定数関数を参照する完全なタイプグロブと等価ですが, 400 バイトのメモリ削減となります. このproxyされた定数関数は 必要であれば実際のタイプグロブへと自動的にアップグレードされます. ここで取ったアプローチは既に行われている関数スタブ宣言において 完全なタイプグロブを置く代わりに単なるスカラーを格納する 空間最適化と似ています.

However, to aid backwards compatibility of existing code, which (wrongly) does not expect anything other than typeglobs in symbol tables, nothing in core uses this feature, other than the regression tests.

しかしながら, シンボルテーブルにタイプグロブ以外の物が入っていることを (悪いことに)予期していない既存のコードの下位互換を助けるために, コアではれぐれっしょんてすと以外ではこの機能は使っていません.

Stubs for prototyped subroutines have been stored in symbol tables as plain strings, and stubs for unprototyped subroutines as the number -1, since 5.005, so code which assumes that the core only places typeglobs in symbol tables has been making incorrect assumptions for over 10 years.

5.005 からは, プロトタイプ付きの関数のスタブはシンボルテーブルにプレインテキストとして 格納され, プロトタイプのないスタブは数値 -1 で格納されます, つまりコアがシンボルテーブルにタイプグロブのみを置くと前提にしている コードは, 10年にわたって誤った前提を取っていることになります.


New Platforms 新しいプラットフォーム

Compile support added for:

追加されたコンパイルサポート:


Modules and Pragmata モジュールとプラグマ

New Modules 新しいモジュール

Updated Modules 更新されたモジュール


Utility Changes ユーティリティの変更点

debugger upgraded to version 1.30 デバッガが 1.30 へと更新されました

Andreas König contributed two functions to save and load the debugger history.

Andreas König はデバッガの履歴を保存及び読み込む2つの機能を 提供してくれました.

perlthanks

Perl 5.8.9 adds a new utility perlthanks, which is a variant of perlbug, but for sending non-bug-reports authors and maintainers of Perl. Getting nothing bug reports can become a bit demoralising - we'll see if this changes things.

Perl 5.8.9 は新しいユーティリティ perlthanks を加えました, これは perlbug と似たような物ですが, バグ報告ではない物を作者及び Perl のメンテナに送ります. バグ報告がこないとちょっとがっかりしたりします - これが何か変えてくれると思います.

perlbug

perlbug now checks if you're reporting about a non-core module and suggests you report it to the CPAN author instead.

perlbug はコア以外のモジュールの報告かをチェックし, 代わりにそれを CPAN author に送るかどうかを提案します.

h2xs

h2ph


New Documentation 新しいドキュメント

As usual, the documentation received its share of corrections, clarifications and other nitfixes. More tags were added for indexing.

いつものように, このドキュメントは訂正, 明確化及びその他の nitfixes の 共有を受け入れます. インデックス用に タグが追加されます.

perlunitut [CPAN] is a tutorial written by Juerd Waalboer on Unicode-related terminology and how to correctly handle Unicode in Perl scripts.

perlunitut [CPAN] は Juerd Waalboer によって書かれた Unicode に関連する用語及び Perl スクリプトにおいて Unicode を正しく扱う方法です.

perlunicode [CPAN] is updated in section user defined properties.

perlunicode [CPAN] はユーザ定義プロパティの節が更新されました.

perluniintro [CPAN] has been updated in the example of detecting data that is not valid in particular encoding.

perluniintro [CPAN] は特定のエンコーディングとして正しくないデータを 検出する例を更新しました.

perlcommunity [CPAN] provides an overview of the Perl Community along with further resources.

perlcommunity [CPAN] は一層の情報に沿って Perl コミュニティの 概要を提供します.

CORE [CPAN] documents the pseudo-namespace for Perl's core routines.

CORE [CPAN] は Perl のコア機能のための擬似的な名前空間を記述しています.


Changes to Existing Documentation 既存のドキュメントに対する修正

perlglossary [CPAN] adds deprecated modules and features and to be dropped modules.

perlglossary [CPAN] に 廃止されたモジュール及び機能 及び 取り除かれるモジュール が追加されました.

perlhack [CPAN] has been updated and added resources on smoke testing.

perlhack [CPAN] は更新され, smoke testing の情報が追加されました.

The Perl FAQs (perlfaq1..perlfaq9) have been updated.

The Perl FAQs (perlfaq1..perlfaq9) が更新されました.

perlcheat [CPAN] is updated with better details on \w, \d, and \s.

perlcheat [CPAN] は \w, \d, 及び \s に関するより詳細を更新しました.

perldebug [CPAN] is updated with information on how to call the debugger.

perldebug [CPAN] はデバッガの呼び方に関する情報を更新しました.

perldiag [CPAN] documentation updated with subroutine with an ampersand on the argument to exists and delete and also several terminology updates on warnings.

perldiag [CPAN] ドキュメントは exists 及び delete の引数における アンパサンド付きの関数及び警告に関するいくつかの用語を更新しました.

perlfork [CPAN] documents the limitation of exec inside pseudo-processes.

perlfork [CPAN] では疑似プロセス内における exec の制限を記述しました.

perlfunc [CPAN]:

perllocale [CPAN] documentation is adjusted for number localization and POSIX::setlocale to fix Debian bug #379463.

perllocale [CPAN] は Debian バグ #379463 に対応するための 数値のローカライゼーションと POSIX::setlocale に関して調整.

perlmodlib [CPAN] is updated with CPAN::API::HOWTO and Sys::Syslog::win32::Win32

perlmodlib [CPAN] は CPAN::API::HOWTO 及び Sys::Syslog::win32::Win32 と共に更新されました.

perlre [CPAN] documentation updated to reflect the differences between [[:xxxxx:]] and \p{IsXxxxx} matches. Also added section on /g and /c modifiers.

perlre [CPAN] は [[:xxxxx:]]\p{IsXxxxx} マッチの違いを 反映して更新されました. /g 及び /c 修飾子の節も追加されました.

perlreguts [CPAN] describe the internals of the regular expressions engine. It has been contributed by Yves Orton.

perlreguts [CPAN] は正規表現エンジンの内部を記述します. これは Yves Orton から提供されました.

perlrebackslash [CPAN] describes all perl regular expression backslash and escape sequences.

perlrebackslash [CPAN] は全ての perl 正規表現におけるバックスラッシュ及び エスケープシーケンスを記述します.

perlrecharclass [CPAN] describes the syntax and use of character classes in Perl Regular Expressions.

perlrecharclass [CPAN] は Perl 正規表現エンジンでの文字クラスの構文及び 使い方を記述します.

perlrun [CPAN] is updated to clarify on the hash seed PERL_HASH_SEED. Also more information in options -x and -u.

perlrun [CPAN] はハッシュシード PERL_HASH_SEED を明確になるように 更新しました. また -x 及び -u オプションの説明も増えました.

perlsub [CPAN] example is updated to use a lexical variable for opendir syntax.

perlsub [CPAN] の例は opendir 構文でレキシカル変数を使うように 更新されました.

perlvar [CPAN] fixes confusion about real GID $( and effective GID $).

perlvar [CPAN] は実GID(real GID; $()と実行GID(effective GID; $))に 関する混乱を修正しました.

Perl thread tutorial example is fixed in section perlthrtut 内 "Queues: Passing Data Around" [CPAN] and perlothrtut [CPAN].

perlthrtut 内 "Queues: Passing Data Around" [CPAN] 及び perlothrtut [CPAN] における Perl スレッドチュートリアルの例が修正されました.

perlhack [CPAN] documentation extensively improved by Jarkko Hietaniemi and others.

perlhack [CPAN] ドキュメントは Jarkko Hietaniemi 及びその他の人によって 多く改善されました.

perltoot [CPAN] provides information on modifying @UNIVERSAL::ISA.

perltoot [CPAN] は @UNIVERSAL::ISA の変更の際に関する情報を提供します.

perlport [CPAN] documentation extended to include different kill(-9, ...) semantics on Windows. It also clearly states dump is not supported on Win32 and cygwin.

perlport [CPAN] は Windows における kill(-9, ...) セマンティクスの 違いを含めるように拡張されました. これは Win32 及び cygwin において dump がサポートされていないことを明確に言及しています.

INSTALL has been updated and modernised.

INSTALL は更新され今っぽくなりました.


Performance Enhancements パフォーマンスの強化


Installation and Configuration Improvements インストールとコンフィグレーションの改善

Relocatable installations 再配置可能なインストール

There is now Configure support for creating a relocatable perl tree. If you Configure with -Duserelocatableinc, then the paths in @INC (and everything else in %Config) can be optionally located via the path of the perl executable.

Configure は再配置可能な perl ツリーの作成をサポートしました. Configure-Duserelocatableinc を指定することで @INC (及び %Configure のその他の物)のパスに追加で perl 実行形式からのパスを置くことが出来ます.

At start time, if any paths in @INC or Config that Configure marked as relocatable (by starting them with ".../"), then they are prefixed the directory of $^X. This allows the relocation can be configured on a per-directory basis, although the default with -Duserelocatableinc is that everything is relocated. The initial install is done to the original configured prefix.

起動時には, @INC 若しくは Config にある Configure が 再配置可能とマークした(".../"で始まっている)全てのパスは $^X のディレクトリで前置されます. これは再配置は ディレクトリ別で設定可能であり, -Duserelocatableinc の デフォルトは全てが再配置されます. 初期インストールは最初に設定された プレフィックスへと行われます.

Configuration improvements 設定の改善

Configure is now better at removing temporary files. Tom Callaway (from RedHat) also contributed patches that complete the set of flags passed to the compiler and the linker, in particular that -fPIC is now enabled on Linux. It will also croak when your /dev/null isn't a device.

Configure は一時ファイルをよりちゃんと削除するようになりました. Tom Callaway (RedHat より)もまたコンパイラ及びリンカに渡される フラグのセットを補完するパッチを提供してくれ, 特に Linux で -fPIC が有効になりました. また /dev/null がデバイスでないときに croak するようになりました.

A new configuration variable d_pseudofork has been to Configure, and is available as $Config{d_pseudofork} in the Config module. This distinguishes real fork support from the pseudofork emulation used on Windows platforms.

新しい設定変数 d_pseudoforkConfigure に追加され, これは Config モジュールの $Config{d_pseudofork} として 提供されます. これは実際の fork サポートなのか Windows プラットフォームにおける疑似エミュレーションなのかを識別します.

Config.pod and config.sh are now placed correctly for cross-compilation.

Config.pod 及び config.sh はクロスコンパイルに適切な位置に 配置されるようになりました.

$Config{useshrplib} is now 'true' rather than 'yes' when using a shared perl library.

$Config{useshrplib} は共有 perl ライブラリを使うときは 'yes' ではなく 'true' になります.

Compilation improvements コンパイルの改善

Parallel makes should work properly now, although there may still be problems if make test is instructed to run in parallel.

平行 make が正しく動作するようになりました, けれども make test が平行に実行されるとまた問題があります.

Many compilation warnings have been cleaned up. A very stubborn compiler warning in S_emulate_eaccess() was killed after six attempts. g++ support has been tuned, especially for FreeBSD.

多くのコンパイル時警告がきれいになりました. S_emulate_eaccess() のとても頑固なコンパイラ警告は 6回の試行の後に沈静化しました. g++ サポートも, 特にFreeBSDの為にチューニングされました.

mkppport has been integrated, and all ppport.h files in the core will now be autogenerated at build time (and removed during cleanup).

mkppport が統合され, コアにある全ての ppport.h ファイルはビルド時に自動生成されるようになりました (そしてクリーンアップで削除されます).

Installation improvements. インストールの改善

installman now works with -Duserelocatableinc and DESTDIR.

installman-Duserelocatableinc 及び DESTDIR と共に 動作するようになりました.

installperl no longer installs:

installperl か以下の物をインストールしなくなりました:

Platform Specific Changes プラットフォーム関係の変更点

There are improved hints for AIX, Cygwin, DEC/OSF, FreeBSD, HP/UX, Irix 6 Linux, MachTen, NetBSD, OS/390, QNX, SCO, Solaris, SunOS, System V Release 5.x (UnixWare 7, OpenUNIX 8), Ultrix, UMIPS, uts and VOS.

AIX, Cygwin, DEC/OSF, FreeBSD, HP/UX, Irix 6 Linux, MachTen, NetBSD, OS/390, QNX, SCO, Solaris, SunOS, System V Release 5.x (UnixWare 7, OpenUNIX 8), Ultrix, UMIPS, uts 及び VOS に対する ヒントの改善があります.

FreeBSD

Solaris

VMS

Windows


Selected Bug Fixes バグ修正のピックアップ

Unicode

Many many bugs related to the internal Unicode implementation (UTF-8) have been fixed. In particular, long standing bugs related to returning Unicode via tie, overloading or $@ are now gone, some of which were never reported.

内部 Unicode 実装 (UTF-8) に関連する多くの多くのバグが修正されました. 特に, 長く残っていた tie, オーバーロード 若しくは $@ から Unicode を返す関連のバグがいなくなりました, いくつかは報告には あがったことはありません.

unpack will internally convert the string back from UTF-8 on numeric types. This is a compromise between the full consistency now in 5.10, and the current behaviour, which is often used as a "feature" on string types.

unpack は内部的には数値型のUTF-8から文字列に変換し戻すように なりました. これは 5.10 との完全な一貫性と 現在の振る舞いとの妥協です, これは文字列型の"機能"として しばしば使われています.

Using :crlf and UTF-16 IO layers together will now work.

IO レイヤで :crlf 及び UTF-16 の同時使用は動作するように なりました.

Fixed problems with split, Unicode /\s+/ and / \0/.

Unicode /\s+/ 及び / \0/ におけるsplit の問題は修正されました.

Fixed bug RT #40641 - encoding of Unicode characters in regular expressions.

修正されたバグ RT #40641 - 正規表現における Unicode のエンコーディング (encoding of Unicode characters in regular expressions).

Fixed a bug where using certain patterns in a regexp led to a panic. [RT #45337]

正規表現で特定のパターンを使うとパニックになるバグの修正. [RT #45337]

Perl longer segfaults (due to infinite internal recursion) if the locale's character is not UTF-8 [RT #41442]:

Perl はロケールの文字が UTF-8 でないと(無限内部再帰によって)長い間 segfault していました [RT #41442]:

    use open ':locale';
    print STDERR "\x{201e}"; # „

PerlIO

Inconsistencies have been fixed in the reference counting PerlIO uses to keep track of Unix file descriptors, and the API used by XS code to manage getting and releasing FILE *s

PerlIO が Unix ファイルディスクリプタの追跡を維持するために使う リファレンスカウンタ及び XS FILE *を得たり解放したりするのに 使う API の非一貫性が修正されました.

Magic

Several bugs have been fixed in Magic, the internal system used to implement features such as tie, tainting and threads sharing.

tie, 汚染(taint) 及びスレッド共有等の機能の実装に使われている 内部システムである Magic に関連するいくつかのバグが修正されました.

Some of the bitwise ops were not checking whether their arguments were magical before using them. [RT #24816]

いくつかのビット演算はその引数がmagicにかかっているかを検証しない. [RT #24816]

Magic is no longer invoked twice by the expression \&$x

Magic は式 \&$x によって二度呼ばれることはなくなりました

A bug with assigning large numbers and tainting has been resolved. [RT #40708]

大きな値を割り当てるとtaintが解決されるバグ. [RT #40708]

A new entry has been added to the MAGIC vtable - svt_local. This is used when copying magic to the new value during local. This allows problems with localising shared variables.

MAGIC vtable に新しいエントリ svt_local が追加されました. これは magic を local の間に新しい値に複製した時に 使われます. これは共有変数を local するときの問題を有効にします.

For the implementation details, see perlguts 内 "Magic Virtual Tables" [CPAN].

実装の詳細は perlguts 内 "Magic Virtual Tables" [CPAN] を参照してください.

Reblessing overloaded objects now works オーバーロードされたオブジェクトの再ブレスが可能に

Internally, perl object-ness is on the referent, not the reference, even though methods can only be called via a reference. However, the original implementation of overloading stored flags related to overloading on the reference, relying on the flags being copied when the reference was copied, or set at the creation of a new reference. This manifests in a bug - if you rebless an object from a class that has overloading, into one that does not, then any other existing references think that they (still) point to an overloaded object, choose these C code paths, and then throw errors. Analogously, blessing into an overloaded class when other references exist will result in them not using overloading.

内部的には, perl のオブジェクト性はリファレンスではなく 参照された先のオブジェクトにあります, メソッドはリファレンスを通してのみ呼び出すことができますが. しかしながら, オーバーロードのオリジナルの実装では オーバーロードに関連するフラグをリファレンスに格納していました, リファレンスが複製される若しくは新しいリファレンスの作成時に設定される時は フラグを中継して複製されます. これは明らかにバグの中にあります - もしオブジェクトをオーバーロードを持っているクラスから 持っていないクラスへとブレスし直すと, 他の既存のリファレンスは(そのまま)オーバーロードされたオブジェクトを 示していると考え, その C コードパスを通り, エラーを投げます. 同じように, 他のリファレンスが存在しているときにオーバーロードされている クラスへとブレスするとオーバーロードを使っていないかのようになります.

The implementation has been fixed for 5.10, but this fix changes the semantics of flag bits, so is not binary compatible, so can't be applied to 5.8.9. However, 5.8.9 has a work-around that implements the same bug fix. If the referent has multiple references, then all the other references are located and corrected. A full search is avoided whenever possible by scanning lexicals outwards from the current subroutine, and the argument stack.

この実装は 5.10 で修正されました, しかしこれはフラグビットの意味を変更してしまいます, そのためバイナリ互換が維持されず, 5.8.9 へは適用できません. けれども, 5.8.9 は同じバグ修正の実装の回避方法があります. 参照される実体が複数のリファレンスを持っているのなら, 全ての他のリファレンスは検索され, 訂正されます. 完全な検索は現在の関数から外にレキシカル及び引数スタックのスキャンによって 可能であればいつでも回避されます.

A certain well known Linux vendor applied incomplete versions of this bug fix to their /usr/bin/perl and then prematurely closed bug reports about performance issues without consulting back upstream. This not being enough, they then proceeded to ignore the necessary fixes to these unreleased changes for 11 months, until massive pressure was applied by their long-suffering paying customers, catalysed by the failings being featured on a prominent blog and Slashdot.

あるよく知られた Linux ベンダーはこのバグ修正の不完全な物を 彼らの /usr/bin/perl に適用し, アップストリームに相談することなく パフォーマンスに関するレポートをそうそうに閉じてしまいました. これは十分ではなく, 彼らはその後そのリリースされていない変更に 対する必要な修正を11ヶ月にわたって無視し続けました, 長く苦しめられた支払い顧客から, 広く知られたブログやスラッシュドットでその不手際が取り上げられた ことに触発されて, 大規模な圧力がかけられるまで.

strict now propagates correctly into string evals strict は文字列 eval にも波及するように

Under 5.8.8 and earlier:

5.8.8 以前において:

    $ perl -e 'use strict; eval "use foo bar" or die $@'
    Can't locate foo.pm in @INC (@INC contains: ... .) at (eval 1) line 2.
    BEGIN failed--compilation aborted at (eval 1) line 2.

Under 5.8.9 and later:

5.8.9 以降において:

    $ ./perl -Ilib -e 'use strict; eval "use foo bar" or die $@'
    Bareword "bar" not allowed while "strict subs" in use at (eval 1) line 1.

This may cause problems with programs that parse the error message and rely on the buggy behaviour.

これはエラーメッセージをパースしていて間違った振る舞いを当てにしていた プログラムで問題となるかもしれません.

Other fixes その他の修正

Platform Specific Fixes プラットフォーム固有の修正

Darwin / MacOS X

OS/2

Tru64

RedHat Linux

Solaris/i386

VMS

Windows

Smaller fixes 小さな修正


New or Changed Diagnostics 新しく追加された及び変更された診断メッセージ

panic: sv_chop %s

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

この新しい致命的なエラーは C ルーティン Perl_sv_chop() に スカラーの文字列バッファにない位置が渡されたときに発生します. これはバグっている XS コードによって引き起こされ, ここからの 修復は出来ません.

Maximal count of pending signals (%s) exceeded

This new fatal error occurs when the perl process has to abort due to too many pending signals, which is bound to prevent perl from being able to handle further incoming signals safely.

この新しい致命的なエラーは perl プロセスが 待機中のシグナルが増えすぎて, これは perl がさらにくるシグナルを安全に処理できるようにしなければ ならなくてアボートする時に発生します.

panic: attempt to call %s in %s

This new fatal error occurs when the ACL version file test operator is used where it is not available on the current platform. Earlier checks mean that it should never be possible to get this.

この新しい致命的なエラーは ACL バージョンファイルテスト演算子が 現在のプラットフォームで提供されていない時に発生します. 早期のチェックでこれは発生しないはずです.

FETCHSIZE returned a negative value

New error indicating that a tied array has claimed to have a negative number of elements.

この新しいエラーはタイされた配列が負の数の要素を持つと主張したことを 示します.

Can't upgrade %s (%d) to %d

Previously the internal error from the SV upgrade code was the less informative Can't upgrade that kind of scalar. It now reports the current internal type, and the new type requested.

これまでの SV アップグレードコードからの内部エラーは少ない情報 Can't upgrade that kind of scalar しか返していませんでした. これは現在の内部タイプ及び要求された新しいタイプを報告します.

%s argument is not a HASH or ARRAY element or a subroutine

This error, thrown if an invalid argument is provided to exists now correctly includes "or a subroutine". [RT #38955]

誤った引数が exists に渡されたときに投げられるこのエラーは, "or a subroutine" を適切に含むようになりました. [RT #38955]

Cannot make the non-overridable builtin %s fatal

This error in Fatal previously did not show the name of the builtin in question (now represented by %s above).

Fatal にあるこのエラーは以前は問い合わせにある組み込みの 名前を表示していませんでした(これは %s で出力されるようになります).

Unrecognized character '%s' in column %d

This error previously did not state the column.

以前のこのエラーはカラムについて言及していませんでした.

Offset outside string

This can now also be generated by a seek on a file handle using PerlIO::scalar.

これは PerlIO::scalar を使っているファイルハンドルに対する seek でも生成されるようになりました.

Invalid escape in the specified encoding in regexp; marked by <-- HERE in m/%s/

New error, introduced as part of the fix to RT #40641 to handle encoding of Unicode characters in regular expression comments.

新しいエラー, 正規表現コメントの Unicode 文字のエンコーディング処理 RT #40641 の修正の一部として導入.

Your machine doesn't support dump/undump.

A more informative fatal error issued when calling dump on Win32 and Cygwin. (Given that the purpose of dump is to abort with a core dump, and core dumps can't be produced on these platforms, this is more useful than silently exiting.)

Win32 及び Cygwin において dump を呼び出したときに より情報を持った致命的なエラーとして発行されます. (dump の目的はコアダンプを生成してアボートすることで, これらのプラットフォームではコアダンプは生成されません, これは静かに終了するよりは役に立つでしょう.)


Changed Internals 内部処理の変更

set magic on localizing/assigning to a magic variable will now only trigger for container magics, i.e. it will for %ENV or %SIG but not for $#array.

localされている/代入されているmagic変数へのset magicは コンテナのmagicのみ起動されるようになります, すなわち, $#array ではなく %ENV 若しくは %SIG になります.

The new API macro newSVpvs() can be used in place of constructions such as newSVpvn("ISA", 3). It takes a single string constant, and at C compile time determines its length.

新しい API マクロ newSVpvs()newSVpvn("ISA", 3) といった 構築の代わりに使います. 単一の文字列定数を受け取り, C のコンパイル時にその長さが決定されます.

The new API function Perl_newSV_type() can be used as a more efficient replacement of the common idiom

新しい API 関数 Perl_newSV_type() は次の一般的な慣用句の より効率的な置き換えとして使えます

    sv = newSV(0);
    sv_upgrade(sv, type);

Similarly Perl_newSVpvn_flags() can be used to combine Perl_newSVpv() with Perl_sv_2mortal() or the equivalent Perl_sv_newmortal() with Perl_sv_setpvn()

同じように Perl_newSVpvn_flags()Perl_newSVpv()Perl_sv_2mortal() 若しくは等価な Perl_sv_newmortal()Perl_sv_setpvn() の連結として使えます.

Two new macros mPUSHs() and mXPUSHs() are added, to make it easier to push mortal SVs onto the stack. They were then used to fix several bugs where values on the stack had not been mortalised.

二つの新しいマクロ mPUSHs() 及び mXPUSHs() が追加されました, これらを使うことで mortal SV をスタックに簡単に積めるようになります. これらはスタックに積まれているけれど mortal 化されていない値に 関連するいくつかのバグを修正するのにも使えるでしょう.

A Perl_signbit() function was added to test the sign of an NV. It maps to the system one when available.

Perl_signbit() 関数が NV の符号テストのために追加されました. これは有効であればシステムから提供されている物に対応します.

Perl_av_reify(), Perl_lex_end(), Perl_mod(), Perl_op_clear(), Perl_pop_return(), Perl_qerror(), Perl_setdefout(), Perl_vivify_defelem() and Perl_yylex() are now visible to extensions. This was required to allow Data::Alias to work on Windows.

Perl_av_reify(), Perl_lex_end(), Perl_mod(), Perl_op_clear(), Perl_pop_return(), Perl_qerror(), Perl_setdefout(), Perl_vivify_defelem() 及び Perl_yylex() は拡張から見えるようになりました. これは Windows において Data::Alias が動作するために必要でした.

Perl_find_runcv() is now visible to perl core extensions. This was required to allow Sub::Current to work on Windows.

Perl_find_runcv() は perl コアの拡張から見えるようになりました. これは Sub::Current が Windows で動作するために必要でした.

ptr_table* functions are now available in unthreaded perl. Storable takes advantage of this.

ptr_table* 関数がスレッドでない perl で提供されるようになりました. Storable はこれを利用します.

There have been many small cleanups made to the internals. In particular, Perl_sv_upgrade() has been simplified considerably, with a straight-through code path that uses memset() and memcpy() to initialise the new body, rather than assignment via multiple temporary variables. It has also benefited from simplification and de-duplication of the arena management code.

内部で多くの小さなクリーンアップが施されました. 特に Perl_sv_upgrade() は出来るだけ単純化され, まっすぐのコードパス, 新しい本体の初期化のために複数の 一時変数から代入するのではなく memset() 及び memcpy() を 使うようになりました. これはアリーナ管理コードの単純か及び 重複除去の利点ももたらしました.

A lot of small improvements in the code base were made due to reports from the Coverity static code analyzer.

コードベースにおける数多くの小さな改善が Coverity 静的コードアナライザ からの報告で施されました.

Corrected use and documentation of Perl_gv_stashpv(), Perl_gv_stashpvn(), Perl_gv_stashsv() functions (last parameter is a bitmask, not boolean).

Perl_gv_stashpv(), Perl_gv_stashpvn(), Perl_gv_stashsv() 関数の正しい使い方とドキュメント (最後のパラメータは 真偽値ではなくビットマスクです).

PERL_SYS_INIT, PERL_SYS_INIT3 and PERL_SYS_TERM macros have been changed into functions.

PERL_SYS_INIT, PERL_SYS_INIT3 及び PERL_SYS_TERM マクロは 関数へと変更されました.

PERLSYS_TERM no longer requires a context. PerlIO_teardown() is now called without a context, and debugging output in this function has been disabled because that required that an interpreter was present, an invalid assumption at termination time.

PERLSYS_TERM はコンテキストを必要としません. PerlIO_teardown() はコンテキスト無しに呼ばれます, そしてこの関数におけるデバッグ出力はそれがインタプリタが 提供されていることを必要とすしてそれは終了時としては 誤った要求であるため無効になりました.

All compile time options which affect binary compatibility have been grouped together into a global variable (PL_bincompat_options).

バイナリ互換に影響する全てのコンパイル時のオプションは グローバル変数 (PL_bincompat_options)へと一緒にグループ化されました.

The values of PERL_REVISION, PERL_VERSION and PERL_SUBVERSION are now baked into global variables (and hence into any shared perl library). Additionally under MULTIPLICITY, the perl executable now records the size of the interpreter structure (total, and for this version). Coupled with PL_bincompat_options this will allow 5.8.10 (and later), when compiled with a shared perl library, to perform sanity checks in main() to verify that the shared library is indeed binary compatible.

PERL_REVISION, PERL_VERSION 及び PERL_SUBVERSION の値は グローバル変数へと戻りました (そして従って共有 perl ライブラリにも 入ります). 加えて MULTIPLICITY においては, perl 実行形式は インタプリタ構造のサイズ(全体, そしてこのバージョン)を記録するように なりました. PL_bincompat_options と共にこれは 5.8.10 (及びそれ以降)に 対して共有 perl ライブラリと共にビルドされたときに main() で 共有ライブラリが本当にバイナリ互換かを検証して確認することを可能にします.

Symbolic references can now have embedded NULs. The new public function Perl_get_cvn_flags() can be used in extensions if you have to handle them.

シンボリックリファレンスは NUL を埋め込めるようになりました. 新しい公開関数 Perl_get_cvn_flags() をその処理が必要であれば 拡張から使えるようになりました.

Macro cleanups マクロの整理

The core code, and XS code in ext that is not dual-lived on CPAN, no longer uses the macros PL_na, NEWSV(), Null(), Nullav, Nullcv, Nullhv, Nullhv etc. Their use is discouraged in new code, particularly PL_na, which is a small performance hit.

コアのコード及び ext 内のXSコードのうち CPAN との二重生活でないものでは, PL_na, NEWSV(), Null(), Nullav, Nullcv, Nullhv, Nullhv etc 等のマクロを使わないようになりました. これらは新しいコードでは推奨されておらず, 特に PL_na は 小さなパフォーマンスへの打撃があります.


New Tests 新しいテスト

Many modules updated from CPAN incorporate new tests. Some core specific tests have been added:

CPAN から更新された多くのモジュールが 新しいテストを組み込みました. いくつかのコアテストが追加されています:

ext/DynaLoader/t/DynaLoader.t

Tests for the DynaLoader module.

DynaLoader モジュールのテスト.

t/comp/fold.t

Tests for compile-time constant folding.

実行時の定数たたみ込みのテスト.

t/io/pvbm.t

Tests incorporated from 5.10.0 which check that there is no unexpected interaction between the internal types PVBM and PVGV.

内部タイプ PVBM 及び PVGV の相互動作に 例外がないことを確認する 5.10.0 から組み込まれたテスト.

t/lib/proxy_constant_subs.t

Tests for the new form of constant subroutines.

新しい形式の定数関数のテスト.

t/op/attrhand.t

Tests for Attribute::Handlers.

Attribute::Handlers のテスト.

t/op/dbm.t

Tests for dbmopen.

dbmopen のテスト.

t/op/inccode-tie.t

Calls all tests in t/op/inccode.t after first tying @INC.

最初に @INC を tie した後に t/op/inccode.t の 全てのテストを呼び出し.

t/op/incfilter.t

Tests for source filters returned from code references in @INC.

@INC のコードリファレンスから帰ってきたソースフィルタのテスト.

t/op/kill0.t

Tests for RT #30970.

RT #30970 のテスト.

t/op/qrstack.t

Tests for RT #41484.

RT #41484 のテスト.

t/op/qr.t

Tests for the qr// construct.

qr// 構築子のテスト.

t/op/regexp_qr_embed.t

Tests for the qr// construct within another regexp.

他の正規表現で構築された qr// のテスト.

t/op/regexp_qr.t

Tests for the qr// construct.

qr// 構築子のテスト.

t/op/rxcode.t

Tests for RT #32840.

RT #32840 のテスト.

t/op/studytied.t

Tests for study on tied scalars.

tie されたスカラーにおける study のテスト.

t/op/substT.t

Tests for subst run under -T mode.

-T モードで実行時の subst のテスト.

t/op/symbolcache.t

Tests for undef and delete on stash entries that are bound to subroutines or methods.

関数若しくはメソッドでなければならないスタッシュエントリにおける undef 及び delete のテスト.

t/op/upgrade.t

Tests for Perl_sv_upgrade().

Perl_sv_upgrade() のテスト.

t/pod/twice.t

Tests for calling Pod::Parser twice.

Pod::Parser が二度呼ばれたときのテスト.

t/run/cloexec.t

Tests for inheriting file descriptors across exec (close-on-exec).

ファイルディスクリプタの exec 経由での継承に関するテスト (close-on-exec).

t/uni/cache.t

Tests for the UTF-8 caching code.

UTF-8 キャッシュコードのテスト.

t/uni/chr.t

Test that strange encodings do not upset Perl_pp_chr().

Perl_pp_chr() がひっくり返らない奇妙なエンコーディングのテスト.

t/uni/greek.t

Tests for RT #40641.

RT #40641 のテスト.

t/uni/latin2.t

Tests for RT #40641.

RT #40641 のテスト.

t/uni/overload.t

Tests for returning Unicode from overloaded values.

オーバーロードされた値から Unicode を返すテスト.

t/uni/tie.t

Tests for returning Unicode from tied variables.

tie された変数から Unicode を返すテスト.


Known Problems 既知の問題

There are no known new bugs.

新しいバグはありません.

However, programs that rely on bugs that have been fixed will have problems. Also, many bug fixes present in 5.10.0 can't be back-ported to the 5.8.x branch, because they require changes that are binary incompatible, or because the code changes are too large and hence too risky to incorporate.

けれども, 修正されたバグを利用していたプログラムは問題を抱える かもしれません. また, 5.10.0 で施されているバグ修正の多くは 5.8.x ブランチにはバックポート出来ません, なぜならその適用には バイナリ非互換を伴う若しくはその変更は長大で組み入れるにはリスクが高い ためです.

We have only limited volunteer labour, and the maintenance burden is getting increasingly complex. Hence this will be the last significant release of the 5.8.x series. Any future releases of 5.8.x will likely only be to deal with security issues, and platform build failures. Hence you should look to migrating to 5.10.x, if you have not started already. Alternatively, if business requirements constrain you to continue to use 5.8.x, you may wish to consider commercial support from firms such as ActiveState.

私たちは制限のあるボランティア作業者のみであり, メンテナンスの労務はますます複雑になっています. 従って今回のリリースが 5.8.x シリーズにおける 最後の大きなリリースとなるでしょう. 5.8.x の今後のリリースは恐らくセキュリティに関する物か プラットフォームにおけるビルド不具合のみの対応となるでしょう. 従って 5.10.x への統合をまだ始めていないのなら考えるべきでしょう. 他の方法としてはビジネス要件が 5.8.x の継続を必要としているのなら, ActiveState といった法人からの商用サポートを望むかもしれません.


Platform Specific Notes プラットホーム固有の問題

Win32

readdir(), cwd(), $^X and @INC now use the alternate (short) filename if the long name is outside the current codepage (Jan Dubois).

readdir(), cwd(), $^X 及び @INC は 長い名前が現在のコードページ外だった場合に代用の(短い)ファイル名を 使います (Jan Dubois).

Updated Modules 更新されたモジュール

OS/2

Updated Modules 更新されたモジュール

VMS

Updated Modules 更新されたモジュール


Obituary 死亡告知

Nick Ing-Simmons, long time Perl hacker, author of the Tk and Encode modules, perlio.c in the core, and 5.003_02 pumpking, died of a heart attack on 25th September 2006. He will be missed.

長い間 Perl ハッカーであり, Tk 及び Encode モジュール, コアにおける perlio.c の作者, そして 5.003_02 pumpking であった Nick Ing-Simmons は心臓発作により2006年9月25日にこの世を去りました. 彼の死は惜しまれます.


Acknowledgements 謝辞

Some of the work in this release was funded by a TPF grant.

このリリースにおけるいくつかの作業は TPF grant からの資金によります.

Steve Hay worked behind the scenes working out the causes of the differences between core modules, their CPAN releases, and previous core releases, and the best way to rectify them. He doesn't want to do it again. I know this feeling, and I'm very glad he did it this time, instead of me.

Steve Hay はコアモジュールと, そのCPANリリースと, 前のコアリリースとの 違いを調べ, それらをただす最適解を探してくれました. でももう一度はやりたくないそうです. 今回私にかわってやってくれたことを とてもうれしく思います.

Paul Fenwick assembled a team of 18 volunteers, who broke the back of writing this document. In particular, Bradley Dean, Eddy Tan, and Vincent Pit provided half the team's contribution.

Paul Fenwick は 18 のボランティアチームのとりまとめをして, このドキュメントを書いた後に解いてくれました. 特に, Bradley Dean, Eddy Tan そして Vincent Pit は チームの貢献の半分を提供してくれました.

The crack Berlin-based QA team of Andreas König and Slaven Rezić tirelessly re-built snapshots, tested most everything CPAN against them, and then identified the changes responsible for any module regressions, ensuring that several show-stopper bugs were stomped before the first release candidate was cut.

Andreas König 及び Slaven Rezić の crack Berlin ベースのQAチームは休むことなくスナップショットを 更新し続け, それらの CPAN のほとんどをテストし, どのモジュールでのレグレッションテストをすべき変更かと特定し, 最初のリリース候補が出されるまでにいくつかの最悪なバグをつぶしてくれました.

The other core committers contributed most of the changes, and applied most of the patches sent in by the hundreds of contributors listed in AUTHORS.

他のコアコミッタも変更の多くを提供してくれ, AUTHORS に上げられている数多くの提供者から送られてきた パッチを適用してくれました.

And obviously, Larry Wall, without whom we wouldn't have Perl.

そして言うまでもないことですが, Larry Wall に, 彼無しには私たちは Perl をもてませんでした.


Reporting Bugs バグ報告

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://bugs.perl.org. There may also be information at http://www.perl.org, the Perl Home Page.

もしバグと思われるものが見つかったら, comp.lang.perl.misc ニュース グループに最近投稿された記事や http://bugs.perl.org にある perl バグデータベースを確認してください. Perl ホームページ, http://www.perl.org にも情報はあります.

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

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


SEE ALSO 関連項目

The Changes file for exhaustive details on what changed.

Changes には完全な変更箇所があります.

The INSTALL file for how to build Perl.

INSTALL には Perl をビルドする方法があります.

The README file for general stuff.

README には一般的な事項があります.

The Artistic and Copying files for copyright information.

Artistic 及び Copying には著作権情報があります.


TRANSALTE TO JAPANESE 和訳

 山科 氷魚 (YAMASHINA Hio) <hio@hio.jp>

Origlnal distribution is perl VERSION 5.8.9-RC1. Translated at 2008-11-11.

原典: perl VERSION 5.8.9-RC1. 翻訳日: 2008-11-11.

perldelta - what is new for perl v5.8.9

索引

perldelta - what is new for perl v5.8.9