Perl 5.8.0 的一些資料
摘自 CCB網站自助平台 http://www.sun126.com CGI-大瞎 2003-03-03.19:55
5.8.0 的亮點主要有:
- 更好的 Unicode 支持:
自從 5.6 版以來, Unicode 支持已在各層面上大幅更新:
- 支持 Unicode 3.2.0 版 (Perl 5.6.1 支持 3.0.1 版)
- 在語言及內部層次上, 提供更普遍而平滑的 Unicode 環境
- 正則表示式能夠配合 Unicode 了
- 提供 Encode 模塊, 以支持現存的編碼方式 (包括各種中/日/韓系統)
- 多線程執行模式:
「解釋器多線程法」(interpreter threads, 簡稱「ithreads」) 是新的多線程執行
模式. 我們強烈建議您用它來取代舊版的「5.005 多線程法」模式. 兩者間主要的
差異, 在於 ithreads 下必需明確宣告要共享的資料.
- 新的輸入/輸出模式:
新推出的 PerlIO 模式, 同時提供了源碼層級的跨平台 stdio 實作, 以及更豐
富的輸出入控制架構.
- 更精確的數值:
之前的 Perl 版本依賴於您系統上的字串/數值轉換函數; 這往往造成了跨平台
的障礙, 以及錯誤的計算結果.
- 64 比特支持:
目前的 64 比特支持已經成熟 -- 若您的系統支持 64 比特的整數或地址空間,
就可以在編譯時指定使用這些功能.
- 安全的信號 (signal) 處理:
之前的版本裡, Perl 在接收信號時可能會破壞解釋器的內部狀態.
- 大量的新模塊:
Digest::MD5, file::Temp, Filter::Simple, libnet, List::Util,
Memoize, MIME::Base64, Scalar::Util, Storable, Switch,
Test::More, Test::Simple, Text::Balanced, Tie::File, ...
- 徹底的兼容性測試:
Perl 現在具備了六倍於 5.6 版的測試套件, 並且每日在各種平台上進行裝設
測試.
[兼容性]
- 二進制檔案不兼容:
主要由於 PerlIO 的導入, Perl 5.8 與先前的 Perl 版本之間並無「二進制兼容性」. 您可能會需要再次編譯各個 XS 延伸模塊.
- AIX 動態載入:
為了與 AIX 系統上的其他程序更加兼容, Perl 在 AIX 系統上啟用了系統的動
態載入, 而非早先的模擬方式.
- 停用 64 比特平台上的 Perl Malloc 內存配置:
Perl 的 malloc 函數在 64 比特定址的機器上似乎有許多問題. 因此, 我們現
在預設使用系統原生的 malloc 函數.
- 散列順序又改變了:
Perl 內部的散列函數又改成了較好的版本, 不過只要您的源碼不依賴於特定的
散列鍵順序, 這就不成問題.
- my 的屬性改在執行階段處理:
my() 變數的屬性目前改在執行階段處理, 而非編譯階段.
- REF(...) 取代了 SCALAR(...):
為符合 ref() 的結果, 對參照 (reference) 的參照在字串裡改以 "REF(...)"
表示.
- 更新的 Unicode 處理模式, 大幅減少了需要使用 "use utf8" 之處:
在 Perl 5.6 版時, 資料是否視為 Unicode, 端視其運算是否處於 "use utf8"
編譯命令的有效範圍內而定; 現在, Perl 5.8 直接將 "Unicode 性質" 連結到
資料上. 因此, 目前只有在程序碼內用到 UTF-8 字面值 (literal) 時, 才需
使用 "use utf8". (在沒有 "use utf8" 時, 為了保持與現存命令稿的兼容性,
字面值仍視為字節處理.)
- VMS: Socket 延伸模塊動態化, Alpha 預設使用 IEEE 浮點數
- Socket 延伸模塊在 VMS 平台上改為動態載入; 這在極舊版的 VMS 上可能會
造成問題.
- OpenVMS Alpha 目前預設使用 IEEE 浮點數格式. 這樣做的理由及細節, 請見
README.vms.
[用詞改變]
- 《駱駝書》(Programming Perl, 《Perl 程序設計》) 第三版內的「IO 規則」
(IO discipline), 現在改稱為「IO 層」(IO layer).
[不建議使用]
- dump():
dump 指令的功能, 目前視同作廢.
- 5.005 多線程法模式已不建議使用
請採用新的「解釋器多線程法」模式.
- 虛擬散列 (Pseudohash):
使用者層級的虛擬散列語法將被移除, 改成比較簡潔的操作界面. 此外, 內部的
實作方式也必須更改, 因為它減緩了一般散列的存取速度.
- "exec(串列)" 與 "system(串列)" 參數內的受污染 (tainted) 資料:
目前這會觸發警告訊息, 但在未來的版本裡會變成致命錯誤.
- tr///C, tr///U:
這兩個操作界面是個意外; 請採用 pack("C0", ...) 及 pack("U0", ...).
[已知問題]
- AmigaOS 無法裝設 Perl 5.8.0.
- 編譯套件: 比特碼編譯及原生碼編譯仍然有問題.
- Lvalue 左值函數仍然視為實驗性質.
- local() 與 tie() 的交互使用結果, 仍未清楚定義.
- 系結(Tied) 或魔法(Magical) 陣列及散列並不會自動生成 (Autovivify).
- 自我系結的陣列及散列, 目前禁用.
---
再次提醒您, 請詳閱 pod/perldelta.pod, INSTALL, 以及 README.平台
|
|