内容

名称

perl582delta - perl v5.8.2 的新特性

描述

本文档描述了 5.8.1 版本和 5.8.2 版本之间的差异。

如果您要从早期版本(例如 5.6.1)升级,请先阅读 perl58delta,其中描述了 5.6.0 和 5.8.0 之间的差异,以及 perl581delta,其中描述了 5.8.0 和 5.8.1 之间的差异。

不兼容的更改

对于调用某些可重入系统调用的模块的线程化构建,在 5.8.0 和 5.8.1 之间意外丢失了二进制兼容性。5.8.2 中恢复了与 5.8.0 的二进制兼容性,这需要破坏与 5.8.1 的兼容性。我们认为这是两害相权取其轻。

这只会影响使用线程化 perl 5.8.1 以及使用这些调用的已编译模块的用户,并且现在尝试使用 5.8.2 运行已编译模块。解决方法是使用 5.8.2 重新编译和重新安装模块。

核心增强

哈希随机化

在 5.8.1 中引入的哈希随机化已得到修正。事实证明,虽然 5.8.1 中引入的实现与 5.8.0 源代码兼容,但在某些情况下并不二进制兼容。5.8.2 包含一个改进的实现,它与 5.8.0 和 5.8.1 同时具有源代码和二进制兼容性,并且仍然对导致 5.8.1 更改的攻击形式保持稳健。

我们感谢 Debian 项目在这方面的投入。有关此更改背后的最初理由,请参阅 "perlsec 中的算法复杂度攻击"

线程

已修复与线程之间共享的变量相关的几个内存泄漏。

模块和语义

更新的模块和语义

自 Perl 5.8.1 以来,以下模块和语义已更新

Devel::PPPort
Digest::MD5
I18N::LangTags
libnet
MIME::Base64
Pod::Perldoc
strict

文档改进

Tie::Hash

文档改进

Time::HiRes
Unicode::Collate
Unicode::Normalize
UNIVERSAL

文档改进

选定的错误修复

解析器现在可以正确处理涉及无法识别的文件测试运算符的一些语法错误。

更改的内部结构

当 -DMULTIPLICITY 关闭时,解释器初始化更加完整。这应该解决在单个进程中多次初始化和销毁 Perl 解释器的问题。

平台特定问题

已调整 Solaris 和 OS X 的动态链接器标志,这应该解决在构建某些 XS 模块时遇到的问题。

已修复 OS/2 套接字和 tmpfile 中的错误。

在 OS X 中,setreuid 及其同类函数很麻烦 - perl 现在将尽可能地解决其问题。

未来方向

从 5.8.3 开始,我们打算发布更频繁的维护版本,每个版本的变化更少。目的是更快地将错误修复传播到稳定版本,并使升级稳定版本不再那么剧烈。这应该让最终用户在升级时间选择方面有更大的灵活性,并让他们更容易评估升级的影响。当前计划的代码冻结如下

测试完成后,不久就会发布。

有关更多预言,请参阅perl581delta 中的“未来方向”

报告错误

如果您发现疑似错误,请查看最近发布到 comp.lang.perl.misc 新闻组的文章以及位于 http://bugs.perl.org/ 的 Perl 错误数据库。您也可以在 Perl 主页 https://perldotcom.perl5.cn/ 找到相关信息。

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

另请参阅

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

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

有关一般信息,请参阅 README 文件。

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