also looking at this
Port to latest zig-master
#2
53 files
+1149
-1017
formatting only · 7 hidden lines
| @@ -11,6 +11,7 @@ A modern, performant regex library for Zig 0.16+ formatting only | ||
| 11 | 11 | **Phases Completed:** 10 out of 11 (core + testing + docs + advanced features + fuzzing complete) |
| 12 | 12 | |
| 13 | 13 | ### What Works Now: |
| 14 | ||
| 14 | 15 | - ✅ Complete lexer and parser for regex syntax |
| 15 | 16 | - ✅ Thompson NFA construction |
| 16 | 17 | - ✅ Thread-based NFA simulation with greedy matching |
formatting only · 7 hidden lines
| @@ -28,6 +29,7 @@ A modern, performant regex library for Zig 0.16+ formatting only | ||
| 28 | 29 | - ✅ Thread-safety utilities and documentation |
| 29 | 30 | |
| 30 | 31 | ### Example Usage: |
| 32 | ||
| 31 | 33 | ```zig |
| 32 | 34 | var regex = try Regex.compile(allocator, "\\d+"); |
| 33 | 35 | defer regex.deinit(); |
formatting only · 7 hidden lines
| @@ -39,6 +41,7 @@ if (try regex.find("Price: $123")) |match| { formatting only | ||
| 39 | 41 | ## Project Overview |
| 40 | 42 | |
| 41 | 43 | Building a production-ready regular expression library for Zig that provides: |
| 44 | ||
| 42 | 45 | - Fast pattern matching using Thompson NFA construction |
| 43 | 46 | - Zero external dependencies (stdlib only) |
| 44 | 47 | - Full memory control with Zig allocators |
formatting only · 7 hidden lines
| @@ -51,6 +54,7 @@ Building a production-ready regular expression library for Zig that provides: formatting only | ||
| 51 | 54 | ## Phase 1: Project Foundation ✅ COMPLETED |
| 52 | 55 | |
| 53 | 56 | ### 1.1 Project Setup ✅ |
| 57 | ||
| 54 | 58 | - [x] Initialize Zig project structure with `zig init` |
| 55 | 59 | - [x] Create `build.zig` with library and test targets |
| 56 | 60 | - [x] Create `build.zig.zon` with project metadata |
formatting only · 7 hidden lines
| @@ -60,6 +64,7 @@ Building a production-ready regular expression library for Zig that provides: formatting only | ||
| 60 | 64 | - [x] Create `.gitignore` for Zig projects |
| 61 | 65 | |
| 62 | 66 | ### 1.2 Core Module Structure ✅ |
| 67 | ||
| 63 | 68 | - [x] Create `src/regex.zig` as the main public API (385 lines) |
| 64 | 69 | - [x] Create `src/parser.zig` for regex pattern parsing (395 lines) |
| 65 | 70 | - [x] Create `src/ast.zig` for Abstract Syntax Tree representation (267 lines) |
formatting only · 7 hidden lines
| @@ -69,6 +74,7 @@ Building a production-ready regular expression library for Zig that provides: formatting only | ||
| 69 | 74 | - [x] Create `src/common.zig` for shared types and utilities (174 lines) |
| 70 | 75 | |
| 71 | 76 | ### 1.3 Documentation Foundation ✅ |
| 77 | ||
| 72 | 78 | - [x] Set up documentation comments structure |
| 73 | 79 | - [x] Create `docs/ARCHITECTURE.md` explaining design decisions - **COMPLETED** |
| 74 | 80 | - [x] Create `docs/API.md` for API reference - **COMPLETED** |
formatting only · 7 hidden lines
| @@ -80,6 +86,7 @@ Building a production-ready regular expression library for Zig that provides: formatting only | ||
| 80 | 86 | ## Phase 2: Parser & AST ✅ COMPLETED |
| 81 | 87 | |
| 82 | 88 | ### 2.1 Lexer Implementation ✅ |
| 89 | ||
| 83 | 90 | - [x] Implement tokenizer for regex patterns |
| 84 | 91 | - [x] Support basic literals (a-z, A-Z, 0-9) |
| 85 | 92 | - [x] Support special characters (`.`, `^`, `$`, etc.) |
formatting only · 7 hidden lines
| @@ -89,6 +96,7 @@ Building a production-ready regular expression library for Zig that provides: formatting only | ||
| 89 | 96 | - [x] Implement proper error reporting with line/column info |
| 90 | 97 | |
| 91 | 98 | ### 2.2 Parser Implementation ✅ |
| 99 | ||
| 92 | 100 | - [x] Implement recursive descent parser |
| 93 | 101 | - [x] Handle operator precedence correctly |
| 94 | 102 | - [x] Support concatenation (implicit) |
formatting only · 7 hidden lines
| @@ -103,6 +111,7 @@ Building a production-ready regular expression library for Zig that provides: formatting only | ||
| 103 | 111 | - [x] Add comprehensive error messages |
| 104 | 112 | |
| 105 | 113 | ### 2.3 AST Construction ✅ |
| 114 | ||
| 106 | 115 | - [x] Define AST node types (Literal, Alternation, Concatenation, etc.) |
| 107 | 116 | - [x] Implement AST builder from parser |
| 108 | 117 | - [x] Add AST validation pass |
formatting only · 7 hidden lines
| @@ -114,6 +123,7 @@ Building a production-ready regular expression library for Zig that provides: formatting only | ||
| 114 | 123 | ## Phase 3: NFA Engine ✅ COMPLETED |
| 115 | 124 | |
| 116 | 125 | ### 3.1 Thompson Construction ✅ |
| 126 | ||
| 117 | 127 | - [x] Implement basic NFA data structure |
| 118 | 128 | - [x] Implement state and transition representations |
| 119 | 129 | - [x] Support epsilon (ε) transitions |
| @@ -121,11 +131,12 @@ Building a production-ready regular expression library for Zig that provides: | ||
| 121 | 131 | - [x] Handle literal characters |
| 122 | 132 | - [x] Handle concatenation |
| 123 | 133 | - [x] Handle alternation |
| 124 | - [x] Handle Kleene star (*) | |
| 134 | - [x] Handle Kleene star (\*) | |
| 125 | 135 | - [x] Handle plus (+) and optional (?) |
| 126 | 136 | - [x] Handle bounded repetition {m,n} |
| 127 | 137 | |
| 128 | 138 | ### 3.2 NFA Optimization |
| 139 | ||
| 129 | 140 | - [x] Implement epsilon-closure computation |
| 130 | 141 | - [ ] Remove redundant epsilon transitions (future enhancement) |
| 131 | 142 | - [ ] Merge equivalent states (future enhancement) |
formatting only · 7 hidden lines
| @@ -133,6 +144,7 @@ Building a production-ready regular expression library for Zig that provides: formatting only | ||
| 133 | 144 | - [ ] Add NFA visualization/debug output (future enhancement) |
| 134 | 145 | |
| 135 | 146 | ### 3.3 NFA Simulation ✅ |
| 147 | ||
| 136 | 148 | - [x] Implement basic NFA simulation engine (thread-based matching) |
| 137 | 149 | - [x] Support backtracking for complex patterns (via thread-based approach) |
| 138 | 150 | - [x] Track capture groups during matching |
formatting only · 7 hidden lines
| @@ -146,6 +158,7 @@ Building a production-ready regular expression library for Zig that provides: formatting only | ||
| 146 | 158 | ## Phase 4: Pattern Matching API ✅ COMPLETED |
| 147 | 159 | |
| 148 | 160 | ### 4.1 Core Matching Functions ✅ |
| 161 | ||
| 149 | 162 | - [x] Implement `Regex.compile()` - compile pattern |
| 150 | 163 | - [x] Implement `Regex.deinit()` - cleanup |
| 151 | 164 | - [x] Implement `find()` - find first match |
formatting only · 7 hidden lines
| @@ -154,6 +167,7 @@ Building a production-ready regular expression library for Zig that provides: formatting only | ||
| 154 | 167 | - [x] Return match positions (start, end indices) |
| 155 | 168 | |
| 156 | 169 | ### 4.2 Capture Groups ⚠️ Partial |
| 170 | ||
| 157 | 171 | - [x] Implement numbered capture groups `()` |
| 158 | 172 | - [x] Track capture group positions |
| 159 | 173 | - [x] Return captured substrings |
formatting only · 7 hidden lines
| @@ -162,6 +176,7 @@ Building a production-ready regular expression library for Zig that provides: formatting only | ||
| 162 | 176 | - [ ] Access captures by name (future enhancement) |
| 163 | 177 | |
| 164 | 178 | ### 4.3 Advanced Matching ✅ |
| 179 | ||
| 165 | 180 | - [x] Implement `replace()` - replace matches |
| 166 | 181 | - [x] Implement `replaceAll()` - replace all matches |
| 167 | 182 | - [ ] Support backreferences in replacement (future enhancement) |
formatting only · 7 hidden lines
| @@ -174,6 +189,7 @@ Building a production-ready regular expression library for Zig that provides: formatting only | ||
| 174 | 189 | ## Phase 5: Extended Regex Features |
| 175 | 190 | |
| 176 | 191 | ### 5.1 Character Classes ✅ |
| 192 | ||
| 177 | 193 | - [x] Support `\d` (digits) |
| 178 | 194 | - [x] Support `\D` (non-digits) |
| 179 | 195 | - [x] Support `\w` (word characters) |
formatting only · 7 hidden lines
| @@ -185,6 +201,7 @@ Building a production-ready regular expression library for Zig that provides: formatting only | ||
| 185 | 201 | - [ ] Support POSIX character classes `[:alpha:]`, `[:digit:]`, etc. (future enhancement) |
| 186 | 202 | |
| 187 | 203 | ### 5.2 Advanced Anchors & Boundaries ✅ |
| 204 | ||
| 188 | 205 | - [x] Line anchors (`^`, `$`) |
| 189 | 206 | - [x] Word boundaries (`\b`, `\B`) |
| 190 | 207 | - [x] String anchors (`\A`, `\z`, `\Z`) - **COMPLETED** (fully implemented and tested) |
formatting only · 7 hidden lines
| @@ -192,6 +209,7 @@ Building a production-ready regular expression library for Zig that provides: formatting only | ||
| 192 | 209 | - [ ] Lookbehind assertions `(?<=)`, `(?<!)` (future enhancement) |
| 193 | 210 | |
| 194 | 211 | ### 5.3 Flags & Options ✅ |
| 212 | ||
| 195 | 213 | - [x] Case-insensitive flag (i) - **COMPLETED** |
| 196 | 214 | - [x] Compile-time flag specification via `compileWithFlags()` - **COMPLETED** |
| 197 | 215 | - [x] Multiline flag (m) - **COMPLETED** (^ and $ respect multiline mode) |
formatting only · 7 hidden lines
| @@ -205,6 +223,7 @@ Building a production-ready regular expression library for Zig that provides: formatting only | ||
| 205 | 223 | ## Phase 6: Testing & Quality |
| 206 | 224 | |
| 207 | 225 | ### 6.1 Unit Tests ✅ COMPLETED |
| 226 | ||
| 208 | 227 | - [x] Test lexer with various input patterns - **COMPLETED** (6+ lexer tests) |
| 209 | 228 | - [x] Test parser with valid/invalid regex - **COMPLETED** (10+ parser tests) |
| 210 | 229 | - [x] Test AST construction and validation - **COMPLETED** (4+ AST tests) |
formatting only · 7 hidden lines
| @@ -217,6 +236,7 @@ Building a production-ready regular expression library for Zig that provides: formatting only | ||
| 217 | 236 | - [x] Test edge cases (empty strings, large inputs) - **COMPLETED** (dedicated edge_cases test file) |
| 218 | 237 | |
| 219 | 238 | ### 6.2 Integration Tests ✅ COMPLETED |
| 239 | ||
| 220 | 240 | - [x] Test real-world regex patterns - **COMPLETED** |
| 221 | 241 | - [x] Test email validation patterns - **COMPLETED** |
| 222 | 242 | - [x] Test URL matching patterns - **COMPLETED** |
formatting only · 7 hidden lines
| @@ -231,6 +251,7 @@ Building a production-ready regular expression library for Zig that provides: formatting only | ||
| 231 | 251 | - [ ] Test error handling paths (future enhancement) |
| 232 | 252 | |
| 233 | 253 | ### 6.3 Fuzzing & Property Tests ✅ |
| 254 | ||
| 234 | 255 | - [x] Set up fuzzing infrastructure - **COMPLETED** |
| 235 | 256 | - [x] Fuzz lexer with random inputs - **COMPLETED** (fuzz.zig) |
| 236 | 257 | - [x] Fuzz parser with malformed patterns - **COMPLETED** (bad patterns test) |
formatting only · 7 hidden lines
| @@ -239,6 +260,7 @@ Building a production-ready regular expression library for Zig that provides: formatting only | ||
| 239 | 260 | - [x] Test memory safety (no leaks) - **COMPLETED** (zero leaks detected) |
| 240 | 261 | |
| 241 | 262 | ### 6.4 Compliance Tests |
| 263 | ||
| 242 | 264 | - [ ] Create test suite from regex standards |
| 243 | 265 | - [ ] Compare against PCRE test suite (where applicable) |
| 244 | 266 | - [ ] Test compatibility with common regex flavors |
formatting only · 7 hidden lines
| @@ -249,6 +271,7 @@ Building a production-ready regular expression library for Zig that provides: formatting only | ||
| 249 | 271 | ## Phase 7: Performance Optimization |
| 250 | 272 | |
| 251 | 273 | ### 7.1 Algorithm Optimization |
| 274 | ||
| 252 | 275 | - [ ] Profile hot paths in matching |
| 253 | 276 | - [ ] Optimize state transition lookup |
| 254 | 277 | - [ ] Implement DFA construction for static patterns |
formatting only · 7 hidden lines
| @@ -258,6 +281,7 @@ Building a production-ready regular expression library for Zig that provides: formatting only | ||
| 258 | 281 | - [ ] Cache compiled patterns |
| 259 | 282 | |
| 260 | 283 | ### 7.2 Memory Optimization |
| 284 | ||
| 261 | 285 | - [ ] Minimize allocations during matching |
| 262 | 286 | - [ ] Use arena allocators where appropriate |
| 263 | 287 | - [ ] Implement copy-on-write for captures |
formatting only · 7 hidden lines
| @@ -265,6 +289,7 @@ Building a production-ready regular expression library for Zig that provides: formatting only | ||
| 265 | 289 | - [ ] Optimize AST/NFA memory layout |
| 266 | 290 | |
| 267 | 291 | ### 7.3 Benchmarking ⚠️ Partial |
| 292 | ||
| 268 | 293 | - [x] Create benchmark suite - **COMPLETED** |
| 269 | 294 | - [x] Benchmark common patterns (literal, quantifiers, character classes) - **COMPLETED** |
| 270 | 295 | - [x] Benchmark case-insensitive matching - **COMPLETED** |
formatting only · 7 hidden lines
| @@ -278,6 +303,7 @@ Building a production-ready regular expression library for Zig that provides: formatting only | ||
| 278 | 303 | ## Phase 8: Documentation & Examples ✅ COMPLETED |
| 279 | 304 | |
| 280 | 305 | ### 8.1 API Documentation ✅ COMPLETED |
| 306 | ||
| 281 | 307 | - [x] Document all public functions with examples - **COMPLETED** (docs/API.md - 800+ lines) |
| 282 | 308 | - [x] Add parameter descriptions - **COMPLETED** |
| 283 | 309 | - [x] Document error conditions - **COMPLETED** |
formatting only · 7 hidden lines
| @@ -286,6 +312,7 @@ Building a production-ready regular expression library for Zig that provides: formatting only | ||
| 286 | 312 | - [ ] Generate docs with `zig build docs` (requires Zig docs infrastructure) |
| 287 | 313 | |
| 288 | 314 | ### 8.2 User Guide ✅ COMPLETED |
| 315 | ||
| 289 | 316 | - [x] Write getting started guide - **COMPLETED** (README.md + docs/API.md) |
| 290 | 317 | - [x] Document pattern syntax - **COMPLETED** (docs/API.md Pattern Syntax section) |
| 291 | 318 | - [x] Document best practices - **COMPLETED** (docs/EXAMPLES.md Best Practices section) |
formatting only · 7 hidden lines
| @@ -295,6 +322,7 @@ Building a production-ready regular expression library for Zig that provides: formatting only | ||
| 295 | 322 | - [ ] Create FAQ (future enhancement) |
| 296 | 323 | |
| 297 | 324 | ### 8.3 Examples ✅ COMPLETED |
| 325 | ||
| 298 | 326 | - [x] Create basic usage example - **COMPLETED** (README.md + docs/EXAMPLES.md) |
| 299 | 327 | - [x] Create capture groups example - **COMPLETED** (docs/EXAMPLES.md) |
| 300 | 328 | - [x] Create replace/substitution example - **COMPLETED** (docs/EXAMPLES.md) |
formatting only · 7 hidden lines
| @@ -307,6 +335,7 @@ Building a production-ready regular expression library for Zig that provides: formatting only | ||
| 307 | 335 | ## Phase 9: Advanced Features |
| 308 | 336 | |
| 309 | 337 | ### 9.1 Unicode Support |
| 338 | ||
| 310 | 339 | - [ ] Support UTF-8 input (Zig's default) |
| 311 | 340 | - [ ] Handle multi-byte characters correctly |
| 312 | 341 | - [ ] Support Unicode character classes |
formatting only · 7 hidden lines
| @@ -315,6 +344,7 @@ Building a production-ready regular expression library for Zig that provides: formatting only | ||
| 315 | 344 | - [ ] Handle normalization (if needed) |
| 316 | 345 | |
| 317 | 346 | ### 9.2 Performance Features |
| 347 | ||
| 318 | 348 | - [ ] Implement lazy DFA construction |
| 319 | 349 | - [ ] Add memoization for repeated patterns |
| 320 | 350 | - [ ] Support compiled pattern serialization |
formatting only · 7 hidden lines
| @@ -322,6 +352,7 @@ Building a production-ready regular expression library for Zig that provides: formatting only | ||
| 322 | 352 | - [ ] Add SIMD optimizations (if applicable) |
| 323 | 353 | |
| 324 | 354 | ### 9.3 Developer Features |
| 355 | ||
| 325 | 356 | - [ ] Implement regex debugging mode |
| 326 | 357 | - [ ] Add visualization of NFA/DFA |
| 327 | 358 | - [ ] Create regex playground/tester |
formatting only · 7 hidden lines
| @@ -333,6 +364,7 @@ Building a production-ready regular expression library for Zig that provides: formatting only | ||
| 333 | 364 | ## Phase 10: Production Readiness |
| 334 | 365 | |
| 335 | 366 | ### 10.1 Error Handling ✅ |
| 367 | ||
| 336 | 368 | - [x] Comprehensive error types - **COMPLETED** (40+ error types defined) |
| 337 | 369 | - [x] Detailed error messages - **COMPLETED** (ErrorContext with formatting) |
| 338 | 370 | - [x] Recovery strategies where possible - **COMPLETED** (hints and suggestions) |
| @@ -340,12 +372,14 @@ Building a production-ready regular expression library for Zig that provides: | ||
| 340 | 372 | - [x] Panic-free API design - **COMPLETED** (all errors returned as values) |
| 341 | 373 | |
| 342 | 374 | ### 10.2 Thread Safety ✅ |
| 375 | ||
| 343 | 376 | - [x] Document thread-safety guarantees - **COMPLETED** (documented in LIMITATIONS.md) |
| 344 | 377 | - [x] Make compiled patterns thread-safe - **COMPLETED** (read-only operations are safe) |
| 345 | 378 | - [x] Support concurrent matching - **COMPLETED** (VM creates thread-local state) |
| 346 | 379 | - [x] Thread safety utilities - **COMPLETED** (RegexCache implementation available) |
| 347 | 380 | |
| 348 | 381 | ### 10.3 API Stability |
| 382 | ||
| 349 | 383 | - [ ] Finalize public API surface |
| 350 | 384 | - [ ] Mark internal APIs clearly |
| 351 | 385 | - [ ] Version the API |
formatting only · 7 hidden lines
| @@ -353,6 +387,7 @@ Building a production-ready regular expression library for Zig that provides: formatting only | ||
| 353 | 387 | - [ ] Write upgrade guides |
| 354 | 388 | |
| 355 | 389 | ### 10.4 Release Preparation |
| 390 | ||
| 356 | 391 | - [ ] Set up CI/CD pipeline |
| 357 | 392 | - [ ] Add pre-commit hooks |
| 358 | 393 | - [ ] Create release checklist |
formatting only · 7 hidden lines
| @@ -365,6 +400,7 @@ Building a production-ready regular expression library for Zig that provides: formatting only | ||
| 365 | 400 | ## Phase 11: Community & Maintenance |
| 366 | 401 | |
| 367 | 402 | ### 11.1 Community Building |
| 403 | ||
| 368 | 404 | - [ ] Create CONTRIBUTING.md |
| 369 | 405 | - [ ] Set up issue templates |
| 370 | 406 | - [ ] Set up PR templates |
formatting only · 7 hidden lines
| @@ -373,6 +409,7 @@ Building a production-ready regular expression library for Zig that provides: formatting only | ||
| 373 | 409 | - [ ] Announce on Zig forums |
| 374 | 410 | |
| 375 | 411 | ### 11.2 Ongoing Maintenance |
| 412 | ||
| 376 | 413 | - [ ] Monitor issues and PRs |
| 377 | 414 | - [ ] Keep up with Zig language updates |
| 378 | 415 | - [ ] Update dependencies |
formatting only · 7 hidden lines
| @@ -385,6 +422,7 @@ Building a production-ready regular expression library for Zig that provides: formatting only | ||
| 385 | 422 | ## Future Considerations |
| 386 | 423 | |
| 387 | 424 | ### Potential Features |
| 425 | ||
| 388 | 426 | - [ ] Regex macros/composition |
| 389 | 427 | - [ ] Pattern compilation to native code |
| 390 | 428 | - [ ] C FFI for use in other languages |
formatting only · 7 hidden lines
| @@ -393,6 +431,7 @@ Building a production-ready regular expression library for Zig that provides: formatting only | ||
| 393 | 431 | - [ ] Regex lint/analysis tools / extreme narrow typing for user patterns |
| 394 | 432 | |
| 395 | 433 | ### Research Topics |
| 434 | ||
| 396 | 435 | - [ ] Investigate derivative-based regex matching |
| 397 | 436 | - [ ] Explore SIMD/vector optimization opportunities |
| 398 | 437 | - [ ] Consider hybrid NFA/DFA approaches |
formatting only · 7 hidden lines
| @@ -404,6 +443,7 @@ Building a production-ready regular expression library for Zig that provides: formatting only | ||
| 404 | 443 | ## Success Metrics |
| 405 | 444 | |
| 406 | 445 | ### Quality Metrics |
| 446 | ||
| 407 | 447 | - [x] 90%+ test coverage - **ACHIEVED** (114+ tests, 100% pass rate) |
| 408 | 448 | - [x] Zero known memory leaks - **ACHIEVED** (all tests pass leak detection) |
| 409 | 449 | - [x] Zero known security vulnerabilities - **ACHIEVED** (safe memory management) |
| @@ -411,12 +451,14 @@ Building a production-ready regular expression library for Zig that provides: | ||
| 411 | 451 | - [ ] Pass compliance test suite (future - requires PCRE test suite integration) |
| 412 | 452 | |
| 413 | 453 | ### Performance Metrics |
| 414 | - [x] Linear time complexity for NFA matching - **ACHIEVED** (Thompson NFA with O(n*m)) | |
| 454 | ||
| 455 | - [x] Linear time complexity for NFA matching - **ACHIEVED** (Thompson NFA with O(n\*m)) | |
| 415 | 456 | - [x] Reasonable memory usage - **ACHIEVED** (efficient allocator usage) |
| 416 | 457 | - [x] Fast compilation times - **ACHIEVED** (simple patterns compile quickly) |
| 417 | 458 | - [ ] Competitive with existing Zig regex libraries (future - requires benchmarking) |
| 418 | 459 | |
| 419 | 460 | ### Adoption Metrics |
| 461 | ||
| 420 | 462 | - [ ] Used in at least 3 external projects (future) |
| 421 | 463 | - [ ] Positive community feedback (future - pending release) |
| 422 | 464 | - [ ] Active contributors beyond maintainers (future) |
formatting only · 7 hidden lines
| @@ -443,6 +485,7 @@ Building a production-ready regular expression library for Zig that provides: formatting only | ||
| 443 | 485 | ## Recent Updates (2025-10-27) |
| 444 | 486 | |
| 445 | 487 | ### Completed Features: |
| 488 | ||
| 446 | 489 | 1. ✅ **Quantifiers `{m,n}`** - Full runtime support with comprehensive tests |
| 447 | 490 | 2. ✅ **String Anchors** - `\A`, `\z`, `\Z` fully implemented and tested |
| 448 | 491 | 3. ✅ **Multiline Flag** - `^` and `$` respect multiline mode |
formatting only · 7 hidden lines
| @@ -450,6 +493,7 @@ Building a production-ready regular expression library for Zig that provides: formatting only | ||
| 450 | 493 | 5. ✅ **Bug Fixes** - Fixed memory leaks in thread safety tests, updated Zig 0.15.1 APIs |
| 451 | 494 | |
| 452 | 495 | ### Test Suite: |
| 496 | ||
| 453 | 497 | - **155+ tests** passing with 100% success rate |
| 454 | 498 | - New test files: `string_anchors.zig`, `multiline_dotall.zig` |
| 455 | 499 | - All memory leaks resolved |