perl5121delta - perl v5.12.1 的新增功能
本文档描述了 5.12.0 版本和 5.12.1 版本之间的差异。
如果您要从较早的版本(例如 5.10.1)升级,请先阅读 perl5120delta,其中描述了 5.10.0 和 5.12.0 之间的差异。
没有与 5.12.0 故意不兼容的更改。如果存在与 5.12.0 的任何不兼容性,则它们是错误。请报告它们。
除了下面列出的错误修复之外,此版本中核心语言不应该有任何用户可见的更改。
我们修复了从 version 导出 is_strict
和 is_lax
。
这些导出项使用将它们视为方法调用的包装器,这导致它们失败。它们只是函数,并且按此方式记录,并且永远不应该被子类化,因此此补丁只是直接将它们作为函数导出,而无需包装器。
我们已将 CGI 升级到版本 3.49,以合并对 Perl 5.12.0 随附版本中引入的回归的修复。
我们已将 Pod::Simple 升级到版本 3.14,以改进 \C\<\< \>\> 解析。
我们对 CPANPLUS 测试套件进行了一项小修复,以修复偶尔出现的虚假测试失败。
我们已将 Safe 升级到版本 2.27,以包装由 reval()
和 rdo()
返回的 coderef。
我们已将新的维护版本策略添加到 perlpolicy
我们已在 perlpodspec 中阐明了 POD 规范中的多角度括号结构
我们已向 perldiag 添加了对有关 :=
警告的缺失解释
我们已从 perlunitut 中删除了有关 Perl 中所有文本字符串都是 Unicode 字符串的错误声明。
我们已将 perlrepository 中的 GitHub 镜像链接更新为 mirrors/perl,而不是 github/perl
我们已修复 perl5114delta 中的一个小错误。
我们已用 given/when 替换了对现已过时的 Switch 的提及。
我们已在 perlrun 中改进了有关 $sitelibexp/sitecustomize.pl 的文档。
我们已更正 perlmodlib,其中无意中遗漏了许多模块。
我们已更新 perlfunc 中有关 'require' 的文档,涉及将 Perl 代码放入 @INC。
我们已在 perlfunc 中恢复了一些错误删除的有关 quotemeta 的文档。
我们已修复 perlutil 中的一个 a2p 示例。
我们用 Perl 5.12 的发布日期填补了 perlport 中的一个空白。
我们修复了多个 perldelta 文件中的损坏链接。
Carp 的文档错误地指出 $Carp::Verbose 变量会使 cluck 生成堆栈回溯。
我们修复了 Pod::Functions 中的多个拼写错误。
我们改进了 perlfunc 中大小写转换函数的文档。
我们更正了 perlgpl,使其包含 GNU 通用公共许可证的正确版本。
t/op/sselect.t 现在在 Windows 上的计时检查期间不太容易受到时钟抖动的影响。
Win32 上的 sleep() 时间可能会四舍五入到时钟滴答间隔的倍数。
lib/blib.t 和 lib/locale.t:修复了 Darwin/PPC 上的测试失败。
perl5db.t:修复了在安装了 Term::ReadLine::Gnu
时的测试失败。
我们更新了 INSTALL,其中包含有关如何在 OpenSUSE(以及其他平台)上处理损坏的 dbm.h 的说明。
我们处理文件测试操作的方式中的一个错误可能导致段错误。文件测试并不总是期望堆栈上有操作,因此我们现在仅在确定我们不会对 _ 文件句柄进行 stat 时才使用 TOP。这由 OPf_KIDS(如 ck_ftst 中所检查)指示。
在对具有包更改(相对于上一个 nextstate)和标签的 nextstate 操作进行反解析时,现在首先发出包声明,因为标签在语法上不允许在包声明之前。
XSUB.h 现在在 PERL_IMPLICIT_SYS 下正确地重新定义 fgets。
utf8::is_utf8 现在尊重 GMAGIC(例如 $1)。
使用 fputc()
或 fputs()
的 XS 代码:在 Windows 上可能会导致错误,因为它们的实参被交换了。
我们修复了 lex_stuff_pvn() 中的一个小错误,该错误在一种不常见的情况下导致虚假语法错误。当在文件的最后一行执行填充,并且该行以缺少终止分号的语句结尾时,就会发生这种情况。
我们修复了一个可能导致 \N{} 结构后跟一个 . 被错误解析的 bug。
我们修复了一个导致不带参数的 when(scalar) 未被视为语法错误的 bug。
我们修复了 Perl 5.12.0 中引入的字符串求值之前标签处理中的一个回归。
我们修复了 Perl 5.10.1 中引入的正则表达式中折叠字符不区分大小写匹配中的一个回归。
Perl 现在允许在 HP-UX 上使用 -Duse64bitint,而无需提升为 use64bitall
Perl 现在可以在 AIX 4.2 上构建
所需更改解决了 AIX 4.2s 缺乏对 IPv6 的支持以及对 POSIX sigaction()
的有限支持。
FreeBSD 7 不再包含 /usr/bin/objformat。在构建时,Perl 现在跳过版本 7 及更高版本的 objformat 检查,并假定为 ELF。
现在可以在较旧的(7.3-2 之前的)VMS 系统上构建扩展。
大约七年前,DCL 符号长度被限制为 1K,但没有特别深刻的原因阻止那些较旧的系统配置和构建 Perl。
我们修复了 VMS 上之前损坏的 -Uuseperlio
构建。
我们正在检查一个在禁用 perlio 的非默认情况下不存在的变量。现在我们只在它存在时才查看它。
我们修复了 configure.com 中的 -Uuseperlio 命令行选项。
以前,只有在您通过所有问题并明确回答否时,它才有效。
List::Util::first
在存在词法 $_
(通常由 my $_
或隐式地由 given
引入)的情况下表现异常。每次迭代设置的变量是包变量 $_
,而不是词法 $_
。
类似的问题可能发生在其他提供将块作为其第一个参数的函数的模块中,例如
foo { ... $_ ...} list
Module::Load::Conditional
和 version
存在不幸的交互作用,当遇到不可解析的版本字符串时,这会导致 CPANPLUS
崩溃。从 CPAN 升级到 CPANPLUS
0.9004 或 Module::Load::Conditional
0.38 将解决此问题。
Perl 5.12.1 代表了自 Perl 5.12.0 以来大约四星期的开发,包含来自 28 位作者的 142 个文件中大约 4,000 行的更改。
Perl 在充满活力的用户和开发人员社区的帮助下,在第三个十年继续蓬勃发展。已知以下人员为 Perl 5.12.1 的改进做出了贡献
Ævar Arnfjörð Bjarmason、Chris Williams、chromatic、Craig A. Berry、David Golden、Father Chrysostomos、Florian Ragwitz、Frank Wiegand、Gene Sullivan、Goro Fuji、H.Merijn Brand、James E Keenan、Jan Dubois、Jesse Vincent、Josh ben Jore、Karl Williamson、Leon Brocard、Michael Schwern、Nga Tang Chan、Nicholas Clark、Niko Tyni、Philippe Bruhat、Rafael Garcia-Suarez、Ricardo Signes、Steffen Mueller、Todd Rinaldo、Vincent Pit 和 Zefram。
如果您发现您认为是一个错误,您可能会查看最近发布到 comp.lang.perl.misc 新闻组的文章和 perl 错误数据库 http://rt.perl.org/perlbug/ 。Perl 主页 https://www.perl5.cn/ 上也可能有一些信息。
如果您认为您有一个未报告的错误,请运行发行版中包含的 perlbug 程序。务必将您的错误精简为一个微小但足够的测试用例。您的错误报告以及 perl -V
的输出将被发送到 [email protected],供 Perl 移植团队分析。
如果您报告的错误具有安全隐患,不适合发送到公开存档的邮件列表,请将其发送到 [email protected]。这指向一个封闭的订阅未存档的邮件列表,其中包括所有核心提交者,他们将能够帮助评估问题的严重性,找出解决方案,并帮助协调跨 Perl 支持的所有平台发布补丁以减轻或修复问题。请仅将此地址用于 Perl 核心中的安全问题,而不是用于在 CPAN 上独立分发的模块。
Changes 文件,了解如何查看已更改内容的详尽详细信息。
用于构建 Perl 的INSTALL文件。
用于一般事项的README文件。
用于版权信息的Artistic和Copying文件。