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

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

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

谁在决定 Perl 的方向?

2020 年 6 月,Perl 官方宣布 Perl 7 计划。Perl 7 的一个关键想法是通过启用许多广泛使用的模块 / 编译指示,来减少代码顶部所需的样板,但这将以破坏一些向后兼容性为代价。

该想法引发了很多激烈的讨论,有些人认为抛弃 Perl 的关键优势 “向后兼容性” 是非常糟糕的想法,另一些人则认为墨守成规得不到更好的发展。

这些讨论引发了另一个新问题:谁有权利决定 Perl 的发展方向和具体计划?原作者 Larry Wall ?但他已经有近 20 年没有参与 Perl 的开发了。最终,社区在讨论之后创建了一个新的治理结构 :为 Perl 5 作出最多贡献的核心团队通过选举推出三个人,这三个人组成的 Perl 指导委员会 (PSC) 拥有 Perl 未来的最终决策权。

Perl 当前发展战略

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

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

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

特性保护

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

use feature 'say';
say "hello, world";

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

foreach my ($key, $value) (%hash) {

}

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

版本包捆绑

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

use v5.36;

这一行相当于以前的:

  require v5.36;
use strict;
use warnings;
use feature 'say';
use feature 'state';
use feature 'current_sub';
use feature 'fc';
use feature 'lexical_subs';
use feature 'signatures';
use feature 'isa';
use feature 'bareword_filehandles';
use feature 'bitwise';
use feature 'evalbytes';
use feature 'postderef_qq';
use feature 'unicode_eval';
use feature 'unicode_strings';
no feature 'indirect';
no feature 'multidimensional';

也就是说,版本包捆绑功能,让开发者使用简单的 use 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 —— 必须将 use v7; 放在代码顶部,才能使用 V7 所有新功能。

感兴趣的朋友可以移步 Perl 指导委员会的博客作进一步阅读。

本文转自OSCHINA

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

本文地址:https://www.oschina.net/news/197534/what-happened-to-perl-7

责任编辑:未丽燕 来源: OSCHINA
相关推荐

2010-02-26 23:17:41

2010-07-26 14:45:17

Perl Hash

2010-07-23 14:12:14

Perl Hash

2010-07-21 11:17:30

2010-07-26 13:27:19

Perl多线程

2010-07-15 09:10:08

Perl函数手册

2010-07-13 13:15:17

Perl

2010-07-26 15:06:29

Perl解析XML文件

2010-07-26 15:17:51

Perl解析XML文件

2010-07-20 13:02:08

Perl数组

2010-07-21 13:43:30

Perl数组

2010-07-26 10:09:01

Perl split函

2010-07-26 09:32:41

Perl命令行

2010-07-21 10:32:05

Perl函数返回值

2010-07-26 16:23:23

Perl语言

2010-07-21 10:05:13

Perl文本处理模块

2010-07-23 12:23:49

Perl基础

2010-07-23 13:23:10

Perl语言

2010-07-21 14:18:27

Perl函数

2009-11-16 10:36:48

华为路由器
点赞
收藏

51CTO技术栈公众号