perldelta - perl v5.40.0 的新特性是什么

这是关于 Perl 5.40.0 版本的详细变更日志,涵盖了多个方面的内容:

  • 名称与描述:perldelta 介绍了 5.38.0 到 5.40.0 版本的差异。
  • 核心增强

    • 新增__CLASS__关键字,用于在类方法等中获取运行时的类名。
    • 为字段变量添加:reader属性,自动创建访问器方法。
    • 允许在-M命令行选项中使用空格。
    • use VERSION声明的限制,包括版本降级和重复声明等。
    • 新增builtin::infbuiltin::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::TableTest2::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文件包含一般信息,ArtisticCopying文件包含版权信息。
阅读 16
0 条评论