"perldelta - 对于 perl v5.42.0 有哪些新内容"

这是关于 Perl 5.42.0 版本的详细说明,包含了众多方面的变化和更新:

  • 名称与描述perldelta介绍了 perl v5.42.0 与 v5.40.0 版本的差异。
  • 核心增强

    • 新增chdir作为CORE::命名空间的子例程。
    • 引入新的[source::encoding](https://perldoc.perl.org/5.42.0/source::encoding) pragmata 来声明程序部分的编码。
    • 为字段变量添加:writer属性以自动创建写访问器。
    • 新增anyall操作符,类似于grep但更高效。
    • 可禁用单引号作为全局名称分隔符的功能。
    • 支持 lexical 方法声明和调用操作符->&
    • 保留switchSmart Match操作符,但需通过 feature 启用。
    • 支持 Unicode 16.0。
    • 添加逻辑异或赋值操作符^^=
  • 安全方面

    • 修复了tr//的堆缓冲区溢出漏洞(CVE-2024-56406)。
    • 解决了 Perl 线程的工作目录竞争条件问题(CVE-2025-40909)。
  • 不兼容变化:恢复了 Perl 5.18 中引入的函数对包含函数的无条件引用,修复了内存泄漏问题,但也可能影响调试器。
  • 性能增强

    • 常量折叠字符串可通过 Copy-on-Write 机制共享。
    • tr///在处理 ASCII 范围内字符时速度提升。
    • 优化了builtin::indexed的使用。
    • 引入新的专用OP_SUBSTR_LEFT操作符处理零偏移substr模式。
    • 提升了整数字符串化的效率。
    • 单参数字符串反转速度更快。
  • 模块与 pragmata:更新了众多模块和 pragmata,如Archive::TarB::Deparse等。
  • 文档更新:更新了多个文档部分,如perlapiperldata等,以反映版本变化。
  • 诊断方面

    • 新增错误和警告信息,如使用非 ASCII 字符时的错误等。
    • 更改了一些现有诊断的输出。
  • 工具变化Porting/test-dist-modules.pl的默认安装方式变为分离安装,且文档增强。
  • 配置与编译:修复了在特定平台上的编译问题,移除了一些未文档化的配置宏。
  • 测试方面:添加和修改了测试用例,新增t/run/todo.t测试脚本,测试 perl 头文件与编译器的兼容性。
  • 平台支持:针对不同平台(如 arm64 Darwin、Android、Cygwin、MacOS 等)进行了特定的调整和修复。
  • 内部变化:引入新的 API 函数,如处理 UTF-8 的函数、操作 regexp 全局匹配位置的函数等,同时对一些内部代码的处理方式进行了更改。
  • 修复的 Bug:修复了众多 Bug,包括空指针引用、chdir返回值类型、复合赋值操作符等方面的问题。
  • 讣告:提及 Abe Timmerman 和 Andrew Main 的去世,他们在 Perl 社区中做出了贡献。
  • 致谢:感谢众多贡献者参与 Perl 5.42.0 的开发,包括作者、CPAN 社区等。
  • 报告 Bug:提供了报告 Bug 的途径,包括查看 perl bug 数据库、在 GitHub 上创建 issue 等。
  • 感谢与参考:提供了感谢 Perl 5 Porters 的方式,以及其他相关参考文件(如ChangesINSTALLREADME等)。
阅读 57
0 条评论