perl5262delta - perl v5.26.2 的新功能
本文檔說明 5.26.1 版本與 5.26.2 版本之間的差異。
如果您要從較早版本(例如 5.26.0)升級,請先閱讀 perl5261delta,其中說明了 5.26.0 與 5.26.1 之間的差異。
精心設計的正規表示式可能會導致堆積緩衝區寫入溢位,並控制寫入的位元組。 [GH #16185]
比對精心設計的區域設定相關正規表示式可能會導致堆積緩衝區讀取溢位,並可能揭露資訊。 [GH #16143]
pack()
可能會導致堆積緩衝區寫入溢位,且項目計數龐大。 [GH #16098]
假設的 Unicode 屬性名稱中的控制字元可能會導致 perl 崩潰。此問題已修復。 [perl #132055] [perl #132553] [perl #132658]
沒有任何變更故意與 5.26.1 不相容。若有任何,它們是錯誤,我們要求您提交報告。請參閱下方的 "回報錯誤"。
Module::CoreList 已從版本 5.20170922_26 升級到 5.20180414_26。
PerlIO::via 已從版本 0.16 升級到 0.17。
Term::ReadLine 已從版本 1.16 升級到 1.17。
Unicode::UCD 已從版本 0.68 升級到 0.69。
已更新此文件,以註明 \p{Word}
現在包括符合 \p{Join_Control}
屬性的碼點。此屬性變更已於 Perl 5.18 中進行,但直到現在才記錄下來。目前只有兩個碼點符合此屬性:U+200C(零寬度非連接符)和 U+200D(零寬度連接符)。
已改善 Visual C++ 編譯器版本偵測,以適用於非英語語言系統。 [GH #16235]
我們現在正確設定 $Config{libpth}
以使用早於 14.1 的 Visual C++ 版本進行 64 位元組建。 [GH #16269]
readpipe()
內建函數現在會在編譯時檢查它只有一個參數表達式,並將其置於標量內容中,從而確保它不會在執行時損壞堆疊。 [GH #2793]
修正 Perl 5.27.1 中 pp_list
中的釋放後使用錯誤。 [GH #16124]
如果 sub
關鍵字後接空白(包括換行符和註解),解析 sub
定義可能會導致釋放後使用。 [GH #16097]
在 ${identifier}
結構中跳過空白時,分詞器現在會正確調整解析指標。 [perl #131949]
在對非 glob 執行各種 I/O 操作後,不再斷言對 ${^LAST_FH}
的存取。 [GH #15372]
sort
現在在別名 $a
和 $b
時執行正確的參考計數,從而避免在執行排序比較器期間重新別名時過早銷毀和洩漏標量。 [GH #11422]
編譯時,某些複雜類型的正規表示式不再導致算術溢位。 [GH #16113]
修正 -flto -mieee-fp 建置中的重複符號失敗。 pp.c 定義了 -lieee 已定義的 _LIB_VERSION
。 [GH #16086]
已修正 S_regmatch()
函數中的 NULL 指標解除參考。 [perl #132017]
現在,在其他結構(例如字串內插和 s///e
的右側部分)中編譯程式碼時失敗,會導致編譯提早中止。
先前編譯可以繼續進行以報告其他錯誤,但失敗的子解析可能會在解析器移位減少堆疊上留下部分解析的結構,使解析器混淆,導致 perl 崩潰。 [GH #14739]
Perl 5.26.2 代表自 Perl 5.26.1 以來約 7 個月的開發,包含來自 17 位作者的 82 個檔案中約 3,300 行變更。
排除自動產生的檔案、文件和發行工具,約有 1,800 行變更至 36 個 .pm、.t、.c 和 .h 檔案。
由於使用者和開發人員的熱情社群,Perl 持續在第三個十年蓬勃發展。已知以下人員貢獻了成為 Perl 5.26.2 的改進
Aaron Crane、Abigail、Chris 'BinGOs' Williams、H.Merijn Brand、James E Keenan、Jarkko Hietaniemi、John SJ Anderson、Karen Etheridge、Karl Williamson、Lukas Mai、Renee Baecker、Sawyer X、Steve Hay、Todd Rinaldo、Tony Cook、Yves Orton、Zefram。
上述清單幾乎可以確定不完整,因為它是從版本控制記錄中自動產生的。特別是,它不包含向 Perl 錯誤追蹤器回報問題的(非常感謝的)貢獻者的姓名。
此版本中包含的許多變更源自於 Perl 核心包含的 CPAN 模組。我們感謝整個 CPAN 社群協助 Perl 蓬勃發展。
如需所有 Perl 歷史貢獻者的更完整清單,請參閱 Perl 原始碼發行版中的 AUTHORS 檔案。
如果您發現您認為是錯誤的部分,您可以在 https://rt.perl.org/ 檢查 perl 錯誤資料庫。Perl 首頁 http://www.perl.org/ 上也可能有相關資訊。
如果您認為您有未回報的錯誤,請執行您的版本中包含的 perlbug 程式。務必將您的錯誤簡化為一個微小但足夠的測試案例。您的錯誤回報連同 perl -V
的輸出將會傳送至 perlbug@perl.org,供 Perl 移植團隊分析。
如果您回報的錯誤具有安全影響,不適合傳送至公開封存的郵件清單,請參閱 perlsec 中的「安全性漏洞聯絡資訊」,了解如何回報問題的詳細資訊。
如果您想感謝 Perl 5 Porters 在 Perl 5 中所做的工作,您可以執行 perlthanks
程式
perlthanks
這將會傳送一封電子郵件至 Perl 5 Porters 清單,表達您的謝意。
Changes 檔案,說明如何檢視變更內容的詳盡資訊。
INSTALL 檔案,說明如何建置 Perl。
README 檔案,說明一般事項。
Artistic 和 Copying 檔案,說明版權資訊。