perl5261delta - perl v5.26.1 的新增功能
本文档介绍了 5.26.0 版本和 5.26.1 版本之间的差异。
如果您要从较早的版本(如 5.24.0)升级,请先阅读 perl5260delta,其中介绍了 5.24.0 和 5.26.0 之间的差异。
使用不区分大小写的修饰符编译某些正则表达式模式可能会导致堆缓冲区溢出并使 perl 崩溃。此问题现已修复。 [GH #16021]
对于正则表达式模式中的某些类型的语法错误,错误消息可能包含一段随机的、可能很大的内存块的内容,或者可能导致 perl 崩溃。此问题现已修复。 [GH #16025]
$ENV{$key}
堆栈缓冲区溢出Windows 上的 %ENV
代码中可能存在的堆栈缓冲区溢出已通过完全删除缓冲区修复,因为该缓冲区本来就是多余的。 [GH #16051]
没有故意与 5.26.0 不兼容的更改。如果存在任何此类更改,它们都是 bug,我们要求您提交报告。请参见下文的“报告错误”。
base 已从版本 2.25 升级到 2.26。
通过引入一种更精细、更准确的解决方案来限制此模块上无点的 @INC
的影响,该解决方案从 @INC
中删除 '.'
,同时减少误报。
charnames 已从版本 1.44 升级到 1.45。
Module::CoreList 已从版本 5.20170530 升级到 5.20170922_26。
已修复在 FreeBSD-11.0 上使用 g++ 构建的问题。 [GH #15984]
已添加在 Windows 上使用 Microsoft Visual Studio 2017(包含 Visual C++ 14.1)编译 perl 的支持。
由于 strtoll
和 strtoull
的映射不正确,在 Perl 的 64 位版本中使用 GCC 6 构建 XS 模块会失败。此问题现已修复。 [GH #16074] [cpan #121683] [cpan #122353]
以前,几个内置函数存在一些错误,导致它们在不为要写入的项分配空间的情况下写入内部堆栈。在极少数情况下,这可能会导致崩溃。这些错误现已修复,如果将来引入任何类似的错误,它们将在调试版本中自动检测到。 [GH #16076]
在调试版本中,使用带有后解引用语法的符号引用作为哈希查找中的键会导致断言失败。 [GH #16029]
列表赋值 (aassign
) 在极少数情况下会在 mortal 堆栈上分配一个条目,并使该条目保持未初始化状态。 [GH #16017]
尝试将属性应用于已存在同名函数的 our
变量可能会导致在预期 SV 的地方提供 NULL 指针,从而使 perl 崩溃。 [perl #131597]
将 typeglob 从代码引用中实现出来的代码做出了一些错误的假设,这可能导致在 $::{"A"} = sub {}; \&{"A"}
等情况下崩溃。此问题现已修复。 [GH #15937]
my_atof2
不再读取终止 NUL 之后的内容,以前如果小数点紧接在 NUL 之前,就会发生这种情况。 [GH #16002]
已修复 utf8 字符串中 s//
中偶尔出现的“格式错误的 UTF-8 字符”崩溃。 [GH #16019]
perldoc -f s
现在可以找到 s///
。 [GH #15989]
已修复 utf8 转换后出现的一些错误警告。 [GH #15958]
用于捕获 Perl 异常的 jmpenv
框架是惰性设置的,这曾经有点过于惰性。现在更早地设置了捕获器,从而防止了一些可能的崩溃。 [GH #11804]
已删除虚假的“假设不是 POSIX 类”警告。 [GH #16001]
Perl 5.26.1 自 Perl 5.26.0 以来大约经历了 4 个月的开发,包含来自 23 位作者的 85 个文件中的大约 8,900 行更改。
不包括自动生成的文件、文档和发布工具,大约有 990 行更改到 38 个 .pm、.t、.c 和 .h 文件。
Perl 在用户和开发者的活跃社区的支持下,在第三个十年继续蓬勃发展。已知以下人员为 Perl 5.26.1 的改进做出了贡献
Aaron Crane、Andy Dougherty、Aristotle Pagaltzis、Chris 'BinGOs' Williams、Craig A. Berry、Dagfinn Ilmari Mannsåker、David Mitchell、E. Choroba、Eric Herman、Father Chrysostomos、Jacques Germishuys、James E Keenan、John SJ Anderson、Karl Williamson、Ken Brown、Lukas Mai、Matthew Horsfall、Ricardo Signes、Sawyer X、Steve Hay、Tony Cook、Yves Orton、Zefram。
上面的列表几乎肯定是不完整的,因为它是由版本控制历史自动生成的。特别是,它不包括向 Perl bug 跟踪器报告问题的(非常感谢的)贡献者的姓名。
此版本中包含的许多更改源自 Perl 核心包含的 CPAN 模块。我们感谢整个 CPAN 社区帮助 Perl 蓬勃发展。
有关 Perl 所有历史贡献者的更完整列表,请参阅 Perl 源代码发行版中的 AUTHORS 文件。
如果您发现您认为是一个错误,您可以在 https://rt.perl.org/ 查看 perl 错误数据库。Perl 主页 https://www.perl5.cn/ 上也可能有一些信息。
如果您认为您有一个未报告的错误,请运行发行版中包含的 perlbug 程序。务必将您的错误精简为一个微小但足够的测试用例。您的错误报告以及 perl -V
的输出将被发送到 [email protected],供 Perl 移植团队分析。
如果您报告的错误具有安全影响,不适合发送到公开存档的邮件列表,请参阅 perlsec 中的“安全漏洞联系信息”,了解如何报告该问题。
如果您希望感谢 Perl 5 Porters 在 Perl 5 中所做的工作,您可以通过运行 perlthanks
程序来实现
perlthanks
这将向 Perl 5 Porters 列表发送一封电子邮件,表达您的谢意。
Changes 文件,解释如何查看已更改内容的详尽详细信息。
INSTALL 文件,了解如何构建 Perl。
README 文件,了解一般信息。
Artistic 和 Copying 文件,了解版权信息。