我今天正在安装新的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/
答案 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错误跟踪器(他事实上表示您应该使用)提交错误,他会通过电子邮件向您发送比您发布的更长的准备时间。
曾经有过追赶,但他们从错误中吸取教训。例如,这就是实验性功能的来源。
有一些“吸烟者”不断在CPAN的每个模块的测试套件中运行Perl的开发分支“blead”。手动检查运行之间测试结果的差异,看它们是否是由Perl的变化引起的。如果是这样,则打开“Blead Breaks CPAN”(BBC)票。也许这是一个引入的bug。也许该模块正在做一些错误的事情。也许这是一个需要回归的向后不兼容的变化(可能会引入弃用)。或者,这可能是对内部需要向前推进的向后不兼容的变化,在这种情况下,它们将帮助破坏的模块。
DarkPAN中的模块(即不在CPAN上)显然没有像CPAN上的模块那样获得与这些吸烟者相同的支持。但如果您特别担心,可以自由地针对开发分支或开发版测试您的模块。