これは、Ubuntu Online、Fedora Online、Windowsオンラインエミュレーター、MACOSオンラインエミュレーターなどの複数の無料オンラインワークステーションの589つを使用してOnWorks無料ホスティングプロバイダーで実行できるコマンドperlXNUMXdeltaです。
プログラム:
NAME
perl589delta-perlv5.8.9の新機能
DESCRIPTION
このドキュメントでは、5.8.8リリースと5.8.9リリースの違いについて説明します。
通知
5.8.9リリースは、5.8.xシリーズの最後の重要なリリースになります。 将来
5.8.xのリリースは、セキュリティの問題とプラットフォームの構築にのみ対処する可能性があります
失敗。 したがって、まだ開始していない場合は、5.10.xへの移行を検討する必要があります。
詳細については、「既知の問題」を参照してください。
互換性がない 変更
C++で記述された拡張機能のソースコードの特定の構造が必要になる場合があります
変化。 詳細については、「変更された内部」を参照してください。 Cで書かれたすべての拡張機能、ほとんど
C ++で記述されており、既存のコンパイル済み拡張機能はすべて影響を受けません。 これは
C++サポートを改善します。
これ以外に、5.8.8と意図的に互換性のない変更はありません。 もしあれば
存在する場合、それらはバグであり、レポートは大歓迎です。
基本 機能強化
Unicode 文字 データベース 5.1.0.
Perl5.8に含まれているUnicode文字データベースのコピーが5.1.0に更新されました
4.1.0から。 見るhttp://www.unicode.org/versions/Unicode5.1.0/#NotableChanges>
注目すべき変更。
STAT および -X on ディレクトリにジョブを開始します。 ハンドル
ディレクトリハンドルで「stat」および「-X」filestat演算子を呼び出すことができるようになりました。 として
ディレクトリハンドルとファイルハンドルはどちらもベアワードであり、あいまいさが存在する可能性があります。
意図されました。 これらの状況では、ファイルハンドルセマンティクスが優先されます。 どちらも扱います
*FILE{IO}ファイルハンドルは*FILEファイルハンドルと同様です。
ソース フィルター in @株式会社
ソースを追加することで、@INCのサブルーチンフックのメカニズムを強化することができます。
フックによって開かれ、返されたファイルハンドルの上部にあるフィルター。 この機能は計画されていました
ずっと前ですが、今まで完全に機能していませんでした。 perlfuncの「require」を参照してください
詳細。 (ニコラス・クラーク)
例外 in 定数 折り畳み式の
定数畳み込みルーチンは、例外ハンドラーでラップされるようになりました。
例外(0/0の評価の試行など)で、perlは現在のオプツリーを保持するようになりました。
プログラム全体を中止するのではなく。 この変更がないと、プログラムはコンパイルされません。
それらがたまたま例外を生成する式を持っていたとしても、それらは
式は、実行時に到達できないコード内にありました。 (ニコラス・クラーク、デイブ
ミッチェル)
"番号 バージョン"
「no」の後にバージョン番号を使用して、使用することを指定できるようになりました。
指定されたものより古いバージョンのperl。
改善されました 内部 UTF-8 キャッシング コード
文字列の文字オフセットに対して計算されたUTF-8バイトオフセットをキャッシュするコードには、
書き直されました。 いくつかのバグが特定されて排除され、コードは現在
それが持っている情報のより良い使用なので、より速くなるはずです。 特に、スキャンしません
文字列内のオフセットを計算する前に、文字列の最後まで。
長い文字列に対するいくつかの操作をアップします。 実行時にキャッシュコードを無効にすることが可能になりました
時間、それが疑わしい問題の原因ではないことを確認します。
ランタイム 再配置可能 インストール
今があります 構成 実行時に再配置可能なperlツリーの作成のサポート。
「再配置可能なインストール」を参照してください。
新作 内部 variables
"$ {^ CHILD_ERROR_NATIVE}"
この変数は、最後のパイプクローズ、バックティックによって返されるネイティブステータスを提供します
コマンド、「wait」または「waitpid」への正常な呼び出し、または「system」オペレーターから。 見る
詳細についてはperlvar。 (Gisle Aasによる寄稿。)
「${^UTF8CACHE}」
この変数は、内部UTF-8オフセットキャッシングコードの状態を制御します。 1オン
(デフォルト)、オフの場合は0、すべての結果をチェックしてキャッシュコードをデバッグする場合は-1
線形スキャンに対して、そして不一致でパニックに陥ります。
「readpipe」 is 今 オーバーライド可能
組み込み関数「readpipe」がオーバーライド可能になりました。 それをオーバーライドすると、
対応する演算子「qx//」(「」とも呼ばれます)をオーバーライドします。
シンプルな 例外 取り扱い マクロ
Perl 5.8.9(および5.10.0以降)は、非常に基本的な例外を実行するためのいくつかのマクロを提供するようになりました
XSモジュールでの処理。 「クローク」する可能性のあるコードを呼び出す場合は、これらのマクロを使用できますが、
Perlに制御を戻す前に、いくつかのクリーンアップを行う必要があります。 「例外処理」を参照してください
詳細については、perlgutsで。
-D オプション 強化
・「-dq」は 実行中... 「-D」で実行した場合のメッセージ
・「-dl」は、runopsループの開始と終了、およびジャンプレベルのポップをログに記録します。
・「-Dv」は、トレース出力の一部としてプロセスIDを表示します。
XS支援 スワッシュゲット
正規表現エンジンがUnicodeプロパティを取得するために使用していたいくつかのpure-perlコードと
文字変換マッピングがXSに再実装され、実行が高速化されました。 (貞広
ともゆき)
定数 サブルーチン
インタープリターの内部は、はるかにメモリ効率の高い形式のインライン化をサポートするようになりました
定数。 定数値への参照をシンボルテーブルに格納することは、
定数サブルーチンを参照する完全なtypeglobですが、使用するメモリは約400バイト少なくなります。
このプロキシ定数サブルーチンは、実際のタイプグローブに自動的にアップグレードされます。
必要に応じてサブルーチン。 採用されたアプローチは、既存のスペースに類似しています
プレーンスカラーとして適切に格納されるサブルーチンスタブ宣言の最適化
フルタイプグローブの。
ただし、(誤って)予期しない既存のコードの下位互換性を支援するため
シンボルテーブルのtypeglobs以外のもの、コアの何もこの機能を使用しません、その他
回帰テストよりも。
プロトタイプ化されたサブルーチンのスタブは、プレーン文字列としてシンボルテーブルに格納されています。
プロトタイプ化されていないサブルーチンのスタブは、1以降、数値-5.005であるため、
コアがシンボルテーブルにタイプグロブを配置するだけであるということは、誤った仮定をしている
10年以上
新作 プラットフォーム
コンパイルサポートが追加されました:
・DragonFlyBSD
・MidnightBSD
・MirOS BSD
・RISC OS
・Cray XT4 / Catamount
モジュール および プラグマタ
新作 モジュール
・「Module :: Pluggable」は、プラグ可能なサブを受け入れるモジュールを作成するためのシンプルなフレームワークです。
モジュール。 バンドルバージョンは3.8です
・「Module :: CoreList」は、に示されているように、perlバージョンでキー設定されたハッシュのハッシュです。
$]。 バンドルバージョンは2.17です
・「Win32API :: File」が、MicrosoftWindowsのコアで利用できるようになりました。 バンドルバージョンは
0.1001_01
・「Devel :: InnerPackage」は、単一のファイルで定義されているすべてのパッケージを検索します。 それはの一部です
「Module::Pluggable」ディストリビューション。 バンドルバージョンは0.3です
更新中 モジュール
・バージョン0.09にアップグレードされた「属性」
・バージョン5.67にアップグレードされた「AutoLoader」
・「AutoSplit」が1.06にアップグレードされました
・「autouse」がバージョン1.06にアップグレードされました
・「B」が1.09_01から1.19にアップグレードされました
・新しいパッド関連の抽象化マクロ「B :: NV::COP_SEQ_RANGE_LOW」を提供します。
"B :: NV :: COP_SEQ_RANGE_HIGH"、 "B :: NV :: PARENT_PAD_INDEX"、
「B::NV :: PARENT_FAKELEX_FLAGS」は、5.10.0とのストレージの違いを隠します
後で。
・「PL_sub_generation」を公開する「B::sub_generation」を提供します
・「B :: GV :: isGV_with_GP」を提供します。これは、5.10より前のperlsでは常にtrueを返します。
・メソッド「VAL」、「HASH」、「SVKEY_force」が追加された新しいタイプ「B::HE」
・プロキシ定数の場合、「B::GVf_IMPORTED_CV」フラグが正しく設定されるようになりました
サブルーチンがインポートされます。
・「PMOP」の処理で修正されたバグ。
・「B :: BM :: PREVIOUS」は、「U32」ではなく「U16」を返すようになりました。 「B::CV :: START」と「B:CV::ROOT」
XSUBで「NULL」を返し、「B :: CV::XSUB」と「B::CV::XSUBANY」で0を返します。
非XSUB。
・「B::C」を1.05にアップグレード
・「B::Concise」を0.76にアップグレード
・新しいオプション「-src」により、各ステートメントがレンダリングされます(
nextstate OP)を生成するソースコードの最初の行が前に付きます。
・新しいオプション "-stash =" somepackage ""、 "require" s "somepackage"、そしてそれぞれをレンダリングします
名前空間で定義された関数。
・詳細なヒント記号のドキュメントが追加されました。
・バージョン1.05にアップグレードされた「B::Debug」
・バージョン0.87にアップグレードされた「B::Deparse」
・「printreadpipe $ x、$y」を適切に逆解析します。
・「''-」()>、「::()」、「sub :: {}」、 等々 正しく[RT#43010]。 すべてのバグ
これらの種類の構文の解析で修正されました:
perl -MO = Deparse -e'"my%h ="->()'
perl -MO = Deparse -e'::->()'
perl -MO = Deparse -e'sub :: {}'
perl -MO = Deparse-e'パッケージa; sub a :: b :: c {} '
perl -MO = Deparse -e'sub the :: main :: road {}'
・します 内部によって自動的に設定される$^H{v_string}を逆解析します。
・バージョン1.11にアップグレードされた「B::Lint」
・バージョン1.05にアップグレードされた「B::Terse」
・バージョン2.13にアップグレードされた「ベース」
・base.pmを介してモジュールをロードすると、そのモジュール内のグローバル$SIG{__DIE__}がマスクされます。
・@ISAですべてのクラスを一度にプッシュする
・バージョン1.10にアップグレードされた「ベンチマーク」
・「bigint」が0.23にアップグレードされました
・「bignum」が0.23にアップグレードされました
・「bigrat」が0.23にアップグレードされました
・「blib」が0.04にアップグレードされました
・バージョン1.10にアップグレードされた「Carp」
引数のバックトレースコードで、文字列ではなく「undef」が「undef」として表示されるようになりました 「undef」.
・バージョン3.42にアップグレードされた「CGI」
・「charnames」が1.06にアップグレードされました
・バージョン1.17にアップグレードされた「定数」
・バージョン1.9301にアップグレードされた「CPAN」
・「cwd」がバージョン3.29にアップグレードされ、プラットフォーム固有の改善がいくつか行われました(
VMS)。
・「Data :: Dumper」がバージョン2.121_17にアップグレードされました
・純粋なPerlバージョンでハッシュイテレータの現在の位置を修正しました[RT#40668]
・パフォーマンスの向上。これは、繰り返されるプラットフォームで最も顕著になります。
Win32のように、Cの「realloc()」の呼び出しは遅いです。
・「DB_File」がバージョン1.817にアップグレードされました
・バージョン0.02にアップグレードされた「DB_Filter」
・「Devel :: DProf」がバージョン20080331.00にアップグレードされました
・「Devel :: Peek」をバージョン1.04にアップグレード
・「Devel::PPPort」がバージョン3.14にアップグレードされました
・バージョン1.16にアップグレードされた「診断」
・「ダイジェスト」をバージョン1.15にアップグレード
・「Digest :: MD5」がバージョン2.37にアップグレードされました
・バージョン1.02にアップグレードされた「DirHandle」
・$。、$ @、$ !、 $ ^ E、および$?をローカライズします。 ディレクトリハンドルを閉じる前に
すでに閉じられていることに関する警告の副作用の漏れを抑制します。
・バージョン1.09にアップグレードされた「DynaLoader」
「DynaLoader」は、デフォルト以外のファイルからロード可能なオブジェクトを動的にロードできるようになりました
ファイル拡張子。
・バージョン2.26にアップグレードされた「エンコード」
「Encode::Alias」には、Solaris(ASCIIとしてよく知られている)で「646」をエンコードするための修正が含まれています。
・「英語」をバージョン1.03にアップグレード
・バージョン1.10にアップグレードされた「Errno」
・「エクスポーター」がバージョン5.63にアップグレードされました
・「ExtUtils::Command」がバージョン1.15にアップグレードされました
・「ExtUtils :: Constant」をバージョン0.21にアップグレード
・「ExtUtils::Embed」がバージョン1.28にアップグレードされました
・バージョン1.50_01にアップグレードされた「ExtUtils::Install」
・バージョン1.43にアップグレードされた「ExtUtils::Installed」
・「ExtUtils::MakeMaker」がバージョン6.48にアップグレードされました
・「INSTALLSITESCRIPT」および「INSTALLVENDORSCRIPT」構成のサポート。
・「ExtUtils::Manifest」がバージョン1.55にアップグレードされました
・バージョン2.19にアップグレードされた「ExtUtils::ParseXS」
・バージョン1.06にアップグレードされた「致命的」
・「CORE::GLOBAL」の組み込みを致命的にすることができます。
・バージョン1.06にアップグレードされた「fcntl」
・バージョン2.12にアップグレードされた「フィールド」
・「File::Basename」がバージョン2.77にアップグレードされました
・「FileCache」がバージョン1.07にアップグレードされました
・「File::Compare」が1.1005にアップグレードされました
・「File::Copy」が2.13にアップグレードされました
・3引数openを使用するようになりました。
・「File::DosGlob」が1.01にアップグレードされました
・「File :: Find」がバージョン1.13にアップグレードされました
・「File :: Glob」がバージョン1.06にアップグレードされました
・中括弧内の角かっこで誤った結果を修正します。
・「File::Path」がバージョン2.07_02にアップグレードされました
・「File :: Spec」がバージョン3.29にアップグレードされました
・悪い引数の処理を改善しました。
・いくつかのプラットフォーム固有の改善(VMSおよびCygwinを含む)。
両方の相対引数を処理するときの「abs2rel」の最適化。
・「File::stat」がバージョン1.01にアップグレードされました
・「File::Temp」がバージョン0.20にアップグレードされました
・バージョン1.02にアップグレードされた「filetest」
・バージョン1.07にアップグレードされた「Filter :: Util::Call」
・「Filter :: Simple」をバージョン0.83にアップグレード
・「FindBin」がバージョン1.49にアップグレードされました
・「GDBM_File」がバージョン1.09にアップグレードされました
・「Getopt :: Long」をバージョン2.37にアップグレード
・「Getopt::Std」がバージョン1.06にアップグレードされました
・「Hash::Util」がバージョン0.06にアップグレードされました
・「if」がバージョン0.05にアップグレードされた
・バージョン1.23にアップグレードされた「IO」
「IO::Socket」の「getpeername」への呼び出し回数を減らしました
・バージョン1.03にアップグレードされた「IPC::Open」
・バージョン3にアップグレードされた「IPC :: Open1.03」
・バージョン2.00にアップグレードされた「IPC::SysV」
・「lib」がバージョン0.61にアップグレードされました
・読み込みに関する警告を回避します 。パー ファイル。
・バージョン1.22にアップグレードされた「libnet」
・「List::Util」が1.19にアップグレードされました
・「Locale::Maketext」が1.13にアップグレードされました
・「Math::BigFloat」がバージョン1.60にアップグレードされました
・「Math::BigInt」がバージョン1.89にアップグレードされました
・「Math::BigRat」がバージョン0.22にアップグレードされました
・新しい「as_float」メソッドを実装します。
・「Math::Complex」がバージョン1.54にアップグレードされました。
・「Math::Trig」がバージョン1.18にアップグレードされました。
・「NDBM_File」がバージョン1.07にアップグレードされました
・ 向上 g ++ GDBM互換性ヘッダーを使用するシステムの処理。
・「Net::Ping」がバージョン2.35にアップグレードされました
・「NEXT」をバージョン0.61にアップグレード
・「AUTOLOAD」、「eval」ブロック、およびを操作するときの「NEXT」に関するいくつかのバグを修正します。
オーバーロードされた文字列化内。
・「ODBM_File」が1.07にアップグレードされました
・「オープン」を1.06にアップグレード
・「ops」が1.02にアップグレードされました
・バージョン0.11にアップグレードされた「PerlIO::encoding」
・「PerlIO::scalar」をバージョン0.06にアップグレード
・[RT#40267]「PerlIO::scalar」は読み取り専用性を尊重しません。
・「PerlIO::via」をバージョン0.05にアップグレード
・「Pod :: Html」がバージョン1.09にアップグレードされました
・「Pod :: Parser」がバージョン1.35にアップグレードされました
・「Pod::Usage」がバージョン1.35にアップグレードされました
・バージョン1.15にアップグレードされた「POSIX」
・「Fcntl」の定数と重複する「POSIX」定数が「Fcntl」からインポートされるようになりました
「POSIX」によって複製されるのではなく、再エクスポートされます
・「POSIX :: remove」は、空のディレクトリを削除できます。
・「POSIX::setlocale」は複数回呼び出す方が安全です。
・POSIXリアルタイム信号機能へのアクセスを提供する「POSIX::SigRt」が追加されました
それをサポートするシステムで。
・バージョン0.06_01に「再」アップグレード
・バージョン2.16にアップグレードされた「安全」
・「Scalar::Util」が1.19にアップグレードされました
・「SDBM_File」がバージョン1.06にアップグレードされました
・バージョン1.17にアップグレードされた「SelfLoader」
・「シェル」がバージョン0.72にアップグレードされました
・バージョン1.04にアップグレードされた「sigtrap」
・バージョン1.81にアップグレードされた「ソケット」
・これにより、「gethostbyname」の楽観的な使用が修正されます
・「保存可能」が2.19にアップグレードされました
・バージョン2.13にアップグレードされた「スイッチ」
・「Sys :: Syslog」がバージョン0.27にアップグレードされました
・「Term :: ANSIColor」がバージョン1.12にアップグレードされました
・「Term::Cap」がバージョン1.12にアップグレードされました
・「Term :: ReadLine」がバージョン1.03にアップグレードされました
・「Test::Builder」がバージョン0.80にアップグレードされました
・「Test::Harness」がバージョンを2.64にアップグレードしました
・これにより、改行を処理できるようになります。
・「Test::More」をバージョン0.80にアップグレード
・「Test::Simple」をバージョン0.80にアップグレード
・「Text::Balanced」がバージョン1.98にアップグレードされました
・「Text::ParseWords」がバージョン3.27にアップグレードされました
・「Text::Soundex」がバージョン3.03にアップグレードされました
・「Text :: Tabs」がバージョン2007.1117にアップグレードされました
・「Text :: Wrap」がバージョン2006.1117にアップグレードされました
・バージョン2.01にアップグレードされた「スレッド」
・「Thread::Semaphore」がバージョン2.09にアップグレードされました
・「Thread::Queue」がバージョン2.11にアップグレードされました
・複雑な構造(ハッシュのハッシュなど)をキューに追加する機能が追加されました。
・一度に複数のアイテムをデキューする機能が追加されました。
・キューを検査および操作するための新しいメソッド「peek」、「insert」、および
"エキス"
・「Tie::Handle」がバージョン4.2にアップグレードされました
・「Tie :: Hash」がバージョン1.03にアップグレードされました
・バージョン1.1にアップグレードされた「Tie::Memoize」
・「tie :: Memoize :: EXISTS」は、結果を正しくキャッシュするようになりました。
・「Tie::RefHash」がバージョン1.38にアップグレードされました
・「Tie::Scalar」をバージョン1.01にアップグレード
・「Tie::StdHandle」がバージョン4.2にアップグレードされました
・「Time::gmtime」がバージョン1.03にアップグレードされました
・「Time::Local」がバージョン1.1901にアップグレードされました
・「Time :: HiRes」がバージョン1.9715にアップグレードされ、さまざまなビルドが改善されました(
VMS)およびマイナーなプラットフォーム固有のバグ修正(HP-UX 11 ia64を含む)。
・「スレッド」が1.71にアップグレードされました
・新しいスレッド状態情報メソッド: "is_running"、 "is_detached"、および
「is_joinable」。 実行中または参加可能なスレッドを返すように拡張された「list」メソッド。
・新しいスレッドシグナルメソッド:「kill」
・スレッドスタックサイズを指定する機能が追加されました。
・スレッドの終了動作を制御する機能が追加されました。 新しい「exit」メソッドが追加されました。
・「threads :: shared」をバージョン1.27にアップグレード
・XNUMXつの内部構造と
結果として生じる間接レベル。
・ユーザーロックがより安全な方法で保存されるようになりました。
・新しい関数「shared_clone」は、共有要素を残してオブジェクトのコピーを作成します
現状のままおよびディープクローニングの非共有要素。
・新しい「is_shared」メソッドが追加されました。
・バージョン1.02にアップグレードされた「Unicode::Normalize」
・「Unicode :: UCD」がバージョン0.25にアップグレードされました
・バージョン1.05_01にアップグレードされた「警告」
・バージョン32にアップグレードされた「Win0.38」
・通常のWindowsプロセスを返す新しい関数「GetCurrentProcessId」を追加しました
フォーク内から呼び出された場合でも、現在のプロセスの識別子。
・バージョン0.10にアップグレードされた「XSLoader」
・「XS::APItest」および「XS::Typemap」は内部使用のみを目的としているため、使用できなくなりました
インストールされています。 「XS::APItest」にはさらに多くのテストが追加されています。
ユーティリティ 変更
デバッガ アップグレード 〜へ バージョン 1.31
・Andreas Koenigは、デバッガーの履歴を保存およびロードするためのXNUMXつの関数を提供しました。
・「NEXT :: AUTOLOAD」は、デバッガーで警告を発しなくなりました。
・デバッガーは、OSX10.5およびVMSでデバイスを正しく検出するようになりました。
プログラム「フォーク」。
・LVALUEサブがデバッガー内で機能するようになりました。
perlありがとう
Perl5.8.9は新しいユーティリティを追加します perlありがとう、の変形です パールバグ、ただし送信用
バグ以外-Perlの作成者とメンテナに報告します。 バグレポートしか得られない
少し意気消沈する可能性があります-これが物事を変えるかどうかを確認します。
パールバグ
パールバグ 非コアモジュールについて報告しているかどうかを確認し、報告することを提案するようになりました
代わりにCPANの作者に。
h2xs
・空の文字列を定数として定義しません[RT#25366]
・「h2xs-X」の例があります
時2時
・「」と「」との間のパスの意味の違いに賢明に対処しようとします
「#include」ステートメントでの「<>」引用符。
・「#ifdefined A || definedB」の正しいコードを生成するようになりました[RT#39130]
新作 ドキュメンテーション
いつものように、ドキュメントは修正、説明、その他のシェアを受け取りました
nitfixes。 インデックス作成のために、さらに「」タグが追加されました。
perlunitutは、Unicode関連の用語とその方法についてJuerdWaalboerが作成したチュートリアルです。
PerlスクリプトでUnicodeを正しく処理するため。
perlunicodeは、セクションのユーザー定義プロパティで更新されます。
perluniintroは、で無効なデータを検出する例で更新されました。
特定のエンコーディング。
perlcommunityは、Perlコミュニティの概要とその他のリソースを提供します。
COREは、Perlのコアルーチンの疑似名前空間を文書化します。
変更 〜へ 既存の ドキュメンテーション
perlglossaryは追加します 非推奨の モジュール および 機能を使用 および 〜へ be 落とした モジュール.
perlhackが更新され、スモークテストに関するリソースが追加されました。
PerlのFAQ(ペルファク1..ペルファク9)が更新されました。
perlcheatが更新され、「\ w」、「\ d」、および「\s」の詳細が改善されました。
perldebugは、デバッガーの呼び出し方法に関する情報で更新されます。
perldiagのドキュメントが更新されました サブルーチン an アンパサンド の議論について
「存在する」と「削除する」、および警告に関するいくつかの用語の更新。
perlforkは、疑似プロセス内の「exec」の制限を文書化しています。
perlfunc:
・ドキュメントは「発信者」と「ポップ」のセクションで修正されています。
・関数「alarm」は、「select」ではなく「Time :: HiRes::ualarm」に言及するようになりました。
・「-X」の優先順位については、ファイルテスト演算子は単項演算子と同じですが、
構文解析と括弧については関係ありません(Eirik Berg Hanssenによって発見されました)。
・「逆」関数のドキュメントは、スカラーコンテキストの例を受け取りました。
perllocaleのドキュメントは、番号のローカリゼーション用に調整され、「POSIX::setlocale」が修正されました。
Debianバグ#379463。
perlmodlibは「CPAN::API::HOWTO」と「Sys::Syslog :: win32::Win32」で更新されます
"[[::]]" と
「\p{IsXxxxx}」が一致します。 「/g」および「/c」修飾子に関するセクションも追加されました。
perlregutsは、正規表現エンジンの内部を記述します。 それはそうだった
YvesOrtonによる寄稿。
perlrebackslashは、すべてのperl正規表現のバックスラッシュとエスケープシーケンスを記述します。
perlrecharclassは、PerlRegularでの文字クラスの構文と使用法を説明しています。
式。
perlrunが更新され、ハッシュシードが明確になりました PERL_HASH_SEED。 また、詳細については
オプション「-x」および「-u」。
perlsubの例は、「opendir」構文に字句変数を使用するように更新されています。
perlvarは、実際のGID $(および有効なGID $)に関する混乱を修正します。
Perlスレッドのチュートリアルの例は、「キュー:データの受け渡し」のセクションで修正されています。
perlthrtutおよびperlthrtut。
perlhackのドキュメントは、JarkkoHietaniemiなどによって大幅に改善されました。
perltootは、@ UNIVERSAL::ISAの変更に関する情報を提供します。
perlportのドキュメントが拡張され、さまざまな「kill(-9、...)」セマンティクスが含まれるようになりました。
ウィンドウズ。 また、「ダンプ」はWin32とcygwinではサポートされていないことも明確に述べています。
INSTALL 更新され、近代化されました。
性能 機能強化
・perl 5.000以降のデフォルトでは、perlはすべてのスカラーで空のスカラーを作成します。
新しいtypeglob。 字句変数の使用が増えるということは、ほとんどが現在使用されていないことを意味します。
Nicholas Clarkの努力のおかげで、Perlは次のようにコンパイルできるようになりました。
これらの空のスカラーの作成を回避するための「-DPERL_DONT_CREATE_GVSV」。 この意志
すべての構成に割り当てられるスカラーの数を大幅に減らし、
ithreadを作成するためにコピーする必要があるスカラーの数。 このオプションは
既存のperlインストールとのバイナリ互換性、それは長年の変更を行います
内部に関する仮定、したがって、XNUMX分のXNUMXのように、デフォルトでは有効になっていません
パーティコードは古い動作に依存している可能性があります。
perlの新しいデプロイメントでこの構成でテストすることをお勧めします。
特にマルチスレッドサーバーの場合、すべてのサードパーティコードが
この構成ではパフォーマンスが向上する可能性があるため、互換性があります。
既存のインストールの場合、この構成に変更することはお勧めしません
展開前に徹底的なテストを実行しない限り。
・「diagnostics」は$&を使用しなくなり、正規表現のマッチングが大幅に高速化されました
それを使用するすべてのコードで。
・単一文字の正規表現クラスは、
文字はリテラルとして使用されていました。つまり、charクラスを
エスケープメカニズムはスピードアップを見るでしょう。 (イヴ・オートン)
・匿名の配列とハッシュ参照(つまり、「[]」と「{}」)を作成する必要がなくなりました
匿名リストまたはハッシュを作成するよりもオーバーヘッド。 ニコラス・クラークは
XNUMX回の操作とXNUMX回のスタックプッシュの節約。
これらの操作で5%の改善。
・長さがすでにあるため、「strlen()」への多くの呼び出しが削除されました
既知、または長さを渡すAPIを採用または拡張することによって。 これは、
正しいC89値(長さ)を返す「my_sprintf()」ラッパーの採用
フォーマットされた文字列の。 以前は、の戻り値に依存できませんでした
「sprintf()」。一部の古いが現存するプラットフォームでは、まだ「char*」を返すためです。
・検索文字列がUTF-8に格納されているが、含まれているだけの場合、「インデックス」が高速になりました
Latin-1の範囲の文字。
・regexpエンジン内のUnicodeスウォッチキャッシュが使用されるようになりました。 (ルックアップにはキーがありました
不一致、最初の実装以降に存在)。 [RT#42839]
インストール および 改善点
再配置可能 インストール
今があります 構成 再配置可能なperlツリーの作成のサポート。 もし、あんたが 構成
「-Duserelocatableinc」の場合、@ INC内のパス(および%Config内の他のすべて)は次のようになります。
オプションで、のパスを介して配置されます パール 実行可能ファイル。
開始時に、@INCまたは「Config」にパスがある場合 構成 再配置可能としてマークされています(
それらを".../")で始めて、$^Xのディレクトリの前に付けます。 これにより、
再配置はディレクトリごとに構成できますが、デフォルトでは
「-Duserelocatableinc」は、すべてが再配置されることです。 初期インストールは
元の設定済みプレフィックス。
改善
構成 一時ファイルの削除に優れています。 Tom Callaway(RedHatから)も
コンパイラとリンカに渡されるフラグのセットを完了するパッチを提供しました。
特に、Linuxでは「-fPIC」が有効になっています。 それはまたあなたのときに鳴くでしょう / dev / null
デバイスではありません。
新しい構成変数「d_pseudofork」は 構成、およびとして利用可能
「Config」モジュールの$Config{d_pseudofork}。 これにより、実際の「フォーク」サポートと
Windowsプラットフォームで使用される疑似フォークエミュレーション。
構成ポッド および config.sh クロスコンパイル用に正しく配置されるようになりました。
共有perlライブラリを使用する場合、$Config{useshrplib}は「yes」ではなく「true」になりました。
編集 改善
パラレルメイクは今は正しく動作するはずですが、「メイク」の場合はまだ問題がある可能性があります
test」は並行して実行するように指示されます。
多くのコンパイル警告がクリーンアップされました。 の非常に頑固なコンパイラ警告
「S_emulate_eaccess()」はXNUMX回の試行後に強制終了されました。 g ++ サポートが調整されました、
特にFreeBSDの場合。
mkppport 統合され、すべて ppport.h コア内のファイルが自動生成されるようになります
ビルド時(およびクリーンアップ中に削除されます)。
インストール 改善。
インストールマン 「-Duserelocatableinc」および「DESTDIR」で動作するようになりました。
インストールperl インストールされなくなりました:
・共有perlライブラリが
使用されています。 (これらは必要ありません。以下の「Windows」を参照してください)。
· 署名 および PAUSE * .pub (CPANファイル)
· 注意事項 および パッチング (ExtUtilsファイル)
· パールド および ld2 (Cygwinファイル)
プラットフォーム 特定の 変更
AIX、Cygwin、DEC / OSF、FreeBSD、HP / UX、Irix 6 Linux、MachTen、
NetBSD、OS / 390、QNX、SCO、Solaris、SunOS、System Vリリース5.x(UnixWare 7、OpenUNIX 8)、
Ultrix、UMIPS、uts、VOS。
FreeBSDの
・メインの積分型として「longlong」を使用している場合は「-std = c89」と「-ansi」を削除し、それ以外の場合は
FreeBSD 6.2(およびおそらく他のリリース)、システムヘッダーはいくつかの関数を宣言していません
perlで必要です。
ソラリス
・Solaris 10以降、バージョン管理された共有ライブラリは必要ありません。
多くの場合、私的使用のみのライブラリを示します。 これらの問題はしばしば引き起こされる可能性があります
SUNWbdb(Berkeley DB)がインストールされたとき。 したがって、Solaris 10が検出された場合は、
「ignore_versioned_solibs=y」。
VMS
・OpenVMS I64でIEEE数学の選択を解除できるようにします(ただし、デフォルトのままです)。
・IEEEの使用状況を「config.h」に記録します
・「munchconfig.exe」をビルドするときに「ccflags」を使用して、古いVMSコンパイラを支援します。
・「-Duseithreads」が選択されている場合は、VMSで古い「Thread」拡張機能を構築しようとしないでください。
・「NaN」の生の文字列をに渡す ノーク コアダンプが発生します-したがって、文字列は
「*NaN*」に変更
· t / op / stat.t テストは、サポートされている場合、VMSでハードリンクをテストするようになりました。
Windows
・共有perlライブラリを使用する場合 インストールperl 静的ライブラリファイルをインストールしなくなりました。
ライブラリファイルをインポートし、(静的にリンクされた拡張子の)ライブラリファイルをエクスポートします。
(動的にリンクされた拡張子の)空のブートストラップファイル。 これは問題を修正します
perlのデバッグビルドを使用してWin32でPAR-Packerをビルドします。
・Visual C ++ 32のサポートを含む、win2005ビルドプロセスのさまざまな改善
Express Edition(別名Visual C ++ 8.x)。
· perl.exe MinGWまたはBorlandでビルドした場合、アイコンが表示されるようになりました。
・perl-static.exeビルドプロセスの改善。
・Win32 makefileオプションを追加して、すべての拡張機能を静的にリンクします。
・ ひるみ ディレクトリはにマージされました Win32 ディレクトリにあります。
・「setlocale」テストは、WindowsXP以降で再び有効になりました。
選択した バグ 解消された問題
Unicode
内部Unicode実装(UTF-8)に関連する多くのバグが修正されました。 の
特に、「tie」、オーバーロード、または$@を介してUnicodeを返すことに関連する長年のバグ
現在はなくなっており、その一部は報告されていません。
「unpack」は、数値型で文字列をUTF-8から内部的に変換し直します。 これは
現在5.10の完全な一貫性と、現在の動作との間の妥協点
文字列タイプの「機能」としてよく使用されます。
「:crlf」と「UTF-16」のIOレイヤーを一緒に使用することが機能するようになりました。
「split」、Unicode「/ \ s+/」および「/\0/」の問題を修正しました。
バグRT#40641を修正しました-正規表現でのUnicode文字のエンコード。
正規表現で特定のパターンを使用するとパニックが発生するバグを修正しました。 [RT#45337]
ロケールの文字が次の場合、Perlは(無限の内部再帰のために)segfaultを実行しなくなりました
UTF-8ではない[RT#41442]:
open':locale'を使用します;
印刷STDERR"\x {201e}"; #„
PerlIO
PerlIOが追跡するために使用する参照カウントの不整合が修正されました
Unixファイル記述子、および「FILE」の取得と解放を管理するためにXSコードで使用されるAPI
* "s
いくつかのバグがMagicで修正されました。これは、次のような機能を実装するために使用される内部システムです。
「ネクタイ」、汚染、スレッド共有として。
タイ配列の「undef@array」は、「CLEAR」メソッドを正しく呼び出すようになりました。
一部のビット演算は、以前は引数が魔法であったかどうかをチェックしていませんでした
それらを使用します。 [RT#24816]
「\&$x」という式によってマジックがXNUMX回呼び出されることはなくなりました。
大きな数を割り当てて汚染するバグが解決されました。 [RT#40708]
新しいエントリがMAGICvtableに追加されました-「svt_local」。 これはコピー時に使用されます
「ローカル」中の新しい値への魔法、共有のローカライズに関する特定の問題を可能にする
解決する変数。
実装の詳細については、perlgutsの「MagicVirtualTables」を参照してください。
祝福 過負荷 オブジェクト 今 作品
内部的には、perlのオブジェクト性は、メソッドであっても、参照ではなく指示対象にあります。
参照を介してのみ呼び出すことができます。 ただし、オーバーロードの元の実装
コピーされるフラグに依存して、参照のオーバーロードに関連する格納されたフラグ
参照がコピーされたとき、または新しい参照の作成時に設定されたとき。 これはマニフェスト
バグの場合-オーバーロードのあるクラスからオブジェクトを、オーバーロードのあるクラスにreblessした場合
そうでない場合、他の既存の参照は、それらが(まだ)過負荷を指していると考えます
オブジェクト、これらのCコードパスを選択してから、エラーをスローします。 同様に、
他の参照が存在する場合にオーバーロードされたクラスは、オーバーロードを使用しない結果になります。
実装は5.10で修正されましたが、この修正によりフラグのセマンティクスが変更されます
ビットなので、バイナリ互換ではないため、5.8.9には適用できません。 ただし、5.8.9には
同じバグ修正を実装する回避策。 指示対象に複数の参照がある場合、
次に、他のすべての参照が検索され、修正されます。 完全な検索は常に回避されます
現在のサブルーチンから外側にレキシカルをスキャンすることで可能であり、引数
スタック。
ある有名なLinuxベンダーは、このバグ修正の不完全なバージョンを彼らに適用しました
/ usr / bin / perl その後、パフォーマンスの問題に関するバグレポートを早期にクローズしました。
上流に戻って相談します。 これは十分ではないので、彼らはそれから無視し始めました
これらのリリースされていない変更に対する必要な修正は、大規模なプレッシャーがかかるまで11か月間行われました。
長い間苦しんでいる有料の顧客によって適用され、失敗が取り上げられることによって触媒されます
著名なブログとスラッシュドットで。
"厳しい" 今 伝播する に 文字列 評価
5.8.8以前:
$ perl5.8.8-e'strictを使用します。 eval "usefoobar"またはdie$@ '
@INC(@INCに含まれるもの:...。)の(eval 1)行2にfoo.pmが見つかりません。
BEGINが失敗しました-コンパイルは(評価1)行2で中止されました。
5.8.9以降:
$ perl5.8.9-e'strictを使用します。 eval "usefoobar"またはdie$@ '
(eval 1)行1で「strictsubs」が使用されている間は、ベアワード「bar」は許可されません。
これにより、エラーメッセージを解析し、バギーに依存するプログラムで問題が発生する可能性があります
動作。
その他 修正
・トークナイザーは、「= cut」(および「= cut」で始まる単語)をとして処理しなくなりました。
「=cut」の同義語。
・「CORE::require」の呼び出し
「CORE::require」と「CORE::do」は、常に「require」と「do」として解析されていました。
オーバーライドされます。 これは修正されました。
・長い間メモリリークを停止しました /など/グループ エントリー。
・「while(my $ x ...){...;redo}」は「undef$x」であってはなりません。
「while()」、「until()」、または「for(;;)」の条件で「my」が存在する場合
ループでは、「redo」が「undef」しないように、本体にスコープを追加します。
字句。
・「encoding」プラグマは、「@」文字に続くものを正しく無視するようになりました。
「LC_ALL」および「LANG」環境変数。 [RT#49646]
・一部で観察されたセグメンテーション違反 gccの 3.3最適化が解決されました。
・「()」グループを使用してスカラーコンテキストで使用される「unpack」が解決されたときに発生する可能性のあるセグメンテーション違反。
[RT#50256]
・$!の問題を解決しました。 「システム」を中断するシグナルハンドラーによって変更される可能性があります
コール。
・バグRT#37886を修正しました。「定義済み」の引数で、シンボリック逆参照が許可されていました。
「厳密な「refs」を使用する」の影響下でも。
・「sort」内の「lc」/「uc」が戻り値に影響を与えるバグRT#43207を修正しました。
・「* {"BONK"} = \&{"BONK"}」が正しく機能しなかったバグRT#45607を修正しました。
・バグRT#35878を修正しました。「goto&xsub」を介して呼び出されたXSUBからのクローキングにより、perlが破損します。
内部。
・バグRT#32539を修正しました。 ダイナローダー.o に移動されます libperl.so する必要性を避けるために
DynaLoaderをスタブperl実行可能ファイルに静的にリンクします。 これとともに libperl.so
機能的な組み込みperlインタープリターを実行するために必要なすべてを提供します。
・バグRT#36267を修正して、タイハッシュに割り当てても基になるハッシュが変更されないようにします。
・バグRT#6006を修正しました。大きな置換変数を使用した正規表現の置換は、一部で失敗します。
時、 すなわち 置換に「${10}」のようなものが含まれている場合(括弧に注意)
たった10ドルではなく。
・バグRT#45053を修正し、「Perl_newCONSTSUB()」がスレッドセーフになりました。
プラットフォーム 特定の 解消された問題
ダーウィン / MacOSの X
・64ビットビルドのさまざまな改善。
・競合状態を回避するために、「PerlIOStdio_close()」にミューテックス保護が追加されました。 うまくいけば
これにより、スレッドテストの失敗が修正されます free.t および ブロック.t.
・ウィンドウを更新する機能を備えた、フォークされた端末のサポートをデバッガーに追加しました
タイトル。
OS / 2
・「USE_MULTI」と「USE_ITHREADS」を指定するが、指定しない場合のビルドの問題
「USE_IMP_SYS」が修正されました。
・「OS2::REXX」がバージョン1.04にアップグレードされました
Tru64
・調整された浮動小数点ビルドポリシー cc および gccの.
RedHatの Linux
・IntelのRH5.6.1の7.2からのパッチを再検討しました icc [RT#7916]、追加
$Config{gccversion}を確認してください。
Solaris / i386
・64ビット整数を使用する場合は「-DPTR_IS_LONG」を使用します
VMS
・「PerlIO::Scalar」メモリ内ファイルのレコードスタイルの読み取りを修正しました。
・プロセス終了時のパイプシャットダウンがより堅牢になるはずです。
・「Test::Harness」2.64でくすぐられたVMS出口処理のバグが修正されました。
・「fcntl()」ロック機能テストを修正 構成.com.
・VMSで「shrplib='define'」を「useshrplib='true'」に置き換えました。
Windows
・「File :: Find」は、ターゲットディレクトリが裸のドライブ文字であり、
「no_chdir」は1です(デフォルトは0です)。 [RT#41555]
・「USE_MULTI」と「USE_ITHREADS」を指定するが、指定しない場合のビルドの問題
「USE_IMP_SYS」が修正されました。
・一部のWindowsプラットフォームでは、プロセスIDが16ビットに切り捨てられなくなりました(
http://bugs.activestate.com/show_bug.cgi?id = 72443)
・バグRT#54828を修正しました ペルリオ.c Win32およびCygwinで「binmode」を呼び出すと発生する可能性があります
セグメンテーション違反。
より小さい 修正
・「nomethod」を使用するときに「eq」をオーバーロードできるようになりました。
・64ビット整数を修正した「オーバーロード」を使用した場合のさまざまな問題。
・「PerlIO」ファイル記述子の参照カウントが正しく処理されるようになりました。
・VMSでは、エスケープされたドットはUnix構文に変換されたときに保持されます。
・「keys%+」が「あいまいな」警告をスローしなくなりました。
・「#!perl-d」を使用すると、アサーションがトリガーされる可能性がありましたが、修正されました。
・「require」を呼び出すときに、@INCでタイコード参照を文字列化しないでください。
・@INCのコード参照は、「__FILE__」が使用されている場合に正しいファイル名を報告します。
・sprintfの幅と精度は、255を超える文字を正しく処理しませんでした。 [RT
#40473]
・インデックスが範囲外のリストスライスがより一貫して機能するようになりました。 [RT#39882]
・perl 5.8.1で導入された変更により、フォームの引数の解析が壊れました。
<#!>行に「-s」が付いた「-foo=bar」。 これは修正されました。 見る
http://bugs.activestate.com/show_bug.cgi?id = 43483
・「tr///」はスレッドセーフになりました。 以前は、OP内にスワッシュを保存していました。
パッドよりも。
· ポッド2html ラベルはより一貫してアンカーを作成し、ネストされた定義リストをより適切に処理します。
・「スレッド」クリーンアップ拒否権が拡張され、「perl_free()」と
「perl_destruct()」
・一部のシステムでは、$ ENV {TZ}への変更は、基盤となるものによって常に尊重されるとは限りません。
「localtime_r()」の呼び出し。 Perlは、これらの環境の検査を強制するようになりました
システム。
・特別な変数$ ^ Rは、を使用して正規表現を実行するときに、より一貫して設定されるようになりました。
「(?{...})」コンストラクト。 特に、後方参照や
オプションのサブパターン「(?:...)?」 使用されています。
新作 or かわった 診断法
パニック: sv_チョップ %s
この新しい致命的なエラーは、Cルーチン「Perl_sv_chop()」に次のような位置が渡されたときに発生します。
スカラーの文字列バッファ内にありません。 これはバグのあるXSコードが原因で、これは
ポイント回復はできません。
最大の カウント of ペンディング 信号 (%NS) 超過
この新しい致命的なエラーは、保留中の数が多すぎるためにperlプロセスを中止する必要がある場合に発生します
シグナル。これは、perlがそれ以上の着信シグナルを処理できないようにするためにバインドされています。
安全に。
パニック: 試み 〜へ コール %s in %s
この新しい致命的なエラーは、ACLバージョンファイルのテスト演算子が使用されている場合に発生します。
現在のプラットフォームでは利用できません。 以前のチェックは、決してそうすべきではないことを意味します
これを取得することが可能です。
フェッチサイズ すべての本を返却しているか確認してください。 a 負 値
結合された配列が負の数の要素を持っていると主張していることを示す新しいエラー。
することはできません アップグレード %s (%d) 〜へ %d
以前は、SVアップグレードコードからの内部エラーはあまり有益ではありませんでした することはできません
アップグレード それ 種類 of スカラー。 現在の内部タイプと新しいタイプを報告するようになりました
要求されました。
%s 引数 is a ハッシュ or アレイ 素子 or a サブルーチン
無効な引数が「存在する」に指定された場合にスローされるこのエラーには、正しく含まれるようになりました
「またはサブルーチン」。 [RT#38955]
できません make オーバーライド不可 ビルトイン %s 致命的な
「致命的」のこのエラーは、以前は問題のビルトインの名前を表示していませんでした(現在は
上記の%sで表されます)。
認識されない 文字 '%s' in の項目に表示されます。 %d
このエラーは、以前は列を示していませんでした。
オフセット 外側 文字列
これは、「PerlIO::scalar」を使用してファイルハンドルを「シーク」することでも生成できるようになりました。
「無効」 脱出 in 指定の エンコーディング in 正規表現; マークされた by < - こちら in MS/
Unicodeのエンコーディングを処理するためのRT#40641の修正の一部として導入された新しいエラー
正規表現コメントの文字。
あなたの 機械 しない サポート ダンプ/アンダンプ。
Win32およびCygwinで「ダンプ」を呼び出すときに発行されるより有益な致命的なエラー。 (とすれば
「ダンプ」の目的はコアダンプで中止することであり、コアダンプはで生成できません。
これらのプラットフォームでは、これはサイレントに終了するよりも便利です。)
かわった 内部
Perlソースは、Cコンパイラの代わりにC++コンパイラでコンパイルできるようになりました。 A
必要な実装の詳細は、C ++では、XSUBの定義に使用されるマクロ「XS」です。
「外部「C」」の定義が含まれるようになりました。 これの副作用はそれです C + + 使用したコード
建設
typedef XS(SwigPerlWrapper);
今書く必要があります
typedef XSPROTO(SwigPerlWrapper);
コンパイルするために、新しい「XSPROTO」マクロを使用します。 C拡張機能は影響を受けませんが、
C拡張機能も「XSPROTO」を使用することをお勧めします。 この変更は5.10.0に存在していました
perlのリリース、つまりこの構造を使用したアクティブに保守されたコード
すでに適応されているはずです。 変更が必要なコードはコンパイルで失敗します
エラー。
マジック変数へのローカライズ/割り当てでマジックを「設定」すると、次の場合にのみトリガーされるようになります。
コンテナ 魔法つまり、%ENVまたは%SIGには適用されますが、$#arrayには適用されません。
新しいAPIマクロ「newSVpvs()」は、次のような構造の代わりに使用できます。
"newSVpvn(" ISA "、3)"。 これは単一の文字列定数を取り、Cコンパイル時に決定されます
その長さ。
新しいAPI関数「Perl_newSV_type()」は、より効率的な代替として使用できます。
一般的なイディオム
SV = 新しいSV(0);
sv_upgrade(sv、type);
同様に、「Perl_newSVpvn_flags()」を使用して「Perl_newSVpv()」を
「Perl_sv_2mortal()」または同等の「Perl_sv_newmortal()」と「Perl_sv_setpvn()」
XNUMXつの新しいマクロ「mPUSHs()」と「mXPUSHs()」が追加され、致命的なSVを簡単にプッシュできるようになりました。
スタックに。 次に、それらを使用して、スタック上の値がなかったいくつかのバグを修正しました。
死にました。
「NV」の符号をテストするために「Perl_signbit()」関数が追加されました。 システムにマッピングされます
利用可能な場合はXNUMXつ。
"Perl_av_reify()"、 "Perl_lex_end()"、 "Perl_mod()"、 "Perl_op_clear()"、 "Perl_pop_return()"、
「Perl_qerror()」、「Perl_setdefout()」、「Perl_vivify_defelem()」、「Perl_yylex()」が追加されました
拡張機能に表示されます。 これは、「Data::Alias」がWindowsで機能するために必要でした。
「Perl_find_runcv()」がperlコア拡張機能に表示されるようになりました。 これは許可するために必要でした
「Sub::Current」はWindowsで動作します。
「ptr_table*」関数がスレッド化されていないperlで利用できるようになりました。 「保存可能」は
内部に行われた多くの小さなクリーンナップがありました。 特に、
「Perl_sv_upgrade()」は大幅に簡素化され、コードパスが単純になりました。
「memset()」と「memcpy()」を使用して、を介した割り当てではなく、新しいボディを初期化します。
複数の一時変数。 また、簡素化と重複排除の恩恵を受けています
アリーナ管理コードの。
Coverityからの報告により、コードベースに多くの小さな改善が加えられました。
静的コードアナライザー。
「Perl_gv_stashpv()」、「Perl_gv_stashpvn()」の使用法とドキュメントを修正しました。
「Perl_gv_stashsv()」関数(最後のパラメーターはビットマスクであり、ブール値ではありません)。
「PERL_SYS_INIT」、「PERL_SYS_INIT3」、「PERL_SYS_TERM」マクロは次のように変更されました。
機能します。
「PERLSYS_TERM」はコンテキストを必要としなくなりました。 「PerlIO_teardown()」は、
コンテキスト、およびこの関数のデバッグ出力は、必要なため無効になっています
通訳がいたこと、終了時の無効な仮定。
バイナリ互換性に影響を与えるすべてのコンパイル時オプションは、次のようにグループ化されています。
グローバル変数( "PL_bincompat_options")。
「PERL_REVISION」、「PERL_VERSION」、「PERL_SUBVERSION」の値がベイクされます。
グローバル変数(したがって、任意の共有perlライブラリに)。 さらに下
「MULTIPLICITY」、perl実行可能ファイルがインタプリタ構造のサイズを記録するようになりました
(合計、およびこのバージョンの場合)。 「PL_bincompat_options」と組み合わせると、5.8.10が可能になります
(およびそれ以降)共有perlライブラリを使用してコンパイルすると、
「main()」を使用して、共有ライブラリが実際にバイナリ互換であることを確認します。
シンボリック参照にNULを埋め込むことができるようになりました。 新しいパブリック機能
「Perl_get_cvn_flags()」は、それらを処理する必要がある場合、拡張機能で使用できます。
マクロ クリーンナップ
コアコード、およびXSコード EXT それはCPANでデュアルライフではなく、もはや使用しません
マクロ"PL_na"、 "NEWSV()"、 "Null()"、 "Nullav"、 "Nullcv"、 "Nullhv"、 "Nullhv" 等。 それらの使用
新しいコード、特にパフォーマンスへの小さな影響である「PL_na」では推奨されていません。
新作 テスト
CPANから更新された多くのモジュールには、新しいテストが組み込まれています。 いくつかのコア固有のテストは
を追加しました:
ext / DynaLoader / t / DynaLoader.t
「DynaLoader」モジュールのテスト。
t / comp / fold.t
コンパイル時の定数畳み込みをテストします。
t / io / pvbm.t
5.10.0から組み込まれたテストで、予期しない相互作用がないことを確認します
内部タイプ「PVBM」と「PVGV」の間。
t / lib / proxy_constant_subs.t
新しい形式の定数サブルーチンをテストします。
t / op / attrhand.t
「Attribute::Handlers」をテストします。
t / op / dbm.t
「dbmopen」をテストします。
t / op / inccode-tie.t
のすべてのテストを呼び出します t / op / inccode.t 最初に@INCを結んだ後。
t / op / incfilter.t
@INCのコード参照から返されるソースフィルターのテスト。
t / op / kill0.t
RT#30970のテスト。
t / op / qrstack.t
RT#41484のテスト。
t / op / qr.t
「qr//」コンストラクトをテストします。
t / op / regexp_qr_embed.t
別の正規表現内の「qr//」コンストラクトをテストします。
t / op / regexp_qr.t
「qr//」コンストラクトをテストします。
t / op / rxcode.t
RT#32840のテスト。
t / op / studytied.t
結合されたスカラーの「調査」をテストします。
t / op / substT.t
「subst」のテストは「-T」モードで実行されます。
t / op / symbolcache.t
サブルーチンにバインドされているstashエントリの「undef」と「delete」をテストします。
方法。
t / op / upgrade.t
「Perl_sv_upgrade()」をテストします。
t / mro / package_aliases.t
MROは、「isa」とパッケージエイリアスをテストします。
t / pod / twoce.t
「Pod::Parser」をXNUMX回呼び出すためのテスト。
t / run / cloexec.t
「exec」(close-on-exec)全体でファイル記述子を継承するためのテスト。
t / uni / cache.t
UTF-8キャッシングコードをテストします。
t / uni / chr.t
奇妙なエンコーディングが「Perl_pp_chr()」を混乱させないことをテストします。
t / uni / greek.t
RT#40641のテスト。
t / uni / latin2.t
RT#40641のテスト。
t / uni / overload.t
オーバーロードされた値からUnicodeを返すためのテスト。
t / uni / tie.t
結合された変数からUnicodeを返すためのテスト。
知られている 問題
既知の新しいバグはありません。
ただし、修正されたバグに依存するプログラムには問題があります。 また、多くの
5.10.0に存在するバグ修正は、5.8.xブランチにバックポートすることはできません。
バイナリ互換ではない変更、またはコードの変更が大きすぎて変更が大きすぎるため
組み込むにはリスクが高すぎます。
ボランティアの労働力は限られており、メンテナンスの負担はますます増えています
繁雑。 したがって、これは5.8.xシリーズの最後の重要なリリースになります。 将来
5.8.xのリリースは、セキュリティの問題とプラットフォームの構築にのみ対処する可能性があります
失敗。 したがって、まだ開始していない場合は、5.10.xへの移行を検討する必要があります。
または、ビジネス要件により5.8.xの使用を継続する必要がある場合は、
ActiveStateなどの企業からの商業的支援を検討したい。
プラットフォーム 特定の ノート
Win32
「readdir()」、「cwd()」、$ ^ X、および@INCは、長い名前の場合、代替(短い)ファイル名を使用するようになりました。
現在のコードページ(Jan Dubois)の外にあります。
更新中 モジュール
・「Win32」がバージョン0.38にアップグレードされました。 からの「WinVista」応答が文書化されました
「GetOSName」および「IsAdminUser」でのVistaの特権昇格のサポート。 へのサポート
パス名のUnicode文字。 cygwinとWin64の互換性が向上しました。
・「Win32API」が0.1001_01に更新されました
・「MSWin32」(Jan Dubois)に「killpg()」のサポートが追加されました。
・「File :: Spec::Win32」がバージョン3.2701にアップグレードされました
OS / 2
更新中 モジュール
・「OS2::Process」が1.03にアップグレードされました
Ilya Zakharevichは、いくつかの「Window*」および「Clipbrd*」関数を追加して文書化しました。
・「OS2 :: REXX :: DLL」、「OS2::REXX」がバージョン1.03に更新されました
VMS
更新中 モジュール
・バージョン1.03にアップグレードされた「DCLsym」
・バージョン2.4にアップグレードされた「Stdio」
・「VMS::XSSymSet」が1.1にアップグレードされました。
死亡記事
Nick Ing-Simmons、長年のPerlハッカー、「Tk」および「Encode」モジュールの作者、 ペルリオ.c
5.003年02月25日、心臓発作で死亡しました。
見逃されます。
謝辞
このリリースの作業の一部は、TPF助成金によって資金提供されました。
スティーブ・ヘイは舞台裏で働き、コア間の違いの原因を解明しました
モジュール、それらのCPANリリース、および以前のコアリリース、および修正するための最良の方法
彼ら。 彼は二度とそれをしたくありません。 私はこの気持ちを知っています、そして彼がそれをしてくれてとてもうれしいです
今回は私の代わりに。
ポールフェンウィックは18人のボランティアのチームを結成しました。
資料。 特に、Bradley Dean、Eddy Tan、VincentPitがチームの半分を提供しました
貢献。
Schwernは、更新されたモジュールバージョンのリストを検証し、私が行ったかなりの数のエラーを修正しました。
(および他のすべての人)は、モジュールのバージョンを誤って記述し、モジュールを変更したことを見逃していました
それはリストされていませんでした。
AndreasKoenigとSlavenRezicのベルリンを拠点とするクラックQAチームがたゆまず再構築されました
スナップショット、それらに対してほとんどすべてのCPANをテストし、変更を特定しました
モジュールのリグレッションを担当し、いくつかのショーストッパーのバグがあったことを確認します
最初のリリース候補がカットされる前に踏みつけられました。
他のコアコミッターはほとんどの変更に貢献し、ほとんどのパッチを適用しました
にリストされている何百人もの貢献者によって送られました 作者.
そして明らかに、ラリー・ウォール、それなしでは私たちはPerlを持っていなかったでしょう。
各種レポート作成 バグ
バグだと思うものを見つけた場合は、最近投稿された記事を確認してください。
comp.lang.perl.miscニュースグループとperlバグデータベース http://bugs.perl.org。 そこ
での情報かもしれません http://www.perl.org、Perlホームページ。
報告されていないバグがあると思われる場合は、 パールバグ に含まれるプログラム
あなたのリリース。 バグを小さいながらも十分なテストケースに切り詰めてください。 あなたのバグ
レポートは、「perl-V」の出力とともに、に送信されます [メール保護] ようにするには
Perl移植チームによって分析されました。 Perl5のバグを参照して検索できます。
http://bugs.perl.org/
報告しているバグにセキュリティ上の影響がある場合は、
公にアーカイブされたメーリングリストに送信してから、に送信してください
[メール保護]。 これは、閉じられたサブスクリプションのアーカイブされていないメーリングを指します
影響の評価を支援できるすべてのコアコミッターを含むリスト
問題の解決策を見つけ、パッチのリリースを調整するのに役立ちます
Perlがサポートされているすべてのプラットフォームで問題を軽減または修正します。 だけお願いします
モジュールを個別に使用するのではなく、Perlコアのセキュリティ問題にこのアドレスを使用します
CPANで配布されます。
onworks.netサービスを使用してオンラインでperl589deltaを使用する