Golang binding for Intel's HyperScan regex matching library: hyperscan.io
Hyperscan is a software regular expression matching engine designed with high performance and flexibility in mind. It is implemented as a library that exposes a straightforward C API.
gohs
does not enable the latest api of Hyperscan v5.4 by default, if you want to use it please pass build tags hyperscan_v54
.
go get -u -tags hyperscan_v54 github.com/flier/gohs/hyperscan
gohs
will use Hyperscan v5 API by default, you can also build for Hyperscan v4 with hyperscan_v4
tag.
go get -u -tags hyperscan_v4 github.com/flier/gohs/hyperscan
Chimera is a software regular expression matching engine that is a hybrid of Hyperscan and PCRE. The design goals of Chimera are to fully support PCRE syntax as well as to take advantage of the high performance nature of Hyperscan.
It is recommended to compile and link Chimera using static libraries.
$ mkdir build && cd build
$ cmake .. -G Ninja -DBUILD_STATIC_LIBS=on
$ ninja && ninja install
$ go get -u -tags chimera github.com/flier/gohs/hyperscan
You need to download the PCRE library source code to build Chimera, see Chimera Requirements for more details
The Intel's Hyperscan relies on the SSE/AVX instruction set for x86 platform. If you need to use it on other platforms such as ARM, you can install Vectorscan which is a portable fork of Hyperscan that supports the ARM NEON/ASIMD and Power VSX.
This project is licensed under either of Apache License (LICENSE-APACHE) or MIT license (LICENSE-MIT) at your option.
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in Futures by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.