Perl 官方宣布Perl 7 計劃
Perl官方宣布了Perl 7計劃。Perl 7目前已經在開發中,但是在代碼與語法上不會有太大的改變,其本質上是具有現代默認設置的Perl 5,並為之後進行更大的更改奠定了基礎。具體來說,新的Perl 7實際上約等於前兩天發布的Perl 5.32。
這裡邊有個有趣的事實是,Perl 6 已經與Perl “分家”,並且還變成了名為“Raku”的項目。至於分開v5 與v6 的原因,相信大家已經不陌生了:Perl 5 與Perl 6 存在難以調合的兼容性問題,使得二者基本變成為兩種不同的語言,而同樣名為Perl,會讓人誤以為二者只是版本號上有所不同,這會導致損害Perl 的形象。由於“Perl” 一詞早已普遍被認為是“Perl 5”,因此最終經過討論,Perl 6 更名了。
Perl 7.0 在v5.32 的基礎上會更合理,具有更現代的默認設置,開發者不必管理太多配置,7.0 中已準備好。目前一些實驗性功能可能會穩定下來,但沒有大的重寫或新特性。
至於模塊庫CPAN(Comprehensive Perl Archive Network),已維護模塊應該仍然可以在7.0 中運行,其餘的將會有兼容模式,並且會針對幾乎所有CPAN 模塊新版本進行測試。而 Perl 7 是否會有單獨的CPAN?這不好說,但是開發人員不想重做可以正常使用的東西,這項變更應該可以通過最少的附帶任務進行管理。
Perl 7 會減少什麼內容呢?不多。默認情況下,某些功能將被禁用,但同樣,其本質上是Perl 5.32,第一輪可能被削的包括:
- 間接對象符號(indirect object notation)
- 裸字文件句柄(bareword filehandles),也許標准文件句柄會除外
- 偽多維數組與哈希(fake multidimensional arrays and hashes),這是舊的Perl 4 的東西了
- Perl 4樣式的原型定義(Perl 4-style prototype definitions),使用
:prototype()
替代
有趣的是,在官方原博客中,談及為什麼從Perl 5 跳到Perl 7 而不是6 的時候(Perl 6 已經改名,那麼”Perl 6“這個代號實際上已經空缺出來了),其表示Perl 曾經雄心勃勃重寫5.8 的計劃沒了下文……而下一個可用數字為7,這只是序列上下一個數而已,進行這樣的跳躍並非沒有先例:
- PHP 直接從5 升級到 7
- Solaris 2.6 跳到Solaris 7
- Java 1.4 跳到 Java 5
- Windows 3.1 跳到Windows 95(98、ME、2000、XP、Vista、7、8 與10)
- ……
“至少不是Perl 34。”
最後,Perl 7 有望在一年內發布。
Related:Perl Cheat Sheet