这个Canary :: Stability咆哮是一个合理的问题吗?

时间:2017-10-18 03:38:12

标签: perl cpan

我今天正在安装新的CPAN模块,事实证明JSON :: XS模块显示了自己的警告/咆哮,关于使用Perls over 5.22。似乎作者厌倦了据称在此之后引入Perl的后向不兼容的更改,并决定制作一个模块专门用于警告人们潜在的不兼容性,警告Perl超过5.22,并推广Perl的独立分支致力于稳定性

作为一个卑微的普通用户,我不确定我应该多么惊慌。例如:这只是一个用户/模块抱怨,还是比这更大?在5.22之后,是否存在Perl向后兼容性的严重问题?

我想这是一个有点主观的问题,但是通过这样做,作者已经把它解决了每个人的问题(或者:已经使稳定性分支成为每个人的解决方案,取决于你采取的方式)。因为我需要为我正在进行的大型移植项目选择Perl版本,所以对我来说这是一个非常重要的问题。

这是警告:

  

Canary ::稳定性兼容性和支持检查

     

嗨!

     

我尽力提供可预测且可靠的软件。

     

然而,在最近的版本中,P5P(维护perl)一直都是   引入有时微妙的回归   灾难性的,通常是出于个人偏好而很少或根本没有顾虑   对于现有代码,最值得注意的是CPAN。

     

出于这个原因,我很难保持这个水平   过去,我一直致力于提供可靠性和支持   至少有一些perl版本:我根本无法继续努力   新的bug或gotituous不兼容,反过来你可能   遭受意料之外的问题。

     

因此我已经介绍了支持和兼容性检查,   结果如下,以及FAQ和一些   建议。

     

此检查只是为了让您知道可能存在风险,所以您   可以判断如何进行 - 它不会保留   安装或工作的模块。

     

稳定的金丝雀说:(没有,它被苛刻的驱逐   天气)

     

看来你正在运行perl版本5.026000,可能是“官方”   或“标准”版本。虽然这样做没有错,   JSON :: XS不支持标准perl版本5.022及更高版本。   虽然这可能是致命的,但也可能是好的 - 如果你跑了   对于问题,您可能希望降级perl或切换到   稳定分支。

     

如果一切正常,您可以忽略此消息。

     

稳定性金丝雀迷你常见问题:

     

我需要做什么吗?       幸运的是,没有。虽然已知某些发行版失败了       已经,大多数应该可以工作。这条消息就在这里       提醒您JSON :: XS不支持您的perl,       如果出现问题,您需要降级,或者       sidegrade到你的perl版本的稳定性变体,       或者只是忍受后果。

     

这个金丝雀是什么东西?       它的目的是检查JSON :: XS的支持状态       尊重你的perl版本。

     

这个“稳定分支”是什么?       它是官方perl的分支或分支,由schmorp提供       提高稳定性和与现有模块的兼容性。

     

如何在自动安装时跳过此提示?       在您的环境中设置PERL_CANARY_STABILITY_NOPROMPT = 1。       更多信息请参见Canary :: Stability联机帮助页。

     

此常见问题解答的长版本:http://stableperl.schmorp.de/faq.html   Stability Branch主页:http://stableperl.schmorp.de/

1 个答案:

答案 0 :(得分:11)

p5p,维护Perl的非正式团队,认真地向后兼容非常 [1] 他们在perlpolicy中有关于此的正式政策。< / p>

让我们把Canary :: Stability放到上下文中。

有问题的作者有许多模块,这些模块使用可能发生变化的未记录的Perl内部组件。使用这些内部结构对于实现模块所做的事情是必要的,但必须意识到这些内容会受到破坏。

是的,p5p改变了一些内部方式,打破了这个作者的模块,但是p5p检查了他们的更改将影响CPAN上的哪些模块,并且p5p在发布新版本的Perl之前提供了对受影响模块的修复。 > [2]

有问题的作者非常难以处理,宁愿花时间站立而不是维护他的模块或使用p5p来暴露他需要访问的内部。

例如,处理他的困难导致人们将JSON :: XS分叉到Cpanel :: JSON :: XS中。其中一个问题是他反对线程而不是使JSON :: XS线程安全。

例如,CPAN提供了一种指定应提交错误报告的方法。作者宁愿您直接向他发送电子邮件,而不是使用报告错误的默认方式(CPAN提供的错误跟踪器)。使用电子邮件而不是公共错误跟踪器缺乏可见性本身就是一个问题,但他通过拒绝在他的发行版中指出他想要如何联系来复合它。如果您敢于通过CPAN错误跟踪器(他事实上表示您应该使用)提交错误,他会通过电子邮件向您发送比您发布的更长的准备时间。

  1. 曾经有过追赶,但他们从错误中吸取教训。例如,这就是实验性功能的来源。

  2. 有一些“吸烟者”不断在CPAN的每个模块的测试套件中运行Perl的开发分支“blead”。手动检查运行之间测试结果的差异,看它们是否是由Perl的变化引起的。如果是这样,则打开“Blead Breaks CPAN”(BBC)票。也许这是一个引入的bug。也许该模块正在做一些错误的事情。也许这是一个需要回归的向后不兼容的变化(可能会引入弃用)。或者,这可能是对内部需要向前推进的向后不兼容的变化,在这种情况下,它们将帮助破坏的模块。

    DarkPAN中的模块(即不在CPAN上)显然没有像CPAN上的模块那样获得与这些吸烟者相同的支持。但如果您特别担心,可以自由地针对开发分支或开发版测试您的模块。