NAME

re::engine::Hyperscan - High-performance regular expression matching library (Intel only)

SYNOPSIS

use re::engine::Hyperscan;

if ("Hello, world" =~ /(Hello|Hi), (world)/) {
    print "Greetings, $1!";
}

DESCRIPTION

ALPHA - Does not work YET

Replaces perl's regex engine in a given lexical scope with Intel's Hyperscan regular expressions provided by libhyperscan.

This provides the fastest regular expression library on Intel-CPU's only, but needs to fall back to the core perl regexp compiler with backtracking, lookbehind, zero-width assertions and more advanced patterns. It is typically 50% faster then the core regex engine.

For the supported syntax see https://01org.github.io/hyperscan/dev-reference/compilation.html.

With the following unsupported constructs in the pattern, the compiler will fall back to the core re engine:

  • Backreferences and capturing sub-expressions.
  • Arbitrary zero-width assertions.
  • Subroutine references and recursive patterns.
  • Conditional patterns.
  • Backtracking control verbs.
  • The \C "single-byte" directive (which breaks UTF-8 sequences).
  • The \R newline match.
  • The \K start of match reset directive.
  • Callouts and embedded code.
  • Atomic grouping and possessive quantifiers.

METHODS

  • min_width (RX)

    Returns the result from hs_expression_info(). NYI The minimum length in bytes of a match for the pattern.

  • max_width (RX)

    Returns the result from hs_expression_info(). NYI The maximum length in bytes of a match for the pattern. If the pattern has an unbounded maximum width, this will be set to the maximum value of an unsigned int (UINT_MAX).

  • unordered_matches (RX)

    Returns the result from hs_expression_info(). NYI Whether this expression can produce matches that are not returned in order, such as those produced by assertions.

  • matches_at_eod (RX)

    Returns the result from hs_expression_info(). NYI Whether this expression can produce matches at end of data (EOD).

  • matches_only_at_eod (RX)

    Returns the result from hs_expression_info(). NYI Whether this expression can *only* produce matches at end of data (EOD).

FUNCTIONS

  • ENGINE

    Returns a pointer to the internal Hyperscan engine, the database, suitable for the XS API (regexp*)re->engine field.

AUTHORS

Reini Urban rurban@cpan.org

COPYRIGHT

Copyright 2017 Reini Urban.

This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.