Perl 指导委员会谈发展战略: Perl 7 没那么快发布

频道:行业资讯 日期: 浏览:1125

  

随着Perl 5.36即将发布,Perl指导委员会在一篇博客中谈论了Perl语言当前的发展策略以及未来的发展计划,同时也解答了一些常见的问题。

<强>谁在决定Perl的方向?

2020年6月,Perl官方新的治理结构:为Perl 5作出最多贡献的核心团队通过选举推出三个人,这三个人组成的Perl指导委员会(PSC)拥有Perl未来的最终决策权。

<强> Perl当前发展战略

第一届PSC在2020年底当选,随后为Perl制定了如下的战略:

  <李>现有的合理编写的Perl 5代码应该能在未来的Perl版本下继续运行(继续保持向后兼容性)。但有时这是不可能的,比如某些安全漏洞可能需要破坏向后兼容性的更改才能修复。   <李>推动语言向前发展,<强>提高引入新功能的速度强。所以引入了RFC流程,任何人都可以使用该流程来对Perl语言提出修改。   <李>让人们更容易使用这些新功能。   

该策略的核心是<强>功能保护和<强>版本包捆绑。

  <李> <>强特性保护   

如果一个新的语言特性不能向后兼容,那么它就会受到”特性保护 "的保护。比如, Perl 5.010引入了<代码> 说关键字。但默认情况下无法启用它,因为有人可能在代码中有一个说函数,那么新的关键字就会与之冲突。因此需要用到功能编译指示(编译指示功能):

<前>   <代码类=" language-perl ">使用功能“说”;   说“你好,世界”;

但并不是所有的新语言特性都有保护。如果新的语法,在所有旧版本的Perl中都会导致语法错误,那么就不需要保护了。例如,Perl 5.36.0引入了新的语法,允许一次从一个列表中处理N项:

<前>   <代码类=" language-perl ">我foreach(键,美元价值)(%散列){   …   }

这个新语法没有特性保护,所以可以在第0行使用(即在 <代码>使用v5.36 之前)。

  <李> <强>版本包捆绑   

Perl 5.36.0引入了版本包捆绑(版本包)功能,解决了Perl被诟病已久的“样板文件“问题。该功能只需将这一行放在代码顶部:

<前>   <代码类=" language-perl ">使用v5.36;

这一行相当于以前的:

<前>   <代码类=" language-perl ">需要v5.36;   使用严格的;   使用警告;   使用“说”功能;   使用“状态”功能;   使用“current_sub”功能;   使用“俱乐部”功能;   使用“lexical_subs”功能;   使用“签名”功能;   使用“isa”功能;   使用“bareword_filehandles”功能;   使用“位”功能;   使用“evalbytes”功能;   使用“postderef_qq”功能;   使用“unicode_eval”功能;   使用“unicode_string”功能;   没有“间接”特征;   没有“多维”的特征;

也就是说,版本包捆绑功能,让开发者使用简单的使用v……;语句即可达成这些效果:

  <李>告诉perl解释器和人类读者,当前代码需要perl 5.36.0或更高版本才能运行,李   <李>支持当前版本Perl提供的所有<强>非实验性功能,   <李>使用了许多已被广泛实践过的附加编译指示。   

该功能极大地减少了在代码顶部编写的样板文件,解决了Perl这个诟病已久的问题。

Perl 7咋样了?

目前,Perl的计划是继续引入新功能,并解决所有现有的实验性功能,实验性功能要么被删除,要么成为非实验性功能(包含在版本包捆绑中)。

在未来的某个时候,Perl指导委员会可能会认为:这些新的功能加在一起,代表了一个足够大的进步,足以证明Perl的新方向是正确的。如果发生这种情况,那么Perl版本将被提升到7.0。

  

我们有很多好的想法在工作中,如果我们能够保持去年的势头,那么事情看起来很有希望。与此同时,我们将继续发布5。XX版本。(画饼大师? )

  

即使Perl版本将被提升到7.0,默认情况下Perl 7仍将向后兼容Perl 5——必须将使用v7中;放在代码顶部,才能使用V7所有新功能。

Perl 指导委员会谈发展战略: Perl 7 没那么快发布

0 留言

评论

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。
验证码