perl5203delta - perl v5.20.3 的新功能
本文檔說明 5.20.2 版和 5.20.3 版之間的差異。
如果您要從較早的版本(例如 5.20.1)升級,請先閱讀 perl5202delta,其中說明了 5.20.1 和 5.20.2 之間的差異。
沒有任何變更會與 5.20.2 故意不相容。如果存在任何變更,它們都是錯誤,我們要求您提交報告。請參閱下方的 「報告錯誤」。
Errno 已從版本 1.20_05 升級至 1.20_06。
在 GCC 5 上將 -P 新增至預處理器命令列。GCC 新增了額外的行指令,中斷了錯誤碼定義的剖析。 [GH #14491]
Module::CoreList 已從版本 5.20150214 升級至 5.20150822。
已更新以涵蓋 Perl 的最新版本。
perl5db.pl 已從 1.44 升級至 1.44_01。
偵錯器會導致斷言失敗。 [GH #14605]
提到 study()
目前為無作用運算。
已更新 OOK 範例以考量 COW 變更和偏移量儲存的變更。
已新增文件說明假設 Perl 封裝函式傳回值所指向的靜態記憶體內容不會變更的危險性。
POD 語言的規格正在變更,因此非 UTF-8 的 POD(除非另有指示)的預設編碼為 CP1252,而非 ISO-8859-1 (Latin1)。
h2ph 現在會處理編譯器預定義巨集定義中的十六進位常數,如在 $Config{cppsymbols}
中可見。 [GH #14491]
已新增 t/perf/taint.t 以查看是否最佳化會影響有污點問題的執行速度。
已新增 t/porting/re_context.t 以測試 utf8 及其相依項只使用 Perl_save_re_context() 硬式設定為在地化的 $1..$n
擷取變數子集,因為這個函式沒有有效率的方法可以在執行時期決定要在地化哪些變數。
先前使用 64 位元 Visual C++ 編譯時,每個 Perl XS 模組(包含 CPAN 模組)和 Perl 相關的 C 檔案都會從 hv_func.h 產生大約十幾個警告。這些警告已消除。GCC(所有位元)和 32 位元 Visual C++ 沒有受到影響。
miniperl.exe 現在使用 -fno-strict-aliasing 建置,讓 64 位元建置可以使用 GCC 4.8 完成。 [GH #14556]
在大型污點字串上重複執行全域模式比對時,執行速度會隨著字串中目前的比對位置呈指數遞減。 [GH #14238]
設定 $/
為無效值時,現在會保留其原始可見值。先前如果將 $/
設定為陣列參考,例如 Perl 會產生執行時期錯誤,且不會設定 PL_rs,但檢查 $/
的 Perl 程式碼會看到陣列參考。 [GH #14245]
Perl 5.14.0 引進一個錯誤,導致 eval { LABEL: }
會發生異常終止。此問題已修正。 [GH #14438]
延伸從父執行緒複製的陣列時,在嘗試修改新元素時可能會產生「嘗試修改唯讀值」錯誤。 [GH #14605]
已修正數個案例,其中用於儲存核心 C 程式碼中環境變數內容的資料,可能在使用前被覆寫。 [GH #14476]
陣列索引中使用的 UTF-8 變數名稱、未加引號的 UTF-8 HERE 文件終結符,以及 UTF-8 函式名稱現在都能正確運作。 [GH #14601]
已修正 Perl 5.20.2 中引入的一個細微錯誤,該錯誤涉及正規表示式中的 UTF-8,有時會導致當機。已新增一個新的測試指令碼來測試此修正;請參閱 "Testing"。 [GH #14600]
自 Perl 5.8 以來,某些以 /.*..../
開頭的模式與長字串比對時會很慢,而某些 /.*..../i
形式的模式自 Perl 5.18 以來也會很慢。現在它們都再次變快。 [GH #14475]
現在在倒轉堆疊時會忽略警告致命性。當現在的致命錯誤也導致堆疊倒轉時,這可以防止無限遞迴。 [GH #14319]
setpgrp($nonzero)
(帶有一個引數)在 Perl 5.16 中意外地變更為 setpgrp(0)
。此問題已修正。
已修正 %::=(); J->${\"::"}
的當機問題。 [GH #14790]
正規表示式佔有量詞 Perl 5.20 回歸現在已修正。qr/
PAT{
min,max}+
/
應與 qr/(?>
PAT{
min,max})/
具有相同的行為。自 Perl 5.20 以來,如果 min 和 max 相等,此行為就不會運作。 [GH #14857]
類似 /$a[/
的程式碼用於讀取輸入的下一行,並將其視為緊接在開括號之後。因此,一些無效的程式碼會解析並執行,但有些程式碼會導致崩潰,所以現在已禁止使用。 [GH #14462]
Perl 5.20.3 約代表自 Perl 5.20.2 以來 7 個月的開發成果,包含來自 26 位作者、橫跨 99 個檔案的約 3,200 行變更。
排除自動產生的檔案、文件和發行工具後,約有 1,500 行變更套用於 43 個 .pm、.t、.c 和 .h 檔案。
Perl 持續蓬勃發展進入第三個十年,這要歸功於一個充滿活力的使用者和開發人員社群。已知以下人員貢獻了成為 Perl 5.20.3 的改進
Alex Vandiver、Andy Dougherty、Aristotle Pagaltzis、Chris 'BinGOs' Williams、Craig A. Berry、Dagfinn Ilmari Mannsåker、Daniel Dragan、David Mitchell、Father Chrysostomos、H.Merijn Brand、James E Keenan、James McCoy、Jarkko Hietaniemi、Karen Etheridge、Karl Williamson、kmx、Lajos Veres、Lukas Mai、Matthew Horsfall、Petr Písař、Randy Stauner、Ricardo Signes、Sawyer X、Steve Hay、Tony Cook、Yves Orton。
上述清單幾乎可以確定不完整,因為它是從版本控制記錄自動產生的。特別是,它不包含向 Perl 錯誤追蹤器回報問題的(非常感謝的)貢獻者的姓名。
此版本中包含的許多變更源自於 Perl 核心包含的 CPAN 模組。我們感謝整個 CPAN 社群協助 Perl 蓬勃發展。
如需 Perl 所有歷史貢獻者的更完整清單,請參閱 Perl 原始程式碼散佈中的 AUTHORS 檔案。
如果您發現您認為是錯誤的問題,您可能會查看最近張貼到 comp.lang.perl.misc 新聞群組的文章,以及 https://rt.perl.org/ 上的 perl 錯誤資料庫。http://www.perl.org/(Perl 首頁)上可能也有相關資訊。
如果您相信您發現一個未回報的錯誤,請執行發行版隨附的 perlbug 程式。務必將您的錯誤簡化為一個微小但足夠的測試案例。您的錯誤回報連同 perl -V
的輸出將會傳送至 perlbug@perl.org,供 Perl 移植團隊分析。
如果您回報的錯誤具有安全性影響,不適合發送到公開封存的郵寄清單,請將其發送至 perl5-security-report@perl.org。這指向一個封閉訂閱的未封存郵寄清單,其中包括所有核心提交者,他們將能夠幫助評估問題的影響,找出解決方案,並幫助協調發布修補程式以減輕或修復所有支援 Perl 的平台上的問題。請僅將此地址用於 Perl 核心中的安全性問題,而不是用於在 CPAN 上獨立發布的模組。
變更檔案說明如何查看已變更內容的詳盡詳細資料。
安裝檔案說明如何建置 Perl。
自述檔案說明一般事項。
Artistic 和 Copying 檔案說明著作權資訊。