perl5121delta - perl v5.12.1 での変更点
このドキュメントは 5.12.0 リリースと 5.12.1 リリースの変更点を記述しています。
5.10.1 のような以前のリリースから更新する場合は、まず 5.10.1 と 5.12.0 の違いについて記述している perl5120delta を読んでください。
故意に、5.12.0 から互換性がなくなるようにした変更はありません。 もし 5.12.0 との互換性がなければ、それはバグです。 どうか報告してください。
このリリースでは、以下に記したバグ修正の他には、ユーザーに見えるような 形でのコア言語への変更はないはずです。
version からの is_strict
と is_lax
のエクスポートを修正しました。
これらは、メソッド呼び出しとして扱われるラッパとして エクスポートされていたので、失敗を引き起こしていました。 これらは文書化されている通りに単なる関数で決してサブクラス化されないので、 このパッチはラッパなしの関数として単にエクスポートします。
Perl 5.12.0 と共に配布されたバージョンでの退行を修正するために、 CGI.pm をバージョン 3.49 に更新しました。
\C\<\< \>\> のパースを改善するために、Pod::Simple をバージョン 3.14 に 更新しました。
時々間違ってテストが失敗することを修正するために、 CPANPLUS のテストを少し修正しました。
reval()
と rdo()
から返されるコードリファレンスをラップするために、 Safe をバージョン 2.27 に更新しました。
新しい保守リリースポリシーを perlpolicy.pod に追加しました。
perlpodspec での POD の仕様として、多重山かっこ構造を明確化しました。
:=
に関する警告の説明が perldiag.pod から漏れていたのを追加しました。
We removed a false claim in perlunitut にある、全てのテキスト文字列が Perl は Unicode 文字列であるという間違った主張を削除しました。
perlrepository の Github ミラーのリンクを github/perl から mirrors/perl に更新しました。
perl5114delta.pod の細かいミスを修正しました。
今では非推奨になった Switch.pm から given/when へ、 言及を置き換えました。
perlrun での $sitelibexp/sitecustomize.pl に関する文書を 改良しました。
意図せずに perlmodlib.pod から漏れた多くのモジュールを修正しました。
perlfunc.pod の 'require' について、 @INC に Perl コードを置くことに 関係する文書を更新しました。
perlfunc から間違って削除されたクォートメタに関する文書を復元しました。
perlutil.pod での a2p の例を修正しました。
perlport.pod での Perl 5.12 のリリース日の空白を埋めました。
多くの perldelta ファイルでの壊れたリンクを修正しました。
Carp.pm の文書は、$Carp::Verbose 変数がスタックのバックトレースを 生成すると間違って記述されていました。
Pod::Functions での多くのタイプミスを修正しました。
perlfunc.pod 内の、大文字小文字変換関数の文書を改良しました。
正しいバージョンの GNU General Public License が含まれるように、 perlgpl.pod を修正しました。
t/op/sselect.t は、Windows でのタイミングチェック中の時間計測の ぶれが少なくなりました。
Win32 での sleep() 時間は clock tick 間隔の倍数に 切り捨てられるかもしれません。
lib/blib.t と lib/locale.t: Darwin/PPC でテストが失敗するのを 修正しました。
perl5db.t: Term::ReadLine::Gnu
がインストールされていると テストが失敗するのを修正しました。
OpenSUSE (と、おそらく他のプラットフォーム) での壊れている dbm.h の 扱い方に関する注意に関して、INSTALL を更新しました。
ファイルテスト演算子の処理の仕方によるバグにより、 セグメンテーションフォールトを引き起こしていました。 ファイルテストは常にスタック上のオペコードであるということを 期待しないので、_ ファイルハンドルを stat しているのではないことが 確実なときにのみ TOP を使うようになりました。 これは (ck_ftst でチェックされるように) OPf_KIDS として示されます。
http://rt.perl.org/rt3/Public/Bug/Display.html?id=74542 も 参照してください。
(以前の nextstate と比べて)パッケージの変更とラベルの両方を持つ nextstate オペコードを逆パースするとき、パッケージ宣言がまず有効に なります; なぜならパッケージ宣言に前置するラベルは文法的に許可されないからです。
XSUB.h は PERL_IMPLICIT_SYS 時に正しく fgets を再定義するようになりました。
http://rt.cpan.org/Public/Bug/Display.html?id=55049 も 参照してください。
utf8::is_utf8 は GMAGIC (e.g. $1) を尊重するようになりました。
Windows で fputc()
や fputs()
を使った XS コードが、 引数が入れ替わっていることによるエラーを引き起こすことがありました。
http://rt.perl.org/rt3/Public/Bug/Display.html?id=72704 も 参照してください。
lex_stuff_pvn() が不明確な条件で間違った文法エラーを起こすという小さい バグを修正しました。 これは詰め込みがファイルの最後の行に対して実行され、終端のセミコロンなしの 文で行が終わっているときに起こります。
http://rt.perl.org/rt3/Public/Bug/Display.html?id=74006 も 参照してください。
\N{} 構造の直後に単一の . があった場合に正しくパースされない問題を 修正しました。
http://rt.perl.org/rt3/Public/Bug/Display.html?id=74978 も 参照してください。
引数なしの when(scalar) が文法エラーとして扱われないバグを修正しました。
http://rt.perl.org/rt3/Public/Bug/Display.html?id=74114 も 参照してください。
Perl 5.12.0 で導入された文字列の eval の直前のラベルの扱いに関する 退行を修正しました。
http://rt.perl.org/rt3/Public/Bug/Display.html?id=74290 も 参照してください。
Perl 5.12.0 で導入された、正規表現で、包まれた文字列に大文字小文字を 無視したマッチングの退行を修正しました。
http://rt.perl.org/rt3/Public/Bug/Display.html?id=72998 も 参照してください。
HP-UX で use64bitall に昇格することなく -Duse64bitint を 使えるようになりました。
Perl を AIX 4.2 でビルドできるようになりました。
この変更のためには、AIX 4.2 が IPv6 対応していないことと、 POSIX sigaction()
の対応が限定的であることを回避する必要がありました。
FreeBSD 7 はもはや /usr/bin/objformat を含んでいません。 ビルド時に、バージョンが 7 以上の場合は objformat のチェックを スキップし、ELF を仮定します。
古い (7.3-2 以前の) VMS システムでエクステンションを ビルドできるようになりました。
DCL シンボルの長さは 7 年ほどの間最大 1K に制限されていましたが、 このような古いシステムのために Perl の設定、ビルドを妨げる 深い理由は特になくなりました。
以前は壊れていた VMS での -Uuseperlio
ビルドを修正しました。
perlio を無効にするというデフォルトではない場合に存在しない変数を チェックしていました。 今は、それが存在するときにだけ見ます。
configure.com での -Uuseperlio コマンドラインオプションを修正しました。
以前は、全ての質問に対話的に答えて、明示的に「いいえ」と答えた 時にのみ動作していました。
List::Util::first
は (典型的には my $_
や given
による) レキシカルな $_
の存在について振る舞いを間違えていました。 each の反復で設定される変数はレキシカルな $_
ではなくパッケージ変数の $_
です。
同様の問題は、以下のように、最初の引数としてブロックを取る関数を提供している その他のモジュールにも発生するかもしれません。
foo { ... $_ ...} list
http://rt.perl.org/rt3/Public/Bug/Display.html?id=67694 も 参照してください。
Module::Load::Conditional
と version
の不幸な相互作用により、 パースできないバージョン文字列に遭遇したときに CPANPLUS
がクラッシュするようになっていました。 CPAN から、CPANPLUS
を 0.9004 に更新するか、 Module::Load::Conditional
を 0.38 に更新することでこの問題を 解決できます。
Perl 5.12.1 は、Perl 5.12.0 以降、28 人の作者によって、 142 ファイルに対しておよそ 4000 行以上の変更を加えて、 ほぼ 4 週間開発されてきました。
Perl は、活気のあるユーザーと開発者のコミュニティのおかげで 20 年を超えて繁栄しています。 以下の人々が、Perl 5.12.1 になるための改良に貢献したことが 分かっています:
Ævar Arnfjörð Bjarmason, Chris Williams, chromatic, Craig A. Berry, David Golden, Father Chrysostomos, Florian Ragwitz, Frank Wiegand, Gene Sullivan, Goro Fuji, H.Merijn Brand, James E Keenan, Jan Dubois, Jesse Vincent, Josh ben Jore, Karl Williamson, Leon Brocard, Michael Schwern, Nga Tang Chan, Nicholas Clark, Niko Tyni, Philippe Bruhat, Rafael Garcia-Suarez, Ricardo Signes, Steffen Mueller, Todd Rinaldo, Vincent Pit and Zefram.
もしバグと思われるものを見つけたら、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 ファイル。