|
1 | 1 | # Changelog |
2 | 2 |
|
3 | 3 |
|
| 4 | +## 0.15.4 - 2026-04-15 |
| 5 | + |
| 6 | +### Performance |
| 7 | + |
| 8 | +- **Core**: Custom DFA `next_state` walk via `Automaton` API, replacing materialized-match iteration. Enables fused prefilter-aware dispatch: Teddy active → materialize + `try_find_overlapping`; no prefilter → stream via `next_state` loop. |
| 9 | +- **Core**: Replace NEON scratch-buffer scan with bitmask extraction for SIMD delete filtering. |
| 10 | +- **Core**: Switch engine selection from byte-ratio heuristic to character density (`bytecount::num_chars / len`), improving CJK dispatch accuracy. |
| 11 | + |
| 12 | +### Added |
| 13 | + |
| 14 | +- **Core**: `BytewiseDFAEngine` — extracted DFA engine encapsulating `dfa::DFA`, `dfa_to_value`, and `has_prefilter` flag with 4-way fused-path dispatch. |
| 15 | +- **Core**: Parallel batch API (`batch_is_match`, `batch_process`, `batch_find_match`) via rayon work-stealing. Behind `rayon` feature flag. |
| 16 | +- **Core**: Profiling boundaries (`#[profiling::function]`) on key DFA and matcher functions. |
| 17 | +- **Tooling**: Benchmarking orchestration (`scripts/run_benchmarks.py`) and interactive Plotly visualization (`scripts/bench_viz.py`). |
| 18 | +- **Tooling**: Profiling workflow via macOS Instruments (`just profile record/analyze`). |
| 19 | + |
| 20 | +### Fixed |
| 21 | + |
| 22 | +- **Core**: Delete dual-scan correctness — propagate mask bit to root when Delete is a direct child, ensuring patterns with deletable characters are scanned against both original and transformed text. |
| 23 | +- **Core**: Merge colliding `ProcessType` buckets before `parse_rules` to prevent pattern index conflicts. |
| 24 | + |
| 25 | +### Changed |
| 26 | + |
| 27 | +- **Core**: Replace `#[inline(always)]` with `#[inline]` across codebase, letting LLVM decide inlining under full LTO. |
| 28 | +- **Core**: Streamline automata compilation by removing unnecessary closures. |
| 29 | +- **Core**: Simplify Delete dual-scan by reusing `apply()` result instead of redundant transform. |
| 30 | +- **Core**: Extract seek helper and encapsulate dual-scan check in scan module. |
| 31 | +- **Core**: Replace inline `super::` paths with top-level imports for readability. |
| 32 | +- **Core**: Introduce `MatcherError` enum for structured construction failure reporting. |
| 33 | +- **Config**: Clean up configuration files, remove unnecessary flags, consolidate environment variables. |
| 34 | + |
| 35 | +### Dependencies |
| 36 | + |
| 37 | +- Update `bitflags`, `daachorse`, `rayon`. |
| 38 | + |
| 39 | +### Documentation |
| 40 | + |
| 41 | +- Comprehensive call-graph documentation for public API and internal logic. |
| 42 | +- Update CLAUDE.md for `BytewiseDFAEngine` and prefilter-aware dispatch. |
| 43 | + |
4 | 44 | ## 0.15.3 - 2026-04-12 |
5 | 45 |
|
6 | 46 | ### Changed |
|
0 commit comments