Skip to content

Elixir bindings for Vectorscan, a fork of Hyperscan, the high performance regular expression library.

Notifications You must be signed in to change notification settings

pguillory/hyperscan-elixir

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

24 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Hyperscan

Elixir bindings for Hyperscan, a high performance multiple-regex matching library.

Hyperscan was published by Intel and allows simultaneous matching of up to tens of thousands of regular expressions simulataneously and efficiently. It is used for things like deep packet inspection.

These bindings try to stay as close as possible to the C API provided by Hyperscan so that its excellent documentation will be useful to you, as a user of the library.

Example

# Compile a regular expression.
{:ok, db} = Hyperscan.compile("quick", 0)

# Allocate scratch space for matching it.
{:ok, scratch} = Hyperscan.alloc_scratch(db)

# Test the regex against a string.
{:ok, true} = Hyperscan.match(db, "the quick brown fox", scratch)

Installation

Building the NIF requires the Hyperscan library to be installed. Support for ARM-based systems is available through a fork called Vectorscan.

# On an x86-64 Linux host try:
apt install libhyperscan-dev
# On an M1/M2 Macbook, this should work:
brew install vectorscan

Then add it to your project dependencies in Mix.exs:

def deps do
  [
    {:hyperscan, "~> 0.1.0"}
  ]
end

About

Elixir bindings for Vectorscan, a fork of Hyperscan, the high performance regular expression library.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published