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