- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我今天正在安装新的 CPAN 模块,结果发现 JSON::XS 模块显示了它自己的警告/咆哮,关于在 5.22 以上的 Perls 中使用它。似乎作者厌倦了据称在那之后引入 Perl 的向后不兼容的更改,并决定制作一个模块专门用于警告人们潜在的不兼容性,警告 Perl 超过 5.22,并促进 Perl 的一个单独分支致力于稳定性.
作为一个不起眼的普通用户,我不确定自己应该有多警觉。例如:仅仅是这个用户/模块在提示,还是比这更大? 5.22 之后的 Perl 向后兼容性是否存在已知的严重问题?
我想这是一个有点主观的问题,但通过这样做,作者已经把它变成了每个人的问题(或者:已经把稳定性分支变成了每个人的解决方案,这取决于你站在哪一边)。因为我需要为我正在从事的大型移植项目选择 Perl 版本,所以这对我来说是一个非常重要的问题。
这是警告:
Canary::Stability COMPATIBILITY AND SUPPORT CHECK
Hi!
I do my best to provide predictable and reliable software.
However, in recent releases, P5P (who maintain perl) have been introducing regressions that are sometimes subtle and at other times catastrophic, often for personal preferences with little or no concern for existing code, most notably CPAN.
For this reason, it has become very hard for me to maintain the level of reliability and support I have committed myself to in the past, at least with some perl versions: I simply can't keep up working around new bugs or gratituous incompatibilities, and in turn you might suffer from unanticipated problems.
Therefore I have introduced a support and compatibility check, the results of which follow below, together with a FAQ and some recommendations.
This check is just to let you know that there might be a risk, so you can make judgement calls on how to proceed - it will not keep the module from installing or working.
The stability canary says: (nothing, it was driven away by harsh weather)
It seems you are running perl version 5.026000, likely the "official" or "standard" version. While there is nothing wrong with doing that, standard perl versions 5.022 and up are not supported by JSON::XS. While this might be fatal, it might also be all right - if you run into problems, you might want to downgrade your perl or switch to the stability branch.
If everything works fine, you can ignore this message.
Stability canary mini-FAQ:
Do I need to do anything? With luck, no. While some distributions are known to fail already, most should probably work. This message is here to alert you that your perl is not supported by JSON::XS, and if things go wrong, you either need to downgrade, or sidegrade to the stability variant of your perl version, or simply live with the consequences.
What is this canary thing? It's purpose is to check support status of JSON::XS with respect to your perl version.
What is this "stability branch"? It's a branch or fork of the official perl, by schmorp, to improve stability and compatibility with existing modules.
How can I skip this prompt on automated installs? Set PERL_CANARY_STABILITY_NOPROMPT=1 in your environment. More info is in the Canary::Stability manpage.
Long version of this FAQ: http://stableperl.schmorp.de/faq.html Stability Branch homepage: http://stableperl.schmorp.de/
最佳答案
p5p 是维护 Perl 的非正式团队,非常重视向后兼容性。 [1]他们在 perlpolicy 中有一个正式的政策。 .
让我们把 Canary::Stability 放到上下文中。
有问题的作者有许多模块使用未记录的 Perl 内部结构,这些内部结构可能会发生变化。使用这些内部结构对于实现模块的功能是必要的,但必须意识到这些内部结构可能会被破坏。
是的,p5p 已经改变了一些内部结构,破坏了作者的模块,但是 p5p 会检查 CPAN 上的哪些模块它们的更改会影响,并且 p5p 会在发布新版本的 Perl 之前为受影响的模块提供修复。 [2]
有问题的作者非常难以处理,他宁愿花时间站在立场上,也不愿维护他的模块或使用 p5p 来公开他需要访问的内部结构。
例如,与他打交道的困难导致人们将 JSON::XS fork 为 Cpanel::JSON::XS。问题之一是他宁愿反对线程而不是让 JSON::XS 线程安全。
例如,CPAN 提供了一种指定错误报告应在何处提交的方法。作者宁愿您直接给他发电子邮件,而不是使用默认的报告错误的方式(CPAN 提供的错误跟踪器)。使用电子邮件而不是公共(public)错误跟踪器缺乏可见性本身就是一个问题,但他拒绝在他的发行版中表明他希望如何被联系,从而加剧了这个问题。如果您敢通过 CPAN 错误跟踪器提交错误(他实际上表明您应该使用它),他会通过电子邮件向您发送准备好的咆哮,比您发布的更长。
关于perl - 这种 Canary::Stability 咆哮是合理的担忧吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46802396/
如果我的 Perl 程序使用 Perl 模块,它将如何确定在哪里可以找到包含模块代码的文件? 例如,如果程序包含: use MyModule1; # Example 1 us
我在一个文件中有一些不同格式的数字:8.3、0.001、9e-18。我正在寻找一种简单的方法来读取它们并存储它们而不会损失任何精度。这在 AWK 中很容易,但在 Perl 中是如何完成的呢?我只愿意使
我在一个文件中有一些不同格式的数字:8.3、0.001、9e-18。我正在寻找一种简单的方法来读取它们并存储它们而不会损失任何精度。这在 AWK 中很容易,但在 Perl 中是如何完成的呢?我只愿意使
我正在自学 Perl,并且在我的 Windows 8 64 位系统上安装了 Strawberry。 Strawberry 命令行似乎工作正常,我在 C 驱动器上的 Strawberry 文件夹中创建了
我在 Perl 模块 IO::Socket::SSL 中发现了一个错误,我可能会修复它,但是,我担心测试修复。我从 Debian 下载了源码包(因为我打算为它制作一个 Debian 包或补丁)并查看了
我有一个 perl 文件,它使用了两个 perl 模块 A.pm 和 B.pm。 但是在 B.pm 中我需要调用 A.pm 的子程序。即使我在 A.pm 中使用并尝试使用它,我仍然遇到未定义的错误。
有没有办法在 Perl 运行时加载整个模块?我原以为我用 autouse 找到了一个很好的解决方案,但以下代码无法编译: package tryAutouse2; use autouse 'tryAu
过去,我编写过许多 perl 模块,以及不止一些独立的 perl 程序,但我之前从未发布过多文件 perl 程序。 我有一个几乎处于 beta 阶段的 perl 程序,它将被开源发布。它需要一些数据文
我有 1 个 perl 脚本,我们在其中编写了几个子例程。例子: # Try_1.pl main(); sub main{ --- --- check(); } check { -- --} 现在,
似乎 CPAN 上的一些(很多?)模块部分是使用 XS 在 C 中实现的,如果需要,可以回退到纯 perl 实现。虽然这很聪明,但它显然会损害性能,我想知道它是否会发生,以便我可以解决问题。 有没有一
我对 perl 很陌生。我希望我可以从 perl 安装一些软件包,我这样做是这样的: perl -MCPAN -e 'install VM::EC2' 我猜它由于依赖而失败,它显示: Result:
给定一个 Perl 包 Foo.pm,例如 package Foo; use strict; sub bar { # some code here } sub baz { # more
我有一个用 Perl 编写的测试生成器。它生成连接到模拟器的测试。这些测试本身是用 Perl 编写的,并通过其 API 连接到模拟器。我希望生成的代码是人类可读的,这意味着我希望它能够正确缩进和格式化
我正在学习 Perl,非常新的用户。我可以知道这些 Perl 代码之间有什么区别吗? #!/usr/bin/perl & #!/usr/bin/perl -w 最佳答案 那不是 perl 代码,它是
我不认为这是一个重复的问题。这专门针对 Perl 模块附带的脚本。 通常,在安装多个 Perl 版本时,您可以将 perl 可执行文件标记为版本号 (perl5.32),这样它们就可以在 /whate
我有一个在文件中使用 Blowfish 加密的程序和第二个 perl 程序,它提示输入用于将其解密为字符串的密码,我希望不必将解密的源代码写入硬盘驱动器,尽管将它放在内存中并不是真正的问题,因为运行程
有没有人为 Perl 中的惰性求值列表找到了一个好的解决方案?我尝试了很多方法来改变类似的东西 for my $item ( map { ... } @list ) { } 进入懒惰的评估——例如,通
我安装了多个版本的 Perl。 我已经指定了要使用的版本。但是为了验证,我想从 .pl 脚本本身输出 Perl 的版本。 这可能吗? 在 Perl 脚本中解析“perl --version”的输出似乎
人们还经常问“我怎样才能编译 Perl?”而他们真正想要的是创建一个可以在机器上运行的可执行文件,即使他们没有安装 Perl。 我知道有几种解决方案: perl2exe靛蓝之星 它是商业的。我从未尝试
关闭。这个问题是opinion-based .它目前不接受答案。 想改进这个问题?更新问题,以便 editing this post 可以用事实和引用来回答它. 8年前关闭。 Improve this
我是一名优秀的程序员,十分优秀!