perl5201delta - perl v5.20.1 的新功能
本文檔說明 5.20.0 版和 5.20.1 版之間的差異。
如果您要從較早的版本(例如 5.18.0)升級,請先閱讀 perl5200delta,其中說明 5.18.0 和 5.20.0 之間的差異。
沒有任何變更故意與 5.20.0 不相容。若有任何不相容的變更,它們是錯誤,我們要求您提交報告。請參閱下方的 "回報錯誤"。
已停用避免 COW 和故意過度配置 PV 問題的最佳化,因為它會干擾另一個更重要的最佳化,導致某些平台速度變慢。 [GH #13878]
在某些情況下,從詞彙變數傳回字串可能會很慢。這現在已修復。 [GH #13880]
Config::Perl::V 已從 0.20 版升級到 0.22 版。
已更新涵蓋的 Perl 版本清單,並已修正解析中的某些缺陷。
Exporter 已從 5.70 版升級到 5.71 版。
已修正文件中的非法 POD 語法。
ExtUtils::CBuilder 已從 0.280216 版升級到 0.280217 版。
Android 建置現在會連結到 -lperl 和 $Config::Config{perllibs}
。
File::Copy 已從 2.29 版升級到 2.30 版。
文件現在會註明 copy
不會覆寫唯讀檔案。
Module::CoreList 已從 3.11 版升級到 5.020001 版。
已更新涵蓋的 Perl 版本清單。
PathTools 模組集合已從 3.47 版升級到 3.48 版。
現在已針對 Android 進行交叉編譯,並在 $Config::Config{sh}
尚未定義時提供備援。 [GH #13872]
PerlIO::via 已從 0.14 版升級到 0.15 版。
已對 XS 實作進行輕微的可移植性改善。
Unicode::UCD 已從版本 0.57 升級至 0.58。
文件包含許多說明和修正。
utf8 已從版本 1.13 升級至 1.13_01。
文件有一些次要的格式改進。
version 已從版本 0.9908 升級至 0.9909。
外部函式庫和 Perl 可能對於地區設定有不同的想法。如果已變更地區設定的數字分隔符號,這在分析版本字串時會造成問題。版本分析已修補,以確保它能正確處理地區設定。 [GH #13863]
av_len
- 強調這會傳回陣列中的最高索引,而非陣列的大小。 [GH #13377]
請注意,SvSetSV
沒有執行設定魔法。
sv_usepvn_flags
- 修正文件,說明使用 NewX
而不是 malloc
。 [GH #13835]
說明 NUL
可能內嵌在哪裡,或需要在哪裡終止字串。
說明 -B
和 -T
的意義。
-l
現在會註明,如果檔案系統不支援符號連結,它會傳回 false。 [GH #13695]
請注意,each
、keys
和 values
可能會為繫結雜湊產生與其他 Perl 雜湊不同的排序。 [GH #13650]
請注意,exec LIST
和 system LIST
可能在 Win32 上退回到 shell。只有 exec PROGRAM LIST
和 system PROGRAM LIST
間接物件語法會可靠地避免使用 shell。這也已在 perlport 中註明。 [GH #13907]
說明 our
的意義。 [GH #13938]
說明修改現有 SV 緩衝區的各種方式。 [GH #12813]
我們現在有一個針對 p5p 郵件串列的行為準則,詳見 perlpolicy 中的「行為準則」。
/x
修飾符已澄清,指出無法透過跳脫來將註解繼續到下一行。
提到在 for
/while
迴圈中使用空條件式以進行無限迴圈。
新增了 XS 程式碼中區域設定問題的討論。
已對診斷輸出(包括警告和致命錯誤訊息)進行下列新增或變更。如需完整的診斷訊息清單,請參閱 perldiag。
已新增 Unicode 行為的資訊。
使用 Configure 的 -Dmksymlinks 選項進行組態時,建立 Perl 不再寫入原始碼樹。 [GH #13712]
已改善一般跨編譯和特別是 Android 的建置支援。
建立 Perl 時,已修正組態提示中使用的架構和版本號碼。
已清除 c99 選項,提示會尋找 solstudio 和 SUNWspro,並已新增對原生 setenv
的支援。
已修正一個舊的特色檢查錯誤,主要影響 7.3 之前的系統。
現在對 MinGW 使用 %I64d
,而非 %lld
。
已新增 "perlapi 中的 sync_locale"。XS 程式碼應避免變更程式的區域設定。不過,某些從 XS 呼叫的非 Perl 函式庫(例如 Gtk
)會這麼做。發生這種情況時,需要告知 Perl 區域設定已變更。在返回 Perl 之前,請使用此函數執行此動作。
已修正一個錯誤,其中正規表示式內的零長度斷言和程式碼區塊可能導致 pos
看見不正確的值。 [GH #14016]
在受污染的 utf8 字串上使用 s///e
可能發出錯誤的「格式錯誤的 UTF-8 字元(字串結束意外)」警告。此問題現已修正。 [GH #13948]
system
和相關函數現在應該可以在更多 Android 版本上正常運作。
由於疏忽,透過 -Dtargetsh 傳遞給 Configure 的值會被一些建置程序忽略。這導致為 Android 交叉編譯的 Perl 會產生有缺陷的 system
、exec
和反引號版本:這些指令會尋找 /bin/sh 而不是 /system/bin/sh,因此會在絕大多數裝置上失敗,並將 $!
設定為 ENOENT
。
許多問題已由 Coverity 偵測並修正。
Perl 5.20.1 代表了自 Perl 5.20.0 以來約 4 個月的開發時間,包含來自 36 位作者、橫跨 170 個檔案的約 12,000 行變更。
不包含自動產生的檔案、文件和發行工具,約有 2,600 行變更套用至 110 個 .pm、.t、.c 和 .h 檔案。
Perl 持續在第三個十年蓬勃發展,這要歸功於活躍的使用者和開發人員社群。以下人員已知對 Perl 5.20.1 的改進有貢獻
Aaron Crane、Abigail、Alberto Simões、Alexandr Ciornii、Alexandre (Midnite) Jousset、Andrew Fresh、Andy Dougherty、Brian Fraser、Chris 'BinGOs' Williams、Craig A. Berry、Daniel Dragan、David Golden、David Mitchell、H.Merijn Brand、James E Keenan、Jan Dubois、Jarkko Hietaniemi、John Peacock、kafka、Karen Etheridge、Karl Williamson、Lukas Mai、Matthew Horsfall、Michael Bunk、Peter Martini、Rafael Garcia-Suarez、Reini Urban、Ricardo Signes、Shirakata Kentaro、Smylers、Steve Hay、Thomas Sibley、Todd Rinaldo、Tony Cook、Vladimir Marek、Yves Orton。
上述清單幾乎可以確定不完整,因為它是從版本控制記錄自動產生的。特別是,它不包含向 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。
自述檔案,說明一般事項。
Artistic 和 Copying 檔案,說明著作權資訊。