perl587delta - perl v5.8.7 での変更点
このドキュメントは 5.8.6 リリースと 5.8.7 リリースの変更点を記述しています。
(互換性のない変更)
5.8.6 と互換性のない変更はありません。
(Core の拡張)
Perl 5.8 に含まれる Unicode Character Database は 4.0.1 から 4.1.0 に 更新されました。 注目するべき変更点については http://www.unicode.org/versions/Unicode4.1.0/#NotableChanges を 参照してください。
(suidperl がより安全に)
デバッグコードに関する suidperl の 2 つの脆弱性が修正されました。
新しいプロジェクトのためには、suidperl よりむしろ、sudoのような専用で
単一目的のセキュリティツールを使うことをコア perl チームは強く勧めます。
perl インタプリタはサイトカスタマイズスクリプトを使うように
ビルドできるようになりました。
デフォルトでは、以前の perl と同様にこの機能は無効化されています。
これを使うためには、Configure を実行するときに
-Dusesitecustomize コマンドラインオプションを追加します。
perlrun/-f も参照してください。
Config.pm is now much smaller.(Config.pm がはるかに小さく)
Config.pm は、あまり使われないコードと %Config の値を
オンデマンドで読み込むことで、サイズがおよそ 32K から 3K になりました。
これはプログラマにとっては透過的ですが、ほとんどのコード
(例えば、File::Find を使うコード)で 29K のスクリプトを読み込み、
パースする必要がなくなることを意味します。
(モジュールとプラグマ)
B はバージョン 1.09 に更新されました。
base はバージョン 2.07 に更新されました。
bignum はバージョン 0.17 に更新されました。
bytes はバージョン 1.02 に更新されました。
Carp はバージョン 1.04 に更新されました。
CGI はバージョン 3.10 に更新されました。
Class::ISA はバージョン 0.33 に更新されました。
Data::Dumper はバージョン 2.121_02 に更新されました。
DB_File はバージョン 1.811 に更新されました。
Devel::PPPort はバージョン 3.06 に更新されました。
Digest はバージョン 1.10 に更新されました。
Encode はバージョン 2.10 に更新されました。
FileCache はバージョン 1.05 に更新されました。
File::Path はバージョン 1.07 に更新されました。
File::Temp はバージョン 0.16 に更新されました。
IO::File はバージョン 1.11 に更新されました。
IO::Socket はバージョン 1.28 に更新されました。
Math::BigInt はバージョン 1.77 に更新されました。
Math::BigRat はバージョン 0.15 に更新されました。
overload はバージョン 1.03 に更新されました。
PathTools はバージョン 3.05 に更新されました。
Pod::HTML はバージョン 1.0503 に更新されました。
Pod::Perldoc はバージョン 3.14 に更新されました。
Pod::LaTeX はバージョン 0.58 に更新されました。
Pod::Parser はバージョン 1.30 に更新されました。
Symbol はバージョン 1.06 に更新されました。
Term::ANSIColor はバージョン 1.09 に更新されました。
Test::Harness はバージョン 2.48 に更新されました。
Test::Simple はバージョン 0.54 に更新されました。
Text::Wrap はバージョン 2001.09293 に更新され、 warp() が非スペースセパレータで呼ばれた場合のバグが修正されました。
threads::shared はバージョン 0.93 に更新されました。
Time::HiRes はバージョン 1.66 に更新されました。
Time::Local はバージョン 1.11 に更新されました。
Unicode::Normalize はバージョン 0.32 に更新されました。
utf8 はバージョン 1.05 に更新されました。
Win32 はバージョン 0.24 に更新され、Win32::GetFileVersion が追加されました。
(ツールの変更)
(find2perl の拡張)
find2perl に -iname, -path, -ipath オプションが追加されました。
(パフォーマンスの向上)
iスレッドの複製中に使用する内部ポインタマッピングハッシュがメモリ割り当ての アリーナを使うようになりました。 テストによればiスレッドの複製時間は 10% 減少しました。
(インストールと設定の改良)
Win32 "dmake" の makefile.mk は最新版の dmake との互換性のために 更新されました。
PERL_MALLOC, DEBUG_MSTATS, PERL_HASH_SEED_EXPLICIT, NO_HASH_SEED は
Win32 makefile でも動作するようになったはずです。
(バグ修正の抜粋)
Win32 の socket() 関数は修正され、プロトコルに 0 を指定する (全てのプロトコルを許可することを意味します) 転送プロバイダが再び使えるようになりました。 (これは 5.8.6 で動かなくなっており、典型的には ICMP ソケットの使用に 失敗していました。)
内部オフセットのキャッシュが正しくないことによる、
substr と UTF-8 に関するもう一つの目立たないバグが発見され、
修正されました。
正規表現エンジンによる UTF-8 テーブルの読み込みに関するバグが
修正されました - "\x{100}" =~ /[[:print:]]/ といったコードも
正しい結果を出すようになりました。
長い Unicode 文字列に対して、uc のような大文字小文字変換を
行うとメモリを使い果たすことがありました。これは修正されました。
index/rindex は Unicode と非 Unicode の組み合わせによっては
バグっていました。これは修正されました。
read (とおそらくは sysread) はバイト指向ファイルハンドルから
UTF-8 スカラに読み込むと、UTF-8 の内部を外にさらすことがありました。
これは修正されました。
いくつかの pack/unpack のバグが修正されました:
b や B フォーマットでのチェックサムが壊れていました。
C フォーマットで unpack のチェックサムが
オーバーフローすることがありました。
U0 と C0 は () pack サブテンプレートのスコープになりました。
数えた長さの接頭辞は C0/U0 モードを変更しなくなりました。
pack Z0 がその前の文字を破壊していました。
P/p pack フォーマットがリテラルの undef しか
認識していませんでした。
iスレッドでクロージャを使うと perl をクラッシュさせることがありました。 これは内部の OP 構造体を正しくロックするのに失敗していたのが 原因で、これは修正されました。
close の返り値は対象のハンドルのデータをフラッシュするときに
発生した全てのエラーを正しく反映したものになりました。
今までは実際のファイルクローズ操作に失敗したときに
単に失敗したことを返すだけでした。
not() || 1 が segfault を引き起こしていました。
not() は not(0) と同じ振る舞いをするようになりました。
これは 5.6.0 以前の振る舞いと同じです。
h2ph の様々な拡張にはヘッダファイルの構造を処理しようとすると
間違っていたり不正な出力をするものがありました。
(新しい、または変更された診断メッセージ)
"%ENV is aliased to %s" という汚染エラーが追加されました。
このエラーは汚染チェックが有効になっていて、
*ENV がエイリアスされているため、
%ENV がもはや env-magic でなくなり、
従って環境変数が汚染されていないかどうかを確認できない場合に発生します。
pack と unpack の内部が更新されました。全ての正当なテンプレートは
今までと同様に動作するはずですが、複雑な失敗の場合のエラー報告が
いくつか変わっているかもしれません。
エラーでない場合に振る舞いが変わっているとしたらそれはバグですので、
報告してください。
(内部の変更)
C ソースコードに対してかなりの量のリファクタリングが行われ、
一部は整理され、保守性が向上しました。
この結果オブジェクトコードと perl バイナリは 5.8.6 より
小さくなり、いくつかの場合には高速になるかもしれません。
しかしこれら以外にユーザーが気付くような変更はないはずです。
perl 空間 PL_utf8locale へのアクセスを与えるために
${^UTF8LOCALE} が追加されました。
SV head と、ほとんどの SV body が使用するアリーナのサイズは コンパイル時に変更できるようになりました。 以前のサイズは 1008 バイトで、現在のデフォルトサイズは 4080 バイトです。
(既知の問題)
オーバーロードされた演算子から返された Unicode 文字列はバグって いるかもしれません。これは 5.8.6 がリリースされてから長い間 報告されているバグですが、私たちはまだこれを修正できていません。
(プラットフォーム固有の問題)
UNICOS では、lib/Math/BigInt/t/bigintc.t は CPU パワーを使い切って ハングします。 ext/B/t/bytecode.t と ext/Socket/t/socketpair.t のテストは失敗します。 私たちの様々な UNICOS 移殖者の最後の Cray が退役したため、 これらは解決する見込みがありません。
もしバグと思われるものが見つかったら、 comp.lang.perl.misc ニュースグループに 最近投稿された記事や http://bugs.perl.org にある perl バグデータベースを 確認してください。 Perl ホームページ、http://www.perl.org にも情報があります。
もしまだ報告されていないバグだと確信したら、そのリリースに含まれている perlbug プログラムをを実行してください。 バグの再現スクリプトを十分小さく、しかし有効なコードに切りつめることを 意識してください。バグレポートは perl -V の出力と一緒に perlbug@perl.org に送られ Perl porting チームによって解析されます。 Perl 5 のバグについては http://bugs.perl.org/ で閲覧及び 検索することができます。
Changes ファイルに変更点の完全な詳細があります。
INSTALL ファイルに Perl のビルド方法があります。
README ファイルに一般的なことがあります。
Artistic 及び Copying ファイルに著作権情報があります。