[pod] [xml]

NAME

perldelta - perl v5.10.1 での変更点

DESCRIPTION

このドキュメントは 5.10.0 リリースと 5.10.1 リリースの変更点を記述しています。

もしそれよりも前のリリース、例えば 5.8.8 等からアップデートするのなら、 5.8.8 と 5.10.0 との違いが書かれている perl5100delta を読んでおいた方が よいでしょう。

Incompatible Changes

(互換性のない変更)

Switch statement changes

(switch 文の変更)

given/when による複雑な式の扱いが拡張されました。 新しく、when がスマートマッチングの式ではなく真偽値として 引数を解釈する場合が二つあります。

次の章では、スマートマッチング演算子の文法に関するさらなる変更と、 当然のながら暗黙にスマートマッチングを使っている switch 文の 振る舞いの変更について詳述します。

Smart match changes

(スマートマッチングの変更)

Changes to type-based dispatch

(型ベースの発行(dispatch)への変更)

スマートマッチング演算子 ~~ はもはや可換性を持ちません。 スマートマッチングの振る舞いは、まず右側の引数の型に依存します。 さらに、その文法は一貫性と有用性をより高めるために調整されました。 一般的な後方互換性は維持されている一方、いくつかの変更点には 注意しなければなりません:

スマートマッチング演算子に関する完全な発行テーブルは perlsyn/"Smart matching in detail" にあります。

Smart match and overloading

(スマートマッチングとオーバーロード)

一番右の引数の型に依存するという発行ルールによれば、 演算子の右側にオブジェクトのオーバーロード ~~ が現れたとき、 オーバーロードルーチンは(3 番目の引数に真の値を設定して; overload を 参照してください) 常に呼び出されます。 しかし、オブジェクトが左側に現れたとき、オーバーロードルーチンは 一番右の引数が単純なスカラの場合にのみ呼び出されます。 これによって配列に対するスマートマッチングの分配性や 複合型(コードリファレンス、ハッシュ、正規表現)に対するその他の振る舞いは 壊れません。 従って、スマートマッチングのためのローバーロードルーチンの作者は ほとんどの場合、スカラの比較と、可能性があるなら文字列化のオーバーロードに 関してのみ心配する必要があります; その他の一般的な場合は 一貫性を持って自動的に扱われます。

~~ は、オーバーロードしていないオブジェクトに対して動作しなくなりました (オブジェクトの基礎となる構造に依存することを避けるためです)。 しかし、オブジェクトが文字列化か数値化演算子をオーバーロードしていて、 オーバーロードのフォールバックが有効の場合は、通常通りに使われます。)

Other incompatible changes

(その他の互換性のない変更)

Core Enhancements

(コアの拡張)

Unicode Character Database 5.1.0

Perl 5.10.1 に含まれる Unicode Character Database は 5.0.0 から 5.1.0 に 更新されました。 注目するべき変更点については http://www.unicode.org/versions/Unicode5.1.0/#NotableChanges を 参照してください。

A proper interface for pluggable Method Resolution Orders

(プラグ可能なメソッド解決順序のための適切なインターフェース)

Perl 5.10.1 から、デフォルト (線形深さ優先検索) 以外のメソッド解決順序を 追加して使うための新しいインターフェースがあります。 5.10.0 で追加された C3 メソッド解決順序は、Perl 空間でのインターフェースの 変更なしにプラグインとして再実装されました。 さらなる情報については perlmroapi を参照してください。

The overloading pragma

(overloading プラグマ)

このプラグマは、演算子の一部あるいは全部を、レキシカルに無効化あるいは 有効化します。 (Yuval Kogman)

Parallel tests

(並列テスト)

コア配布は、Unix 風プラットフォームでは退行テストを並列に実行できるように なりました。 make test を実行する代わりに、環境変数 TEST_JOBS に並列に 実行するテスト数を設定して、make test_harness を実行します。 Bourne-風のシェルでは、これは以下のようにします

    TEST_JOBS=3 make test_harness  # Run 3 tests in parallel

並列 make 自身ではなく、環境変数を使います; なぜなら TAP::Harness はここの競合しないテストスクリプト自身を計画できる必要が ありますが、make ユーティリティのジョブスケジューラと相互作用するための 標準的なインターフェースはないからです。

いくつかのテストスクリプト(特に ext/IO/t/io_dir.t)は並列に実行すると 失敗するかもしれないことに注意してください。 もし必要なら、失敗したスクリプトを順番に再実行して、失敗しなくなることを 確認してください。

DTrace support

(DTrace 対応)

DTrace へのいくらかの対応が追加されました。 INSTALL の "DTrace support" を参照してください。

Support for configure_requires in CPAN module metadata

(CPAN モジュールメタデータの configure_requires への対応)

CPANCPANPLUS は、ほとんどの最近の CPAN 配布が含んでいる メタデータファイル META.ymlconfigure_requires キーワードに 対応しました。 これにより、Makefile.PL や Build.PL が実行される前に インストールされていなければならない設定の事前条件を指定できます。

CPAN で配布するときに configure_requires を指定する方法については ExtUtils::MakeMakerModule::Build の文書を参照してください。

Modules and Pragmata

(モジュールとプラグマ)

New Modules and Pragmata

(新しいモジュールとプラグマ)

Pragmata Changes

(変更されたプラグマ)

Updated Modules

(更新されたモジュール)

Utility Changes

(ツールの変更)

New Documentation

(新しい文書)

Changes to Existing Documentation

(既存の文書の変更)

