编程语言 Perl 5.30.0 发布

经过11个月的开发 发生了 发布 Perl 编程语言的新稳定分支 - 5.30。在准备新版本的过程中,更改了约620万行代码,更改影响了1300个文件,58名开发人员参与了开发。

分支 5.30 是按照六年前批准的固定开发时间表发布的,这意味着每年发布一次新的稳定分支,每三个月发布一次修正版本。大约一个月后,计划发布 Perl 5.30.1 的第一个修正版本,该版本将纠正 Perl 5.30.0 实施过程中发现的最重大错误。随着 Perl 5.30 的发布,对 5.26 分支的支持也已停止,只有在发现严重安全问题的情况下,将来才会发布更新。实验分支5.31的开发进程也已经开始,在此基础上将于2020年5.32月形成Perl XNUMX的稳定版本。

钥匙 变化:

  • 正则表达式中添加了对“”操作的实验性支持。(?<!图案)“和”(?<=模式)» 对先前处理的命名模板的有限访问。模式定义必须在参考点的 255 个字符以内;
  • “{m,n}”正则表达式块中大小说明符(“n”)的最大值已增加至 65534;
  • 新增有限 支持 用于突出显示正则表达式中某些类别的字符的掩码,涵盖不同的 Unicode 集。例如,表达式“qr! \p{nv= /(?x) \A [0-5] \z / }!”允许您选择定义 0 到 5 数字的所有 Unicode 字符,包括数字的泰语或孟加拉语拼写;
  • 添加了对正则表达式中命名字符的支持
    内部模式由单引号分隔 (qr'\N{name}');

  • Unicode 规范支持已更新至版本 12.1。实验性开发标志已从调用中删除 sv_utf8_downgrade 和 sv_utf8_decode,用于C语言扩展的开发;
  • 添加了通过使用支持多线程操作的语言环境实现操作来构建 perl 的功能 (-Accflags=’-DUSE_THREAD_SAFE_LOCALE’)。以前,这样的实现仅在构建 Perl 的多线程版本时使用,但现在可以为任何构建启用;
  • 结合“-Dv”(增强调试输出)和“-Dr”(正则表达式调试)标志现在可以启用所有可能的正则表达式调试模式;
  • 之前弃用的功能已被删除:
    • 现在可用作行分隔符和通配符 允许 仅使用 字素 (不允许使用复合 Unicode 字符)。
    • 停产 支持在正则表达式中使用某些早已过时的“{”字符而不转义它的形式。
    • 它是被禁止 使用带有“:utf8”处理程序的 sysread()、syswrite()、recv() 和 send() 函数。
    • 禁止在本质上错误的条件语句中使用“my”的定义(例如,“my $x if 0”)。
    • 对特殊变量“$*”和“$#”的支持已被删除。
      对 dump() 函数隐式调用的支持已停止(您现在必须显式指定 CORE::dump())。

    • File::Glob::glob 函数已被删除(您应该使用 File::Glob::bsd_glob)。
    • 添加了对 pack() 的保护,防止返回无效的 Unicode 序列。
    • 对使用在 XS 代码(C 块)中执行 UTF-8 操作的宏的支持已推迟到下一个版本。
  • 性能优化:
    • 从 UTF-8 到字符布局的翻译操作已加速(代码点),例如,执行 ord(“\x7fff”) 操作现在需要的指令减少了 12%。检查 UTF-8 字符序列正确性的操作性能也得到了提高;
    • Finalize_op() 函数中的递归调用已被消除;
    • 对代码进行了小幅优化,以折叠相同字符并在正则表达式中定义字符类;
    • 优化 将有符号类型定义转换为无符号类型定义(IV 到 UV);
    • 通过一次处理两位数而不是一位,加速了将整数转换为字符串的算法;
    • 已做出改进 准备好的 基于 LGTM 的分析;
    • 优化了regcomp.c、regcomp.h和regexec.c文件中的代码;
    • 在正则表达式中,像“qr/[^a]/”这样带有 ASCII 字符的模式的处理速度显着加快。
  • 已恢复对 Minix3 平台的支持。可以使用 Microsoft Visual Studio 2019 编译器 (Visual C++ 14.2) 进行构建;
  • 基本包中包含的模块的更新版本。模块已从主要构成中删除 B::调试 и 语言环境::代码.

来源: opennet.ru

添加评论