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

Ste*_*hen 3 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不兼容性,反过来,你可能会遇到意想不到的问题.

因此,我已经介绍了支持和兼容性检查,其结果如下,以及常见问题解答和一些建议.

此检查只是为了让您知道可能存在风险,因此您可以对如何继续进行判断调用 - 它不会使模块无法安装或工作.

稳定的金丝雀说:(没有,它被恶劣的天气赶走了)

看来你正在运行perl版本5.026000,可能是"官方"或"标准"版本.虽然这样做没有任何问题,但JSON :: XS不支持标准的perl版本5.022及更高版本.虽然这可能是致命的,但也可能是正确的 - 如果遇到问题,您可能希望降级perl或切换到稳定性分支.

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

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

我需要做什么吗?幸运的是,没有.虽然已知某些发行版已经失败,但大多数发行版应该可行.此消息提醒您JSON :: XS不支持您的perl,如果出现问题,您需要降级或降级到perl版本的稳定版本,或者只是承担后果.

这个金丝雀的东西是什么?它的目的是检查JSON :: XS相对于perl版本的支持状态.

这个"稳定分支"是什么?它是schmorp官方perl的一个分支或分支,用于提高稳定性和与现有模块的兼容性.

如何在自动安装时跳过此提示?在您的环境中设置PERL_CANARY_STABILITY_NOPROMPT = 1.更多信息在Canary :: Stability手册页中.

此FAQ的长版本:http://stableperl.schmorp.de/faq.html Stability Branch主页:http://stableperl.schmorp.de/

ike*_*ami 11

p5p是维护Perl的非正式团队,非常重视兼容性.[1]他们在对本正式的政策perlpolicy.

让我们把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上的模块那样获得与这些吸烟者相同的支持.但如果您特别担心,您可以自由地针对开发分支或开发版测试您的模块.

  • 哈,"*我已经承诺的可靠性和支持水平*"我的后路.在某些时候,作者决定他不喜欢其他模块,所以他检查了`AnyEvent`,如果检测到其他模块被加载,它会中止你的程序. (2认同)