perl5262delta - perl v5.26.2 的新功能
本文档描述了 5.26.1 版本和 5.26.2 版本之间的差异。
如果您要从 5.26.0 等早期版本升级,请先阅读 perl5261delta,其中描述了 5.26.0 和 5.26.1 之间的差异。
精心制作的正则表达式会导致堆缓冲区写入溢出,并可以控制写入的字节。 [GH #16185]
匹配精心制作的与区域设置相关的正则表达式可能会导致堆缓冲区读取溢出,并可能导致信息泄露。 [GH #16143]
pack()
可能会在项目数量很大时导致堆缓冲区写入溢出。 [GH #16098]
假定的 Unicode 属性名称中的控制字符会导致 perl 崩溃。 此问题已修复。 [perl #132055] [perl #132553] [perl #132658]
没有有意与 5.26.1 不兼容的更改。 如果存在任何不兼容的更改,它们都是错误,我们要求您提交报告。 请参阅下面的 "报告错误"。
Module::CoreList 已从版本 5.20170922_26 升级到 5.20180414_26。
PerlIO::via 已从版本 0.16 升级到 0.17。
Term::ReadLine 已从版本 1.16 升级到 1.17。
Unicode::UCD 已从版本 0.68 升级到 0.69。
此文档已更新,以说明 \p{Word}
现在包含与 \p{Join_Control}
属性匹配的代码点。 对属性的更改是在 Perl 5.18 中进行的,但直到现在才记录。 目前只有两个代码点与该属性匹配:U+200C(零宽度非连接符)和 U+200D(零宽度连接符)。
Visual C++ 编译器版本检测已得到改进,可在非英语语言系统上运行。 [GH #16235]
我们现在为使用早于 14.1 版本的 Visual C++ 的 64 位构建正确设置 $Config{libpth}
。 [GH #16269]
readpipe()
内置函数现在在编译时检查它是否只有一个参数表达式,并将它置于标量上下文中,从而确保它在运行时不会破坏堆栈。 [GH #2793]
修复了 Perl 5.27.1 中引入的 pp_list
中的 use after free 错误。 [GH #16124]
如果 sub
关键字后面跟着包括换行符(和注释)的空格,解析 sub
定义可能会导致 use after free。 [GH #16097]
词法分析器现在在 ${identifier}
结构中跳过空格时正确地调整解析指针。 [perl #131949]
在对非 glob 执行各种 I/O 操作后,对 ${^LAST_FH}
的访问不再断言。 [GH #15372]
sort
现在在对 $a
和 $b
进行别名时执行正确的引用计数,从而避免在执行排序比较器时对标量进行过早销毁和泄漏。 [GH #11422]
一些复杂的正则表达式在编译时不再导致算术溢出。 [GH #16113]
修复了使用 -flto -mieee-fp 构建时的重复符号错误。pp.c 定义了 _LIB_VERSION
,而 -lieee 已经定义了它。 [GH #16086]
修复了 S_regmatch()
函数中的 NULL 指针解引用。 [perl #132017]
在其他结构(例如字符串插值和 s///e
的右侧)中编译代码时发生的错误现在会导致编译更早中止。
以前,编译可以继续以报告其他错误,但失败的子解析可能会在解析器移位-归约堆栈上留下部分解析的结构,从而使解析器混淆,导致 perl 崩溃。 [GH #14739]
Perl 5.26.2 代表自 Perl 5.26.1 以来大约 7 个月的开发,包含来自 17 位作者的 82 个文件的约 3,300 行更改。
不包括自动生成的 文件、文档和发布工具,对 36 个 .pm、.t、.c 和 .h 文件进行了大约 1,800 行更改。
得益于充满活力的用户和开发人员社区,Perl 已经蓬勃发展了三十年。以下人员为 Perl 5.26.2 的改进做出了贡献。
Aaron Crane、Abigail、Chris 'BinGOs' Williams、H.Merijn Brand、James E Keenan、Jarkko Hietaniemi、John SJ Anderson、Karen Etheridge、Karl Williamson、Lukas Mai、Renee Baecker、Sawyer X、Steve Hay、Todd Rinaldo、Tony Cook、Yves Orton、Zefram。
以上列表可能并不完整,因为它是由版本控制历史自动生成的。特别是,它不包括向 Perl 错误跟踪器报告问题的贡献者(非常感谢)的姓名。
此版本中包含的许多更改源于 Perl 内核中包含的 CPAN 模块。我们感谢整个 CPAN 社区帮助 Perl 蓬勃发展。
有关 Perl 所有历史贡献者的更完整列表,请参阅 Perl 源代码分发中的 AUTHORS 文件。
如果您发现您认为是错误的内容,您可以查看 Perl 错误数据库,网址为 https://rt.perl.org/ 。您也可以在 https://www.perl5.cn/(Perl 主页)上找到相关信息。
如果您认为您遇到了未报告的错误,请运行随您的发行版提供的 perlbug 程序。请确保将您的错误缩减为一个微小但足够的测试用例。您的错误报告以及 perl -V
的输出将发送到 [email protected],由 Perl 移植团队进行分析。
如果您报告的错误存在安全隐患,不适合发送到公开存档的邮件列表,请参阅 "perlsec 中的 SECURITY VULNERABILITY CONTACT INFORMATION",了解如何报告此问题。
如果您想感谢 Perl 5 移植者在 Perl 5 中所做的工作,您可以运行 perlthanks
程序。
perlthanks
这将向 Perl 5 移植者列表发送一封电子邮件,表达您的谢意。
Changes 文件,了解如何查看有关更改的详尽信息。
INSTALL 文件,了解如何构建 Perl。
README 文件,了解一般信息。
Artistic 和 Copying 文件,了解版权信息。