[pod] [xml]

NAME

perl583delta - perl v5.8.3 での変更点

DESCRIPTION

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

もしそれよりも前のリリース, 例えば 5.6.1 等からアップデートするのなら、 5.6.0 と 5.8.0 との違いが書かれている perl58delta および、 5.8.0, 5.8.1, 5.8.2 との違いが書かれている perl581delta, perl582delta を読んでおいた方がよいでしょう。

Incompatible Changes

(互換性のない変更)

5.8.2 との互換性のない変更はありません。

Core Enhancements

(Core の拡張)

tie されたハッシュで SCALAR メソッドが利用可能になりました。 tie されたハッシュが以下のようにスカラコンテキストで使われたときに 呼び出されます:

    if (%tied_hash) {
	...
    }

以前の振る舞いでは、%tied_hash はハッシュが tie される前にハッシュが 返すはずの値(つまり普通は 0)を返していました。 新しい振る舞いは、SCALAR メソッドがない場合は each 繰り返しの途中では 真を返し、さもなければ(引き続く each が FIRSTKEY を呼び出すことで 始まることを確実にするために)ハッシュが空かどうかどうかを調べるために FIRSTKEY が呼び出されます。 完全な詳細と問題点については perltie/SCALAR を参照してください。

Modules and Pragmata

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

Utility Changes

(ツールの変更)

find2perl はデフォルトのアクションとして -print を 仮定するようになりました。以前は明示的に指定する必要がありました。

新しいツールである prove で、個々の退行テストをコマンドラインから 簡単に実行できます。prove は Test::Harness の一部で、 以前のバージョンの Perl のユーザーは CPAN からインストールできます。

New Documentation

(新しいドキュメント)

より標準的な man ページが出力されるように、ドキュメントが見直されました。

特殊コードブロック(BEGIN, CHECK, INIT, END) のドキュメントが 改良されました。

Installation and Configuration Improvements

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

OpenVMS I64 でビルドできるようになりました。

Selected Bug Fixes

(バグ修正の抜粋)

UTF8 文字列に substr() を使うことでその後その文字列にアクセスすると ゴミを返すことがありました。 これはキャッシュされた UTF8 のオフセットが正しくなかったが原因で、 修正されました。

join() 文が以前に処理された UTF8 データを持つ 8 bit のデータを処理して いた場合、その join() でゴミを返すことがありました。 これはその文のテンポラリワークスペースのフラグが正しく リセットされていないのが原因でした。これは修正されました。

$a .. $b は $a か $b が undef でも予測どおりに動作するようになりました。

tie されたハッシュに Unicode キーを使っても正しく動作するようになりました。

$^E を読むときに $! が保存されるようになりました。 以前は、$^E を実装していた C コードが error を保存していなかったので、 $^E を読むことで errno が変更されることがあり、それによって $! が 変更されることがありました。

再入可能関数は (再び) C++ で動作するようになりました。 5.8.2 のバグ修正によって図らずも C++ で書かれた Perl 拡張のコンパイルを 壊していました。

New or Changed Diagnostics

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

致命的エラー "DESTROY created new reference to dead object" が perldiag に記述されました。

Changed Internals

(内部の変更)

ハッシュのコードはリファクタリングされ、ソースの重複が減少しました。 外部インターフェースは無変更で、上記のバグ修正を除いて 振る舞いも変わっていないはずです。

hv_clear_placeholders が perl API の一部となりました。

C マクロのいくつかが整理されました。 特に一時ローカル変数を作成するマクロは変数名をより防御的に 作成するようになり、変数名がぶつかったときのバグを防ぐことができるはずです。

<signal.h> は常に含まれるようになりました。

Configuration and Building

(設定とビルド)

Configure は呼び出した変数の値に関わらずコールバックを 起動するようになりました。以前は case $variable $define) 分岐の 場合にのみ起動されていました。 この変更は設定ヒントファイルを書くプラットフォームメンテナにのみ 影響があるはずです。

Platform Specific Problems

(プラットフォーム固有の問題)

初期の RedHat 9 と HP-UX 10.20 はスレッドの実装にバグがあるため、 ext/threads/shared/t/wait.t 退行テストに失敗します。 RedHat ユーザーは https://rhn.redhat.com/errata/RHBA-2003-136.html を 参照して、glibc のアップグレードを考慮するべきです。

Known Problems

(既知の問題)

detach されたスレッドはまだ Windows では動作しません。 メモリアクセス違反問題を引き起こします。

suidperl でスクリプトを開くときに競合状態になることがわかっています。 suidperl はデフォルトではビルドやインストールはされません。 また、perl 5.8.0 以降では非推奨となっています。 suidperl を使用する代わりに sudo ( http://www.courtesan.com/sudo/ ) の ようなツールを使用することをお勧めします。

私たちは未解決のバグの一覧を持っています。 バグとバグ報告を扱うのは魅力のない作業です; 理想的にはボランティアの労働者に割り当てられるべきものではありません。 しかし私たちはそうせざるを得ません。

perl5 開発チームはこの問題を扱う助けとなる変更を実装中で、 2004 年初頭には有効になる予定です。

Future Directions

(将来の方向性)

次のメンテナンスリリース(5.8.4)は 2004 年 3 月 31 日にコードフリーズされ、 4 月中旬までにリリースされる予定です。 同様に 5.8.5 は 6 月終わりにフリーズされ、7 月中旬までに リリースされる予定です。

Obituary

(お悔やみ)

Perl ハッカーであり、perlreref の著者であり、CPAN の 貢献者である Iain 'Spoon' Truskett は 2003 年 12 月 29 日、24 歳で 急死しました。お悔やみを申し上げます。

Reporting Bugs

もしバグと思われるものが見つかったら、 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/ で閲覧及び 検索することができます。

SEE ALSO

Changes ファイルに変更点の完全な詳細があります。

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

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

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