目录

名称

perl587delta - perl v5.8.7 的新增功能

说明

本文档介绍了 5.8.6 版本和 5.8.7 版本之间的差异。

不兼容的更改

没有与 5.8.6 不兼容的更改。

核心增强

Unicode 字符数据库 4.1.0

Perl 5.8 中包含的 Unicode 字符数据库的副本已从 4.0.1 更新到 4.1.0。有关显着更改,请参阅 http://www.unicode.org/versions/Unicode4.1.0/#NotableChanges

suidperl 降低安全性

suidperl 中涉及调试代码的一对漏洞已关闭。

对于新项目,核心 Perl 团队强烈建议您使用专用单一用途安全工具,例如 sudo,而不是 suidperl

可选站点自定义脚本

Perl 解释器可以构建为允许使用站点自定义脚本。默认情况下,这未启用,以与以前的 Perl 版本保持一致。要使用此功能,请在运行 Configure 脚本时将 -Dusesitecustomize 添加到命令行标志。另请参阅 perlrun 中的“ -f”

Config.pm 现在小得多。

Config.pm 现在约为 3K,而不是 32K,不常用的代码和 %Config 值按需加载。这对程序员来说是透明的,但意味着大多数代码将节省解析和加载 29K 的脚本(例如,使用 File::Find 的代码)。

模块和 Pragmata

实用程序更改

find2perl 增强功能

find2perl 具有新的选项 -iname-path-ipath

性能增强

现在,在 ithreads 克隆期间使用的内部指针映射哈希使用内存分配竞技场。在测试中,这将 ithreads 克隆时间减少了大约 10%。

安装和配置改进

选定的错误修复

新增或更改的诊断

新增了一个污染错误,“%ENV 别名为 %s”。当启用污染检查且 *ENV 已别名时,会引发此错误,因此 %ENV 不再具有 env-magic,因此无法验证环境是否无污染。

packunpack 的内部已更新。所有合法的模板都应像以前一样工作,但对于复杂的故障情况,报告的错误可能会有所变化。非错误情况下的任何行为更改都是错误,应报告。

更改的内部

C 源代码已经过大量重构,部分是为了使其更简洁、更易于维护。生成的对象代码和 perl 二进制文件可能远小于 5.8.6,并且在某些情况下有望更快,但除此之外,不应该有任何用户可检测到的更改。

已添加 ${^UTF8LOCALE},以便 perl 空间可以访问 PL_utf8locale

现在可以在编译时更改用于分配 SV 头和大多数 SV 主体的竞技场的大小。旧大小为 1008 字节,新默认大小为 4080 字节。

已知问题

从重载运算符返回的 Unicode 字符串可能存在错误。这是一个自 5.8.6 发布以来报告的长期错误,但我们还没有一个合适的修复程序。

特定于平台的问题

在 UNICOS 上,lib/Math/BigInt/t/bigintc.t 挂起并占用 CPU。ext/B/t/bytecode.t 和 ext/Socket/t/socketpair.t 两个测试都失败。这些问题不太可能得到解决,因为我们英勇的 UNICOS 移植人员的最后一台 Cray 正在退役。

报告错误

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

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

另请参阅

Changes 文件,详细说明了更改的内容。

INSTALL 文件,用于了解如何构建 Perl。

README 文件,用于了解一般内容。

ArtisticCopying 文件,用于了解版权信息。