Skip to content

Commit 92eb84b

Browse files
committed
docs: update CHANGELOG and STATUS for v0.2.0 release
- Add v0.2.0 section with capture groups feature - Update performance benchmarks (263x speedup on case-insensitive) - Update kanban board with v0.2.0 items - Update version to v0.2.0
1 parent 2789b8c commit 92eb84b

1 file changed

Lines changed: 24 additions & 5 deletions

File tree

CHANGELOG.md

Lines changed: 24 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -7,16 +7,35 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
77

88
## [Unreleased]
99

10-
### Planned for v0.2.0
11-
- Capture group support (DFA limitation workaround)
12-
- Submatch extraction API
13-
- Extended matching modes
14-
1510
### Planned for v0.3.0
1611
- Replace and ReplaceAll functions
1712
- Split function
1813
- Template-based replacement
1914

15+
---
16+
17+
## [0.2.0] - 2025-11-27
18+
19+
### Added
20+
- **Capture groups support**: Full submatch extraction via PikeVM
21+
- `FindSubmatch()` / `FindStringSubmatch()` - returns all capture groups
22+
- `FindSubmatchIndex()` / `FindStringSubmatchIndex()` - returns group positions
23+
- `NumSubexp()` - returns number of capture groups
24+
- NFA `StateCapture` state type for group boundaries
25+
- Thread-local capture tracking in PikeVM with copy-on-write semantics
26+
27+
### Performance
28+
- Case-insensitive 32KB: **263x faster** than stdlib
29+
- Case-insensitive 1KB: **92x faster** than stdlib
30+
- Case-sensitive 1KB: **3.5x faster** than stdlib
31+
- Small inputs (16B): ~4x overhead due to multi-engine architecture (acceptable trade-off)
32+
33+
### Technical
34+
- Captures follow Thompson's construction as epsilon transitions
35+
- DFA path unchanged - captures only allocated when requested via FindSubmatch
36+
37+
---
38+
2039
### Planned for v0.4.0
2140
- Case-insensitive matching flag
2241
- Multiline mode

0 commit comments

Comments
 (0)