[pod] [xml]

名前

perldelta - perl v5.9.5 更新情報

説明

このドキュメントでは開発リリース 5.9.4 と 5.9.5 の間での変更点を 説明します. 5.8.0 から 5.9.4 までの変更点は perl590delta, perl591delta, perl592delta, perl593delta そして perl594delta を 参照してください.

互換性の無い変更点

汚染(taint)と printf

perl が taint モードで実行されているとき, printf() 及び sprintf() は汚染されている(tained)書式引数を 拒否するようになりました. (Rafael Garcia-Suarez)

undef とシグナルハンドラ

undef $SIG{FOO} によるシグナルハンドラのundef化 若しくは削除は 'DEFAULT' の設定と等価になりました. (Rafael)

defined() での構造体及び配列/ハッシュのデリファレンス

defined @$foo 及び defined %$barstrict 'refs' の影響に入るようになります(つまり, $foo 及び $bar は その場所において適切なリファレンスである必要があります).

(とはいっても, defined(@foo) 及び defined(%bar) は おすすめできない構文ですが.)

(?p{}) は削除されました

perl 5.8 で非推奨となっている正規表現構成子 (?p{}) は削除されました. (??{}) を使うようにしてください. (Rafael)

擬似ハッシュは削除されました

擬似ハッシュのサポートは Perl 5.9 から削除されました. (fields プラグマは残っていますが違う実装を使っています.)

バイトコードコンパイラ及び perlcc の削除

perlcc, バイトローダ及びそのサポートモジュール(B::C, B::CC, B::Bytecode, etc.)は perl ソースに同梱されなく なりました. これらの実験的なツールは確実な動作をせず, また perl 開発と連携して維持するボランティアもいないために 壊れたバージョンを入れておくのではなく削除されることに 決定しました. これらのモジュールの最新版は perl 5.9.4 に あります.

しかし B コンパイラフレームワークは他に役立つモジュール( 中でもとりわけ B::Deparse や B::Concise)のために perl コアでサポートは続けられます,

JPL の削除

JPL (Java-Perl Linguo) は perl ソース tar ボールから 削除されました.

再帰継承の早期検出

どこかのパッケージで @ISA を再帰継承となる形に変更すると その場で例外を発生させるようになりました.

これまではメソッドの解決や $foo->isa($bar) の ルックアップ等で再帰継承を使うまでは例外は発生され ませんでした.

コアの強化

正規表現

_ プロトタイプ

新しいプロトタイプ文字が追加されました. _ がそれで, $ (スカラー)と等価ですが, 対応する引数が提供されなかったときに デフォルトとして $_ が使われます. 引数の省略方法からこれはプロトタイプの最後か, セミコロンの前でのみ使うことができます.

これの結果小さな非互換があります: prototype() 関数はいくつかの組み込み関数 に対して適切に _ を返すようになります( 例えば prototype('CORE::rmdir')). (Rafael)

UNITCHECK ブロック

BEGIN, CHECK, INIT 及び END に加えて 特殊コードブロック UNITCHECK が導入されました.

特殊な目的のために便利な CHECK 及び INIT ブロックはメインプログラムのコンパイルと 実行の間で常に実行され, つまりコードが 実行時にロードされる場合には使うことが できません. 一方, UNITCHECK ブロックはそれが 定義されている単位(unit)がコンパイルされた直後に 実行されます. より詳しい情報は perlmod を 参照してください. (Alex Gough)

readpipe() がオーバーライド可能に

組み込み関数 readpipe() がオーバーライド可能 になりました. これをオーバーライドすることに よって, これに対応する演算子, qx// (a.k.a. ``) もオーバーライドできます. さらに引数が渡されな かったときにはデフォルトで $_ が使われるように なりました. (Rafael)

readline() のデフォルトの引数

readline() は引数が渡されなかったときに デフォルトで *ARGV をとるようになりました. (Rafael)

UCD 5.0.0

Perl 5.9 に含まれる Unicode Character Database の コピーはバージョン 5.0.0 にアップデート されました.

スマートマッチ

スマートマッチ演算子 (~~) はデフォルトで 有効になりました (use feature で有効に する必要はなくなりました). (Michael G Schwern)

feature の暗黙なロード

最低限の perl バージョンを(use VERSION 構成子で) 5.9.5 以上に要求することで feature プラグマが暗黙に ロードされるようになりました.

モジュールとプラグマ

新しいプラグマ, mro

新しいプラグマ, mro (メソッド解決順序; Method Resolution Order)が追加されました. これを使うことで クラス毎に複数の継承階層を持っているときに継承 されたメソッドの探索に使うアルゴリズムを切り替える ことができます. デフォルトの MRO は変更されていません (DFS, 深さ優先探索; Depth First Search). 他に利用できるMROには C3 アルゴリズムがあります. 詳細は mro を参照してください. (Brandon Black)

クラス階層探索の実装の変更によって, *ISA グラブを undef にするようなコードでは恐らく 破損します. *ISA を undef にすることは @ISA 配列のマジックを削除する副作用を伴うため 第一に行うべきではありません.

bignum, bigint, bigrat

3つの数値プラグマ bignum, bigint そして bigrat はレキシカルスコープになりました. (Tels)

