perldelta - perl v5.12.2 での変更点
この文書は 5.12.1 リリースと 5.12.2 リリースの変更点を記述しています。
5.10.1 のような以前のメジャーバージョンから更新する場合は、まず 5.10.1 と 5.12.0 の違いについて記述している perl5121delta を読んで、 それから 5.12 安定版リリースシリーズでの変更について記述している perl5121delta を読んでください。
故意に、5.12.0 から互換性がなくなるようにした変更はありません。 もし 5.12.0 との互換性がなければ、それはバグですので、 どうか報告してください。
このリリースでは、以下に記したバグ修正の他には、ユーザーに見えるような 形でのコア言語への変更はないはずです。
このリリースでは新しいモジュールやプラグマはありません。
以前のリリースでは、no VERSION;
という文があると feature が
読み込まれ strict が有効になるというバグを引き起こしていました。
Carp
バージョン 1.16 から 1.17 に更新されました。
Carp は、不完全な caller() のオーバーライドを
検出して、間違った @DB::args
の使用を避けるようになりました。
バックトレースを提供するために、Carp は caller 組み込み関数の
特定の振る舞いに依存しています。
Carp は、他のコードがこれを不完全な実装でオーバーライドしていることを
検出して、それに応じてバックトレースを修正します。
以前は不完全なオーバーライドによって(運が良ければ)バックトレースの
値が間違ったり、(運が悪ければ)致命的なエラーが起きていたりしました。
これは、caller()
を正しくオーバーライドしていないモジュールによって
引き起こされる おかしな ARRAY のコピー
が起きる場合を修正します。
CPANPLUS
cpanp-run-perl へのパッチが CPANPLUS 0.9004
から
バックポートされました。
これは [perl #55964] と
[perl #57106] を
解決します; どちらも Module::Install::DSL
を使ったインストールの
失敗に関係しています。
File::Glob
File::Glob
の読み込み後 CORE::GLOBAL::glob
を見つけることに
失敗するとクラッシュする問題が修正されました。
現在では、これは正しく pp_glob
経由で外部グロブにフォールバックします。
File::Copy
File::Copy::copy(FILE, DIR)
が文書化されました。
File::Spec
バージョン 3.31 から 3.31_01 に更新されました。
File::Spec::VMS
で、いくつかの移植性に関する修正が行われました:
コロンはネイティブ filespecs でデリミタとして認識されるようになりました;
キャレットでエスケープされたデリミタは拡張 filespecs でのよりよい
扱いのために認識されるようになりました。
catpath()
は、入力ディレクトリ名が空の場合は現在のディレクトリではなく
空ディレクトリを返します;
abs2rel()
は Unix 型の入力を正しく扱います。
perlbug は常に、推測された電子メールアドレスを変更する機会を 報告者に与えるようになりました。
perlbug は、-d
と -v
オプションを使ったときに非初期化値に関して
警告を出さなくなりました。
後方互換性と非推奨に関する現在のポリシーについて、 非推奨(deprecation) のなどの用語の定義と共に perlpolicy に追加しました。
perlfunc/srand の使用法が明確にされました。
perlfunc/die のエントリは、例外機構としての役割を強調するために 再編成されました。
Perl は C89 準拠の ANSI C コンパイラが必要であることを明示的に 表明するために、INSTALL ファイルが明確化されました。
IO::Socket の getsockopt()
と setsockopt()
が文書化されました。
alarm() が Windows でのブロッキング I/O で割り込めないことが 文書化されました。
Math::TrulyRandom は 1996 年から更新されていないので、 乱数生成のための推奨方法から取り除かれました。
perlrun は、perl への 8 進数フラグの振る舞いを明確化するために 更新されました。
ユーザーの混乱を和らげるために、過去のバージョンの Perl ではあった
$#
と $*
の二つの特殊変数の記述を取り除きました。
perl コアと共にリリースされる perlfaq のバージョンが
git://perl5.git.perl.org/perl.git の briandfoy/perlfaq
ブランチで
保守されている公式 FAQ バージョンに更新されました。
ARM での d_u32align
設定調査が修正されました。
clang
でビルドしたときに 3 項演算子で "incompatible operand types
"
エラーが発生する問題が修正されました。
Perl は、nosuid
でマウントされていることが検出されたパーティションでは
File::Copy
の setuid でのテストを省略するようになりました。
デフォルト typemap T_PRTOBJ
でセグメンテンションフォールトが
起きる可能性があった問題が修正されました。
@DB::args
をセットするために caller() を
使ったときにメモリリークが起きる可能性がある問題が修正されました。
XS モジュール読み込み時のいくつかのメモリリークが修正されました。
unpack()
は、スカラコンテキストでの %32H
と %32u
がクラッシュする
可能性がある問題が修正され、正しく扱えるようになりました。
split()
は、スタック上の 3 番目のアイテムが想定している正規表現では
ないことによってクラッシュしていました。
unpack("%2H", ...)
は unpack("%2u", ...)
のように、unpack された
結果とスタック上のチェックサムの両方を返していました。
[perl #73814]
Perl は、@INC
に CODEREF がある場合に pp_require で free()
を
呼び出した後のメモリを使わないようになりました。
XS のデストラクタから "call_sv(code, G_EVAL)
" が呼び出されたときに
"Unknown error
" が起きることがあるバグが修正されました。
open $fh, '>' \$buffer
昨日の実装が get/set マジックに
対応するようになり、tie されたバッファを正しく扱えるようになりました。
pp_getc
, pp_tell
, pp_eof
の各オペコードは、引数なしで
呼び出された場合自身の返り値のためにスタックに空きを作るようになりました。
ある条件の下で Unicode 文字列をマッチングすると、不適切な
バックトラッキングにより Malformed UTF-8 character (fatal)
エラーが発生していました。
これはもう起きなくなりました。
[perl #75680] を
参照してください。
README.aix は、XL C/C++ V11 コンパイラスイートに関する情報で 更新されました。
Perl を mingw64 x64 クロスコンパイラでビルドするとき、
Config.pm と Config_heavy.pl にある
incpath
, libpth
, ldflags
, lddlflags
, ldflags_nolargefiles
の
値が正しくセットされていませんでした;
これは、このコンパイラでは、インクルードとライブラリのディレクトリが
$(CCHOME)
の直下ではないからです。
git_version.h がインストールされるようになりました。 これは v5.12.0 にあったミスで、これによりいくつかのエクステンションが ビルドできなくなっていました。
stat() のいくつかのメモリリークが 修正されました。
二重割り当てによる Perl_rename()
でのメモリリークが修正されました。
(realpath()
と realname()
で使われている) vms_fid_to_name()
での
メモリリークが修正されました。
Perl 5.12.2 は、Perl 5.12.1 以降、36 人の作者によって、 100 ファイルに対しておよそ 1000 行以上の変更を加えて、 ほぼ 3 ヶ月開発されてきました。
Perl は、活気のあるユーザーと開発者のコミュニティのおかげで 20 年を超えて繁栄しています。 以下の人々が、Perl 5.12.2 になるための改良に貢献したことが 分かっています:
Abigail, Ævar Arnfjörð Bjarmason, Ben Morrow, brian d foy, Brian Phillips, Chas. Owens, Chris 'BinGOs' Williams, Chris Williams, Craig A. Berry, Curtis Jewell, Dan Dascalescu, David Golden, David Mitchell, Father Chrysostomos, Florian Ragwitz, George Greer, H.Merijn Brand, Jan Dubois, Jesse Vincent, Jim Cromie, Karl Williamson, Lars Dɪᴇᴄᴋᴏᴡ 迪拉斯, Leon Brocard, Maik Hentsche, Matt S Trout, Nicholas Clark, Rafael Garcia-Suarez, Rainer Tammer, Ricardo Signes, Salvador Ortiz Garcia, Sisyphus, Slaven Rezic, Steffen Mueller, Tony Cook, Vincent Pit and Yves Orton.
もしバグと思われるものを見つけたら、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 コアのセキュリティ問題だけに使ってください。
変更点の完全な詳細を見る方法については Changes ファイル。
Perl のビルド方法については INSTALL ファイル。
一般的なことについては README ファイル。
著作権情報については Artistic 及び Copying ファイル。