Hyperscan 5.6.0/5.6.1发布啦!新版本的主要功能及改进包括:
- 引入了新的处理纯字符串规则的API,其中包含编译期API hs_compile_reglit()/hs_compile_reglit_multi()和运行期API hs_scan_purelit()。新的编译期API支持以正则表达式语法书写的纯字符串规则(含正则语义或不可打印的字符须转义或用HEX码表达),新的运行期API提高了对纯字符串规则的匹配性能。
- 提出了新的多字符串匹配算法(命名为NeoHarry),其使用AVX512VBMI2指令提高了对中等规模(100-2000条)字符串集合的匹配性能。
- 提出了新的多字符串匹配算法(命名为NeoTeddy),其使用AVX512VBMI2指令提高了对小规模(2-100条)字符串集合的匹配性能。
- 使用并行算法改进了DFA引擎(Sheng64),其运用混洗运算的结合律提高了中等规模快速DFA模型(17-64个状态)的匹配性能。
- 使用并行算法改进了DFA引擎(McSheng64),其运用混洗运算的结合律提高了大规模混合DFA模型(65-16384个状态,热区域不超过64个状态)的匹配性能。
- 提出了新的DFA引擎(McSheng128),其使用AVX512VBMI指令,并运用基于混洗运算结合律的并行算法提高了大规模混合DFA模型(65-16384个状态,热区域不超过128个状态)的匹配性能。
- 完善了Universal Database功能,其覆盖了所有内部引擎针对所有不同平台的算法实现,并支持处理纯字符串规则的API。
- 强调了scratch空间的合法用法。用户在多Database场景中可以在运行期使用根据其他Database分配的scratch空间,但须保证该scratch空间比当前Database所需的空间更大。
- 修复了如下bug:
修正了语料生成器对UTF-8字符的取值范围。
修复了流模式关闭阶段的内存泄漏问题。
修复了hscollider工具因glibc-2.34中SIGSTKSZ定义变更导致的编译错误。
修复了chimera在空匹配时的死循环问题。
修复了UTF-8验证中的错误判断条件。
另外,我们对开源社区(https://github.com/intel/hyperscan