perl584delta - perl v5.8.4 的新功能
此文件說明 5.8.3 發行版和 5.8.4 發行版之間的差異。
已修正許多次要錯誤。依賴於先前錯誤行為的指令碼會將這些修正視為不相容的變更 :-) 建議您對此版本執行足夠的驗收測試,以確保這不會影響您,然後再將此版本投入生產。
已稍微變更 Carp 的診斷輸出,在參數之間的逗號後加入一個空格。這讓網頁瀏覽器等工具能更輕鬆地換行,但可能會混淆執行 Carp 輸出詳細剖析的任何自動化工具。
已改善內部傾印輸出,讓換行和退格等不可列印字元以 \x
符號輸出,而非八進制。這可能會混淆解析 Devel::Peek 等模組輸出的非穩健工具。
現在可以建置 Perl 以偵測嘗試配置異常大量的記憶體區塊。先前此類配置會在大小計算期間遭受整數換行,導致配置錯誤,造成 perl 崩潰,理論上可用於「堆疊溢位」攻擊。在我們知道可行(大多數 AIX 組態、BSDi、Darwin、DEC OSF/1、FreeBSD、HP/UX、GNU Linux、OpenBSD、Solaris、VMS 和大多數 Win32 編譯器)的平台上,包裝預設為啟用,在其他平台上則預設為停用。
Perl 5.8 中包含的 Unicode 字元資料庫副本已從 4.0.0 更新至 4.0.1。
Paul Szabo 已分析並修補 suidperl
以移除現有的已知不安全性。目前 suidperl
中沒有已知的漏洞,但過往經驗顯示我們無法確信這些是最後的漏洞。您可能無法再直接呼叫 set uid perl,因此為了保持與呼叫 #!/usr/bin/suidperl 的指令碼的向下相容性,現在唯一的 set uid 二進位檔是 sperl5.8.
n(此版本為 sperl5.8.4
)。suidperl
安裝為指向 perl
的硬連結;suidperl
和 perl
都會自動呼叫 sperl5.8.4
自動設定 uid 二進位檔,因此此變更應完全透明。
對於新專案,核心 perl 團隊強烈建議您使用專門的單一用途安全性工具,例如 sudo
,而非 suidperl
。
除了錯誤修正外,格式
的功能已獲得強化。請參閱 perlform
核心模組和文件中的/tmp
(錯誤)使用已整理完畢。某些在 perl 核心和 CPAN 中獨立提供的模組(「雙重生命週期模組」)尚未套用這些變更;變更會在模組於 CPAN 中更新時整合到未來的穩定 perl 版本中。
有 Linux 抽象 Unix 域 Socket 的實驗性支援。
已與其 CPAN 版本 2.10 同步
syslog()
現在可以使用數字常數表示設施名稱和優先順序,而不再僅限於字串。
Win32.pm/Win32.xs 已從 libwin32 模組移至核心 Perl
獨立執行緒現在也支援 Windows。
加速 Unicode 大小寫對應(/i
、lc
、uc
等)。
就地排序最佳化(例如 @a = sort @a
)
在中最佳化不必要的指定
my $s = undef;
my @a = ();
my %h = ();
最佳化標量內容中的 map
Perl 除錯程式(lib/perl5db.pl)現在可以儲存所有除錯程式指令以供稍後使用,並且可以顯示給定類別的父類別繼承樹狀結構。
VMS 和 Windows 上的建置程序已進行多項小幅改善。在 Windows 上,Borland 的 C 編譯器現在可以使用 PerlIO 和/或 USE_LARGE_FILES 編譯 perl。
Windows 上的 perl.exe
現在有一個「駱駝」標誌圖示。Perl 主題使用駱駝是 O'Reilly and Associates Inc. 的商標,並經其許可使用(例如,散布原始碼、從中編譯 Windows 可執行檔,以及在本地使用該可執行檔)。明確不涵蓋將提供的駱駝用於 perl 可執行檔圖示以外的任何用途,任何希望重新散布 帶有 圖示的 perl 二進位檔的人員都應事先直接向 O'Reilly 查詢。
Perl 應再次在 Stratus VOS 上順利建置。
修正更多 utf8 錯誤,特別是 chomp
、chop
、send
和 syswrite
與 utf8 資料互動的方式。當 use bytes;
在範圍內時,串接現在可以正確運作。
Pragmata 現在會正確傳播到正則表達式中的 (?{...}) 結構。例如以下程式碼
my $x = qr{ ... (??{ $x }) ... };
現在會在使用嚴格模式下(正確地)失敗。(因為內部的 $x
是且一直是指 $::x
)
已壓制最佳化後的布林表達式(例如 5 || print;
)中常數的「常數在 void 內容中」警告。
perl -i
可能會錯誤地 fchmod(stdin)
。如果 stdin 附加到終端機,而 perl 以 root 身分執行,這會很嚴重。現在已修正。
Carp
和 Devel::Peek
使用的內部診斷常式已變得更清楚,如 「不相容的變更」 中所述
已修正雜湊內部的一些錯誤。受限雜湊及其佔位符現在會在略微不同的時間點配置和刪除,但這對使用者程式碼來說應該看不出來。
下一個維護版本 (5.8.5) 的程式碼凍結時間為 2004 年 6 月 30 日,預計在 7 月中旬發布。
已知此版本無法在 Windows 95 上建置。
如果您發現您認為是錯誤的問題,您可以查看最近張貼到 comp.lang.perl.misc 新聞群組的文章和 http://bugs.perl.org 上的 perl 錯誤資料庫。http://www.perl.org(Perl 主頁)上也可能有相關資訊。
如果您認為您有未回報的錯誤,請執行發行版附帶的 perlbug 程式。務必將您的錯誤精簡成一個微小但足夠的測試案例。您的錯誤回報連同 perl -V
的輸出將會傳送至 perlbug@perl.org,供 Perl 移植團隊分析。您可以在 http://bugs.perl.org/ 瀏覽和搜尋 Perl 5 錯誤。
Changes 檔案,提供已變更內容的詳盡詳細資料。
INSTALL 檔案,說明如何建置 Perl。
README 檔案,提供一般資訊。
Artistic 和 Copying 檔案,提供版權資訊。