Math::BigInt/Math::BigFloat

多くのバグが修正されました; 注目すべきものは、NaN との比較で、 未定義値に関する警告を行わなくなりました。

新しいものは以下の通りです:

また、以下のメソッドの対応も追加されました:

さらに、デフォルトの数学バックエンド (Calc (Perl) と FastCalc (XS)) は、 64 ビット整数か long double に対応している Perl では、7 桁ではなく 9 桁の数値の保管に対応しました。 これは、数値演算のスケールが向上し、従って、本当に大きな数値に対して より速くなることを意味します。

新しいコアモジュール

モジュールの変更

ユーティリティの変更点

cpanp

cpanp, CPANPLUS シェルが追加されました. (CPANPLUS 操作の ヘルパである cpanp-run-perl も追加されましたが, これは 直接使うためのものではありません).

cpan2dist

cpan2dist は CPANPLUS に同梱の新しいユーティリティです. これは CPAN モジュールから配布物(若しくはパッケージ)を 作るためのツールです.

pod2html

pod2html の出力は CSS を使ってカスタマイズできるように 強化されました. 幾つかの整形における問題点は修正されました. (Hari Aalto)

ドキュメント

新しいマニュアルページ, perlunifaq

新しいマニュアルページ, perlunifaq (Perl ユニコード FAQ)が 追加されました. (Juerd Waalboer)

パフォーマンス強化

インストールと Configure の向上

C++ compatibility

perl 及びコア XS モジュールを様々な C++ コンパイラ互換に するよう努力が行われました(けれどもテストされた幾つかの プラットフォームでの幾つかのコンパイラでは完全では ありませんでした).

Visual C++

Microsoft Visual C++ 2005 でコンパイルできるようになりました.

Win32 におけるstaticビルド

Win32 において perl59.dll に依存しない perl-static.exe をビルドできるようになりました. 詳細は Win32 Makefiles を参照してください. (Vadim Konovalov)

win32 builds

(win32 ビルド)

全ての win32 ビルド (MS-Win, WinCE) はマージされ、整理されました。

d_pseudofork and d_printf_format_null

d_pseudoforkd_printf_format_null)

Config モジュールで $Config{d_pseudofork} として提供 される新しいコンフィギュレーション変数が追加されました, これによって実際の fork() と Windows プラットフォームにおける 疑似 fork によるサポートを区別できます.

新しいコンフィギュレーション変数 d_printf_format_null が追加されました; printf 的なフォーマットで NULL が許されるかどうかを示します。

Help

(ヘルプ)

Configure -h はもっとも有用なオプションに拡張されました。

'Whoa there' メッセージを大幅に減らしました。

64bit systems

(64 ビットシステム)

64 ビット(専用)システムの検出を向上させ、それに応じた(ライブラリ)パスを 全て設定するようになりました。

Ports

MidnightBSD での動作報告を得ました.

Cray XT4 Catamount/Qk への対応を追加しました。

RedHat と GenToo からのベンダーパッチをマージしました。

バグ修正抜粋

PerlIO::scalar は読み込み専用スカラーへの書き込みを 妨げるようになりました. さらに PerlIO::scalar ベースの ファイルハンドルで seek() がサポートされるようになりました, 元になる文字列は必要なだけゼロ埋めされます. (Rafael, Jarkko Hietaniemi)

study() は UTF-8 文字列では動作していませんでしたが, 間違った結果をもたらしていました. これは UTF-8 データ では何もしないようになります. (Yves Orton)

シグナル SIGILL, SIGBUS そして SIGSEGV は常に "unsafe" 方式で配送されるようになります(対して他の シグナルは perl インタプリタが安定した状態に達するまで 遅延されます; perlipc/Deferred Signals (Safe Signals) を参照してください). (Rafael)

新しいモジュール若しくはファイルが @INC フック経由で ロードされた時そしてこのフックが %INC にファイル名のエントリを 設定した時には __FILE__ は %INC エントリの内容に応じて 設定されます. (Rafael)

-w 及び -t スイッチは警告カテゴリがアクティブに されているかを散らかすこと無くつかえるようになりました. (Rafael)

:utf8 PerlIO レイヤ設定を持っているファイルハンドルの dup は dup されたファイルハンドルのレイヤから適切に 運ぶようになりました. (Rafael)

変数でキーを与えられたハッシュ要素の local 化は local() の 影響内で変数が変更される(local $h{$x};++$x等)と適切に動いて いませんでした. (Bo Lindbergh)

新しい及び変更された診断メッセージ

非推奨事項

2つの非推奨警告が追加されました: (Rafael)

    Opening dirhandle %s also as a file
    Opening filehandle %s also as a directory
    dirhandle %s を file としても開こうとしています
    filehandle %s を directory としても開こうとしています

変更された内部処理

無名ハッシュ及び配列の構築子は optree 内で 3 つの op ではなく 1つの op を取るようになりました, そして pp_anonhash 及び pp_anonlist は op が OPf_SPECIAL フラグを持つ時, ハッシュ /配列へのリファレンスを返します.

既知の問題

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

バグの報告方法

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

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

関連項目

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

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

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

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