perl5202delta - perl v5.20.2 的新功能
本文檔說明 5.20.1 版本和 5.20.2 版本之間的差異。
如果您要從較早的版本(例如 5.20.0)升級,請先閱讀 perl5201delta,其中說明了 5.20.0 和 5.20.1 之間的差異。
沒有任何變更與 5.20.1 不相容。如果有的話,那是錯誤,我們要求您提交報告。請參閱以下的「回報錯誤」。
attributes 已從版本 0.22 升級至 0.23。
已修正 XS 中 memEQs
的使用方式。 [GH #14072]
Data::Dumper 已從版本 2.151 升級至 2.151_01。
修正 CVE-2014-4330,新增一個組態變數/選項,用於在傾印深層資料結構時限制遞迴。
Errno 已從版本 1.20_03 升級至 1.20_05。
現在避免在 Windows 上使用 Visual C++ 編譯器建置 XS 時出現警告。
feature 已從版本 1.36 升級至 1.36_01。
postderef
語用現在已記錄。此語用實際上已在 Perl 5.20.0 中新增,但直到現在才意外地從語用文件中遺漏。
IO::Socket 已從版本 1.37 升級至 1.38。
記錄 connected()
方法的限制。 [GH #14199]
Module::CoreList 已從版本 5.020001 升級至 5.20150214。
已更新所涵蓋的 Perl 版本清單。
PathTools 已從版本 3.48 升級至 3.48_01。
現在避免在建置 XS 時出現 gcc 編譯器的警告。
PerlIO::scalar 已從版本 0.18 升級至 0.18_01。
現在正確傳回檔案結束,而不是從標量結束位置讀取。 [GH #14342]
尋找到負位置仍然會失敗,但不再將檔案位置設定為負位置。
在 32 位元系統上,當檔案位置超過 2GB 標記時,PerlIO::scalar
處理序上的 eof()
現在會正確傳回 true。
Storable 已從版本 2.49 升級至 2.49_01。
僅對文件進行輕微的語法變更。
VMS::DCLsym 已從版本 1.05 升級至 1.05_01。
僅對文件進行輕微的格式變更。
VMS::Stdio 已從版本 2.4 升級至 2.41。
僅對文件進行輕微的格式變更。
此文件由 Tom Christiansen 提供,提供 Perl 中處理 Unicode 的範例。
新增子常式簽章的參考。此功能實際上已於 Perl 5.20.0 中新增,但直到現在才意外地從實驗性功能文件遺漏。
功能從實驗狀態畢業的流程現已正式記載。
已修正省略號陳述文件中的歧義。 [GH #14054]
已對診斷輸出(包括警告和致命錯誤訊息)進行下列新增或變更。有關診斷訊息的完整清單,請參閱 perldiag。
標量符號錯誤 現已記載。此錯誤並非新錯誤,但之前未在此處記載。
缺少 \N{} 右大括弧 現已記載。此錯誤並非新錯誤,但之前未在此處記載。
已新增測試指令碼 re/rt122747.t,以驗證 [GH #14081] 仍已修正。
IRIX 和 Tru64 平台已恢復運作。(部分 make test
失敗仍存在。)
AIX 現已正確設定 getsockopt
中的長度。 [GH #13484], [cpan #91183], [cpan #85570]
在 Perl 5.20.0 中,如果從正規表示式內的程式碼區塊存取 $^N
,意外地會關閉內部 UTF8 標記,實際上會對值進行 UTF8 編碼。此問題已修正。 [GH #14211]
過去,在各種使用子程式名稱的情況下(自動載入、重載、錯誤訊息)會導致詞彙子程式發生崩潰,但已修正此問題。
已修正啟用偵錯時解析 sort
會出現的斷言失敗。 [GH #14087]
在偵錯建置中,如果前一次比對使用完全相同的正規表示式,則在正規表示式比對期間載入 UTF8 表格可能會導致斷言失敗。 [GH #14081]
由於字串複製邏輯中的錯誤,複製狀態變數的值可能會偷走該值並取消定義該變數。此錯誤在 Perl 5.20 中引入,主要會發生在長字串(1250 個字元以上)中,但對於已停用寫入時複製的建置,可能會發生在任何字串中。 [GH #14175]
已修正一個錯誤,該錯誤可能導致 perl 在編譯期間執行無限迴圈。 [GH #14165]
在 Win32 上,在 fork
發生之前,在父偽處理程序中 local()
的變數在子偽處理程序中還原會導致記憶體損毀,並在子偽處理程序(因此也是作業系統處理程序)中崩潰。 [GH #8641]
在編譯時評估的受污染常數不再會導致不相關的陳述受到污染。 [GH #14059]
如果參數不足或用於填寫欄位的變數為空,則對具有 ^**
欄位的格式呼叫 write
會在 sv_chop() 中產生錯誤。 [GH #14255]
在 Perl 5.20.0 中,sort CORE::fake
(其中「fake」是除關鍵字以外的任何東西)開始切斷最後 6 個字元,並將結果視為排序子程式名稱。已還原將「CORE::fake」視為排序子程式名稱的先前行為。 [GH #14323]
已修正正規表示式模式中的錯誤,該錯誤可能導致區段錯誤和其他崩潰。這只會發生在使用 "/i"
編譯的模式中,同時考慮當前 POSIX 區域設定(這通常表示它們必須在 "use locale"
範圍內編譯),並且必須有一個長度至少為 128 個連續位元的字串才能比對。 [GH #14389]
qr/@array(?{block})/
不再會因「ARRAY 的奇特複製」而中斷。 [GH #14292]
gmtime
不再會因非數字值而崩潰。 [GH #14365]
替換中的某些語法錯誤,例如 s/${<>{})//
,會導致崩潰,而且自 Perl 5.10 以來一直如此。(在某些情況下,崩潰直到 Perl 5.16 才開始發生。)當然,崩潰已經修復。 [GH #14391]
Perl 5.20.1 中引入的某些正規表示式中的記憶體洩漏已修復。 [GH #14236]
formline("@...", "a");
會崩潰。pp_formline() 中的 FF_CHECKNL
案例未設定用於標記切斷位置的指標,這導致 FF_MORE
案例因分段錯誤而崩潰。此問題已修復。 [GH #14388] [GH #14425]
正規表示式編譯期間解析文字模式時可能發生的緩衝區溢位和崩潰已修復。 [GH #14416]
已知錯誤是無法將詞彙子常式用作 sort
的 SUBNAME
引數。這將在未來的 Perl 版本中修復。
已修復 Perl 5.20.0 中引入的回歸(也修復在 Perl 5.20.1 中以及這裡),其中包含單一 ASCII 小寫字母的 UTF-8 編碼正規表示式模式與其大寫對應項不匹配。 [GH #14051]
Perl 5.20.2 代表自 Perl 5.20.1 以來約 5 個月的開發時間,並包含來自 34 位作者的 170 個檔案中約 6,300 行的變更。
排除自動產生的檔案、文件和發行工具,約有 1,900 行變更至 80 個 .pm、.t、.c 和 .h 檔案。
Perl 在使用者和開發人員的活躍社群的幫助下,持續在第三個十年蓬勃發展。已知以下人員貢獻了改善,這些改善成為 Perl 5.20.2
Aaron Crane、Abigail、Andreas Voegele、Andy Dougherty、Anthony Heading、Aristotle Pagaltzis、Chris 'BinGOs' Williams、Craig A. Berry、Daniel Dragan、Doug Bell、Ed J、Father Chrysostomos、Glenn D. Golden、H.Merijn Brand、Hugo van der Sanden、James E Keenan、Jarkko Hietaniemi、Jim Cromie、Karen Etheridge、Karl Williamson、kmx、Matthew Horsfall、Max Maischein、Peter Martini、Rafael Garcia-Suarez、Ricardo Signes、Shlomi Fish、Slaven Rezic、Steffen Müller、Steve Hay、Tadeusz Sośnierz、Tony Cook、Yves Orton、Ævar Arnfjörð Bjarmason。
上述清單幾乎可以確定不完整,因為它是從版本控制記錄中自動產生的。特別是,它不包括向 Perl 錯誤追蹤器回報問題的(非常感謝的)貢獻者的姓名。
此版本中包含的許多變更源自 Perl 核心包含的 CPAN 模組。我們感謝整個 CPAN 社群協助 Perl 蓬勃發展。
如需 Perl 所有歷史貢獻者的更完整清單,請參閱 Perl 原始碼發行中的 AUTHORS 檔案。
如果您發現您認為是錯誤的情況,您可以查看最近張貼到 comp.lang.perl.misc 新聞群組和 https://rt.perl.org/ 上的 Perl 錯誤資料庫中的文章。Perl 首頁 http://www.perl.org/ 上也可能有相關資訊。
如果您認為您有尚未回報的錯誤,請執行您的發行版中包含的 perlbug 程式。務必將您的錯誤簡化為一個微小但足夠的測試案例。您的錯誤回報連同 perl -V
的輸出將會傳送至 perlbug@perl.org,供 Perl 移植團隊分析。
如果您回報的錯誤有安全性影響,不適合傳送至公開封存的郵件清單,請將其傳送至 perl5-security-report@perl.org。這會指向一個封閉訂閱的未封存郵件清單,其中包含所有核心提交者,他們將能夠協助評估問題的影響,找出解決方案,並協助協調在 Perl 受支援的所有平台上發布修補程式以減輕或修復問題。請僅將此地址用於 Perl 核心的安全性問題,不適用於在 CPAN 上獨立發布的模組。
變更 檔案,說明如何查看已變更內容的詳盡詳細資料。
安裝 檔案,說明如何建置 Perl。
自述 檔案,說明一般事項。
藝術 和 複製 檔案,說明著作權資訊。