内容

名称

perl586delta - perl v5.8.6 的新特性

描述

本文档描述了 5.8.5 版本和 5.8.6 版本之间的差异。

不兼容的更改

与 5.8.5 版本没有不兼容的更改。

核心增强

perl 解释器现在对 UTF-16 编码的脚本更加容忍。

在 Win32 上,Perl 现在可以使用非 IFS 兼容的 LSP,这使得 Perl 可以与 McAfee Guardian 等防火墙协同工作。有关完整详细信息,请参阅 README.win32 文件,特别是如果您运行的是 Win95。

模块和编译指示

实用程序更改

Perl 有一个新的 -dt 命令行标志,它在调试器中启用线程支持。

性能增强

reverse sort ... 现在经过优化以反向排序,避免生成临时中间列表。

for (reverse @foo) 现在反向迭代,避免生成临时反转列表。

选定的错误修复

当给定无效的 utf8 输入时,正则表达式引擎现在更加健壮,因为有时由有错误的 XS 模块生成。

foreach 在 threads::shared 数组上曾经能够使 Perl 崩溃。此错误现已修复。

STDOUT 的析构函数中的正则表达式曾经导致核心转储,因为正则表达式填充已释放。这已修复。

goto & 现在更加健壮 - 深度递归和链式 goto & 中的错误已修复。

在数组上使用 delete 不会再导致内存泄漏。从共享数组引用中弹出项目不会再导致泄漏。

eval_sv() 无法通过污染测试会导致堆栈损坏 - 这已修复。

在具有 64 位指针的平台上,数字比较运算符曾经错误地比较重载引用的地址,而不是使用重载值。这已修复。

read 到具有偏移量的 UTF8 编码缓冲区中,该偏移量超出了缓冲区的末尾,不再错误地计算缓冲区长度。

尽管 Perl 从 5.8 版本开始承诺 sort() 将是稳定的,但两种情况 sort {$b cmp $a}sort {$b <=> $a} 可能会产生不稳定的排序。这在 perl5.8.6 中得到纠正。

本地化 $^D 不会再生成有关有效 -D 标志的诊断消息。

新增或更改的诊断信息

对于 -t 和 -T,"Too late for "-T" option" 的提示已更改为更具信息量的 "-T" is on the #! line, it must also be used on the command line

内部更改

从现在开始,所有嵌入 Perl 的应用程序的行为都将与使用 -DPERL_USE_SAFE_PUTENV 编译 Perl 相同。有关详细信息,请参阅 INSTALL 文件中的“环境访问”。

大多数 C 源文件现在在顶部都有注释来解释其用途,这将有助于任何希望了解实现概况的人。

新增测试

B 模块套件的测试数量显著增加。

报告错误

如果您发现您认为是错误的内容,您可以查看最近发布到 comp.lang.perl.misc 新闻组的文章和 Perl 错误数据库 http://bugs.perl.org。您也可以在 Perl 主页 https://www.perl5.cn 上找到相关信息。

如果您认为您遇到了未报告的错误,请运行随您的发行版提供的 perlbug 程序。请确保将您的错误缩减为一个微小但足够的测试用例。您的错误报告以及 perl -V 的输出将被发送到 [email protected],由 Perl 移植团队进行分析。您可以在 http://bugs.perl.org/ 上浏览和搜索 Perl 5 错误。

另请参阅

有关更改的详细信息,请参阅 Changes 文件。

有关如何构建 Perl 的信息,请参阅 INSTALL 文件。

有关一般事项,请参阅 README 文件。

有关版权信息,请参阅 ArtisticCopying 文件。