perl5203delta - perl v5.20.3 での変更点
この文書は 5.20.2 リリースと 5.20.3 リリースの変更点を記述しています。
5.20.1 のような以前のリリースから更新する場合は、まず 5.20.1 と 5.20.2 の違いについて記述している perl5202delta を読んでください。
故意に、5.20.2 から互換性がなくなるようにした変更はありません。 もし 5.20.2 との互換性がなければ、それはバグですので、報告をお願いします。 以下の "Reporting Bugs" を参照してください。
Errno はバージョン 1.20_05 から 1.20_06 に更新されました。
GCC 5 では、プリプロセッサのコマンドラインに -P
が追加されました。 GCC は追加の行指示子が追加されていて、エラーコード定義のパースを 壊していました。 [perl #123784]
Module::CoreList はバージョン 5.20150214 から 5.20150822 に更新されました。
最新リリースの Perl に対応するために更新されました。
perl5db.pl はバージョン 1.44 から 1.44_01 に更新されました。
デバッガはアサート失敗を引き起こしていました。 [perl #124127]
study()
は現在のところ何もしないことに言及しました。
OOK の例は、COW の変更とストレージのオフセットの変更を考慮して更新されました。
C ライブラリ関数のための Perl のラッパの返り値によって示されている静的メモリの 内容が変更されないと仮定することの危険を図示した文書が追加されました。
UTF-8 でない場合の POD の(特に示されていない限り)デフォルト エンコーディングは ISO 8859-1 (Latin1) ではなく CP1252 であるというように POD 言語の仕様が変更されました。
h2ph は、$Config{cppsymbols}
で見えるように、コンパイラの事前定義 マクロ定義で 16 進定数が使えるようになりました。 [perl #123784]
汚染問題の最適化が高速性を維持しているかを見る t/perf/taint.t が 追加されました。
utf8 とその依存が、(関数がどの変数がローカル化されるかを実行時に決定する 効率的な方法がないために) Perl_save_re_context() がローカル化されるように ハードコーディングされている $1..$n
捕捉変数の部分集合のみを 使っているかどうかをテストするための t/porting/re_context.t が 追加されました。
以前は、Win64 用の Visual C++ でコンパイルすると、(CPAN のものを含む) 全ての XS モジュールと Perl が認識する C ファイルで無条件に hv_func.h から大量の 警告が出ていました。 これらの警告は出なくなりました。 GCC (ビット数に関わらず) と 32 ビット Visual C++ は影響を受けません。
miniperl.exe は、GCC 4.8 でビルドが完了できるように、 -fno-strict-aliasing
付きでビルドされるようになりました。 [perl #123976]
大きな汚染された文字列に対してスカラコンテキストで繰り返されたグローバル パターンマッチングは、文字列中の現在のマッチング位置に依存して 指数的に遅くなっていました。 [perl #123202]
$/
の元の見える値は、不正な値を設定されたときは値が 保存されるようになりました。 以前は、例えば $/
に配列へのリファレンスを設定すると、perl は実行時エラーを 出力して PL_rs を設定しませんが、$/
を調べる Perl コードは 配列リファレンスを見ていました。 [perl #123218]
Perl 5.14.0 では eval { LABEL: }
がクラッシュするというバグが 導入されていました。 これは修正されました。 [perl #123652]
親スレッドからクローンされた配列を拡張すると、新しい要素を 変更しようとしたときに "Modification of a read-only value attempted" エラーが 起きることがありました。 [perl #124127]
コア C コードで内容を環境変数に保管したデータが場合によっては使われる前に 上書きされる可能性がある問題は修正されました。 [perl #123748]
配列インデックスで使われた UTF-8 変数名、クォートなしの UTF-8 の ヒヤドキュメント終端子、UTF-8 関数名は全て正しく動作するようになりました。 [perl #124113]
正規表現中の UTF-8 に関して時々クラッシュを引き起こす、Perl 5.20.2 で 導入された微妙なバグは修正されました。 この修正をテストするために新しいテストスクリプトが追加されました; "Testing" を参照してください。 [perl #124109]
/.*..../
で始まるパターンの一部は長い文字列では v5.8 から遅くなっていて、 /.*..../i
形式の一部は v5.18 から遅くなっていました。 これらは再び高速になりました。 [perl #123743]
警告の致命的エラー化は、スタックを巻き戻すときには無視されるようになりました。 これにより、致命的エラーがスタックを巻き戻すときの無限ループを防ぎます。 [perl #123398]
(1 引数の) setpgrp($nonzero)
は、誤って setpgrp(0)
を意味するように Perl 5.16 から変更されていました。 これは修正されました。
%::=(); J->${\"::"}
でのクラッシュは修正されました。 [perl #125541]
正規表現所有量指定子の Perl 5.20 での退行は修正されました。 qr/
PAT{
min,max}+
/
は qr/(?>
PAT{
min,max})/
と同じように振る舞うことが 想定されていました。 Perl 5.20 から、min と max が同じ場合は動作していませんでした。 [perl #125825]
/$a[/
のようなコードは、入力の次の行を読み込んで、それが開き大かっこの 直後にあるかのように扱われていました。 結果として一部の不正なコードはパースと実行が行われますが、一部のコードは クラッシュを引き起こしていたので、これは許されなくなりました。 [perl #123712]
Perl 5.20.3 は、Perl 5.20.2 以降、26 人の作者によって、 99 のファイルに約 3,200 行の変更を加えて、 約 7 ヶ月開発されてきました。
自動生成ファイル、文書、リリースツールを除くと、43 の .pm, .t, .c, .h ファイルに約 1,500 行の変更を加えました。
Perl は、活気のあるユーザーと開発者のコミュニティのおかげで 20 年を超えて 繁栄しています。 以下の人々が、Perl 5.20.3 になるための改良に貢献したことが分かっています:
Alex Vandiver, Andy Dougherty, Aristotle Pagaltzis, Chris 'BinGOs' Williams, Craig A. Berry, Dagfinn Ilmari Mannsåker, Daniel Dragan, David Mitchell, Father Chrysostomos, H.Merijn Brand, James E Keenan, James McCoy, Jarkko Hietaniemi, Karen Etheridge, Karl Williamson, kmx, Lajos Veres, Lukas Mai, Matthew Horsfall, Petr Písař, Randy Stauner, Ricardo Signes, Sawyer X, Steve Hay, Tony Cook, Yves Orton.
これはバージョンコントロール履歴から自動的に生成しているので、ほぼ確実に 不完全です。 特に、Perl バグトラッカーに問題を報告をしてくれた (とてもありがたい)貢献者の 名前を含んでいません。
このバージョンに含まれている変更の多くは、Perl コアに含まれている CPAN モジュール由来のものです。 私たちは Perl の発展を助けている CPAN コミュニティ全体に感謝します。
全ての Perl の歴史的な貢献者のより完全な一覧については、どうか Perl ソース 配布に含まれている AUTHORS を参照してください。
もしバグと思われるものを見つけたら、comp.lang.perl.misc ニュースグループに 最近投稿された記事や https://rt.perl.org/ にある 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 ファイル。