perl5121delta - perl v5.12.1 的新功能
這份文件說明 5.12.0 和 5.12.1 版本之間的差異。
如果您要從較早的版本(例如 5.10.1)升級,請先閱讀 perl5120delta,其中說明了 5.10.0 和 5.12.0 之間的差異。
沒有任何變更與 5.12.0 故意不相容。如果存在任何與 5.12.0 不相容的地方,那就是錯誤。請回報這些錯誤。
除了下面列出的錯誤修正之外,此版本的核心語言不應有任何使用者可見的變更。
我們修正了從 version 匯出 is_strict
和 is_lax
。
這些匯出時會使用將它們視為方法呼叫的包裝器,導致它們失敗。它們只是函式,文件上也是如此記載,且不應被子類別化,因此此修補程式只是直接將它們作為函式匯出,而沒有包裝器。
我們將 CGI 升級到 3.49 版,以納入我們隨 Perl 5.12.0 發布的版本中引入的回歸修正。
我們將 Pod::Simple 升級到 3.14 版,以改善 \C\<\< \>\> 的剖析。
我們對 CPANPLUS 測試套件做了一個小修正,以修正偶爾出現的虛假測試失敗。
我們將 Safe 升級到 2.27 版,以包裝由 reval()
和 rdo()
回傳的程式碼參考。
我們將新的維護版本政策新增到 perlpolicy
我們在 perlpodspec 中的 POD 規格中釐清了多角度括號建構。
我們在 perldiag 中新增了關於 :=
警告的遺漏說明。
我們在 perlunitut 中移除了 Perl 中所有文字字串都是 Unicode 字串的錯誤說法。
我們在 perlrepository 中將 GitHub 鏡像連結更新為 mirrors/perl,而非 github/perl
我們修正了 perl5114delta 中的一個小錯誤。
我們用 given/when 取代了現已過時的 Switch。
我們在 perlrun 中改善了關於 $sitelibexp/sitecustomize.pl 的文件。
我們更正了 perlmodlib,它不經意地遺漏了許多模組。
我們更新了 perlfunc 中關於「require」的文件,與將 Perl 程式碼放入 @INC 有關。
我們在 perlfunc 中恢復了一些錯誤移除的關於 quotemeta 的文件。
我們在 perlutil 中修正了一個 a2p 範例。
我們在 perlport 中填入了一個空白,內容是 Perl 5.12 的發布日期。
我們修正了許多 perldelta 檔案中的損毀連結。
Carp 的文件錯誤地指出 $Carp::Verbose 變數會讓 cluck 產生堆疊回溯。
我們在 Pod::Functions 中修正了一些拼寫錯誤
我們改進了 perlfunc 中大小寫轉換函數的說明文件
我們更正了 perlgpl,以包含 GNU 通用公共許可證的正確版本。
t/op/sselect.t 在 Windows 上的計時檢查期間現在較不易受到時脈抖動的影響。
在 Win32 上的 sleep() 時間可能會四捨五入為時脈刻度間隔的倍數。
lib/blib.t 和 lib/locale.t:修正了在 Darwin/PPC 上的測試失敗問題
perl5db.t:修正了在安裝 Term::ReadLine::Gnu
時的測試失敗問題。
我們更新了 INSTALL,其中包含有關如何處理 OpenSUSE(以及其他平台)上損壞的 dbm.h 的注意事項
我們處理檔案測試運算的方式中有一個錯誤,可能會導致段落錯誤。檔案測試並不總是期望堆疊上有運算,因此我們現在僅在確定我們沒有對 _ 檔案句柄進行 stat 時才使用 TOP。這由 OPf_KIDS 指示(如 ck_ftst 中所檢查)。
在對具有相對於先前 nextstate 的套件變更和標籤的 nextstate 運算進行反解析時,套件宣告現在會先發出,因為標籤在語法上不允許作為套件宣告的前綴。
XSUB.h 現在在 PERL_IMPLICIT_SYS 下正確重新定義 fgets
utf8::is_utf8 現在會尊重 GMAGIC(例如 $1)
在 Windows 上使用 fputc()
或 fputs()
的 XS 程式碼可能會因為其引數被交換而導致錯誤。
我們修正了 lex_stuff_pvn() 中的一個小錯誤,該錯誤會在一個模糊的情況下導致虛假的語法錯誤。當對檔案的最後一行進行填充,而該行以缺少終止分號的陳述結束時,就會發生這種情況。
我們修正了一個錯誤,該錯誤可能會導致後接單一 . 的 \N{} 結構被不正確地解析。
我們修正了一個錯誤,此錯誤導致沒有參數的 when(scalar) 未被視為語法錯誤。
我們修正了 Perl 5.12.0 引進的,在字串評估之前立即處理標籤時出現的回歸問題。
我們修正了 Perl 5.10.1 引進的,正規表示式中折疊字元的非大小寫敏感比對的回歸問題。
Perl 現在允許在 HP-UX 上使用 -Duse64bitint,而不會升級為 use64bitall
Perl 現在可以在 AIX 4.2 上建置
所需的變更解決了 AIX 4.2s 缺乏對 IPv6 的支援,以及對 POSIX sigaction()
的有限支援。
FreeBSD 7 不再包含 /usr/bin/objformat。在建置時,Perl 現在會略過版本 7 和更高版本的 objformat 檢查,並假設為 ELF。
現在可以在較舊的 (7.3-2 之前的) VMS 系統上建置延伸模組。
DCL 符號長度在大約七年前限制為 1K,但沒有特別深入的理由阻止這些較舊的系統組態和建置 Perl。
我們修正了 VMS 上先前中斷的 -Uuseperlio
建置。
我們正在檢查一個在停用 perlio 的非預設情況下不存在的變數。現在我們只在它存在時查看它。
我們修正了 configure.com 中的 -Uuseperlio 命令列選項。
以前,只有在您透過所有問題並明確回答「否」時,它才會運作。
List::Util::first
在存在詞彙 $_
(通常由 my $_
或隱含地由 given
引進) 時會發生異常行為。每個反覆運算設定的變數都是套件變數 $_
,而不是詞彙 $_
。
其他提供函式的模組,其第一個引數為區塊,可能會發生類似的問題,例如
foo { ... $_ ...} list
Module::Load::Conditional
和 version
有一個不幸的交互作用,可能會導致 CPANPLUS
在遇到無法解析的版本字串時崩潰。從 CPAN 升級到 CPANPLUS
0.9004 或 Module::Load::Conditional
0.38 將解決此問題。
Perl 5.12.1 自 Perl 5.12.0 以來大約經過四週的開發,包含來自 28 位作者的 142 個檔案中約 4,000 行變更。
Perl 在使用者和開發人員充滿活力的社群的幫助下,持續在第三個十年蓬勃發展。以下已知人員已貢獻改進,這些改進成為 Perl 5.12.1
Ævar Arnfjörð Bjarmason、Chris Williams、chromatic、Craig A. Berry、David Golden、Father Chrysostomos、Florian Ragwitz、Frank Wiegand、Gene Sullivan、Goro Fuji、H.Merijn Brand、James E Keenan、Jan Dubois、Jesse Vincent、Josh ben Jore、Karl Williamson、Leon Brocard、Michael Schwern、Nga Tang Chan、Nicholas Clark、Niko Tyni、Philippe Bruhat、Rafael Garcia-Suarez、Ricardo Signes、Steffen Mueller、Todd Rinaldo、Vincent Pit 和 Zefram。
如果您發現您認為是錯誤的地方,您可能會查看最近張貼到 comp.lang.perl.misc 新聞群組的文章和 http://rt.perl.org/perlbug/ 上的 perl 錯誤資料庫。Perl 首頁 http://www.perl.org/ 上也可能有相關資訊。
如果您相信您有一個未回報的錯誤,請執行您的版本中包含的 perlbug 程式。務必將您的錯誤精簡成一個微小但足夠的測試案例。您的錯誤回報,連同 perl -V
的輸出,將會傳送至 perlbug@perl.org,供 Perl 移植團隊分析。
如果您回報的錯誤具有安全性影響,不適合傳送至公開封存的郵件清單,請將其傳送至 perl5-security-report@perl.org。這指向一個封閉訂閱的未封存郵件清單,其中包含所有核心提交者,他們將能夠協助評估問題的影響、找出解決方案,並協助協調在 Perl 受支援的所有平台上發布修補程式以減輕或修復問題。請僅將此地址用於 Perl 核心中的安全性問題,而不用於在 CPAN 上獨立發布的模組。
Changes 檔案說明如何檢視變更的詳細資料。
INSTALL 檔案說明如何建置 Perl。
README 檔案說明一般事項。
Artistic 和 Copying 檔案說明著作權資訊。