2 个版本

0.1.2 2024年1月20日
0.1.1 2023年12月31日
0.1.0 2023年12月21日

构建工具 中排名 #195

每月下载量 30

Apache-2.0 OR MIT

6.5MB
141K SLoC

C++ 118K SLoC // 0.1% comments C 22K SLoC // 0.1% comments Rust 717 SLoC // 0.0% comments Python 589 SLoC // 0.2% comments Shell 30 SLoC // 0.3% comments

vectorscan-rs

概述

此包实现了对 https://github.com/Vectorcamp/vectorscan 分支的 https://github.com/intel/hyperscan 的最小 Rust 封装,Hyperscan 是一个高性能的正则表达式引擎。

这些 Rust 封装由 noseyparker 实现,这个库是为了我自己的个人使用而创建的。

此包从源代码构建 Vectorscan 的供应商副本。

先决条件

要构建此包,您需要 CMake。另外,如果您启用了 gen 功能,您还需要安装 Clang,以便 bindgen 可以生成对 Vectorscan 的原始 Rust 封装。

已在 x86_64 Linux 和 Intel 以及 ARM macOS 上进行测试。

实现说明

此包是从 https://github.com/vlaci/pyperscan 项目改编的,该项目使用 Rust 将 Hyperscan 暴露给 Python。

此处实现的封装只暴露了 Nosey Parker 所需要的 Vectorscan 的部分,具体来说,是基于块的匹配 API。其他各种 API(如基于流和向量的匹配)没有暴露。其他功能,如 Chimera PCRE 库、测试代码、基准代码和支持工具也已被禁用。

VectorScan 5.4.8 的源代码包含在 vectorscan 目录中。Boost 版本 1.83.0 的源代码也包含在 vectorscan/include/boost 目录中。

对 VectorScan 源代码进行了以下修改的原因

  • 其基于 CMake 的构建系统被修改,以消除对 ragel 的构建时依赖
  • 预编译了 4 个 Ragel .rl 文件,并将其添加到源代码树中
  • 其构建系统被修改,以允许禁用其他组件的构建
  • 其构建系统被修改,以在所有情况下禁用 -Werror

这些修改没有表示为在构建时应用的显式补丁文件。相反,这些修改是直接对受控源树进行的。这是一种权宜之计,但如果需要对 vectorscan 源代码进行更多更改,则需要重新设计。

许可证

Vectorscan 在 3-clause BSD 许可证下发布。pyperscan 在 Apache License Version 2.0 或 MIT 许可证下发布。Boost 在 Boost License Version 1.0 下发布。

无运行时依赖