Skip to content

Releases: intel/hyperscan

Hyperscan 4.6.0

22 Sep 05:24
Compare
Choose a tag to compare

[4.6.0] 2017-09-22

  • New API feature: stream state compression. This allows the user to compress and restore state for streams to reduce memory usage.
  • Many improvements to literal matching performance, including more support for Intel(R) Advanced Vector Extensions 512 (Intel(R) AVX-512).
  • Compile time improvements, mainly reducing compiler memory allocation. Also results in reduced compile time for some pattern sets.
  • Bugfix for issue #62: fix error building Hyperscan using older versions of Boost.
  • Small updates to fix warnings identified by Coverity.

Hyperscan 4.5.2

26 Jul 06:14
Compare
Choose a tag to compare

[4.5.2] 2017-07-26

  • Bugfix for issue #57: Treat characters between \Q..\E as codepoints in
    UTF8 mode.
  • Bugfix for issue #60: Use a portable flag for mktemp for fat runtime builds.
  • Bugfix for fat runtime builds on AVX-512 capable machines with Hyperscan's
    AVX-512 support disabled.

Hyperscan 4.5.1

16 Jun 00:12
Compare
Choose a tag to compare

[4.5.1] 2017-06-16

  • Bugfix for issue #56: workaround for gcc-4.8 C++11 defect.
  • Bugfix for literal matching table generation, reversing a regression in performance for some literal matching cases.
  • Bugfixes for hsbench, related to multicore benchmarking, portability fixes for FreeBSD, and clarifying output results.
  • CMake: removed a duplicate else branch that causes very recent (v3.9) builds of CMake to fail.

Hyperscan 4.5.0

09 Jun 00:21
Compare
Choose a tag to compare

[4.5.0] 2017-06-09

  • New API feature: approximate matching using the "edit distance" extended
    parameter. This allows the user to request all matches that are a given edit
    distance from an exact match for a pattern.
  • Initial support for Intel(R) Advanced Vector Extensions 512 (Intel(R)
    AVX-512), disabled by default. To enable it, pass -DBUILD_AVX512=1 to
    cmake.
  • Major compile time improvements in many subsystems, reducing compile time
    significantly for many large pattern sets.
  • Internal reworking of literal matchers to operate on literals of at
    most eight characters, with subsequent confirmation done in the Rose
    interpreter. This reduces complexity and bytecode size and improves
    performance for many pattern sets.
  • Improve performance of the FDR literal matcher front end.
  • Improve bucket assignment and other heuristics governing the FDR literal
    matcher.
  • Improve optimisation passes that take advantage of extended parameter
    constraints (min_offset, etc).
  • Introduce further lookaround specialisations to improve scanning performance.
  • Optimise Rose interpreter construction to reduce the length of programs
    generated in some situations.
  • Remove the old "Rose" pattern decomposition analysis pass in favour of the
    new "Violet" pass introduced in Hyperscan 4.3.0.
  • In streaming mode, allow exhaustion (where the stream can no longer produce
    matchers) to be detected in more situations, improving scanning performance.
  • Improve parsing of control verbs (such as (*UTF8)) that can only occur at
    the beginning of the pattern. Combinations of supported verbs in any order
    are now permitted.
  • Update version of PCRE used by testing tools as a syntax and semantic
    reference to PCRE 8.40.
  • Tuning support for Intel(R) microarchitecture code names Skylake, Skylake
    Server, Goldmont.
  • CMake: when building a native build with a version of GCC that doesn't
    recognise the host compiler, tune for the microarch selected by
    -march=native.
  • CMake: don't fail if SQLite (which is only required to build the hsbench
    tool) is not present.
  • CMake: detect libc++ directly and use that to inform the Boost version
    requirement.
  • Bugfix for issue #51: make the fat runtime build wrapper less fragile.
  • Bugfix for issues #46, #52: use sqlite3_errmsg() to allow SQLite 3.6.x to
    be used. Thanks to @EaseTheWorld for the PR.

Hyperscan 4.4.1

01 Mar 02:15
Compare
Choose a tag to compare

[4.4.1] 2017-02-28

  • Bugfixes to fix issues where stale data was being referenced in scratch memory. In particular this may have resulted in hs_close_stream() referencing data from other previously scanned streams. This may result in incorrect matches being been reported.

Hyperscan 4.4.0

