frizbee 0.13.0

Fast typo-resistant fuzzy matching via SIMD smith waterman, similar algorithm to FZF
Documentation
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
## [0.13.0]https://github.com/saghen/frizbee/compare/v0.12.0..v0.13.0 - 2026-08-13

### Breaking Changes

- switch default to `CaseMatching::Smart` ([e5f0ee2]https://github.com/saghen/frizbee/commit/e5f0ee206bc146dc064c5a4ce6fc62d3dbec911c)

### Features

- add WASM SIMD128 backends ([8d11966]https://github.com/saghen/frizbee/commit/8d11966be1c8f16b021f34f406068abab9f577db)
- add `no_std` support ([efeab87]https://github.com/saghen/frizbee/commit/efeab871c8aeba14c444989bf1abfcac9be1957a)
- drop dead scalar path in wasm ([a9be0d1]https://github.com/saghen/frizbee/commit/a9be0d15e83225561dc90acd42630991b761763d)
- add download.sh script for bench data ([145deff]https://github.com/saghen/frizbee/commit/145deff628339ee2a355ef1868f65b69d91bdfa1)
- auto-detect parallelism when threads == 0 ([17ee653]https://github.com/saghen/frizbee/commit/17ee653a8e00e08d796467f6149325640db0c5cd)
- saturate score instead of panicking ([93785c2]https://github.com/saghen/frizbee/commit/93785c28a76db9566221e31ab900260c11556544)
- reduce wasm binary size ([6deefc0]https://github.com/saghen/frizbee/commit/6deefc0d6d1f650d45c26dac35590197ecc9ccd3)
- c and c++ bindings ([2bd75b9]https://github.com/saghen/frizbee/commit/2bd75b987357b71f930e9a54f6e25d46471624aa)
- python bindings ([b30b6e2]https://github.com/saghen/frizbee/commit/b30b6e24fd761c081cf2322b66660aa15a86c602)
- wasm bindings ([869c771]https://github.com/saghen/frizbee/commit/869c7718b6c12fb96b1d112cea92c655b856b70a)
- add justfile ([35bf373]https://github.com/saghen/frizbee/commit/35bf3736848e703827d07a713d039be3c2ff9490)
- add changelog update to justfile ([19c6783]https://github.com/saghen/frizbee/commit/19c6783c147471cd0877a1c20b65853742ba9891)

### Bug Fixes

- `max_needle_len` returning incorrect value ([90aa3fc]https://github.com/saghen/frizbee/commit/90aa3fce8c170399a4cfa6dff8f1799fdcbd0ade)

### Documentation

- update lib.rs "used by" section ([1ac6e62]https://github.com/saghen/frizbee/commit/1ac6e628020ccb323e76f43dff928ea613d39eed)
- clarify unicode limitations ([e63827b]https://github.com/saghen/frizbee/commit/e63827b3e4b0e2eee47bc5241c95d17cc672e2b7)
- tidy config doc comments ([c418120]https://github.com/saghen/frizbee/commit/c4181208c42f853cbeaa5973cea4fc9d18ff7f75)
- rework safety section ([9592c36]https://github.com/saghen/frizbee/commit/9592c36fb133fd8e6079310e983f06f2146f1886)
- add bindings to readme ([450523f]https://github.com/saghen/frizbee/commit/450523f4ebcb49771a7b752cfdc61452ec15e2e7)
- rewrite binding comments/readmes ([277c030]https://github.com/saghen/frizbee/commit/277c030cb2496b27e7cc71df38a9bf3529961e9f)
- misc links ([daaae5b]https://github.com/saghen/frizbee/commit/daaae5b535cd11e970cbfafc4864dc6cc8728ec2)
- add CHANGELOG via git-cliff ([507409b]https://github.com/saghen/frizbee/commit/507409b6f5856470f14299818f34ed24a5d757c4)
- cleanup wasm binding docs ([0826872]https://github.com/saghen/frizbee/commit/08268725df5d5814e6dbc57ecbb7f71dcd29d616)
- lib-rs and expand bindings docs ([03ae7fe]https://github.com/saghen/frizbee/commit/03ae7fe1d585624c3c6f9e8dd8e20bc9b2ea14b8)
- add LICENSE to wasm/py bindings ([d395c2b]https://github.com/saghen/frizbee/commit/d395c2bae4f0a27be04178b118fe46ea97e8e718)

## [0.12.0]https://github.com/saghen/frizbee/compare/v0.11.0..v0.12.0 - 2026-07-30

### Breaking Changes

- per-pattern config (`PatternConfig`) ([6d2f478]https://github.com/saghen/frizbee/commit/6d2f4789aba0e9c74865349415963914ebc68da8)

### Features

- add `scoring.max_needle_len()` ([8f14c04]https://github.com/saghen/frizbee/commit/8f14c043d379daab64c86a8717511817cb551b41)

### Bug Fixes

- ensure delimiter bonus applied on first char ([da1adf3]https://github.com/saghen/frizbee/commit/da1adf33c6907c62604d0bd8e600593d19bdb6c3)
- remaining arithmetic panics ([3476999]https://github.com/saghen/frizbee/commit/3476999a9d5aaa0f8c9534bfba22adbac57d266c)
- ignored unicode matching indices ([074252f]https://github.com/saghen/frizbee/commit/074252fe7c3999c128ac453d37f4a38917c8e98e)
- pattern space double escape ([940bcb9]https://github.com/saghen/frizbee/commit/940bcb981a70695f0ec215cc535ea6ac3d75c78f)
- unicode match end col ([b33d28c]https://github.com/saghen/frizbee/commit/b33d28ce0e0ced873b4de69c1f041e2371d098e8)
- mixed multi-byte unicode failing prefilter ([b16ad8c]https://github.com/saghen/frizbee/commit/b16ad8c87d3fa05b25f44c91f0ae4852832c6a6f)
- check all instruction sets in sse smith waterman ([dd38a4b]https://github.com/saghen/frizbee/commit/dd38a4b517c999c81966f4a13ec97a1f6a945861)
- greedy gap penalty overflow and end col truncation ([4900c18]https://github.com/saghen/frizbee/commit/4900c189996d1ede58fb03a65ede9a5fa0b057ad)
- unsound u8 backend selection and overflow guard bounds ([927efbe]https://github.com/saghen/frizbee/commit/927efbea5f396a46d075b280e364a23ded4ee0ae)
- case flipped unicode match hidden by decoy last byte in prefilter ([bf4a247]https://github.com/saghen/frizbee/commit/bf4a247afb92f3ab8657a86b6d7cb7485d83da5b)
- match_list_indices dropping score 0 haystacks ([e4fd349]https://github.com/saghen/frizbee/commit/e4fd349052b01b14b78b3607ea0daf9c5cc144d1)
- guard against gap penalty overflowing u16/u8 ([250ed36]https://github.com/saghen/frizbee/commit/250ed364d5f2bb1d58567cc4b5c7ba789bb9378a)
- switch from castsi -> zextsi ([8da6dc9]https://github.com/saghen/frizbee/commit/8da6dc982d2d2bbadf9fbd751abc88f6d2aebd3d)
- unicode-aware char count for scoring guard ([48f683e]https://github.com/saghen/frizbee/commit/48f683ee86fd7353a017f3d1ab32b5fae2b24217)
- pattern escape parsing ([95efcf6]https://github.com/saghen/frizbee/commit/95efcf6ff232ead3e542b932696d10b089eef8b2)

### Refactor

- consolidate `include_exact` logic ([9b48b09]https://github.com/saghen/frizbee/commit/9b48b0947f1116fa676d6add16c787227a5991ea)

### Documentation

- add television and atuin to readme! ([3fb4793]https://github.com/saghen/frizbee/commit/3fb479322a411396cc1cb71ca046a70534e2e1b3)
- fix prefilter haystack mask examples ([2402db5]https://github.com/saghen/frizbee/commit/2402db569aa2ecb54080f83efa6637081fce694f)

### Performance

- single gather vec for multi-pattern matching ([02faa31]https://github.com/saghen/frizbee/commit/02faa3137a0d319f0c9f32895abebb8e9346a210)

## New Contributors ❤︎

- @ryanmab made their first contribution in [#88]https://github.com/saghen/frizbee/pull/88

## [0.11.0]https://github.com/saghen/frizbee/compare/v0.10.0..v0.11.0 - 2026-07-13

### Breaking Changes

- switch to `u32` indices ([2532849]https://github.com/saghen/frizbee/commit/2532849b0a358b3ebcac2aee6445e7eb1e5823b3)
- `Pattern` and multi-pattern matching ([bbcfd0e]https://github.com/saghen/frizbee/commit/bbcfd0ed6d6ee275008c359058ced682736505f8)
- drop top level `match_*` functions ([28688b5]https://github.com/saghen/frizbee/commit/28688b59d03aecda3bba19aada3f83d0caf9ba50)
- rework `SortStrategy` with reversed variants ([6831669]https://github.com/saghen/frizbee/commit/6831669ab4081e01df3375aa0eee73ede19be713)

### Features

- prefix, suffix, substring, exact matching (#86) ([b55fad6]https://github.com/saghen/frizbee/commit/b55fad6ea86e05792d180b2056386fad10c71f79)
- `SortStrategy` enum, fix parallel ordering ([a7d456e]https://github.com/saghen/frizbee/commit/a7d456e2a1980c6a8a4c49efdfbc79b9483cc51c)
- limit threads based on haystack count ([af0634a]https://github.com/saghen/frizbee/commit/af0634a40285b4209c43093bb87dfd8e40e1d8fd)

### Bug Fixes

- arm64 load_partial on len 8 ([022a5ae]https://github.com/saghen/frizbee/commit/022a5aea98701bba2c106200b80fb600fe40fdbc)
- prefix bonus applied due to prefilter substr ([3b9ba7b]https://github.com/saghen/frizbee/commit/3b9ba7b70548c7daea1214840d40d85a89499216)
- ensure parallel matcher sorts by index ([41fc7d5]https://github.com/saghen/frizbee/commit/41fc7d5ea902468626b1a191fdf463156ae5d19c)
- remaining uses of top level match_* ([96ea2fa]https://github.com/saghen/frizbee/commit/96ea2fa37886a5045c4cc1c213263ce88708cd6c)
- match_greedy prefix bonus ([da380f5]https://github.com/saghen/frizbee/commit/da380f5243ee32117e01ac306b1d512b31549673)
- escaped ! on query pattern ([d4eced5]https://github.com/saghen/frizbee/commit/d4eced5f9efa6ba1e427da000fb7baa30f87d98c)

### Documentation

- k_merge module ([7c9b262]https://github.com/saghen/frizbee/commit/7c9b26267716610bde1803518074bda684c671a4)

## [0.10.0]https://github.com/saghen/frizbee/compare/v0.9.0..v0.10.0 - 2026-07-03

### Breaking Changes

- simplify matcher dispatch, drop some APIs ([364fc0e]https://github.com/saghen/frizbee/commit/364fc0ea4fa5dd685940ee3e35e68bc340f170cb)
- drop some APIs, add miri + proptests ([fc16a54]https://github.com/saghen/frizbee/commit/fc16a54a1e724383293e071c65a8d1dc06d48bac)
- `*_matches` on `radix_sort`/`k_merge` ([1e4267b]https://github.com/saghen/frizbee/commit/1e4267b5af0a9361c9eb60003dc347079d7539eb)
- many rare panics and typos ([9c3b8dd]https://github.com/saghen/frizbee/commit/9c3b8ddc3b0bca81aea9622814e8be0bf6f882c1)
- rename UnicodeMatching::Respect to Always ([9024633]https://github.com/saghen/frizbee/commit/9024633830999bb0ec79c9df105b3a60eab193e2)

### Features

- u8 smith waterman scoring ([2e5a912]https://github.com/saghen/frizbee/commit/2e5a9123571c972f165785ce598012d684c51b06)
- avx512 smith waterman ([eaff2fe]https://github.com/saghen/frizbee/commit/eaff2fee7aaf9284946e36afaeab30448898f446)
- avx512 u16 smith waterman ([ec2a8f6]https://github.com/saghen/frizbee/commit/ec2a8f698dfac988c292d9c796c3042ac3655e16)
- switch prefilter skipped_chunks to skipped_chars ([0b18811]https://github.com/saghen/frizbee/commit/0b188116e3b89093111cc14f07ff455667bdbbe7)
- avx512 prefilter ([651b4e1]https://github.com/saghen/frizbee/commit/651b4e16a1fda02070fc1d173867c119334422ab)
- rewrite prefilter with generic backend ([457c0ce]https://github.com/saghen/frizbee/commit/457c0ce46074e417869d728889a56b1bec6d1b4e)
- smart and case sensitive matching ([32c5ff3]https://github.com/saghen/frizbee/commit/32c5ff3bec10a04e460c22c4cdca44482b9a4074)
- custom k-way merge, drop itertools ([e8237bb]https://github.com/saghen/frizbee/commit/e8237bb1a9b8caed45ff4d17a0491f92244113ac)
- add back set_* matcher APIs ([0540458]https://github.com/saghen/frizbee/commit/05404589214206c8a7d3a5300559e13018c56f14)
- replace raw_cpuid with is_x86_feature_detected ([edcddf6]https://github.com/saghen/frizbee/commit/edcddf660b3ec0b8d169d6f2235f4015e5c99648)
- add fzf bench via std::thread::sleep ([9004beb]https://github.com/saghen/frizbee/commit/9004bebd02c9c1f549683d0a0a2a5c73da4f10e6)
- unicode prefilter, drop fuzzing ([36befb8]https://github.com/saghen/frizbee/commit/36befb8eeb5d4eb76d33f8e1e6f76be5d70d3f11)
- add unicode arabic/korean benches ([4961de0]https://github.com/saghen/frizbee/commit/4961de0bfb862758dffcb67ff324e32deca76486)
- rework unicode approach ([3eb7cbf]https://github.com/saghen/frizbee/commit/3eb7cbf0fd3dc4f71b1b33b2b7cd717098154c13)
- avoid updating matcher if nothing changed ([e4fc06c]https://github.com/saghen/frizbee/commit/e4fc06c5befe57c9c1ae179eea1d2ff03cee7cb9)
- unicode prefilter typos ([0123732]https://github.com/saghen/frizbee/commit/01237328f5e1d8dd6445e07544e3043a8d7a4883)
- support unicode `CaseMatching::Smart` ([06c9494]https://github.com/saghen/frizbee/commit/06c9494e24a21f135c8a8379d9441cfe56545533)
- case insensitive unicode matching ([88459c2]https://github.com/saghen/frizbee/commit/88459c27863e8fdf5d0126ebc63c0acfa3035b3c)
- unicode smith waterman ([0bf1fa8]https://github.com/saghen/frizbee/commit/0bf1fa8f97977a3a3fa4773cce4d6fb3b0428117)
- `UnicodeMatching` enum to control unicode behavior ([ca2f547]https://github.com/saghen/frizbee/commit/ca2f54742658cf3fc57915f957db0d3e377f0c2f)
- swap out bolero for proptest ([5544781]https://github.com/saghen/frizbee/commit/5544781916f26ba6093aa239abb816344b4a20ed)
- `match_iter` API, `fuzzy_match` iter ext ([af7cebf]https://github.com/saghen/frizbee/commit/af7cebf5dd1ea7a770adbb36a08ab9805a9f124f)
- add `match_list_parallel` to `Matcher`, restructure ([4fd9590]https://github.com/saghen/frizbee/commit/4fd9590c5a1dc27bf9d22f4fe4159a5335c82fa1)
- `Matcher::match_one` and extensive docs ([c778119]https://github.com/saghen/frizbee/commit/c77811977e6e4ae0b1b3514995289dda9116254a)
- simplify nix flake ([e4f9dba]https://github.com/saghen/frizbee/commit/e4f9dba4c67352df79016f46ef02b991689d70ec)

### Bug Fixes

- match_end_col sort tests ([ae9d0b6]https://github.com/saghen/frizbee/commit/ae9d0b6d41631ca3b314bd4fd9a9db1fb3132e17)
- gate prefilter overread behind safe_read (#80) ([7892da7]https://github.com/saghen/frizbee/commit/7892da7a82eecd95ad6e2643c5bdd628a7611058)
- prefilter typo chunk boundaries ([9312dce]https://github.com/saghen/frizbee/commit/9312dce69d98685c427a45f78eba739451353c08)
- match_end_col sort bench ([599c950]https://github.com/saghen/frizbee/commit/599c950daee9560b7cc2306fff0bfefa11f95440)
- keep `match_list` and `match_list_indices` filtering in sync ([34c8bac]https://github.com/saghen/frizbee/commit/34c8baca08ed89bc7958c4d191a07835034289e1)
- assert nucleo returns no intermediate snapshots ([98139d9]https://github.com/saghen/frizbee/commit/98139d9ca1b0cf8a89552c677c7fa8b3c7efd4fb)
- multi-byte unicode char incorrect indices ([c853a1b]https://github.com/saghen/frizbee/commit/c853a1b8ac3a14ab9853a1b68b84f21705ac35ae)
- incorrect `score_fits_in_u8` calculation ([59a17d8]https://github.com/saghen/frizbee/commit/59a17d8118db7f8f74da8874996941e63da539f3)
- `match_one` not inlined ([bd87378]https://github.com/saghen/frizbee/commit/bd87378fb45548bbcb60e318b5692c898a941211)
- arm neon movemask ([35208a8]https://github.com/saghen/frizbee/commit/35208a8134e1dd62c3675031b303d919125dd261)
- unicode incorrect indices ([c9ee4b3]https://github.com/saghen/frizbee/commit/c9ee4b31f747c145d796a1cd4a751c2d1a34fe0d)
- many typos, miri bug, naming, docs ([14d2f19]https://github.com/saghen/frizbee/commit/14d2f1954d8481c5569ff25527ffc0f7595041f1)
- match delimiters between greedy and sw ([9cb9979]https://github.com/saghen/frizbee/commit/9cb99795824cfeaa6c9ec4b78ad0ba1c4503b4b6)
- incorrect alignment indices on unicode ([e5c7bc5]https://github.com/saghen/frizbee/commit/e5c7bc522e25984a464de6ad59bf6eea50e19239)

### Refactor

- move sw backends under sw::simd::backend ([441b78c]https://github.com/saghen/frizbee/commit/441b78c25ee4a55bbc5362d833f52c682df7d211)
- move prefilter backends under prefilter::backend ([523d9eb]https://github.com/saghen/frizbee/commit/523d9eb7610ef21b4951d3ba0bd9f75f57e3947e)
- move prefilter algorithm into algo ([121851f]https://github.com/saghen/frizbee/commit/121851f516592ff860e84ec35a176c3bc16d8e6a)
- specialize matcher by backend ([e582817]https://github.com/saghen/frizbee/commit/e58281770420c56de1dcf9e4804ecdd24c93506f)
- simplify prefilter wrappers ([9ce2b5e]https://github.com/saghen/frizbee/commit/9ce2b5e401c677836acd397336a10bcba270ba58)
- simplify smith waterman wrappers ([8d10c81]https://github.com/saghen/frizbee/commit/8d10c81fb4b6b0fdc8fa22c0e9c6f968877a04b9)
- move `smith_waterman::simd` to `smith_waterman` ([393aed0]https://github.com/saghen/frizbee/commit/393aed007c6383326dd7c0c7e087b0e06c390ed2)
- create `Matcher` once in benchmarks ([9af3b6c]https://github.com/saghen/frizbee/commit/9af3b6ca8865c05996cd0f11ba359bf98d164ea1)
- drop prefilter `Backend::broadcast` ([3c386b2]https://github.com/saghen/frizbee/commit/3c386b2242e149d169b1e6ca87f1f0edcdf070fa)
- unicode matching helper, backwards scan ([2ed88a4]https://github.com/saghen/frizbee/commit/2ed88a4b450a8d66a7bc2c546f70b1bbbd823f36)
- split up prefilter/algo file ([eb60749]https://github.com/saghen/frizbee/commit/eb60749ec163b26504713d761b255c8627e336a7)
- move gap impls to `smith_waterman::algo` ([6297c90]https://github.com/saghen/frizbee/commit/6297c901a67ddfc5d9b1b966634ee511b5814084)
- fix missing `self.needs_unicode` case ([c03999a]https://github.com/saghen/frizbee/commit/c03999a513ad044c6658a522592c9abb20b7d538)

### Documentation

- misc rewriting and cleanup ([119b78c]https://github.com/saghen/frizbee/commit/119b78c7ed552da42c831c55849a3effb5c28ee8)
- update benches and prefilter docs ([dd7bbf6]https://github.com/saghen/frizbee/commit/dd7bbf6d43d22867350eb9a710893a8d00c9357d)
- update benchmarks ([c56dac9]https://github.com/saghen/frizbee/commit/c56dac995df416a69155abeb7883c6f6a9f2a470)
- unicode ([5ee37ee]https://github.com/saghen/frizbee/commit/5ee37ee6d49c0d62d2a33b8ea574ad693e363470)
- mark unicode gap docs as text ([3aeb1dc]https://github.com/saghen/frizbee/commit/3aeb1dc18a645ec329284d3fc54fa3774e983c50)
- update benchmarks ([50c718f]https://github.com/saghen/frizbee/commit/50c718f5f326d47f947bc5f099075ac2a3a1b988)
- add note about NEON prefilter performance ([7f8defb]https://github.com/saghen/frizbee/commit/7f8defbec65645aca511347a2333bfbf9e1e423f)
- match lib.rs docs to README ([7c8d7e0]https://github.com/saghen/frizbee/commit/7c8d7e07220e4e9d6cdc1512053fc2ff7471d9fe)
- misc typos and renames ([6edeb89]https://github.com/saghen/frizbee/commit/6edeb897d1d1984fcceed8ec55b0863b16a63709)
- update benchmarks ([899c473]https://github.com/saghen/frizbee/commit/899c473cdf620e72ccd35184a1db7ca0051f2877)
- add keywords/categories ([e87e0bd]https://github.com/saghen/frizbee/commit/e87e0bd7f9aee29d856d1a8ea56946e349e94ec0)
- proper casing for nucleo/fzf ([d5f9282]https://github.com/saghen/frizbee/commit/d5f928265d600626806ddc1e292b5009ddf48113)
- drop number for fuzzy_match slowdown ([c56f614]https://github.com/saghen/frizbee/commit/c56f6142898af6f9af1c20f8be725db8c269ec74)

### Performance

- avx512 shift right lanes ([0287fd5]https://github.com/saghen/frizbee/commit/0287fd58818d260c4ea5b157122858105d1a1db7)
- trim prefilter match windows ([b1cbddf]https://github.com/saghen/frizbee/commit/b1cbddf658056e570c10531b11fe5ee9419d20a1)
- specialize avx2 prefilter no typo ([6923519]https://github.com/saghen/frizbee/commit/692351960b7c202c96b2072385e9b6d92a774afb)
- specialize avx512 prefilter typos ([d5b4c57]https://github.com/saghen/frizbee/commit/d5b4c5749aa45f59f02e3b7468b5faaded931330)
- add avx512 prefilter masked loads ([4f2d57a]https://github.com/saghen/frizbee/commit/4f2d57aee7d7d5af152934f61c97a59e59eb9667)
- move target features to matcher dispatch ([5c9145b]https://github.com/saghen/frizbee/commit/5c9145b1d82ec1ef88bb8f3b7298769b0b4f0558)
- increase parallel chunk size ([88f52fb]https://github.com/saghen/frizbee/commit/88f52fb231f2ab99ade7935f011d3f7f6a8a01aa)
- avoid sorting on empty needle ([114d188]https://github.com/saghen/frizbee/commit/114d188948cf944bc6ec914abe8c441a2bc25646)
- per-specialization hot loops ([82bae12]https://github.com/saghen/frizbee/commit/82bae1294422bf7d2a641a1f7f1320fdbf92b759)

### Testing

- add prefilter backend parity cases ([32436c5]https://github.com/saghen/frizbee/commit/32436c5767e3e6307050814e4415bdae5de72374)
- swap proptest for bolero, integration tests, expand suite ([d2941c3]https://github.com/saghen/frizbee/commit/d2941c3ece81e99b153518141256b706ace9a755)
- fuzzing ([55ea87c]https://github.com/saghen/frizbee/commit/55ea87c94bebb3b61affa9b4807b55428a9b2ecf)
- extra unicode cases ([75ccfe1]https://github.com/saghen/frizbee/commit/75ccfe18b64f2a6dbe9a9ae828d333a2a8345edf)
- share generator, simplify sw backend tests ([c248438]https://github.com/saghen/frizbee/commit/c248438626db59ec0b2fe214e6cd3a1cda4afb14)

## New Contributors ❤︎

- @leonardcser made their first contribution in [#80]https://github.com/saghen/frizbee/pull/80

## [0.9.0]https://github.com/saghen/frizbee/compare/v0.8.3..v0.9.0 - 2026-04-04

### Features

- add scalar implementation fallback (#76) ([3aff5b5]https://github.com/saghen/frizbee/commit/3aff5b533a9a02afca8647823778da3cbdd25ee8)
- track match end column position via `match_end_col` feature (#75) ([53be326]https://github.com/saghen/frizbee/commit/53be3268b295b2189c7e1807e9a93b50b85f447b)

### Documentation

- update fzf comparison on docs.rs ([8b59da3]https://github.com/saghen/frizbee/commit/8b59da305dc96170a9de4a9646e5c17efdf88efd)

### Performance

- use radix sort for sorting `Match`es (#74) ([8b4d19c]https://github.com/saghen/frizbee/commit/8b4d19c9b4395019390692803727b138504ca5d7)

## New Contributors ❤︎

- @Xeonacid made their first contribution in [#76]https://github.com/saghen/frizbee/pull/76

## [0.8.3]https://github.com/saghen/frizbee/compare/v0.8.2..v0.8.3 - 2026-03-10

### Features

- Optimize latest rewrite (#72) ([cd448bd]https://github.com/saghen/frizbee/commit/cd448bdb9836f98eb278ac20b852801d08d4513a)

### Bug Fixes

- zero out missing null matrix rows ([a672ae8]https://github.com/saghen/frizbee/commit/a672ae8ca1fa164dc35458ba74d177d6b6718ecf)
- dont skip prefilter for max typos >= 3 in sse ([f2ab3fb]https://github.com/saghen/frizbee/commit/f2ab3fb1f685a7764405f4ef6324fadfbd9090d8)
- 256-bit SSE smax_u16 combining 8 bit lanes ([b64cdd2]https://github.com/saghen/frizbee/commit/b64cdd2d08ccca7c766c26044dc1e8ea966e4500)

### Documentation

- drop fzf comparison ([4862d4a]https://github.com/saghen/frizbee/commit/4862d4a545a213edcaad23675aec34a416f1377c)
- fix fzf bench, thanks @junegunn ([edf7a58]https://github.com/saghen/frizbee/commit/edf7a58c86220ba897fbdd1a961768ccdd97dc38)
- fix fzf bench spacing and formatting ([efc3f88]https://github.com/saghen/frizbee/commit/efc3f88ae4ad5535a799803e99cc6de5c41d05b6)
- fix readme example ([6c69acd]https://github.com/saghen/frizbee/commit/6c69acd17e787fe0949aece3ceea11ffc10f7528)
- update fzf benchmarks ([97ac04d]https://github.com/saghen/frizbee/commit/97ac04d4a2d486f05982f99b5c3fcec707732579)

### Performance

- drop a few instructions for gap extension ([5bec7b1]https://github.com/saghen/frizbee/commit/5bec7b1b6abd7710821c5d5240cfd356ad60f8e3)

## [0.8.2]https://github.com/saghen/frizbee/compare/v0.8.1..v0.8.2 - 2026-02-20

### Bug Fixes

- guard against overflow on `score_haystack` ([b972e79]https://github.com/saghen/frizbee/commit/b972e79ca3eb4d764e598ab3f0c22ccb20102a62)
- dont skip chunks when typos are allowed ([aaaa652]https://github.com/saghen/frizbee/commit/aaaa6521ec20b9619d1f00eb326f37d78d61a981)
- zero out null matrix rows ([7162754]https://github.com/saghen/frizbee/commit/71627549f559bf1b9ac273af91ffce6a7c5228b4)

### Documentation

- misc clarifications ([fb11ae3]https://github.com/saghen/frizbee/commit/fb11ae3f9b36fd7bb6daad62a167e7cee1757049)
- rename one shot and parallel benchmarks ([e4ac174]https://github.com/saghen/frizbee/commit/e4ac17481d2a00cbc9254dd04798d807cba459e1)
- update benchmarks ([cc93ef2]https://github.com/saghen/frizbee/commit/cc93ef200f48ebf61228ec5f33dc4f2c4053d546)
- add fzf benchmark ([1d8c210]https://github.com/saghen/frizbee/commit/1d8c21071dd75cbaea39d1eab7d3d310acf28d9b)

## [0.8.1]https://github.com/saghen/frizbee/compare/v0.8.0..v0.8.1 - 2026-02-19

### Refactor

- drop reference implementation ([7a4b861]https://github.com/saghen/frizbee/commit/7a4b861920bda21c78cd62bc7833526074ae8c1e)

### Documentation

- alllll the docs ([78b62c4]https://github.com/saghen/frizbee/commit/78b62c4105c56a1843a477148a59f868e5ae65a8)

## [0.8.0]https://github.com/saghen/frizbee/compare/v0.7.0..v0.8.0 - 2026-02-19

### Features

- intra sequence smith waterman ([bbcf283]https://github.com/saghen/frizbee/commit/bbcf2834e7c01bc80cfcdfd6565d7e8c9051d1ec)
- matcher, many bonuses, prefilter perf ([cfca682]https://github.com/saghen/frizbee/commit/cfca68273a8ecfcb12c720cd3f84657256a9aa5a)
- drop v1 and nightly, adopt v2 ([ae0fcdd]https://github.com/saghen/frizbee/commit/ae0fcddd1ef7fc65e7eb1ede2bf0c259ecb196dc)
- move matchers into structs, add parallel matching ([eb0aa7f]https://github.com/saghen/frizbee/commit/eb0aa7f19ce907233a5f4150fc1d0531a11f7af0)
- runtime feature detection for prefilter, reorganize matcher ([4c9ac62]https://github.com/saghen/frizbee/commit/4c9ac627e3802973470ad9eeb404bb170be3cefb)
- flatten score matrix, wip incremental matcher ([bf4ccae]https://github.com/saghen/frizbee/commit/bf4ccaee086d647aea6ce6fff186f73207ceb8b1)
- generic SIMD vectors ([dc9cb6d]https://github.com/saghen/frizbee/commit/dc9cb6d3ec576c3a254bb5adb49045a250199eb4)
- a very slow incremental matcher ([6c20e92]https://github.com/saghen/frizbee/commit/6c20e92c528fdce308ab48559cfc1f2923783d5a)
- double pumped SSE256, runtime feature detection, drop aligned ([f99eb90]https://github.com/saghen/frizbee/commit/f99eb90fb6b7e74b9c5389beba01a8bd2a44e47c)
- vector tests, drop par sort, assert needle len ([9d34e4b]https://github.com/saghen/frizbee/commit/9d34e4b303ce592dc6fe80ec6e0219636a3cc5ba)
- aarch64 support, matrix fixes, prefilter runtime feature detection ([6877319]https://github.com/saghen/frizbee/commit/687731962a7a68f72213b2209bd1f633dc3ed05a)
- test idx_u16 implementation ([777ed94]https://github.com/saghen/frizbee/commit/777ed9434c9cb739514bb4803ef91688b5f91781)
- guard against typos leading to all matches ([f1d6171]https://github.com/saghen/frizbee/commit/f1d6171c00f98675d94d2722a66c13ae6238ec89)
- drop nightly toolchain!! ([86c54f0]https://github.com/saghen/frizbee/commit/86c54f04ca925e91dbada478108b170c1b701859)
- indices and alignment api (#61) ([8a8a5be]https://github.com/saghen/frizbee/commit/8a8a5be1d272c9029360517bb23ce95795e12754)
- add `match_iter` and `match_iter_indices` to `Matcher` ([96581ca]https://github.com/saghen/frizbee/commit/96581ca5774b7b093f096b1d3ff95b437511c5ed)
- add 2 typo and 3 typo benchmarks ([5432842]https://github.com/saghen/frizbee/commit/5432842b67c879771dc3505403e336c52e786605)
- skip prefiltering for typos >= 3 ([5e996de]https://github.com/saghen/frizbee/commit/5e996de89a9008ecef3c7aa61d85849693e0afeb)

### Bug Fixes

- attempt to subtract with overflow (#55) ([4abc19d]https://github.com/saghen/frizbee/commit/4abc19d0dc7a7bf927fde1e727dc94ca0e1f2b9e)
- prefix score bonus ([22403bf]https://github.com/saghen/frizbee/commit/22403bf3bc8c1128493b0334c7fb6119038f0cf4)
- gaps not propagating past 16 bytes ([b4ffb66]https://github.com/saghen/frizbee/commit/b4ffb6684e47a5cdd708dcf6cc40bd0106159ec2)
- dont sort parallel when sort is false ([563e8ee]https://github.com/saghen/frizbee/commit/563e8eed5ca6ae329306f33d62b55974d0ad4a26)
- store and use adjacent match mask, minor gap perf ([114218d]https://github.com/saghen/frizbee/commit/114218d32a41dde218e6e2bbe3a37566d7d81362)
- max typos off by one ([85e6bba]https://github.com/saghen/frizbee/commit/85e6bbabe2e7edbda0bafc4c48dcfb85a5eef8cf)
- drop guard against typos leading to all matches ([4a6eb14]https://github.com/saghen/frizbee/commit/4a6eb14f7a2cbb080cda926663b22d11064624e7)
- matrix struct, use match masks in alignment ([2bf5878]https://github.com/saghen/frizbee/commit/2bf587830799f16037b25c2cb4beb83f15342777)

### Refactor

- misc ([cf2b0a4]https://github.com/saghen/frizbee/commit/cf2b0a45849130b7ea44f62a5749c8c755cf6a97)
- rename internal match list ([4286659]https://github.com/saghen/frizbee/commit/42866598a61aea6c5f30d21bbf73f58019a19936)

### Documentation

- update prefilter safety ([7385671]https://github.com/saghen/frizbee/commit/738567138d1204c5fea8b810c35815c3ad7e8c43)
- update readme and benchmarks ([0e3033e]https://github.com/saghen/frizbee/commit/0e3033eb294cc52675ade9b1982feb14d3cf2066)
- fix skim link ([04256c0]https://github.com/saghen/frizbee/commit/04256c071648a49a63e6947bbfa641a1ddeeafc4)
- `match_iter` example ([da481cb]https://github.com/saghen/frizbee/commit/da481cb613829dc0e957e6dee03ff0d58212079b)
- minor edits to smith waterman section ([59e3e6e]https://github.com/saghen/frizbee/commit/59e3e6ebf1fb2eb2e6e5dce6f3f2e611099b3059)
- clarify overlapping load ([b08f281]https://github.com/saghen/frizbee/commit/b08f281a40ed462988142301a45b811dbe25fabc)

### Performance

- preprocess bonuses ([5cf59a2]https://github.com/saghen/frizbee/commit/5cf59a22be59214b1d373ea4c744effe3890c5c5)

## New Contributors ❤︎

- @raui100 made their first contribution in [#55]https://github.com/saghen/frizbee/pull/55

## [0.7.0]https://github.com/saghen/frizbee/compare/v0.6.0..v0.7.0 - 2026-02-03

### Bug Fixes

- build on latest nightly (#54) ([45dd259]https://github.com/saghen/frizbee/commit/45dd259505357c6efbe8a4d8e213b918d867f884)

## [0.6.0] - 2025-11-14

### Breaking Changes

- drop `min_score` option ([8d7c445]https://github.com/saghen/frizbee/commit/8d7c445ce243364c6e6339cf3db646467f4323fc)
- `Options -> Config`, `Scoring` options, `index_in_haystack -> index` ([539cbef]https://github.com/saghen/frizbee/commit/539cbef635c5d36114bca8876aa67f9e0ccd78b7)
- remove unused modules from api, docs ([e5ad501]https://github.com/saghen/frizbee/commit/e5ad501c5767ee913b1fe1745f8749de6872da34)
- use ref borrowing for config (#47) ([b7f2b5f]https://github.com/saghen/frizbee/commit/b7f2b5fba871db387e6931ea6feaeb9eb4ad0f3b)

### Features

- initial ([2adc343]https://github.com/saghen/frizbee/commit/2adc3439311e43864506878e3250e1e440e20ff6)
- cleanup and rename ([8bc2eee]https://github.com/saghen/frizbee/commit/8bc2eee0c65da5b011b71b270d19b3ed22262a97)
- add index_in_haystack to match ([50a22da]https://github.com/saghen/frizbee/commit/50a22da50dac82b9a9e97c56c95fdfa5a9737a55)
- reduce prefix bonus ([2cc6511]https://github.com/saghen/frizbee/commit/2cc65117aa2c9cbc24cb77bd649caabffd6c8de0)
- adjust scoring to encourage delimited/capitalized matches ([d4c715d]https://github.com/saghen/frizbee/commit/d4c715df5b08f70d91b33cb1c7c1eff06a2e5ee0)
- temporarily disable capitalization bonus ([3e7d321]https://github.com/saghen/frizbee/commit/3e7d32108229f220bb25e3416e36ffc8c2750166)
- exact match bonus ([1773ea4]https://github.com/saghen/frizbee/commit/1773ea4bbba2b703150166654296a8f4dd1e7adc)
- matching case bonus, delimiter fixes ([a5089ca]https://github.com/saghen/frizbee/commit/a5089ca087eca2e538bf6e58a995816a3f0d103d)
- tests ([c25a00a]https://github.com/saghen/frizbee/commit/c25a00ab0f1b4946d5ba2ab2eed3da5c9fd139eb)
- drop useless simd_max(zero) ([8c3037f]https://github.com/saghen/frizbee/commit/8c3037f0d69cd62130017006d8f78cf65bebb5d1)
- drop useless select and simplify code (#3) ([f053b13]https://github.com/saghen/frizbee/commit/f053b1344a6501e70c621dc4f56d14a274596ac5)
- enforce 128 bit SIMD, avoid 256 bit ([0d42d37]https://github.com/saghen/frizbee/commit/0d42d37720a85d6b2fd5b51038a3b94978e88b46)
- matched character indices ([d632d11]https://github.com/saghen/frizbee/commit/d632d11132bb0acd99a5d91310149c4422ea225c)
- add delimiter bonus on colon ([78aa772]https://github.com/saghen/frizbee/commit/78aa7729f29ac358dbd5553965138ad542bae725)
- add debug, clone, copy to options ([7c2aa46]https://github.com/saghen/frizbee/commit/7c2aa4661a43c6f8565c2200a07428bdf675ce1b)
- implement smith_waterman using a generic function (#6) ([8f174de]https://github.com/saghen/frizbee/commit/8f174de75faee8fb901fe9c27c0386e6450c7d61)
- wip score matrix ([df9107e]https://github.com/saghen/frizbee/commit/df9107e475ccd9a63b9f2cfea3d4d505ab331f07)
- non-simd reference implementation ([a960f12]https://github.com/saghen/frizbee/commit/a960f12704ddaa6a35c41b04967c27c66231d75a)
- add iai benchmark ([0ea8d8f]https://github.com/saghen/frizbee/commit/0ea8d8fb10dc0147ca5df54a5cc5b67d6b3d5951)
- alignment for typo count ([4016d65]https://github.com/saghen/frizbee/commit/4016d65dee8a09b514092631c99dea1c113ed8a7)
- add debug trait to SimdNum ([5ecc9ba]https://github.com/saghen/frizbee/commit/5ecc9ba6bb2a77760ac16f077e849139faf0a208)
- prefilter with typo proof of concept ([65ce6aa]https://github.com/saghen/frizbee/commit/65ce6aa32f3461c82277ba4716a4c88397349b71)
- rework benchmarks ([e798541]https://github.com/saghen/frizbee/commit/e7985412acb23068f7c6647e9a2bd268173a1032)
- update reference implementation ([0e1d186]https://github.com/saghen/frizbee/commit/0e1d186f28bb2402a280e32042bf76c5fc587079)
- rework iai benchmark ([0abc726]https://github.com/saghen/frizbee/commit/0abc726eaf7ecb776f3194f9bdc57b979b069f23)
- replace prefilter with max typos option ([da006cc]https://github.com/saghen/frizbee/commit/da006cc7b9616e86a8990b6a32940e2bb79825d6)
- filter by max typos, minor perf improvements ([fa3bd32]https://github.com/saghen/frizbee/commit/fa3bd32ba64cd1fa2ca4158c376612c2ea4c4d10)
- bitmask prefilter ([6d08a89]https://github.com/saghen/frizbee/commit/6d08a8961836bb2b059ddfb403d71f1aff433e5d)
- indicate exact matches (#14) ([75c9dc5]https://github.com/saghen/frizbee/commit/75c9dc534f459580dba8a45847bfae2e384f1a54)
- drop `memchr` dependency ([bf27dba]https://github.com/saghen/frizbee/commit/bf27dba56fa3c1147ea65cfc947d40318cda9f7d)
- update rand/rand_distr ([283e4c4]https://github.com/saghen/frizbee/commit/283e4c444fadd3d4459c31c01128123ffc0a6b25)
- increase score bonus for matching case ([6415483]https://github.com/saghen/frizbee/commit/6415483c58742ef66f1fd5e19ee4d122f0eb0534)
- increase max length to 1024 ([1a2a201]https://github.com/saghen/frizbee/commit/1a2a201ca59563e289d4a3abd3e77233db347d92)
- reintroduce prefiltering when haystack is too long ([1c86f18]https://github.com/saghen/frizbee/commit/1c86f18d2ca94fa2481f2ba13e1dc5d922f3800c)
- prepare to move smith_waterman inner loop into its own function, and for the incremental matching API ([be141ae]https://github.com/saghen/frizbee/commit/be141aebfd471e54b33e81faf741da72c4eb742e)
- enable capitalization bonus ([5ba2cbc]https://github.com/saghen/frizbee/commit/5ba2cbc8c907b2cc2ca479f0fd506c822d402412)
- incremental matching api ([2e1c635]https://github.com/saghen/frizbee/commit/2e1c6358b08f66ceed2e8c652a6477a3c9088e35)
- compute all_time_max_score after score_matrix ([8e694d6]https://github.com/saghen/frizbee/commit/8e694d6806d65773a5f148b6c364700a765e054e)
- add benchmark ([af6623c]https://github.com/saghen/frizbee/commit/af6623cc6d7c0485961c0cc5620cb68ddc4ff8d6)
- avoid sorting for incremental matcher ([63711eb]https://github.com/saghen/frizbee/commit/63711ebd0361b35430d25698a5d5bd77a53a4469)
- restructure codebase ([4cc3699]https://github.com/saghen/frizbee/commit/4cc369932d8968e23cfe7dd1d7f58fce811aeac2)
- use case matching ignore for nucleo benchmark ([14718d6]https://github.com/saghen/frizbee/commit/14718d6225bfd17f567807619cd598f3ed8d41a6)
- lazy and stack allocated bucket initialization ([8c7686d]https://github.com/saghen/frizbee/commit/8c7686d62540e2be2e4418ded13c430996bf23f4)
- drop lazy bucket initialization ([1b5ea29]https://github.com/saghen/frizbee/commit/1b5ea297b3eb20b3fbda1673823eb13ec65e8dfa)
- increase benchmark sample count from 1000 to 10000 ([86b515e]https://github.com/saghen/frizbee/commit/86b515e6c642422e14c5fa8da0ecba3d6e2d85c9)
- expose `IncrementalMatcher` and `match_list` ([6329b44]https://github.com/saghen/frizbee/commit/6329b4400375d2156db74f50bb13102f002216ea)
- add serde `Serialize` and `Deserialize` derives ([a472695]https://github.com/saghen/frizbee/commit/a472695c073cc9aba8a2e4fb7a228b3c3ab56b8f)
- support any string type ([9007ef1]https://github.com/saghen/frizbee/commit/9007ef1aaba8cf2bbff29995a95292169b5e663d)
- no delimiter bonus for delimiter chars ([d96d203]https://github.com/saghen/frizbee/commit/d96d203db439a3b54c4970823378bc51cb4f6fe9)
- split up simd code, add matched indices support ([2c96213]https://github.com/saghen/frizbee/commit/2c962137c3530bfd786e35912c82f84b299b177c)
- runtime instruction detection ([44482c3]https://github.com/saghen/frizbee/commit/44482c36f35ef6e60fff4837cb6a4d449efbabd8)
- decrease gap penalties ([4a1d113]https://github.com/saghen/frizbee/commit/4a1d11352d7b6aa7048916d08161004dbe4f6cc1)
- probably broken skim benchmark ([d981215]https://github.com/saghen/frizbee/commit/d9812156936dbaa2df41d7f4ef2e11b8670b16c8)
- ignore haystacks shorter than needle - max typos ([bd9be77]https://github.com/saghen/frizbee/commit/bd9be7739600cab22ece25c7c09be731d384afe2)
- avoid processing unreachable matrix elements (#29) ([c23d1ab]https://github.com/saghen/frizbee/commit/c23d1aba9711bc83ddf92748d93babe0f239053e)
- stop calculating typos after reaching max typos (#30) ([0742f8c]https://github.com/saghen/frizbee/commit/0742f8cdef216d0790b6dcbe8273266c7cb78418)
- add greedy fallback matcher ([a308373]https://github.com/saghen/frizbee/commit/a308373446b57b6a7f62b2a138665c856a78f459)
- multithreading (#32) ([6fd0960]https://github.com/saghen/frizbee/commit/6fd0960757b1290cd4251a4f9a8afedbb7946c7b)
- flake dev shell with aarch64 and x86_64 targets ([b982c62]https://github.com/saghen/frizbee/commit/b982c620cb40bb33a9ca9dd2e4d4bee00d1f19ce)
- fallback to greedy matching on >512, rather than >1024 ([004cb63]https://github.com/saghen/frizbee/commit/004cb63694302026d7d2865a1316c4a93515c220)
- increase gap penalty, reduce delimiter/capitalization bonus ([7a8cd28]https://github.com/saghen/frizbee/commit/7a8cd284b2397ba7c0cbe61d5e11e4884dd90857)
- offset prefix bonus ([2701d9f]https://github.com/saghen/frizbee/commit/2701d9f4a868f95c6a2b12fd8f2969dd41d3cc05)
- drop `SimdNum` in favor of fixed `u16` score ([a51b58e]https://github.com/saghen/frizbee/commit/a51b58ee0a7d00f2b7528ac749878e999ec02ea0)
- SIMD string interleave ([fd31411]https://github.com/saghen/frizbee/commit/fd314111aa10f27f7aed76f6cbcb52cb8d864387)
- use `x86-64-v3` for benchmarking ([2744cfb]https://github.com/saghen/frizbee/commit/2744cfb3e554c8b9090e77eb35745f59b27dfa81)
- use multiversion, generic interleave ([1246f97]https://github.com/saghen/frizbee/commit/1246f973439bc228884dcc6541ee2ad940734e7a)
- multiversion bitmask, misc tuning ([50d1815]https://github.com/saghen/frizbee/commit/50d1815f92fb4a3c2f8dbdb8ca65bf913e32ef07)
- prefilter multiversion and cleanup ([06914dd]https://github.com/saghen/frizbee/commit/06914dd131ef00e6f32d25ed584f1c6486160e21)
- SIMD intrinsics interleave ([92f67d8]https://github.com/saghen/frizbee/commit/92f67d8478532a9e11915426abbca5f523ae230b)
- reference implementation offset prefix bonus ([afe55ea]https://github.com/saghen/frizbee/commit/afe55ea49278bc9112180edd23660e31cf23b38c)
- modularize and update benchmarks ([0e52f55]https://github.com/saghen/frizbee/commit/0e52f55de7ec60d733e5ebbad2ed1fd70d7eec80)
- upgrade to rust 2024 ([1c003ed]https://github.com/saghen/frizbee/commit/1c003ed229c8eb0e61b80d6340ef53e810bd880b)
- simd and intrinsics prefilter (#43) ([8637faf]https://github.com/saghen/frizbee/commit/8637faf38987196687e5a2e3c4f02792d295ec19)

### Bug Fixes

- *(bench)* return results from routine (#13) ([0bbeb41]https://github.com/saghen/frizbee/commit/0bbeb41c7d811eef94a346f4cad2ff410449719c)
- dont give capitalization bonus on first character ([284aa89]https://github.com/saghen/frizbee/commit/284aa89028ba552505892fec4d3aa593ddabc25a)
- add missing buckets ([3a8f894]https://github.com/saghen/frizbee/commit/3a8f8947551e1d86c51ea6ce24bc8b7adf7b6a31)
- add more smith_waterman_macro bucket (#1) ([d910bec]https://github.com/saghen/frizbee/commit/d910bec53b867ce06702520c7e05f9862bf78dd9)
- prefilter ([1f7d3f9]https://github.com/saghen/frizbee/commit/1f7d3f93f87e26c54762d6b563b47d18d3b3773d)
- prefilter not ignoring case ([5e6e4c6]https://github.com/saghen/frizbee/commit/5e6e4c65fbeb611a2ea0c694079202aba15915c1)
- bench crate name ([f2ae831]https://github.com/saghen/frizbee/commit/f2ae8310efe196772a9cc3d804eb5b4f54f88e3f)
- capitals on needle never matching ([36e564b]https://github.com/saghen/frizbee/commit/36e564b5ec00afcd16455d4bb9de27e1c205572f)
- add missing bitand to macro ([bba669b]https://github.com/saghen/frizbee/commit/bba669b4c8bc5bd92b527823dd291e3b7fc2413c)
- get current column scores as mutable ref ([570d68d]https://github.com/saghen/frizbee/commit/570d68dd38071f3af3e58e905acc89d7e13f6102)
- remove unnecesary conversion to u16 ([77f0ba5]https://github.com/saghen/frizbee/commit/77f0ba5a2236c640a6f81914f3b471ca533b39c1)
- properly ignore capitalization on prefix ([81be460]https://github.com/saghen/frizbee/commit/81be460e8cbd8cbb7d98fa77a61da35c247275f6)
- matched indices with typos ([a9d07fe]https://github.com/saghen/frizbee/commit/a9d07fe50e2f495e9957c3a593c57ba16e562f63)
- ensure minimum length of 1 for generate_haystack ([4107c75]https://github.com/saghen/frizbee/commit/4107c75f03dafbc9f3f4a21ce0bf41900d220dc4)
- ignore exact match test for incremental matcher for now ([330243e]https://github.com/saghen/frizbee/commit/330243ec5626894620559562ff84463e3bc54940)
- support different string types per arg ([74ff035]https://github.com/saghen/frizbee/commit/74ff035597a4a36776a10bc5d184898d20ed17ef)
- add dot delimiter to reference implementation ([31f9ae0]https://github.com/saghen/frizbee/commit/31f9ae02f355b2430614c86e97b1e22813da80a9)
- avoid capitalization bonus on capital after lower ([a84ebfe]https://github.com/saghen/frizbee/commit/a84ebfe06ada971a0b4a1a360e449de47bc27309)
- out of bounds and div by zero panics ([57bb136]https://github.com/saghen/frizbee/commit/57bb136f994ed3fdee9a2e4a564581743a22b841)
- conditional compile avx2 and avx512 paths ([6d0fa67]https://github.com/saghen/frizbee/commit/6d0fa67de8025fbc77078224be7131ccab8488cc)
- overflow on long needles with small haystack ([8de16e4]https://github.com/saghen/frizbee/commit/8de16e49910aafde4908db22e1c9d46d32f7da03)
- prevent thread count go to 0 (#41) ([cbf566d]https://github.com/saghen/frizbee/commit/cbf566d12595e6220ce24d0d688f43dd649a0bdc)
- ensure score matrix dimensions >=1x1 ([8c1153a]https://github.com/saghen/frizbee/commit/8c1153a159ae9aeda1ecf3c3dd9ab814c3ae60a3)

### Refactor

- *(bucket)* make generic on SimdNum ([a301a74]https://github.com/saghen/frizbee/commit/a301a74f90f0e1bf1a01ae48392944f57b48ef6e)
- *(smith_waterman)* traits instead of bounds ([b198250]https://github.com/saghen/frizbee/commit/b19825044aa9f5083d2ad7524065dca2be59981f)
- *(smith_waterman)* always return u16 slice ([1408b37]https://github.com/saghen/frizbee/commit/1408b3763b18f15e03f0c4aefcc6909184c2d15d)
- remove dead procedural macro code ([48f6c59]https://github.com/saghen/frizbee/commit/48f6c59ebee10ec783480a19f7ade2da722953ad)
- remove unused first char multiplier ([7e6e120]https://github.com/saghen/frizbee/commit/7e6e120b2a5108824552d1c87404e18900f6adf1)
- rename `curr_col_score_simds` to `curr_col_scores` ([16be4d0]https://github.com/saghen/frizbee/commit/16be4d025c11d2cdd9814aed26f7a56d00b6fef5)
- make smith_waterman generic on number of simd lanes ([c2fbb36]https://github.com/saghen/frizbee/commit/c2fbb360929ade066536359489c922bea8256a6d)
- impl simd traits with a macro ([2dfb23a]https://github.com/saghen/frizbee/commit/2dfb23ac4dbf041d5636373a5070d78e2f2dcfba)
- make constants u16 again (#12) ([096163b]https://github.com/saghen/frizbee/commit/096163b97af6e119b2b92db936af9165cdf9886e)
- clean up needle_len ([c23db08]https://github.com/saghen/frizbee/commit/c23db0827bcd5d1af6623a8036d3385cc256d799)
- minor cleanups / clippy ([2d33e60]https://github.com/saghen/frizbee/commit/2d33e6032c88e2495cc1da4a8a44072175eafbb8)
- move smith waterman inner loop into its own function ([59e6754]https://github.com/saghen/frizbee/commit/59e6754157bdf98e49c53e4460b132c0aef4e241)
- simplify prepare_haystack ([5709568]https://github.com/saghen/frizbee/commit/57095680387f6837e2a3d1f277457bb5f9f3d1c3)
- prefilter method selection ([6faf2f5]https://github.com/saghen/frizbee/commit/6faf2f50115657241a2d213d29d48c376f8d6996)
- rename expandable vec to threaded vec ([d6d3e0b]https://github.com/saghen/frizbee/commit/d6d3e0bc9052e9c7cc8ef60b199ed1a080631882)

### Documentation

- add note for downloading benchmark data ([aca1794]https://github.com/saghen/frizbee/commit/aca1794c1eb3859e891a37347a92b7ab40b0abe9)
- add basic algorithm description ([e3325e9]https://github.com/saghen/frizbee/commit/e3325e94bba702c2e97490d96e38acdbc2450707)
- add note about typo resistance ([005e443]https://github.com/saghen/frizbee/commit/005e4438b21a8c1d87967cae8eda4774729d0589)
- add benchmarks ([edc713a]https://github.com/saghen/frizbee/commit/edc713aa6773f5e0dbfb5766d4d7af4d03ec83e1)
- benchmarks formatting ([6fc46e9]https://github.com/saghen/frizbee/commit/6fc46e9aa9f63a8211bac65dc71a29c6e20eafc0)
- update benchmarks ([6ce6b70]https://github.com/saghen/frizbee/commit/6ce6b70fe3500576a30758dd5f026a13f67e90e2)
- clarify how 2+ typos works ([90a276c]https://github.com/saghen/frizbee/commit/90a276c41f64e65ba936df0638486240a5cbd3e1)
- cleanup readme ([48d2f36]https://github.com/saghen/frizbee/commit/48d2f36223dcb781772fd1a79e4ae078f05e9e97)
- fix typo ([a535bd7]https://github.com/saghen/frizbee/commit/a535bd75abc6bfe76f532dbb5c374ea0a38e88fd)
- add description and license to Cargo.toml ([6421984]https://github.com/saghen/frizbee/commit/642198445fb8ffde88e4e0b68bb557c47f1a9292)
- add ideas section ([5bf7e6f]https://github.com/saghen/frizbee/commit/5bf7e6f7c5517da54275694a1c8cd89b4390a1bc)
- clarify algorithm ([d490de7]https://github.com/saghen/frizbee/commit/d490de7138c62062a84e9243112ef094f261056f)
- update benchmarks, elaborate on implementation ([f232a0c]https://github.com/saghen/frizbee/commit/f232a0cd7694fa6ba75b055f4e8a8c20529fca88)
- fix indentation in implementation section ([1448e19]https://github.com/saghen/frizbee/commit/1448e19592d789bbd18abad37433c6872f1e9915)
- benchmarks grammar ([bd63226]https://github.com/saghen/frizbee/commit/bd63226acee48d4d30b8b9321c6b03e9bb08faf8)
- add repository to Cargo.toml ([021d2eb]https://github.com/saghen/frizbee/commit/021d2eba64b3981238b14824d05de3432928424c)
- clarify long list tip ([6b65d87]https://github.com/saghen/frizbee/commit/6b65d87e70d881f8e600f8a702a2af8edec2a7db)
- update benchmarks (~1.25x speed-up) ([3150714]https://github.com/saghen/frizbee/commit/3150714c39e18ef9f936d868ddcf04ab4f6e3055)
- fix out of date match_* docs ([ca69df5]https://github.com/saghen/frizbee/commit/ca69df56b84d3f96df0d3cb348af4069a4997bc1)
- drop emojis from benchmarks ([a026b01]https://github.com/saghen/frizbee/commit/a026b01907224b4acf6ace024e26f2e18b6b3d84)

### Performance

- *(typos)* compute max score and position idx using simd (#11) ([f2d0797]https://github.com/saghen/frizbee/commit/f2d0797313bd567efe4e2f831bc335bab83602d8)
- make EXACT_MATCH_BONUS a u16 ([5c7ef42]https://github.com/saghen/frizbee/commit/5c7ef42bc9bd4c5255013dc5b42036de3c5a6529)
- remove unneeded arrays ([825467f]https://github.com/saghen/frizbee/commit/825467fcece1bdce28e4ef8112b4a2fa164dcd61)
- simplify haystack -> simd ([116d061]https://github.com/saghen/frizbee/commit/116d0619f93ea1a99010a39d78a950718e484097)
- move constants to SimdNum trait ([ff9e75b]https://github.com/saghen/frizbee/commit/ff9e75bfdce08465af88628183140c8bd67667bf)
- prefix_mask doesn't need to be simd ([610f490]https://github.com/saghen/frizbee/commit/610f490231d11bbc7a45ca293f6d94d0bf1613b1)
- map needle slice directly, convert to N type in loop ([917f1da]https://github.com/saghen/frizbee/commit/917f1da1a6a73382d288f39f15ad88cf53a4b6d2)
- left_gap_penalty_masks doesn't need to be an array ([00be248]https://github.com/saghen/frizbee/commit/00be2489d1b86871dfbf23a42f745f021272ffb6)

## New Contributors ❤︎

- @saghen made their first contribution
- @dmtrKovalenko made their first contribution in [#47]https://github.com/saghen/frizbee/pull/47
- @stefanboca made their first contribution
- @ruslanSorokin made their first contribution in [#14]https://github.com/saghen/frizbee/pull/14
- @Danielkonge made their first contribution in [#3]https://github.com/saghen/frizbee/pull/3
- @0xJWLabs made their first contribution in [#1]https://github.com/saghen/frizbee/pull/1