Perl7是价值观的叉子--里昂·蒂默曼斯

2020-08-01 20:56:11

在阅读本文之前,您应该先看看这段视频,其中Bryan Cantrill解释了Joyent和Node.js之间的价值冲突,我相信我们也有类似的问题。

所有这些价值观都很重要,但它们都处于紧张状态。最后,人们不得不在两者之间做出选择。

Perl';s传统上将某些价值置于其他价值之上,根据我的经验,这些价值是:

可扩展性可能不那么明显,可能是因为它不是一个很有意识的选择,但对于具有多个OO框架和自定义关键字的语言来说,它感觉是正确的选择。

最近,忽略或积极反对与Perl早期版本的兼容性开始流行起来。有时会提出一种改变,想要篡改以前有另一种含义的语法;有时,一种改变想要改善以前疯狂的语义。

在适当的时候,应该考虑使用词法杂注来启用或禁用遗留行为,在没有任何杂注的情况下,应该启用遗留行为。

无论这些无意的特性对UAS来说多么令人沮丧,我们仍在继续改进Perl,但Tendence的这些无意特性将保护我们。用Perl编写的现有软件继续正常工作是非常重要的。

与任何其他主要脚本语言相比,我们更重视保持代码正常工作。当其他类似的语言(特别是Python)经常破坏相对常见的构造时,我们通常试图将其限制在边缘(尽管在任何主要版本中都肯定会有一些破坏)。

不过,这并不意味着所有的子社区都拥有完全相同的价值观。我参与了工具链,在工具链中,我们有非常具体的价值:

大多数情况下,这种不同是可以接受的。如果一个社区的价值观与语言价值观重叠,这会有很大帮助,但不同的社区可以有不同的价值观,而不会相互咬人。

这就是说,Perl在其价值观以及将语言本身带到哪里去的问题上一直存在内部冲突。这种紧张已经存在了几年,主要集中在稳定上。Dot-in-Inc.是关于稳定与安全的讨论,但主要的紧张轴实际上是平易近人与稳定。

简单地说,新特性和默认值应该由版本或特性保护程序保护(例如,使用v5.34或v7)(稳定性),还是应该在下一个Perl版本中默认启用它们(可访问性)。7.0的目标不是带来新的功能,它不能让我们做任何没有它都不可能做的事情(除了不写那个守卫)。相反,它的目标是改变我们所知的Perl文化。Perl7的全部要点是从根本上选择可接近性而不是稳定性。

这里要认识到的关键一点是,这意味着perl7不仅仅是解释器的分叉,它也是我们社区和生态系统的分叉。在某种程度上,分叉可以推迟到perl8降低per15兼容性,但考虑到这个新过程,这是不可避免的。有些人会加入这个美丽的新世界,有些人不会。

要使这个价值观分叉完整,即使是治理的价值观也是完全不同的。Perl5有perl5-porters,这是一个对整个社区开放的邮件列表(历史上可能有点太开放了),而perl7有一个指导委员会,其成员仅限受邀,并且只在p5p上发布其活动摘要。

当每个人都在想perl7将走向何方时,另一个关键问题是perl5将何去何从;它是否会止步于现在(当前的官方计划),会不会有5.34(这是我反复争论过的,因为日落版没有试验性的特性,而且缺少perl5的开箱即用可执行文件),perl5的开发会像以前一样继续吗?这是一件没有太多谈论的事情,我还不确定会发生什么,但我很确定不应该由那些不想使用它的人来做这个决定。

我不知道我们要去哪里。从长远来看,我甚至不确定这种分叉是好是坏(如果管理得当,它可能是好的,但到目前为止,它不是好的)。这让我很害怕。