Changes for version 1.00 - 2026-07-22

  • Initial release: the next-generation license pattern matcher for Cavil.
  • Segmented, incrementally-updatable index: adding or removing a pattern no longer rebuilds the whole compiled cache (base + append-only delta segments + tombstones).
  • Versioned, CRC-checksummed, fully-validated on-disk segment format (no unchecked reinterpret_cast); corrupt or hostile segments are rejected, never mis-read.
  • Segments are memory-mapped read-only and queried in place, so index workers on a host share one physical copy instead of each materialising its own.
  • Pure-Perl manifest / segment lifecycle (Cavil::Matcher::Index, ::Manifest); a small, frozen C++ core (tokenizer, scan, SpookyV2 hashing) kept bit-for-bit compatible with Spooky::Patterns::XS, so no database migration is needed to switch engines.
  • Hardened against arbitrary input (binaries, malformed samples): never crashes.
  • 100% statement/branch/condition coverage of the Perl surface; developer-only differential tests against the previous engine in xt/.

Documentation

Modules

Next-generation license pattern matcher for Cavil

Provides

in lib/Cavil/Matcher.pm
in lib/Cavil/Matcher/Index.pm
in lib/Cavil/Matcher/Manifest.pm