(過去 18 年間にわたって perl に対して行われた全ての変更の一覧である) 様々な大きな Changes* ファイルが取り除かれ、 単に git バージョン制御システムから同じ情報を取り出す方法を説明した 小さいファイル Changes に置き換えられました。

Porting/patching.pod ファイルは削除されました; これは主に古い Perforce を基としたレポジトリとの相互作用について記述していて、 これは古いものです。 まだ関連のある情報は perlrepository に移動しました。

perlapi, perlintern, perlmodlib, perltoc はリリースの 一部としてではなく、全てビルド時に生成されるようになりました。

Performance Enhancements

(パフォーマンスの向上)

Installation and Configuration Improvements

(インストールと設定の改良)

ext/ reorganisation

(ext/ の再構成)

ext ディレクトリのレイアウトが見直されました。 特に、全てのエクステンションはフラットにトップレベルに置かれ、 パス名中の /- に置き換えられます; 従って、 ext/Data/Dumper/ は ext/Data-Dumper/ のようになります。 エクステンションの名前のうち、Configure で指定されるもの、 dynamic_ext, known_extensions, nonxs_ext, static_ext%Config::Config によって報告されるものは変更なしで、/ を 使い続けます。 従ってこの変更は一旦 perl がインストールされれば何の影響もありません。 しかし、Attribute::Handlers, Safe, mro が新たに独自の権限を持つ エクステンションとなりましたので、もし Configure をビルドする エクステンションの正確なリストを指定するオプション付きで実行する場合、 これらのために変更する必要があるでしょう。

5.10.2 では、多くの 2 重管理されているモジュールが lib から ext に 移動することが計画されています; やはりこれはインストールされた perl には何の変更もありませんが、 もし予め設定されたビルドするエクステンションのリストを使って Configure を起動するときには影響があります。

Configuration improvements

(設定の改良)

vendorlibvendorarch が同じなら、@INC には 1 回だけ 追加されます。

もし perl が -Dusedevel 付きでビルドされたなら、 $Config{usedevel} と C レベルの PERL_USE_DEVEL が定義されるように なりました。

Configure は、もしコンパイラが対応しているなら、 スタック破壊攻撃に対する防御のために、-fstack-protector の使用を 有効にします。

Configure は、もし C コンパイラでなく C++ コンパイラを使うなら、 再入可能な関数と gconvert のための正しいプロトタイプを 決定するようになりました。

Unix では、もし git レポジトリを含むツリーからビルドするなら、 設定プロセスは perl -vperl -V の出力での表示のために、 チェックアウトしたコミットハッシュを記録します。 プッシュされないローカルのコミットは自動的に perl -V によって表示されるローカルパッチの一覧に追加されます。

Compilation improvements

(コンパイルの改良)

ext のフラット化の一部として、全てのプラットフォームの全ての エクステンションは make_ext.pl でビルドされます。 これは Unix 固有の ext/util/make_ext、VMS 固有の make_ext.com、 Win32 固有の win32/buildext.pl を置き換えます。

Platform Specific Changes

(プラットフォーム固有の変更)

Selected Bug Fixes

(バグ修正の抜粋)

New or Changed Diagnostics

(新しい、または変更された診断メッセージ)

Changed Internals

(内部の変更)

New Tests

(新しいテスト)

CPAN から更新された多くのモジュールに新しいテストが組み込まれました。

いくつかのテストは、テストが時間切れになった後に kill することで make testmake test_harness が自動的に実行を終了することを 確実にするために組み込まれた「番犬」機能で失敗すると、 ハングアップしてしまう可能性がありました (Jerry Hedden)。

いくつかのコア固有のテストが追加されました:

Known Problems

(既知の問題)

以下はいくつかの重要な未修正のバグの一覧で、5.10.0 か 5.8.x からの 退行です。

Deprecations

(非推奨)

以下のものは非推奨となりました。

Acknowledgements

(謝辞)

このリリースの作業の一部は TRF の助成金を受けています。

Nicholas Clark は 2008 年末をもって公式にメンテナンス pumpking の役目から 引退しました; しかし、実際のところ彼はこの perldelta のかなり部分を 書くことを含む、5.10.1 をリリースできる状態にするために多くの 努力をしています。

特に Steffen Mueller と David Golden は CPAN モジュールを磨き上げて コア内部の等価物と同期させることを助けました。

Craig Berry は、何度私たちが中断させようとしても、飽きることなく VMS で動作するように管理しつつけました。

その他のコアコミッタはほとんどの変更を提供し、AUTHORS に上げられている 数百の貢献者によって送られたパッチのほとんどを適用しました。

(ここで名前を触れなかった全ての人々に陳謝します)。

最後に、Larry Wall に感謝します; 彼がいなければこれら全ては不要でした。

Reporting Bugs

(バグ報告)

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

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

もし報告しようとしているバグがセキュリティに関するもので、公開されている メーリングリストに送るのが不適切なものなら、 perl5-security-report@perl.org に送ってください。 このアドレスは、問題の影響を評価し、解決法を見つけ、Perl が対応している 全てのプラットフォームで問題を軽減または解決するパッチをリリースするのを 助けることが出来る、全てのコアコミッタが参加している非公開の メーリングリストになっています。 このアドレスは、独自に CPAN で配布されているモジュールではなく、 Perl コアのセキュリティ問題だけに使ってください。

SEE ALSO

Changes ファイルに変更点の完全な詳細を見る方法についての説明があります。

INSTALL ファイルに Perl のビルド方法があります。

README ファイルに一般的なことがあります。

Artistic 及び Copying ファイルに著作権情報があります。