perl5202delta - perl v5.20.2 的新特性
本文档描述了 5.20.1 版本和 5.20.2 版本之间的差异。
如果您要从 5.20.0 等早期版本升级,请先阅读 perl5201delta,其中描述了 5.20.0 和 5.20.1 之间的差异。
没有故意与 5.20.1 不兼容的更改。如果存在任何不兼容,则它们是错误,我们要求您提交报告。请参见下面的 "报告错误"。
attributes 已从版本 0.22 升级到 0.23。
XS 中 memEQs
的使用已修正。 [GH #14072]
Data::Dumper 已从版本 2.151 升级到 2.151_01。
通过添加一个配置变量/选项来限制转储深度数据结构时的递归,修复了 CVE-2014-4330。
Errno 已从版本 1.20_03 升级到 1.20_05。
现在避免了在 Windows 上使用 Visual C++ 编译器构建 XS 时出现的警告。
feature 已从版本 1.36 升级到 1.36_01。
postderef
功能现在已记录。此功能实际上是在 Perl 5.20.0 中添加的,但直到现在才意外地从功能文档中省略。
IO::Socket 已从版本 1.37 升级到 1.38。
记录了 connected()
方法的限制。 [GH #14199]
Module::CoreList 已从版本 5.020001 升级到 5.20150214。
已更新涵盖的 Perl 版本列表。
PathTools 已从版本 3.48 升级到 3.48_01。
现在避免了在构建 XS 时 gcc 编译器发出的警告。
PerlIO::scalar 已从版本 0.18 升级到 0.18_01。
从标量末尾远超位置读取现在会正确返回文件结束。 [GH #14342]
寻求负位置仍然会失败,但不再将文件位置设置为否定位置。
PerlIO::scalar
句柄上的 eof()
现在在 32 位系统上文件位置超过 2GB 标记时会正确返回 true。
Storable 已从版本 2.49 升级到 2.49_01。
仅对文档进行了轻微的语法更改。
VMS::DCLsym 已从版本 1.05 升级到 1.05_01。
仅对文档进行了轻微的格式更改。
VMS::Stdio 已从版本 2.4 升级到 2.41。
仅对文档进行了轻微的格式更改。
这份由 Tom Christiansen 编写的文档提供了在 Perl 中处理 Unicode 的示例。
添加了对子程序签名的引用。此功能实际上是在 Perl 5.20.0 中添加的,但直到现在才意外地从实验性功能文档中省略。
现在已经正式记录了功能从实验状态毕业的过程。
更正了省略号语句文档中的歧义。 [GH #14054]
对诊断输出(包括警告和致命错误消息)进行了以下添加或更改。有关诊断消息的完整列表,请参阅 perldiag。
标量符号错误 现在已记录在案。此错误并非新错误,但以前未在此处记录。
缺少 \N{} 的右大括号 现在已记录在案。此错误并非新错误,但以前未在此处记录。
已添加测试脚本 re/rt122747.t 来验证 [GH #14081] 是否仍然已修复。
IRIX 和 Tru64 平台再次可以使用。(一些 make test
失败仍然存在。)
AIX 现在在 getsockopt
中正确设置长度。 [GH #13484], [cpan #91183], [cpan #85570]
在 Perl 5.20.0 中,如果从正则表达式内的代码块访问 $^N
,则会意外地关闭内部 UTF8 标志,从而有效地对值进行 UTF8 编码。此问题已修复。 [GH #14211]
以前,在使用子程序名称的各种情况下(自动加载、重载、错误消息),词法子程序会崩溃,但现在已修复。
修复了在启用调试的情况下解析sort
时发生的断言失败。 [GH #14087]
在正则表达式匹配期间加载 UTF8 表格可能会在调试版本中导致断言失败,如果之前的匹配使用了相同的正则表达式。 [GH #14081]
由于字符串复制逻辑中的错误,复制状态变量的值可能会窃取该值并使变量未定义。 此错误在 Perl 5.20 中引入,主要发生在长字符串(1250 个字符或更多)上,但在禁用写时复制的版本中可能会发生在任何字符串上。 [GH #14175]
修复了可能导致 perl 在编译期间执行无限循环的错误。 [GH #14165]
在 Win32 上,在子伪进程中恢复在fork
发生之前在父伪进程中local()
的变量会导致子伪进程(以及操作系统进程)中的内存损坏和崩溃。 [GH #8641]
在编译时计算的受污染常量不再导致无关语句被污染。 [GH #14059]
如果参数不足或用于填充字段的变量为空,则在具有^**
字段的格式上调用write
可能会在 sv_chop() 中产生恐慌。 [GH #14255]
在 Perl 5.20.0 中,sort CORE::fake
(其中 'fake' 是除关键字以外的任何内容)开始截断最后 6 个字符并将结果视为排序子例程名称。 已恢复将“CORE::fake”视为排序子例程名称的先前行为。 [GH #14323]
修复了正则表达式模式中的错误,该错误可能导致段错误和其他崩溃。 这仅发生在使用"/i"
编译的模式中,同时考虑到当前的 POSIX 本地化设置(这通常意味着它们必须在"use locale"
的范围内编译),并且必须存在至少 128 个连续字节的字符串才能匹配。 [GH #14389]
qr/@array(?{block})/
现在不再因“Bizarre copy of ARRAY”而崩溃。 [GH #14292]
gmtime
现在不再因非数字值而崩溃。 [GH #14365]
替换中的某些语法错误,例如 s/${<>{})//
,会导致崩溃,并且从 Perl 5.10 开始就一直存在。(在某些情况下,崩溃直到 Perl 5.16 才开始发生。)当然,崩溃已经修复。 [GH #14391]
Perl 5.20.1 中引入的某些正则表达式中的内存泄漏已修复。 [GH #14236]
formline("@...", "a");
会崩溃。pp_formline() 中的 FF_CHECKNL
案例没有设置用于标记切片位置的指针,这导致 FF_MORE
案例因段错误而崩溃。此问题已修复。 [GH #14388] [GH #14425]
在解析正则表达式编译期间的文字模式时,可能发生的缓冲区溢出和崩溃已修复。 [GH #14416]
已知错误是词法子例程不能用作 sort
的 SUBNAME
参数。这将在 Perl 的未来版本中修复。
已修复 Perl 5.20.0 中引入的回归(在 Perl 5.20.1 以及此处修复),其中包含单个 ASCII 小写字母的 UTF-8 编码正则表达式模式不匹配其大写对应项。 [GH #14051]
Perl 5.20.2 代表了自 Perl 5.20.1 以来大约 5 个月的开发,包含来自 34 位作者的 170 个文件中的大约 6,300 行更改。
不包括自动生成的、文档和发布工具,大约有 1,900 行更改涉及 80 个 .pm、.t、.c 和 .h 文件。
由于充满活力的用户和开发人员社区,Perl 继续在第三个十年蓬勃发展。以下人员已知为 Perl 5.20.2 的改进做出了贡献
Aaron Crane, Abigail, Andreas Voegele, Andy Dougherty, Anthony Heading, Aristotle Pagaltzis, Chris 'BinGOs' Williams, Craig A. Berry, Daniel Dragan, Doug Bell, Ed J, Father Chrysostomos, Glenn D. Golden, H.Merijn Brand, Hugo van der Sanden, James E Keenan, Jarkko Hietaniemi, Jim Cromie, Karen Etheridge, Karl Williamson, kmx, Matthew Horsfall, Max Maischein, Peter Martini, Rafael Garcia-Suarez, Ricardo Signes, Shlomi Fish, Slaven Rezic, Steffen Müller, Steve Hay, Tadeusz Sośnierz, Tony Cook, Yves Orton, Ævar Arnfjörð Bjarmason。
以上列表几乎肯定是不完整的,因为它是由版本控制历史自动生成的。特别是,它不包括向 Perl 错误跟踪器报告问题的贡献者(非常感谢)的姓名。
此版本中包含的许多更改源自 Perl 核心包含的 CPAN 模块。我们感谢整个 CPAN 社区帮助 Perl 蓬勃发展。
有关 Perl 所有历史贡献者的更完整列表,请参阅 Perl 源代码分发中的 AUTHORS 文件。
如果您发现您认为是错误的内容,您可以查看最近发布到 comp.lang.perl.misc 新闻组和 Perl 错误数据库(https://rt.perl.org/)的文章。您也可以在 Perl 主页 https://www.perl5.cn/ 上找到信息。
如果您认为您遇到了未报告的错误,请运行随您的发行版提供的 perlbug 程序。确保将您的错误缩减为一个微小但足够的测试用例。您的错误报告以及 perl -V
的输出将发送到 [email protected],由 Perl 移植团队进行分析。
如果您要报告的错误存在安全隐患,不适合发送到公开存档的邮件列表,请将其发送到 [email protected]。该地址指向一个封闭的订阅未存档邮件列表,其中包括所有核心提交者,他们能够帮助评估问题的影響,找出解决方案,并帮助协调跨所有支持 Perl 平台的补丁发布以减轻或修复问题。请仅将此地址用于 Perl 核心中的安全问题,不要用于 CPAN 上独立分发的模块。
Changes 文件,了解如何查看有关更改的详尽信息。
INSTALL 文件,了解如何构建 Perl。
README 文件,了解一般信息。
Artistic 和 Copying 文件,了解版权信息。