=head1 名前 perldelta - perl v5.8.9 の新機能 =head1 説明 このドキュメントでは 5.8.8 リリースと 5.8.9 リリースとでの相異点を 説明します. =head1 非互換となる修正 5.8.8 と意図的な非互換はありません. もしなにか非互換と思われる事項が ありましたら, それらはバグでしょう. ぜひ報告をお願いします. =head1 コアの機能拡張 =head2 Unicode 文字データベース 5.1.0. Perl 5.8 に含まれる Unicode 文字データベースのコピーは 4.1.0 から 5.1.0 に更新されました. 主な変更点は L を参照してください. =head2 ディレクトリハンドルに対する stat 及び -X ディレクトリハンドルに対して C 及び C<-X> ファイルstat演算を 行えるようになりました. ディレクトリ及びファイルハンドルが共に ベアワードだった場合には, どちらになるかはあいまいです. その様なときにはファイルハンドルとしての動作が優先されます. どちらでも C<*FILE> ファイルハンドルのように C<*FILE{IO}> として扱われます. =head2 @INC でのソースフィルタ フックによって開かれて返されたファイルハンドルに対して ソースフィルタを加えることで @INC での関数によるフックの メカニズムを強化できるようになりました. この機能は長い間予定は立てられていましたが, これまでは実装されていませんでした. 詳細は L を参照してください. (Nicholas Clark) =head2 定数畳み込み時の例外 定数畳み込み処理が例外ハンドラに補足されるようになり, 畳み込み時に例外が投げられた場合には(例えば 0/0 の評価時), perl はプログラム全体を中断するのではなく その時点の optree を維持するようになりました. この変更 なしには, プログラムは例外を生成する式を持っているプログラムを, たとえその式が実行時に到達しない箇所であったとしても コンパイルできません. (Nicholas Clark, Dave Mitchell) =head2 C 特定のバージョンより古い perl を使いたいときに C に続けてバージョン番号を指定することで できるようになりました. =head2 内部の UTF-8 キャッシュコードの改善 文字列に於いて文字オフセットのために算出された UTF-8 バイトオフセット のキャッシュを行うコードが書き直されました. いくつかのバグは落ち着き削除され, そしてコードはそこに持っている情報をより良く, そして高速に使えるように なりました. 特に, 文字列のオフセットを計算する前に 文字列の最後まで計算しないために, 長い文字列に於いて高速になりました. また実行時に疑わしい問題の原因かどうかを確認できるように, キャッシュ部分のコードを無効にできるようになりました. =head2 実行時再配置インストール F は実行時に再配置可能な perl tree の設置をサポートしました. L を参照してください. =head2 新しい内部変数 =over 4 =item C<${^CHILD_ERROR_NATIVE}> この変数は最後のパイプクローズ, バックティックコマンド(C<``>), C若しくはCの成功した呼び出し, 若しくはC演算子 からのネイティブなステータスを返します. 詳細は L を参照してください. (Gisle Aas より提供) =item ${^UTF8CACHE} この変数は内部の UTF-8 オフセットキャッシュコードの状態を 制御します. 1で有効に(デフォルト), 0 で無効に, -1 で線形探索の結果と比較することでキャッシュコードのデバッグを行い, それ以外の値ではpanicします. =back =head2 C がオーバーライド可能になりました 組み込み関数 readpipe() がオーバーライド可能になりました. これによってこれに対応する演算子, C (a.k.a. C<``>) もオーバーライドすることができます. =head2 簡単な例外処理マクロ Perl 5.8.9 (及び 5.10.0 より以降)では XS モジュールでの とても基本的な例外処理を行うためのいくつかのマクロが提供されます. C するかもしれない処理を呼ぶけれど, Perl に制御を戻す前に クリーンアップ処理を行いたい時にこれらのマクロを使うことが出来ます. 詳細は L を参照してください. =head2 -D オプションの強化 =over =item * C<-Dq> で C<-D> 実行時における I メッセージを抑制できます. =item * C<-Dl> で内部命令におけるループの突入及び脱出, そしてジャンプレベルの pop を ログに出すようになります. =item * C<-Dv> でトレース出力の一部としてそのプロセスIDを表示するようになります. =back =head2 XS補助による SWASHGET Unicode プロパティや transliteration mapping を得るために 正規表現エンジンが使ういくつかの pure-perl コードが XS で再実装されました. (SADAHIRO Tomoyuki) =head2 定数関数 インタプリタは埋め込み可能な定数のよりもっとメモリ効率の良い形式を 内部的にサポートしました. シンボルテーブルに定数値へのリファレンスを 格納することは定数関数を参照する完全なタイプグロブと等価ですが, 400 バイトのメモリ削減となります. このproxyされた定数関数は 必要であれば実際のタイプグロブへと自動的にアップグレードされます. ここで取ったアプローチは既に行われている関数スタブ宣言において 完全なタイプグロブを置く代わりに単なるスカラーを格納する 空間最適化と似ています. しかしながら, シンボルテーブルにタイプグロブ以外の物が入っていることを (悪いことに)予期していない既存のコードの下位互換を助けるために, コアではれぐれっしょんてすと以外ではこの機能は使っていません. 5.005 からは, プロトタイプ付きの関数のスタブはシンボルテーブルにプレインテキストとして 格納され, プロトタイプのないスタブは数値 -1 で格納されます, つまりコアがシンボルテーブルにタイプグロブのみを置くと前提にしている コードは, 10年にわたって誤った前提を取っていることになります. =head1 新しいプラットフォーム 追加されたコンパイルサポート: =over =item * DragonFlyBSD =item * MidnightBSD =item * MirOS BSD =item * RISC OS =item * Cray XT4/Catamount =back =head1 モジュールとプラグマ =head2 新しいモジュール =over =item * C はプラガブルなサブモジュールを受け付ける簡単な フレームワークです. バンドルされたバージョンは 3.8 です. =item * C は C<$]> で示される perl バージョンを キーとするハッシュのハッシュです. バンドルされたバージョンは 2.12 です. =item * C は Microsoft Windows でコアに採用されました. =back =head2 更新されたモジュール =over =item * C は 0.09 へと更新されました. =item * C は 5.67 へと更新されました. =item * C は 1.06 へと更新されました. =item * C は 1.06 へと更新されました. =item * C は 1.09_01 から 1.19 へと更新されました. =over =item * 新しい PAD 関連の抽象マクロ C, C, C, C が提供されました, これらは 5.10.0 以降との格納方法の違いを隠します. =item * C の為の C が提供されます. =item * C が提供されます, 5.10 より前の perl では常に真を返します. =item * 新しい型 C がメソッド C, C 及び C と共に追加されました. =item * C フラグが proxy された定数関数がインポート された際に正しくセットされるようになりました. =item * C の処理におけるバグが修正されました. =item * C が C ではなく C を返すようになります. C 及び C は XSUB では NULL を返すようになります. C 及び C は XSUB 以外では 0 を返します. =back =item * C は 1.05 へと更新されました. =item * C は 0.76 へと更新されました. =over =item * 新しいオプション B<-src> は(nextstat OP からの)各文を, それが生成されたソースコードでの最初の行を前置させて 表示させます. =item * 新しいオプション C<-stash="somepackage">, "somepackage" を C し, その名前空間にある各関数を 表示します. =item * ヒントシンボルの詳細に関するドキュメントが追加されました. =back =item * C は 1.05 へと更新されました. =item * C は 0.87 へと更新されました. =over 4 =item * C を正しく再生成できるようになりました. =item * C<''->()>, C<::()>, C, I<等.> を正しく処理できるように なりました [RT #43010]. これらに類似する構文のパースにおける全てのバグは修正されました. perl -MO=Deparse -e '"my %h = "->()' perl -MO=Deparse -e '::->()' perl -MO=Deparse -e 'sub :: {}' perl -MO=Deparse -e 'package a; sub a::b::c {}' perl -MO=Deparse -e 'sub the::main::road {}' =item * 内部で自動的に設定される C<$^H{v_string}> は deparse されB<ません>. =back =item * C は 1.11 へと更新されました. =item * C は 1.05 へと更新されました. =item * C は 2.13 へと更新されました. =over 4 =item * base.pm でのモジュールのロード時にはそのモジュールのグローバルな C<$SIG{__DIE__}> をマスクします. =item * C<@ISA> に全部のクラスを一度に push します. =back =item * C は 1.10 へと更新されました. =item * C は 0.23 へと更新されました. =item * C は 1.10 へと更新されました. 引数のバックトレースコードは C を I<"undef"> と文字列で表示します. =item * C は 3.42 へと更新されました. =item * C は 1.17 へと更新されました. =item * C は 1.9301 へと更新されました. =item * C は 3.29 へと, (VMSを含む)いくつかのプラットフォーム関係の 強化と共に更新されました. =item * C は 2.121_17 へと更新されました. =over =item * pure Perl 版でハッシュイテレータの現在値を修正 [RT #40668] =item * パフォーマンスの強化, Win32 のように C の C の 繰り返しの呼び出しが遅い環境で顕著になります. =back =item * C は 1.817 へと更新されました. =item * C は 20080331.00 へと更新されました. =item * C は 1.04 へと更新されました. =item * C は 3.14 へと更新されました. =item * C は 1.16 へと更新されました. =item * C は 1.15 へと更新されました. =item * C は 1.02 へと更新されました. =over =item * ディレクトリハンドルを閉じる際に C<$.>, C<$@>, C<$!>, C<$^E>, 及び C<$?> を local するようになりました, 既に閉じられている時の警告の副作用が漏れるのを抑制します. =back =item * C は 1.09 へと更新されました. C はデフォルトでないファイル拡張子を持ったファイルから ローダブルオブジェクトをダイナミックにロードできるようになりました. =item * C は 2.26 へと更新されました. C は Solaris の "646" エンコーディング(ASCII として よりよく知られています)に対する修正を含んでいます. =item * C は 1.10 へと更新されました. =item * C は 5.63 へと更新されました. =item * C は 1.15 へと更新されました. =item * C は 0.21 へと更新されました. =item * C は 1.28 へと更新されました. =item * C は 1.51 へと更新されました. =item * C は 6.48 へと更新されました. =over =item * C 及び C 設定のサポート. =back =item * C は 1.55 へと更新されました. =item * C は 2.19 へと更新されました. =item * C は 1.06 へと更新されました. =over =item * C にあるビルトインを fatal にさせれるように. =back =item * C は 2.77 へと更新されました. =item * C は 2.13 へと更新されました. =over 4 =item * 3-引数 open を使うようになりました. =back =item * C は 1.13 へと更新されました. =item * C は 1.06 へと更新されました. =over =item * ブレース内のブラケットに対して誤った結果を返すバグが修正されました. =back =item * C は 2.04 へと更新されました. =item * C は 3.29 へと更新されました. =over 4 =item * 誤った引数の処理の改善. =item * (VMS 及び Cygwin を含む)いくつかのプラットフォーム関係の改善, 共に相対な引数を処理する際の C の最適化. =back =item * C は 0.20 へと更新されました. =item * C は 1.49 へと更新されました. =item * C は 1.07 へと更新されました. =item * C は 1.09 へと更新されました. =item * C は 2.37 へと更新されました. =item * C は 0.06 へと更新されました. =item * C は 1.23 へと更新されました. C での C 呼び出し回数の削減. =item * C は 2.00 へと更新されました. =item * C は 0.61 へと更新されました. =over =item * F<.par> ファイルロードに関する警告の抑制. =back =item * C は 1.20 へと更新されました. =item * C は 1.13 へと更新されました. =item * C は 1.60 へと更新されました. =item * C は 1.89 へと更新されました. =item * C は 0.22 へと更新されました. =over 4 =item * 新しいメソッド C の実装. =back =item * C, C は 1.54 へと更新されました. =item * C は 1.07 へと更新されました. =over =item * GDBM 互換ヘッダを使っているシステムでの F 処理の改善. =back =item * C は 2.35 へと更新されました. =item * C は 0.61 へと更新されました. =over =item * C, C ブロック, 及びオーバーロードされた文字列化で C を動作させた際のいつかのバグの修正. =back =item * C は 1.06 へと更新されました. =item * C は 0.11 へと更新されました. =item * C は 0.06 へと更新されました. =over 4 =item * [RT #40267] C は readonly 状態を考えない // C doesn't respect readonly-ness. =back =item * C は 0.05 へと更新されました. =item * C は 1.09 へと更新されました. =item * C は 1.35 へと更新されました. =item * C は 1.35 へと更新されました. =item * C は 1.15 へと更新されました. =over =item * C と重複する C 定数は, C で 重複させるのではなく C からインポートされ再エクスポートされるように なります. =item * C は空のディレクトリを削除出来るようになりました. =item * C は複数回の呼び出しに安全になりました. =item * C が追加されました, サポートされているシステムで POSIX realtime signal 機能へのアクセスを提供します. =back =item * C は 0.06_01 へと更新されました. =item * C は 2.16 へと更新されました. =item * C は 1.06 へと更新されました. =item * C は 1.17 へと更新されました. =item * C は 0.72 へと更新されました. =item * C は 1.04 へと更新されました. =item * C は 1.81 へと更新されました. =over =item * これは C の楽観的な使い方を修正します. =back =item * C は 2.19 へと更新されました. =item * C は 2.13 へと更新されました. =item * C は 0.27 へと更新されました. =item * C は 1.12 へと更新されました. =item * C は 1.12 へと更新されました. =item * C は 1.03 へと更新されました. =item * C は 0.80 へと更新されました. =item * C は 2.64 へと更新されました. =over =item * newline を処理できるようになりました. =back =item * C は 0.80 へと更新されました. =item * C は 0.80 へと更新されました. =item * C は 1.98 へと更新されました. =item * C は 3.27 へと更新されました. =item * C は 3.03 へと更新されました. =item * C は 2007.1117 へと更新されました. =item * C は 2006.1117 へと更新されました. =item * C は 2.01 へと更新されました. =item * C は 2.09 へと更新されました. =item * C は 2.11 へと更新されました. =over =item * 複雑な構造(例えばハッシュのハッシュ)をキューに追加できるようになりました. =item * 一回で複数個取り出せるようになりました. =item * キューを監視及び操作する新しいメソッドが追加されました: C, C 及び C. =back =item * C は 1.1 へと更新されました. =over =item * C はその結果を正しくキャッシュするようになりました. =back C は 1.38 へと更新されました. =item * C は 1.03 へと更新されました. =item * C は 1.1901 へと更新されました. =item * C は 1.9715 へと更新されました, 様々な(VMSを含む)ビルドの改善及び雑多な(HP-UX 11 ia64を含む) プラットフォーム関係のバグ修正. =item * C は 1.71 へと更新されました. =over =item * 新しいスレッド状態情報メソッド: C, C 及び C. C メソッドは実行中若しくはjoin可能なスレッドを 返すように強化されました. =item * 新しいスレッドシグナルメソッド: C =item * スレッドスタックサイズを指定する機能を追加. =item * スレッド終了時の振る舞いを制御する機能の追加. 新しく C メソッドを 追加. =back =item * C は 1.26 へと更新されました. =over =item * 1つの内部構造及び回り道の削減により軽量化及び高速化. =item * ユーザロックはより安全に格納されるように. =item * 新しい関数 C は共有されている物はそのまま, 共有されていない物は深く複製してオブジェクトのコピーを作ります. =item * C メソッドが追加されました. =back =item * C は 1.02 へと更新されました. =item * C は 0.25 へと更新されました. =item * C は 0.38 へと更新されました. =over 4 =item * 新しい C 関数が追加されました, これは現在のプロセスに対する 正規の Windows プロセス識別子を, fork 先で呼ばれていても返します. =back =item * C は 0.10 へと更新されました. =item * C 及び C は内部用のみで, 従ってインストールされなくなります. 多くのテストが C に追加されました. =back =head1 ユーティリティの変更点 =head2 デバッガが 1.30 へと更新されました Andreas KEnig はデバッガの履歴を保存及び読み込む2つの機能を 提供してくれました. =head2 F Perl 5.8.9 は新しいユーティリティ F を加えました, これは F と似たような物ですが, バグ報告ではない物を作者及び Perl のメンテナに送ります. バグ報告がこないとちょっとがっかりしたりします - これが何か変えてくれると思います. =head2 F F はコア以外のモジュールの報告かをチェックし, 代わりにそれを CPAN author に送るかどうかを提案します. =head2 F =over =item * 空の文字列を定数として定義しない [RT #25366] =item * C の例. =back =head2 F =over 4 =item * C<#include> 文での C<""> 及び C<E>> クオートの 違いを区別するようになります. =item * C<#if defined A || defined B> に対するちゃんと正しいコードを 生成します [RT #39130] =back =head1 新しいドキュメント いつものように, このドキュメントは訂正, 明確化及びその他の nitfixes の 共有を受け入れます. インデックス用に C<< X<...> >> タグが追加されます. L は Juerd Waalboer によって書かれた Unicode に関連する用語及び Perl スクリプトにおいて Unicode を正しく扱う方法です. L はユーザ定義プロパティの節が更新されました. L は特定のエンコーディングとして正しくないデータを 検出する例を更新しました. L は一層の情報に沿って Perl コミュニティの 概要を提供します. L は Perl のコア機能のための擬似的な名前空間を記述しています. =head1 既存のドキュメントに対する修正 L に I<廃止されたモジュール及び機能> 及び I<取り除かれるモジュール> が追加されました. L は更新され, smoke testing の情報が追加されました. The Perl FAQs (F..F) が更新されました. L は C<\w>, C<\d>, 及び C<\s> に関するより詳細を更新しました. L はデバッガの呼び方に関する情報を更新しました. L ドキュメントは C 及び C の引数における I<アンパサンド付きの関数>及び警告に関するいくつかの用語を更新しました. L では疑似プロセス内における C の制限を記述しました. L: =over =item * C 及び C における節を修正しました. =item * C 関数で C