这是关于 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) `代码` - 列表 > 引用。你还可以使用@来通知其他用户。