package aho-corasick
sectionYPositions = computeSectionYPositions($el), 10)"
x-init="setTimeout(() => sectionYPositions = computeSectionYPositions($el), 10)"
>
On This Page
Aho-Corasick multi-pattern string matching
Install
dune-project
Dependency
Authors
Maintainers
Sources
v0.1.1.tar.gz
md5=f1d1c262b14a9ab81e6933c5cb62b545
sha512=369d9b7fe1cd2c4af1eb20739f357ed1259f05590b53c7b3e77da9138bd50155ce966a1a2a521c70c598092c4d7d788c02bc6cce97a65eda69985d2d4a132952
doc/CHANGES.html
Changelog
0.1.1 (2026-09-14)
Changed
- Lower the minimum supported Dune version from 3.17.2 to 3.14.0.
0.1.0 (2026-09-13)
Initial release.
Added
- Immutable Aho-Corasick automata for literal byte-string patterns.
- Overlapping search (
find_all), lazy iteration (find_iter), and early-exit membership (mem). - Non-overlapping leftmost-longest search and callback-based replacement.
- Streaming across chunk boundaries with absolute byte offsets: overlapping, earliest-end non-overlapping, and leftmost-longest matching.
- Streamed replacement with lookahead bounded by the longest pattern.
- ASCII case-insensitive matching and duplicate pattern IDs.
- Usage, semantics, development, and release guides; a documentation website and generated API reference.
- Unit tests and independent QCheck oracles for match ordering, selection, replacement, and streaming equivalence, including binary inputs.
- Conformance vectors from Rust
aho-corasick, daachorse, and pyahocorasick, plus a differential harness covering 20,000 generated cases. - Reproducible, count-checked benchmarks over text corpora and synthetic dense, sparse, and pathological inputs.
- Dense transition rows for shallow nodes, sorted child arrays for deeper nodes, allocation-free scanning between matches, and single-pass leftmost-longest selection.
Release preparation
- Specify tie-breaking, stream lifecycle, and memory/performance costs.
- Align generated opam metadata, test dependency bounds, installed docs, and CI checks with the v0.1.0 package.
Requires OCaml >= 4.14 and Dune >= 3.17.2. Licensed under MIT.
sectionYPositions = computeSectionYPositions($el), 10)"
x-init="setTimeout(() => sectionYPositions = computeSectionYPositions($el), 10)"
>
On This Page