经过11个月的开发
分支 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 字符的模式的处理速度显着加快。
- 从 UTF-8 到字符布局的翻译操作已加速(
- 已恢复对 Minix3 平台的支持。可以使用 Microsoft Visual Studio 2019 编译器 (Visual C++ 14.2) 进行构建;
- 基本包中包含的模块的更新版本。模块已从主要构成中删除
B::调试 и语言环境::代码 .
来源: opennet.ru