这是关于 Perl 5.40.0 版本的详细变更日志,涵盖了多个方面的内容:
- 名称与描述:perldelta 介绍了 5.38.0 到 5.40.0 版本的差异。
核心增强:
- 新增
__CLASS__
关键字,用于在类方法等中获取运行时的类名。 - 为字段变量添加
:reader
属性,自动创建访问器方法。 - 允许在
-M
命令行选项中使用空格。 - 对
use VERSION
声明的限制,包括版本降级和重复声明等。 - 新增
builtin::inf
和builtin::nan
函数。 - 新增
^^
逻辑异或运算符。 try/catch
特性不再是实验性的。for
迭代多个值的功能不再是实验性的。builtin
模块不再是实验性的。:5.40
特性包添加了try
。use v5.40;
导入内置函数。
- 新增
安全:
- CVE-2023-47038:通过非法用户定义的 Unicode 属性导致缓冲区溢出。
- CVE-2023-47039:Perl for Windows 二进制劫持漏洞。
不兼容变更:
reset EXPR
现在对标量调用set-magic
。- 调用未知包的
import
方法会产生警告。 return
不再允许间接对象。- 类裸字在特定条件下不再解析为文件句柄。
- 弃用:使用
goto
从外部作用域跳入内部作用域被弃用,将在 Perl 5.42 中完全删除。 - 性能增强:否定运算符支持通用
TARGMY
优化。 模块与 pragmata:
- 新增
Term::Table
和Test2::Suite
模块。 - 多个模块和 pragmata 进行了更新,如
Archive::Tar
等。
- 新增
- 文档:对多个文档部分进行了更新,包括
perlapi
等。 诊断:
- 新增错误和警告,如关于
__CLASS__
使用等的错误,以及关于forked open
等的警告。 - 对现有诊断进行了更改,使其更准确或更具提示性。
- 新增错误和警告,如关于
- 配置与编译:移除
microperl
,修复here-doc
相关问题,可单独启用或禁用高水位标记检查。 - 测试:添加和更改了测试以反映版本的其他变更,包括对不同平台的测试调整。
- 平台支持:新增对 Serenity OS 的支持,对多个平台(如 Windows、Linux、MacOS/Darwin、VMS、Oracle Developer Studio 等)进行了特定的调整和修复。
- 内部变更:添加
PERL_RC_STACK
构建选项,新增简化LISTOP
创建的 API 函数,eval_sv()
API 接受新标志等。 - 选定的 bug 修复:修复了众多关于字符串处理、正则表达式、类继承等方面的 bug。
- 已知问题:perlivp 在 Windows 上缺少
streamzip
。 - 勘误:
perl5300delta
更新以包含arybase
模块的移除。 - 致谢:感谢众多贡献者和社区成员,列出了部分已知的贡献者,并提到 CPAN 社区的帮助。
- 报告 bug:可在 Perl bug 数据库或通过特定方式报告 bug。
- 感谢:可通过运行
perlthanks
程序向 Perl 5 Porters 列表发送感谢。 - 参考:
Changes
文件查看详细变更,INSTALL
文件用于构建 Perl,README
文件包含一般信息,Artistic
和Copying
文件包含版权信息。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。