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