20 Jan 03:22
Compare
Choose a tag to compare

[4.4.0] 2017-01-20

  • Introduce the "fat runtime" build. This will build several variants of the
    Hyperscan scanning engine specialised for different processor feature sets,
    and use the appropriate one for the host at runtime. This uses the "ifunc"
    indirect function attribute provided by GCC and is currently available on
    Linux only, where it is the default for release builds.
  • New API function: add the hs_valid_platform() function. This function tests
    whether the host provides the SSSE3 instruction set required by Hyperscan.
  • Introduce a new standard benchmarking tool, "hsbench". This provides an easy
    way to measure Hyperscan's performance for a particular set of patterns and
    corpus of data to be scanned.
  • Introduce a 64-bit GPR LimEx NFA model, which uses 64-bit GPRs on 64-bit
    hosts and SSE registers on 32-bit hosts.
  • Introduce a new DFA model ("McSheng") which is a hybrid of the existing
    McClellan and Sheng models. This improves scanning performance for some
    cases.
  • Introduce lookaround specialisations to improve scanning performance.
  • Improve the handling of long literals by moving confirmation to the Rose
    interpreter and simplifying the hash table used to track them in streaming
    mode.
  • Improve compile time optimisation for removing redundant paths from
    expression graphs.
  • Build: improve support for building with MSVC toolchain.
  • Reduce the size of small write DFAs used for small scans in block mode.
  • Introduce a custom graph type (ue2_graph) used in place of the Boost Graph
    Library's adjacency_list type. Improves compile time performance and type
    safety.
  • Improve scanning performance of the McClellan DFA.
  • Bugfix for a very unusual SOM case where the incorrect start offset was
    reported for a match.
  • Bugfix for issue #37, removing execute permissions from some source files.
  • Bugfix for issue #41, handle Windows line endings in pattern files.

Hyperscan 4.3.2

14 Nov 23:19
Compare
Choose a tag to compare

[4.3.2] 2016-11-15

  • Bugfix for issue #39. This small change is a workaround for an issue in Boost 1.62. The fix has been submitted to Boost for inclusion in a future release.

Hyperscan 4.3.1

29 Aug 03:54
Compare
Choose a tag to compare

[4.3.1] 2016-08-29

  • Bugfix for issue #30. In recent versions of Clang, a write to a variable was being elided, resulting in corrupted stream state after calling hs_reset_stream().

Hyperscan 4.2.1

29 Aug 04:47
Compare
Choose a tag to compare

[4.2.1] 2016-08-29

  • Bugfix for issue #30. In recent versions of Clang, a write to a variable was being elided, resulting in corrupted stream state after calling hs_reset_stream().

Hyperscan 4.3.0

24 Aug 04:35
Compare
Choose a tag to compare

[4.3.0] 2016-08-24

  • Introduce a new analysis pass ("Violet") used for decomposition of patterns
    into literals and smaller engines.
  • Introduce a new container engine ("Tamarama") for infix and suffix engines
    that can be proven to run exclusively of one another. This reduces stream
    state for pattern sets with many such engines.
  • Introduce a new shuffle-based DFA engine ("Sheng"). This improves scanning
    performance for pattern sets where small engines are generated.
  • Improve the analysis used to extract extra mask information from short
    literals.
  • Reduced compile time spent in equivalence class analysis.
  • Build: frame pointers are now only omitted for 32-bit release builds.
  • Build: Workaround for C++ issues reported on FreeBSD/libc++ platforms.
    (github issue #27)
  • Simplify the LimEx NFA with a unified "variable shift" model, which reduces
    the number of different NFA code paths to one per model size.
  • Allow some anchored prefixes that may squash the literal to which they are
    attached to run eagerly. This improves scanning performance for some
    patterns.
  • Simplify and improve EOD ("end of data") matching, using the interpreter for
    all operations.
  • Elide unnecessary instructions in the Rose interpreter at compile time.
  • Reduce the number of inlined instantiations of the Rose interpreter in order
    to reduce instruction cache pressure.
  • Small improvements to literal matcher acceleration.
  • Parser: ignore \E metacharacters that are not preceded by \Q. This
    conforms to PCRE's behaviour, rather than returning a compile error.
  • Check for misaligned memory when allocating an error structure in Hyperscan's
    compile path and return an appropriate error if detected.