Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Adding reverse-order SWAR search backends #70

Open
ashvardanian opened this issue Jan 17, 2024 · 0 comments
Open

Adding reverse-order SWAR search backends #70

ashvardanian opened this issue Jan 17, 2024 · 0 comments
Labels
enhancement New feature or request good first issue Good for newcomers

Comments

@ashvardanian
Copy link
Owner

StringZilla currently implements several SWAR search optimizations for needles of different length: _sz_find_2byte_serial, _sz_find_3byte_serial, _sz_find_4byte_serial. Those currently lack reverse-order variants and should be implemented to guarantee the same level of throughput on non-SIMD devices in reverse-order operations.

Implementing those is fairly strait-forward, and can be a great first issue for people used to C programming.

@ashvardanian ashvardanian added enhancement New feature or request good first issue Good for newcomers labels Jan 17, 2024
ashvardanian added a commit that referenced this issue Jan 17, 2024
This commit implements the normal order substring matching,
doubling our previous throughput numbers on such short
patterns. The reverse order operation is currently missing #70.
vmanot pushed a commit to vmanot/StringZilla that referenced this issue Jan 29, 2024
This commit implements the normal order substring matching,
doubling our previous throughput numbers on such short
patterns. The reverse order operation is currently missing ashvardanian#70.
ashvardanian pushed a commit that referenced this issue Feb 6, 2024
# 1.0.0 (2024-02-06)

### Add

* `_sz_find_3byte_serial` ([d542c4b](https://github.com/ashvardanian/stringzilla/commit/d542c4b3a7430efb0dc5745ee390921b385fec13)), closes [#70](https://github.com/ashvardanian/stringzilla/issues/70)
* `begin`, `size` and other utility C++ functions ([5378a6c](https://github.com/ashvardanian/stringzilla/commit/5378a6c869f0b84b50dd5cd02654b0c9ad476dcd))
* `memmem` to benchmarks ([aa14ac8](https://github.com/ashvardanian/stringzilla/commit/aa14ac8370066b1c48eca4aec2412e3df8230962))
* `MemoryMappedFile` ([28638f8](https://github.com/ashvardanian/stringzilla/commit/28638f85ab8887b036859adc44897bc6d85b3b2e))
* `partition` method in Python ([257ac6c](https://github.com/ashvardanian/stringzilla/commit/257ac6cff6860b2893f939bd16cef97cf9420853))
* `qsort_r` benchmarks for Linux ([e31127a](https://github.com/ashvardanian/stringzilla/commit/e31127a7969bbf3336cbb499504a4fe290c14db1))
* `sort()` and `order()` efficient Py methods ([dd4f57f](https://github.com/ashvardanian/stringzilla/commit/dd4f57f95d239492bc21bf76bcee8dc0b1642d08))
* `sort()` interface for Python ([e657baf](https://github.com/ashvardanian/stringzilla/commit/e657bafa5d709a853b9aeb684bfdec5e37924c65))
* `startswith` & `endswith` ([c1cbb77](https://github.com/ashvardanian/stringzilla/commit/c1cbb77fc29382f04d8ad36de2a28d448a8806e5))
* `Str` concatenation ([1d7fed2](https://github.com/ashvardanian/stringzilla/commit/1d7fed2ee4abf4763cc3d9b21d9515a1beb16cf6))
* `Strs` structure in CPython ([4841a54](https://github.com/ashvardanian/stringzilla/commit/4841a541d327c07305fd3d2ceb7a289a6269116e))
* `sz_copy_serial` implementation ([d47fa1c](https://github.com/ashvardanian/stringzilla/commit/d47fa1c3493013b058b10b7387a4895cf2129fb4))
* `sz_move_serial` implementation (#60) ([1342711](https://github.com/ashvardanian/stringzilla/commit/1342711db45bda465b80b36ff98a058a349adcf1)), closes [#60](https://github.com/ashvardanian/stringzilla/issues/60)
* `sz_string_erase` implementation ([a64e091](https://github.com/ashvardanian/stringzilla/commit/a64e091247da3799fbbed129b95607c639e5ccac))
* Arm Neon character counter ([db2f523](https://github.com/ashvardanian/stringzilla/commit/db2f52388a973f1fbddb14913f8ae273adfc33d2))
* Arm NEON Raita search ([7a085e6](https://github.com/ashvardanian/stringzilla/commit/7a085e61af38a1f28e0b2c7faf13c203eff4bf0a))
* Auto-fetching Google Benchmark ([28311f3](https://github.com/ashvardanian/stringzilla/commit/28311f3fa808c6b42de0959bd59297b493418664))
* AVX-512 for `character_set` search ([543a942](https://github.com/ashvardanian/stringzilla/commit/543a94299a47dc16f64374d10217cf544fe346b2))
* AVX-512 functionality ([cca3d19](https://github.com/ashvardanian/stringzilla/commit/cca3d19ccc5cc72b0e08cd81a8955b79b31dc548))
* AVX-512 implementations for similarity scores ([e205c7a](https://github.com/ashvardanian/stringzilla/commit/e205c7a0ea9534732403d8e24990b74a1803b2ae))
* AVX-512 implementations for substring search ([35f7a11](https://github.com/ashvardanian/stringzilla/commit/35f7a11568b09c5b7e3966139b4935fd95caf1fc))
* AVX-512 Levenshtein distance for longer strings ([2b33e61](https://github.com/ashvardanian/stringzilla/commit/2b33e618e76ca6ffc151adf1f54294f62701374a))
* AVX2 baseline implementation ([a99dd56](https://github.com/ashvardanian/stringzilla/commit/a99dd5672f5b92384fa2645a1c81267c8400ec0f))
* Baseline C++ class ([979bf56](https://github.com/ashvardanian/stringzilla/commit/979bf56b02a13e782a757b5f54324883ed7265cf))
* Baseline NodeJS binding ([7abc456](https://github.com/ashvardanian/stringzilla/commit/7abc456ca8ea5bf494b9a975f14b909cebba5c53))
* Baseline NodeJS binding ([611c2c1](https://github.com/ashvardanian/stringzilla/commit/611c2c12ce16625cfbb0af30ab5dd41f80098e6a))
* Benchmark for [<>] search ([e8dd299](https://github.com/ashvardanian/stringzilla/commit/e8dd29902c5488226d771902f1383625b5f277c4))
* Benchmarks notebook ([317fd7f](https://github.com/ashvardanian/stringzilla/commit/317fd7ff8a949f029d58fd8bedc29d53faafef2f))
* Benchmarks on synthetic strings ([f6d8522](https://github.com/ashvardanian/stringzilla/commit/f6d852213c7c35d38145596c7376a761ee59ac92))
* Buffer protocol support ([f4c17b9](https://github.com/ashvardanian/stringzilla/commit/f4c17b91f17e34fa58b391fc0191c9fdb6588757))
* C++ API for scores and fingerprints ([b8778d0](https://github.com/ashvardanian/stringzilla/commit/b8778d035debb494485974ffe80049ddde268f8f))
* char-set, reverse order, and scoring in Py ([563f264](https://github.com/ashvardanian/stringzilla/commit/563f2647722a386ecd46b00b9c85affe9eb1a759)), closes [#23](https://github.com/ashvardanian/stringzilla/issues/23) [#12](https://github.com/ashvardanian/stringzilla/issues/12)
* Collection-level `append`, `extend` ([5066505](https://github.com/ashvardanian/stringzilla/commit/506650585bbb20c0cdf40ac40db6f65c52187ce6))
* Commonly used character sets ([00cc2f3](https://github.com/ashvardanian/stringzilla/commit/00cc2f3b6ef600559db7e57ec51ca3447af8501d))
* comparsion operators ([abe63e4](https://github.com/ashvardanian/stringzilla/commit/abe63e4a7e89dd02e526ecdb1a7f0505dcbd925d))
* compile-time dispatch for fill/move/copy ([9cb00fc](https://github.com/ashvardanian/stringzilla/commit/9cb00fc154643d2fabec451819ee3a18950ddb9e))
* Counting specific characters or subtrings ([67e71d8](https://github.com/ashvardanian/stringzilla/commit/67e71d8647a8a722cac2e3e7f0385f3f9759e9c0))
* Diagonal order Levenshtein distance computation ([d1ac8e3](https://github.com/ashvardanian/stringzilla/commit/d1ac8e3d1905463beef858b45306e02fe881a7ab))
* Dynamic dispatch ([2059c87](https://github.com/ashvardanian/stringzilla/commit/2059c87c9e5b3150c5b45b1161dd405b6707ee85))
* evals for hash quality ([20b4db0](https://github.com/ashvardanian/stringzilla/commit/20b4db091972a0c797495e1db901f0abb0fc250a))
* Examples of lcoating unique strings ([8f5a09b](https://github.com/ashvardanian/stringzilla/commit/8f5a09bdfd61f9d6d59ada8c1511c0658252e21f))
* Exception-throwing cases for STL strings ([8318b32](https://github.com/ashvardanian/stringzilla/commit/8318b32a72be92adc9cc80ee0b03ec73e62eea17))
* Experimental rolling hashes on NEON ([571d1b2](https://github.com/ashvardanian/stringzilla/commit/571d1b27ed34a76e3070b5bb95049a8347ddfc4d))
* Fast integer division for random generator ([c0cc8ba](https://github.com/ashvardanian/stringzilla/commit/c0cc8ba35349f32cb8220388c03dd6b1b6a27177))
* Fast replacements and alloc-free concat ([3720cd0](https://github.com/ashvardanian/stringzilla/commit/3720cd0309761aecfeb16414995e0f29195a8ce0))
* Full line search benchmarks ([9db22d5](https://github.com/ashvardanian/stringzilla/commit/9db22d544475989a703501392c82dbceae0acf84))
* get item with slice ([ab5e5ac](https://github.com/ashvardanian/stringzilla/commit/ab5e5ac868dce0727858d55315e2f3bcafe20e3b))
* Horspool algorithm for longer patterns ([19ed36c](https://github.com/ashvardanian/stringzilla/commit/19ed36c7fb747b6a6c72572733b74b7efdb75890))
* Hybrid sorting with Radix and Quick Sorts ([e6e532c](https://github.com/ashvardanian/stringzilla/commit/e6e532c79f1f662516c98639cb92c6765ab9edf8))
* Initial Arm Neon support ([9d38c7d](https://github.com/ashvardanian/stringzilla/commit/9d38c7d467f8c6ca3a2c7b82b29cb86bb921f9e6))
* Initial Levenstein distance ([9093983](https://github.com/ashvardanian/stringzilla/commit/9093983b7751480fe999d0b374699c7ff11a056c))
* Levenshtein distance benchmarks ([19f5dd5](https://github.com/ashvardanian/stringzilla/commit/19f5dd59111e4d24d29dac24dc4fd5ec5369048e))
* Levenshtein distance tests in C++ ([1efccd9](https://github.com/ashvardanian/stringzilla/commit/1efccd9dd5a466e5e575ff84136d4e1c5f294015))
* Levenstein distance ([7723703](https://github.com/ashvardanian/stringzilla/commit/7723703295d1bdf22c45176b30e9fdf2c643d9fb))
* Merge-, Insertion-, Quick-sorting algos ([061d523](https://github.com/ashvardanian/stringzilla/commit/061d523b370d63ea9b3a0d0652c1bd7132ca82dd))
* Merge-sort for strings ([60e683b](https://github.com/ashvardanian/stringzilla/commit/60e683ba6d611d037eb49a4aa818a7af424f4cbf))
* Micro-benchmarking notebook ([c70e811](https://github.com/ashvardanian/stringzilla/commit/c70e811c81a1e76ce19a321b0ceeb6886f36fa5f))
* misaligned tests ([1e94b7d](https://github.com/ashvardanian/stringzilla/commit/1e94b7d15f81440392016c169b22b24f36eb0888))
* missing `append`, `assign` STL APIs ([b28136a](https://github.com/ashvardanian/stringzilla/commit/b28136aace2fda73544d9194ccfbf693e2d643c6))
* Mutable string slices ([009080b](https://github.com/ashvardanian/stringzilla/commit/009080b118064186fb6ced5aa76e9229ca3c34df))
* Non-STL Pythonic slicing ([8ca6f03](https://github.com/ashvardanian/stringzilla/commit/8ca6f03bb20be543ea8ea122f36863bdf64bb656))
* Purely `qsort`-based hybrid sort benchmark ([eaef636](https://github.com/ashvardanian/stringzilla/commit/eaef636ff64ef0b9f730f739cb57771f776f4826))
* Python bindings ([1c759c2](https://github.com/ashvardanian/stringzilla/commit/1c759c257afe048026bc89d0a8478067b2e43b0f))
* random `shuffle` for strings collections ([6e3309c](https://github.com/ashvardanian/stringzilla/commit/6e3309c00d75326ed87caaa5673fcd6296b68c7d))
* Random strings generator ([eafaba0](https://github.com/ashvardanian/stringzilla/commit/eafaba00315e553f30b1b6e77d5fdc19b6378341))
* Randomize non-owning ranges ([71890ac](https://github.com/ashvardanian/stringzilla/commit/71890acc26926274b56cf22c94e5d977bc007191))
* Range matchers for charsets ([207d1de](https://github.com/ashvardanian/stringzilla/commit/207d1de4fe99b5b1d0a9c6ddf154f7ca27b32f65))
* read-only operations for `string` ([df10847](https://github.com/ashvardanian/stringzilla/commit/df10847c8b5c4ca29e0ca71b9227fb1f8f33897d))
* reverse order AVX2 & benchmarks ([ac05a39](https://github.com/ashvardanian/stringzilla/commit/ac05a39ba22afe02864da2f9c8bfdd3d8a854a97))
* Reverse order iterator ([2931be7](https://github.com/ashvardanian/stringzilla/commit/2931be77445b2a5b3c37f6a961fb10b1f22825d8))
* Rust bindings ([5d75ccf](https://github.com/ashvardanian/stringzilla/commit/5d75ccfe82cd676cc36653e79872a5b1fc2ad659)), closes [#66](https://github.com/ashvardanian/stringzilla/issues/66)
* Search benchmark ([f257df6](https://github.com/ashvardanian/stringzilla/commit/f257df671418f8276e98394bc9e709962987d761))
* Separate notebook for similarity benchmarks ([f3f2ae6](https://github.com/ashvardanian/stringzilla/commit/f3f2ae6c394922278484bda1e99b226a6d4ff5b1))
* Shuffling method in Python ([6b82311](https://github.com/ashvardanian/stringzilla/commit/6b82311f8c12afe731eccab36642fabe6c327cde))
* Slices and rich comparisons ([d2d8de9](https://github.com/ashvardanian/stringzilla/commit/d2d8de9707ebd659fd425efd89bd25f7f4c74c1c))
* small string optimization in C & Cpp ([a0986e9](https://github.com/ashvardanian/stringzilla/commit/a0986e92c24248410e68aadb367af51a590fdee1))
* Sorting functionality for C++ ([39cc4d4](https://github.com/ashvardanian/stringzilla/commit/39cc4d40e6faf7628d2df34f7a1d99723b9bdec5))
* Split functionality ([c3e28c9](https://github.com/ashvardanian/stringzilla/commit/c3e28c954174c5d48337f78c5dda635d9af8c9cb))
* Split into consecutive slices ([f984397](https://github.com/ashvardanian/stringzilla/commit/f984397d16f3640bf212431af09a93ad81180f9c))
* Split ranges ([c591599](https://github.com/ashvardanian/stringzilla/commit/c5915999f08b69931c9249718b49e0666fc41842))
* Split ranges ([ca5e95b](https://github.com/ashvardanian/stringzilla/commit/ca5e95b1ef0f3ce9263b632372fd901539eb9055))
* SSE and Arm variants of CRC32 ([674da60](https://github.com/ashvardanian/stringzilla/commit/674da60244e283845453a874b44d19e8cf7c4369))
* STL compatibility tests ([5281628](https://github.com/ashvardanian/stringzilla/commit/52816283ec98d84b44f8c4ea7af76e076a237d91))
* String conversion functionality ([46ef2b7](https://github.com/ashvardanian/stringzilla/commit/46ef2b708de98ac7c17ef5aa0a5771f5520ca1aa))
* String literals, reverse iterators ([9a48ba2](https://github.com/ashvardanian/stringzilla/commit/9a48ba24dc87ac98553d599c929e62f30fd16a55))
* strippers on both sides ([782cffb](https://github.com/ashvardanian/stringzilla/commit/782cffb4c5e6b72cc566726b576fcfdb707e5c10))
* Subscript methods ([8c6ae0a](https://github.com/ashvardanian/stringzilla/commit/8c6ae0a8c2599ce33b94ef77e6101b6e8ef2a513))
* support of negative slices ([76ebcc4](https://github.com/ashvardanian/stringzilla/commit/76ebcc483605a0ce2312804abc6ad0732b248e3c))
* SwiftPM binding to C ([3940549](https://github.com/ashvardanian/stringzilla/commit/39405490c834677647c94172fb62414dae7bdfa6))
* test for slice operator ([70edef1](https://github.com/ashvardanian/stringzilla/commit/70edef1fe6ef906ef5df2032d4d4fc4dcde8ab92))
* tests for slices ([374fc0b](https://github.com/ashvardanian/stringzilla/commit/374fc0b7d3df8e2630d887b760f0463e750e5a43))
* tests for Slices ([a103c27](https://github.com/ashvardanian/stringzilla/commit/a103c27c61b9679a037fc3324aa6e4569a61b1ea))
* Vectorized `count` ([ef067d8](https://github.com/ashvardanian/stringzilla/commit/ef067d805b7678f1db84ebd55ab4994bb0e351df))
* Vectorized `split` for Python ([69b1e1a](https://github.com/ashvardanian/stringzilla/commit/69b1e1a53d69e00ece4922feb7c0bce9971c94be))
* Windows support ([79e0f47](https://github.com/ashvardanian/stringzilla/commit/79e0f476ef8637c54f52f7ef05e5b6772b4d4582))

### Break

* `sz_string_erase` to return delta ([7f01630](https://github.com/ashvardanian/stringzilla/commit/7f01630fbb9079adebea876a02e3b8408bf70d48))
* Avoiding LibC and new API ([efafbbf](https://github.com/ashvardanian/stringzilla/commit/efafbbf0687f1d315c94b54b08e5b93f91e88be0))
* Deprecate multi-source `Strs`; split tests ([1e09400](https://github.com/ashvardanian/stringzilla/commit/1e09400fe6e07936b9679a35731ab87819c5f8ac))
* New testing suite ([927bff1](https://github.com/ashvardanian/stringzilla/commit/927bff1f372da6702242fea871a5cb1142221a92))
* r-prefixed names for reverse order ([7f1e8c4](https://github.com/ashvardanian/stringzilla/commit/7f1e8c4a4fdb104a51ef97b37a5a5bfa21950265))
* rename C++ `split` to `partition` for consistency ([d8f1940](https://github.com/ashvardanian/stringzilla/commit/d8f194024169ee7d1362a3a7d5461329890d5311))
* Replace `append` -> `expand` ([bb02881](https://github.com/ashvardanian/stringzilla/commit/bb02881979e8ab1e8009b0bdbdeecfe278016165))
* Shorter function prefixes ([c0e129d](https://github.com/ashvardanian/stringzilla/commit/c0e129d8289d5df6ec65b29d2f90ec55d8a19ca5))
* Use two Rabin rolling hashes ([f4980d9](https://github.com/ashvardanian/stringzilla/commit/f4980d915d1f5b567cdef564a384fc6ab471e83f))

### Build

* Released 1.0.0 [skip ci] ([1e6b0f6](https://github.com/ashvardanian/stringzilla/commit/1e6b0f675c1b749024ee3ae2ab364672cd0016f7))
* Released 1.0.1 [skip ci] ([ab185a6](https://github.com/ashvardanian/stringzilla/commit/ab185a6dc01b4ebe69c0d54a7989b54b39f969f6))
* Released 1.0.2 [skip ci] ([dc4ce27](https://github.com/ashvardanian/stringzilla/commit/dc4ce2740e57e5ede6478f2637faa8cdc5f345e1))
* Released 1.0.3 [skip ci] ([0280ca6](https://github.com/ashvardanian/stringzilla/commit/0280ca60abeab793ee97d8778e201b3ac95dd11b))
* Released 1.1.0 [skip ci] ([22682e7](https://github.com/ashvardanian/stringzilla/commit/22682e732beafb5430b1186da9b6474ee37949b5))
* Released 1.1.1 [skip ci] ([ff64dcc](https://github.com/ashvardanian/stringzilla/commit/ff64dcc7207375416da3ec5b9e9fc15c1177bc8d))
* Released 1.1.2 [skip ci] ([8d2436d](https://github.com/ashvardanian/stringzilla/commit/8d2436dfeb8c62ff2aece8d9cc3650990aba1c1f))
* Released 1.1.3 [skip ci] ([3136ac8](https://github.com/ashvardanian/stringzilla/commit/3136ac868cdee2e529e6f4888c611eab3fe9bd3c))
* Released 1.2.0 [skip ci] ([085b89b](https://github.com/ashvardanian/stringzilla/commit/085b89ba046f7abf0552e770071a859d95d10b1c))
* Released 1.2.1 [skip ci] ([075ce13](https://github.com/ashvardanian/stringzilla/commit/075ce1385aef1b4a781716c85e4b36c9e91fe6cf))
* Released 1.2.2 [skip ci] ([ddac709](https://github.com/ashvardanian/stringzilla/commit/ddac7099cf50a21a99b1a432ec2dab1c09ef80df))
* Released 2.0.0 [skip ci] ([bc30dcf](https://github.com/ashvardanian/stringzilla/commit/bc30dcfdfa480bafde28264f1958cd8e7bd1d91e))
* Released 2.0.1 [skip ci] ([e44faed](https://github.com/ashvardanian/stringzilla/commit/e44faed6fffa8175b2ed4afb262efd6672f1ee08))
* Released 2.0.2 [skip ci] ([74bce88](https://github.com/ashvardanian/stringzilla/commit/74bce88200a6119cc43a9bd4e32f5b0b1328cf21))
* Released 2.0.3 [skip ci] ([d728848](https://github.com/ashvardanian/stringzilla/commit/d728848723ecbe5cec8fd47ce5e45fad7f2bd0ff))
* Released 2.0.4 [skip ci] ([7d0de91](https://github.com/ashvardanian/stringzilla/commit/7d0de911fd9a851175be5e8ea247d79df0dfe198))

### Docs

* Add Apache 2.0 LICENSE ([d9a52df](https://github.com/ashvardanian/stringzilla/commit/d9a52df7b256283105bc5381e566d61761be7e17))
* Add development plans ([cf81e41](https://github.com/ashvardanian/stringzilla/commit/cf81e413075560b43f34173deca9473db222e931))
* Annotate SWAR methods ([8bd2c20](https://github.com/ashvardanian/stringzilla/commit/8bd2c20c0859b0e80cf3302d3385963c002faadc))
* benchmark against BioPython ([c1b85bd](https://github.com/ashvardanian/stringzilla/commit/c1b85bdf90054278e525a97d6e633eb0d6c00c3a))
* Build instructions and contribution guide ([a7883aa](https://github.com/ashvardanian/stringzilla/commit/a7883aaa151a9dd87be196968a1f6d0bb9202d2d))
* correct SSO size in `libc++` ([86ba553](https://github.com/ashvardanian/stringzilla/commit/86ba5533db7bd0cc302050d568c38d77410ba172))
* Extend algorithms ([266c017](https://github.com/ashvardanian/stringzilla/commit/266c01710dddf71fc44800f36c2f992ca9735f87))
* Improved intro ([034260b](https://github.com/ashvardanian/stringzilla/commit/034260b1b6fec373cec3e101cb1aaa0c28b0d868))
* Less sections ([371c24f](https://github.com/ashvardanian/stringzilla/commit/371c24f65c5d1867a8cc417d0c51264da8e17d79))
* Library description ([40dd6f5](https://github.com/ashvardanian/stringzilla/commit/40dd6f56b37b56aad4d47ca73a52735070af9782))
* Linking issues and refreshing C part ([84bc1f5](https://github.com/ashvardanian/stringzilla/commit/84bc1f55b4f161e1b76b4969d8eb6867ce289c26))
* list performance considerations ([0b61591](https://github.com/ashvardanian/stringzilla/commit/0b61591bec153361aa1dff9139b0c940dbf1baae))
* Major improvements for hashing ([c6110b5](https://github.com/ashvardanian/stringzilla/commit/c6110b5890fa6de023c0d5fc7d39c3aa0e921293))
* Make front page easier on the eye ([edc6763](https://github.com/ashvardanian/stringzilla/commit/edc67632f126b691699351b4f208803642933cdf))
* More benchmarking instructions ([4ef7d64](https://github.com/ashvardanian/stringzilla/commit/4ef7d6477841ac0b6991642f27ace05f5b636906))
* More datasets for benchmarks ([87d1973](https://github.com/ashvardanian/stringzilla/commit/87d1973e6f7a05b8540fdfe3e9db0fd03b753c67))
* README and warnings ([f4348e4](https://github.com/ashvardanian/stringzilla/commit/f4348e48b8a5971c2dc16decf74b7cd77cea1c86))
* recommending VSCode extensions ([b19a186](https://github.com/ashvardanian/stringzilla/commit/b19a186897ca3802f7f4fe2c64aac252be803875))
* Refined README ([3caf621](https://github.com/ashvardanian/stringzilla/commit/3caf621596aa070f8720a315d9c07536ecd39d17))
* Refresh intro ([445f292](https://github.com/ashvardanian/stringzilla/commit/445f292ac17a4b935203d7fea3aa7a42c2d7e8d7))
* Restructure groups ([87c55b7](https://github.com/ashvardanian/stringzilla/commit/87c55b7b753145ad27c7f3083280bed787f66d1f))
* Sections on random strings ([067ef21](https://github.com/ashvardanian/stringzilla/commit/067ef21aebb3d828f77e135745d79840e726b516))
* Sorting and PRNG benchmarks ([d7a6e33](https://github.com/ashvardanian/stringzilla/commit/d7a6e33a8ea1ba68242ef4513171499bbbcc3c13))
* spelling ([49b70e8](https://github.com/ashvardanian/stringzilla/commit/49b70e8f9c1f090b85791107da4c24f0f5ee2f19))
* Spelling ([95c9fcf](https://github.com/ashvardanian/stringzilla/commit/95c9fcf8d507eea15fe5ba2450ac942ba764fa6d))
* Suggesting STL API extensions ([6094006](https://github.com/ashvardanian/stringzilla/commit/60940064aeeabfe60cc6e6a62e00f38b9e03668a))
* Update [skip release] ([1b336ee](https://github.com/ashvardanian/stringzilla/commit/1b336eee886c84d6afda9519f493432f3a4cfe47))
* Update LICENSE and table ([76d0c1f](https://github.com/ashvardanian/stringzilla/commit/76d0c1f8b48a983baa9cd70fc63656da19284755))
* Update README.md ([20de986](https://github.com/ashvardanian/stringzilla/commit/20de986212b2afda9f89958f0114ecba1a79c019))
* Update table [skip release] ([cdf425a](https://github.com/ashvardanian/stringzilla/commit/cdf425aa6161fb3c8be8160be4ddcf6e5c0d1a5e))

### Fix

* `comparator` function signature ([635ce6e](https://github.com/ashvardanian/stringzilla/commit/635ce6e1894ec12fa68e6333b32f4f7adfb6c315))
* `length` location assuming little-endian hardware ([e584f8b](https://github.com/ashvardanian/stringzilla/commit/e584f8bf79e363668afb30724451e099622604bb))
* `misaligned_len` estimate ([90ea05d](https://github.com/ashvardanian/stringzilla/commit/90ea05d217ebb7f7662a5a532c4196a70e8b7404))
* `qsort_r` argument order ([eb7c8f8](https://github.com/ashvardanian/stringzilla/commit/eb7c8f891a84e77294f27781cff360c2fb87b1ec))
* `qsort_s` vs `qsort_r` on MacOS ([7aaf624](https://github.com/ashvardanian/stringzilla/commit/7aaf624343008f2d862dc5f12110a32a1a20f534))
* `static_cast` for Clang builds ([246d79d](https://github.com/ashvardanian/stringzilla/commit/246d79dd0229bd655d4724c366695c93d2c27f40))
* `strzl_sort_config_t` symbol ([0e6cda7](https://github.com/ashvardanian/stringzilla/commit/0e6cda78755b57b23064aa5533a367e7546c8c52))
* `sz_move_serial` in reverse order ([6bbc963](https://github.com/ashvardanian/stringzilla/commit/6bbc9636ff5d10cfbe31509bf211151a3c6fe74b))
* `sz_size_bit_ceil(1)` == 1 ([5f19a16](https://github.com/ashvardanian/stringzilla/commit/5f19a164cd103be5aab436bddebb0183ea15200d))
* `sz_size_bit_ceil` and missing constructors ([174fc15](https://github.com/ashvardanian/stringzilla/commit/174fc150e2cc68925a4720e42e3540457c9ed979))
* `sz_size_t` size in MSVC ([d0ad4aa](https://github.com/ashvardanian/stringzilla/commit/d0ad4aa1deedf963ba836b662a2a18eda40b01f4))
* `sz::string` constructors ([805b99a](https://github.com/ashvardanian/stringzilla/commit/805b99a72c8cde876de60fba38d63ddcf74f0e96))
* 32-bit integer overflow in `sz_rfind_avx512` ([2833707](https://github.com/ashvardanian/stringzilla/commit/283370738d715a6fdd03acdb35eecb454492bf1f))
* Alignment score Py test ([3521a8f](https://github.com/ashvardanian/stringzilla/commit/3521a8f160792bbc7a40a69bdafae8ed9ffb14e8))
* Allow no args to `split` ([dd5dd1c](https://github.com/ashvardanian/stringzilla/commit/dd5dd1c11f61f69031412d86f14967b60baa750f))
* Applying sort order in Python ([73e1fc7](https://github.com/ashvardanian/stringzilla/commit/73e1fc7eaca606badcf8f94dcfe77d8fb1a3c90d))
* assertion logging condition ([1c1f4f7](https://github.com/ashvardanian/stringzilla/commit/1c1f4f75dff2c5c2472c9ca6e03d7d1a266d8c70))
* AVX-512 compilation and naming ([82820d4](https://github.com/ashvardanian/stringzilla/commit/82820d459c28aac5c7433a0f81fd9234ce265122))
* AVX-512 tests and cheaper copy construction ([08810e9](https://github.com/ashvardanian/stringzilla/commit/08810e961e04215dfc95630f977daa7b3260417d))
* AVX2 compilation ([3f32d89](https://github.com/ashvardanian/stringzilla/commit/3f32d890a8e561d864152f6e1a65f1ecafad06a1))
* Benchmarks compilation ([204444f](https://github.com/ashvardanian/stringzilla/commit/204444ff9befb044d74d0d6fc7446e0ec11f282a))
* Boundary condition with misaligned loads ([0d39e81](https://github.com/ashvardanian/stringzilla/commit/0d39e81f9c1f65748250371363bdec0925840636))
* Bounded Levenstein distance ([a875b4a](https://github.com/ashvardanian/stringzilla/commit/a875b4a3c70a1556646a7b167506715bd70eae66))
* Buffer width for NodeJS bindings ([3871bbf](https://github.com/ashvardanian/stringzilla/commit/3871bbf3b0f60b783fa0a7656d3804df849710c0))
* bugs in assignment, initialization, ... (#63) ([b234e7c](https://github.com/ashvardanian/stringzilla/commit/b234e7cf61ae8302e15bb234dc702992de1ced15)), closes [#63](https://github.com/ashvardanian/stringzilla/issues/63)
* C++ `rfind` second argument of two ([a243ef1](https://github.com/ashvardanian/stringzilla/commit/a243ef1c9958e0fd2f8f13b822f7dd400b868846))
* Cast to `UInt64` in Swift ([2a78408](https://github.com/ashvardanian/stringzilla/commit/2a78408a99f11fa4b20962323e6994f7b2f5cf68))
* Comparator ([c64dafa](https://github.com/ashvardanian/stringzilla/commit/c64dafa348a58695c10ae314435df76b5bda1650))
* Compilation ([b896f77](https://github.com/ashvardanian/stringzilla/commit/b896f77672c4a6c6c0a666493508f6dbca8771c8))
* Compilation ([71ff4df](https://github.com/ashvardanian/stringzilla/commit/71ff4dfbc0bbace33dfed9234c71ebd1d96b14d4))
* Compilation and warnings ([df47d8a](https://github.com/ashvardanian/stringzilla/commit/df47d8aa57047ebbb657cb3ca5caf831c118ab5c))
* Compilation for older C++ standards ([5629c0b](https://github.com/ashvardanian/stringzilla/commit/5629c0b42a1d32b40bec450751693abd78f265be))
* Compilation on GCC11 ([4da34a8](https://github.com/ashvardanian/stringzilla/commit/4da34a8a132ad7de31cf3fcc696044334cc20da3))
* Compilation on MacOS ([c1d138c](https://github.com/ashvardanian/stringzilla/commit/c1d138ca5f5fb43e3da2953291562b3c44fcbb1d))
* Constructing from string and moves ([9e3aa95](https://github.com/ashvardanian/stringzilla/commit/9e3aa952d8f296b1a3776fd860b6f18749aa45ce))
* Counting substrings with `allowoverlap` ([8f35f54](https://github.com/ashvardanian/stringzilla/commit/8f35f54d8ebc3d552e82a3bad8dbdbb8c1b3903a))
* Cpp20-only constructor ([62e6788](https://github.com/ashvardanian/stringzilla/commit/62e678854acdef2b01efe411765082d7f1e4440a))
* Default argument sign for NW. scores ([3cb1f7a](https://github.com/ashvardanian/stringzilla/commit/3cb1f7a0daf3475ef9507c7d1895d6f7ca83c958))
* Exit search loop in benchmarks ([875200e](https://github.com/ashvardanian/stringzilla/commit/875200edae8279dc668bd21136df580dff271bfd))
* Experimental hashes names ([ff6a660](https://github.com/ashvardanian/stringzilla/commit/ff6a660ceb7bd14e1b0cdc05b20dd3601d4f4b53))
* Global `rsplit` return type ([e00963e](https://github.com/ashvardanian/stringzilla/commit/e00963e38192714253c88b7e2b823da86e216990))
* Identical overlapping semantics to Python ([f1ffe51](https://github.com/ashvardanian/stringzilla/commit/f1ffe518ffa3c67567d27c6d78ae22f7fefd98b3))
* include <stdexcept> for `out_of_range` ([0e5b85b](https://github.com/ashvardanian/stringzilla/commit/0e5b85b671917a8cb84ca29d22fb5a1ccdf9f3f6))
* Invoking the wrong constructor in tests ([8d450f5](https://github.com/ashvardanian/stringzilla/commit/8d450f574330d4753f4d3f2b6304c57a8eb8aa04))
* JS compilation and missing symbols ([582d5ab](https://github.com/ashvardanian/stringzilla/commit/582d5ab41046e02839880d663dca81eeac27e280))
* JS compilation and missing symbols ([61ed1a1](https://github.com/ashvardanian/stringzilla/commit/61ed1a14e3d517f753384add47f25c07ba86a82f))
* leaks and semantics, testing for memory leaks ([e7f0858](https://github.com/ashvardanian/stringzilla/commit/e7f0858e8bf9d716461aaee8751aec257078792e))
* Masking last comparisons in AVX-512 ([d5f6338](https://github.com/ashvardanian/stringzilla/commit/d5f6338539de3c3253bf65f976953b7f89cc7594))
* Matching Python string semantics ([1067090](https://github.com/ashvardanian/stringzilla/commit/10670905d1abd930ab0798045aa8140e95a44aab))
* memory access after `free` ([ec2e9b2](https://github.com/ashvardanian/stringzilla/commit/ec2e9b2f74373c403423b34574d58128d34d1c5b))
* Memory CPython memory allocations ([49030d4](https://github.com/ashvardanian/stringzilla/commit/49030d4af00b7eb48daa07ae8d7e6c3baeefb231))
* Memory leak and extra `strlen` calls ([a013147](https://github.com/ashvardanian/stringzilla/commit/a0131470ef77f40b1820124d7bef59d05624beda))
* Minor merge issues ([cfa540b](https://github.com/ashvardanian/stringzilla/commit/cfa540b638d2ac4ed415d8f7ccd146f3ce8567bf))
* Misaligned count and non C99 features ([1efd896](https://github.com/ashvardanian/stringzilla/commit/1efd8961d4ae1207058acbd407fcfed21bcb9e3b))
* Missing `__builtin_clzll` symbol ([bd4496a](https://github.com/ashvardanian/stringzilla/commit/bd4496a405823b687f43a7b093f180ba2e3cfc14))
* Missing header and test path ([303390e](https://github.com/ashvardanian/stringzilla/commit/303390e4b56f3acadd1d8d797b7b883cf2a2867b))
* Missing initialization for on-stack string ([5d85174](https://github.com/ashvardanian/stringzilla/commit/5d85174e8aef79d8390a137324e1da82c544be02))
* MSVC-compliant initialization ([ef2d66c](https://github.com/ashvardanian/stringzilla/commit/ef2d66c4fcbe5e56e29c5b16f3d2f420542c2185))
* Normalizing offsets in Py ([351567f](https://github.com/ashvardanian/stringzilla/commit/351567f44e0fb59f307710463acac1ed922dcb87))
* NPM build warnings ([da72015](https://github.com/ashvardanian/stringzilla/commit/da72015dbfcae4bae63176e616dda64d1db108c5))
* NPM build warnings ([b2e4b3e](https://github.com/ashvardanian/stringzilla/commit/b2e4b3e0bccbe1a413d6b6c73c8064ae5e3bd69b))
* Overflow bug in Arm NEON ([cdcc3b7](https://github.com/ashvardanian/stringzilla/commit/cdcc3b7e82f6b77cbdc344f12f1ee2c834048435))
* Overflow on consecutive matches ([f4ab1ea](https://github.com/ashvardanian/stringzilla/commit/f4ab1eab2cb8686c8a146414a5c1d6a5d7427100))
* Passing builds with strictest settings ([629a280](https://github.com/ashvardanian/stringzilla/commit/629a280c7ec1df9737ef85ba7a2785f453f00dda))
* Propagating definitions ([847763f](https://github.com/ashvardanian/stringzilla/commit/847763f7b47cb3de35ceac14db91021ecd8cb740))
* Python bindings passing tests ([e995121](https://github.com/ashvardanian/stringzilla/commit/e995121ca5c4d420cea2b8742338a79ef309eac0))
* python slices of splits used incorrect offsets. ([c7e54e4](https://github.com/ashvardanian/stringzilla/commit/c7e54e4bc123938575a105dbf38d427223c6cd03))
* Python sort ([a1d32d8](https://github.com/ashvardanian/stringzilla/commit/a1d32d8cfd7d40e19e2f6a4c8cb7a1b5c0f0750b))
* Python tests passing ([9cd14ab](https://github.com/ashvardanian/stringzilla/commit/9cd14abdeeb0b666618de58340a8e9667f601b1b))
* Random generator type resolution ([16da145](https://github.com/ashvardanian/stringzilla/commit/16da1451823815b3cbe1471ee055609917583e19))
* remove unnecessary include ([1f863e7](https://github.com/ashvardanian/stringzilla/commit/1f863e7b8c6736a4f976e13297aad5d070f4c8b2))
* reporting if step defined ([6af744c](https://github.com/ashvardanian/stringzilla/commit/6af744cbc3edef0a7cd06f95a64e4c01876a2a92))
* Returning `NULL` without setting the error ([cfffaeb](https://github.com/ashvardanian/stringzilla/commit/cfffaeb3734be9c9d914a58f1ed7f8e348f1046d))
* Reverse order ([250a97e](https://github.com/ashvardanian/stringzilla/commit/250a97ea1da53f8d2ca4f03dd28f67575971b01c))
* Sime constructors in C++11 can't be `constexpr` ([9fbbeb8](https://github.com/ashvardanian/stringzilla/commit/9fbbeb8e720cb2d85bdb341bd16a25e49ec0bd18))
* Skipping `misaligned` region twice ([2457915](https://github.com/ashvardanian/stringzilla/commit/2457915d8b2825b1be85b0a7bd5627d3a4f8c638))
* slice function logic ([a48609b](https://github.com/ashvardanian/stringzilla/commit/a48609bb926f3284bfd33fd52976b30561bb26f3))
* Slices ([8449dda](https://github.com/ashvardanian/stringzilla/commit/8449ddaf695d01aa033af6c81c04af80c894c17d))
* Sort in ascending order ([d049043](https://github.com/ashvardanian/stringzilla/commit/d049043ccb230a29f51e219058755a6927aaf3b3))
* Sort test ([7aa2c0b](https://github.com/ashvardanian/stringzilla/commit/7aa2c0b7315ccdfd9cee84be6d331714ba751691))
* speculative_neon_t count ([571e0a5](https://github.com/ashvardanian/stringzilla/commit/571e0a5269f15c339e176d43f1d7c6e439d8ff8c))
* strzl_sort ([612373b](https://github.com/ashvardanian/stringzilla/commit/612373ba85eec048a8b376d9247470574acc616c))
* SWAR search bug ([b62b9c6](https://github.com/ashvardanian/stringzilla/commit/b62b9c666c8970bb4219f1227b225ecb44a0d707))
* Swift build in Xcode ([3321c85](https://github.com/ashvardanian/stringzilla/commit/3321c8530406f816f2ee7f1f5077855f60a663aa))
* Switch to shared mappings to reduce RAM use ([07bc055](https://github.com/ashvardanian/stringzilla/commit/07bc05532f91dbb49c0b3dd350701fa70fe337a9))
* Throughput calculation for rfind ([1c48a42](https://github.com/ashvardanian/stringzilla/commit/1c48a42f44bd01a833712df893d9e5e3d2cb55d6))
* Use different functions depending on arch ([2ad5790](https://github.com/ashvardanian/stringzilla/commit/2ad5790c20cdf83afc7ab766f9267bd3b2c853f7))
* Use different functions depending on arch ([327a149](https://github.com/ashvardanian/stringzilla/commit/327a149037782df6c07d44974b31009dbfa63727))
* Using the right pragma for GCC ivdep ([ca3b62d](https://github.com/ashvardanian/stringzilla/commit/ca3b62defe47994cd2ce574ffd7bc310a02a5ae3))
* wrong intrinsic for non-AVX512 x86 ([550fb38](https://github.com/ashvardanian/stringzilla/commit/550fb38593c637cf6faf2cb743641d91a4394964))

### Fixes

* RNG instantiation UB, reducing avoiding compiler optimization for the callback. ([1ae31a0](https://github.com/ashvardanian/stringzilla/commit/1ae31a0c37447f55b48ed779e530452af4f14813))

### Format

* Compact code style ([4ddee17](https://github.com/ashvardanian/stringzilla/commit/4ddee17153d07e9381619f6a34c05e5e78d0292b))

### Improve

* `_sz_locate_needle_anomalies` for Arm ([a8df0f9](https://github.com/ashvardanian/stringzilla/commit/a8df0f991644d033250184619f8747fe051a437b))
* `_sz_locate_needle_anomalies` for AVX ([e453ab8](https://github.com/ashvardanian/stringzilla/commit/e453ab86745277ad9c8a3decc0065845e5fc3e80))
* `sz::` and `std::string` are mostly compatible ([41570d6](https://github.com/ashvardanian/stringzilla/commit/41570d6e57b9f62c849c452640383eefd6fcb561))
* `vtbl`-based charset search for NEON ([8ed148e](https://github.com/ashvardanian/stringzilla/commit/8ed148e7d126bae25240aa6637b607d66ae4d263))
* Apply Swift API to both strings and buffers ([d52bdb3](https://github.com/ashvardanian/stringzilla/commit/d52bdb389546e8f4ae459196670977013a321420))
* Avoid inner `for`-loop on Arm NEON ([eafe41c](https://github.com/ashvardanian/stringzilla/commit/eafe41cba0b227395f311be676413f39c15efb42))
* avoiding nested loop in AVX2 ([ac7012a](https://github.com/ashvardanian/stringzilla/commit/ac7012a2796e613af75fde91e205ef55fb84944b))
* AVX2 and AVX512 backends ([462a426](https://github.com/ashvardanian/stringzilla/commit/462a4264863fd9e9899276a124c704ede1add4d3))
* BitScan dispatch on Windows ([7e2ca96](https://github.com/ashvardanian/stringzilla/commit/7e2ca96b76db453fca2601a2b72c2d57153e18b1))
* Broader benchmarks ([4014af9](https://github.com/ashvardanian/stringzilla/commit/4014af9f74f0f7e1a0ca6daec7638fd93e7b742d))
* Bypass GIL on long tasks ([59f41f9](https://github.com/ashvardanian/stringzilla/commit/59f41f9a25f2ec364974cef2f72e9273787f3d61))
* C++ tests structure ([f6bec48](https://github.com/ashvardanian/stringzilla/commit/f6bec488380f489fd99872f817f6d39d9504bd94))
* Compatibility with STL strings ([deafa73](https://github.com/ashvardanian/stringzilla/commit/deafa732080d965ba1774ed3747c1693fdf79f06))
* Deduplicate charset-matching on NEON ([7c4e169](https://github.com/ashvardanian/stringzilla/commit/7c4e16928f722e8110804816b55a879fcc31c277))
* drop `ctype`, `stddef`, `stdint` headers ([245da6d](https://github.com/ashvardanian/stringzilla/commit/245da6df67df2a51cca453ff8fd5dd48f20f5994))
* Drop useless AVX-512 parts ([7c104ec](https://github.com/ashvardanian/stringzilla/commit/7c104ec02a943cd0029bc6aac04960e1975f69f4))
* Extend benchmarks ([3838a85](https://github.com/ashvardanian/stringzilla/commit/3838a857d5d8c2eeebc09d787672d57ddbc02662))
* Faster `Str` constructor ([4796afb](https://github.com/ashvardanian/stringzilla/commit/4796afb21b7dfdc3efa4b3f4adfc60bb69013dd4))
* Faster Horspool initialization ([156b814](https://github.com/ashvardanian/stringzilla/commit/156b814848fa5ead86d11889c6bc2e3c15870bdf))
* Identical bit-counting intrinsics ([c934fb5](https://github.com/ashvardanian/stringzilla/commit/c934fb5af3c260aef4c530cb62e7f47a2bb02e35))
* Intro-sort ([644630b](https://github.com/ashvardanian/stringzilla/commit/644630b852ad43be6ba092c3091b458446688c4c))
* Less overhead per benchmark cycle ([6f1bde6](https://github.com/ashvardanian/stringzilla/commit/6f1bde6273ee821d5eea457ece517908385f7a01))
* Loading large files into memory ([c041962](https://github.com/ashvardanian/stringzilla/commit/c041962df9cd9994a0217c9d1d69b40da82db3d8))
* Mimic hyper-scalar code ([21f143c](https://github.com/ashvardanian/stringzilla/commit/21f143c5cf5e337245bee2bb72a1104983570858))
* Missing CPUID checks ([139e4fd](https://github.com/ashvardanian/stringzilla/commit/139e4fd52c115224606b05e62ec675eb56cded61))
* move `skip_length` into the matcher ([8905a56](https://github.com/ashvardanian/stringzilla/commit/8905a5671035a22bfc8f11856de7840c2359afd0))
* NW AVX-512 alignment ([e49cacb](https://github.com/ashvardanian/stringzilla/commit/e49cacbdb4762d06b636d836bc12d825b17b3c13))
* parity between `std` and `sz` string views ([487edd3](https://github.com/ashvardanian/stringzilla/commit/487edd32a8e99dcc6bb077ba8dfc944ab92f189d))
* Passing basic tests ([ee0ab2d](https://github.com/ashvardanian/stringzilla/commit/ee0ab2d138a4c127f7af6a9d2716dc04040791ea))
* Poison ranges with ASAN ([4703fad](https://github.com/ashvardanian/stringzilla/commit/4703fad44d7f2bfcebec8603c6ccf1763ff0317e))
* Polish xxHash ([ca085df](https://github.com/ashvardanian/stringzilla/commit/ca085df4436a87ae3dfc5fd8ba0a7d0a8116a04e))
* Preserving failed tests to disks ([9cd5c21](https://github.com/ashvardanian/stringzilla/commit/9cd5c218a64c052fbd8ccef6306f5c1be1d5a54b))
* Raita-style midpoint check in AVX-512 ([df683d9](https://github.com/ashvardanian/stringzilla/commit/df683d905e3adcc8f16b8e358235f57ec8f78d14))
* random generation and token-level benchmarks ([be54519](https://github.com/ashvardanian/stringzilla/commit/be545196bcac13e7c1fd353b1fa85b3d0d52306b))
* Rearrange tests and benchmarks ([8564852](https://github.com/ashvardanian/stringzilla/commit/856485223075872743cbf6d521c6a09bb0dbe601))
* Reduce `vmaxvq_u8` usage ([982ca69](https://github.com/ashvardanian/stringzilla/commit/982ca6929f0ebce52e0749bb869a1f7d451aec14))
* Reduce `vmaxvq_u8` usage ([53cb5ce](https://github.com/ashvardanian/stringzilla/commit/53cb5ce8b65f7e28e73643ee84e39f8150ee7d0d))
* Reduce number of loads/stores in scoring ([0c860c8](https://github.com/ashvardanian/stringzilla/commit/0c860c834f5d0c528ecdc95f58b72402e2b7d765))
* Reducing swaps in Radix sort ([3eac160](https://github.com/ashvardanian/stringzilla/commit/3eac1601a1d8cb88db9f6e7863c90f53bdf98ca1)), closes [#45](https://github.com/ashvardanian/stringzilla/issues/45)
* Refactoring AVX-512 control-flow for simplicity ([b42394c](https://github.com/ashvardanian/stringzilla/commit/b42394cce6e26b461134898442653bd15b94c71f))
* Remove deprecated code ([e3adaa4](https://github.com/ashvardanian/stringzilla/commit/e3adaa44f98df0127072f00724ae07500a1b46fb))
* Reorganizing for readability ([9dd1f8c](https://github.com/ashvardanian/stringzilla/commit/9dd1f8cdf3ef5c79caf4a0ff3309a9b53e2091ed))
* Reuse the C shared lib for Swift ([bd1686d](https://github.com/ashvardanian/stringzilla/commit/bd1686da68e0550567663d9b2e7db01bbb339ce4))
* Rust Bindings (#74) ([8200ca3](https://github.com/ashvardanian/stringzilla/commit/8200ca3894f575d772754c261b769d5852295877)), closes [#74](https://github.com/ashvardanian/stringzilla/issues/74)
* Same functions as global and members ([4a22ea8](https://github.com/ashvardanian/stringzilla/commit/4a22ea8984173a3f71704e47a8b8dd31213f3808))
* serial move implementation ([9173ca0](https://github.com/ashvardanian/stringzilla/commit/9173ca0f55c61cb1221bc783138185f4a62c443d))
* shorter tests with `std::string_view` ([d9977b0](https://github.com/ashvardanian/stringzilla/commit/d9977b0d07d4a3a776fb39011a31e0f71976a005))
* Silence type-casting warnings ([dbe4db3](https://github.com/ashvardanian/stringzilla/commit/dbe4db30845df932e34b5518133916bd094a14b3))
* Similarity search benchmarks ([d2e8da2](https://github.com/ashvardanian/stringzilla/commit/d2e8da242b43846a34bf4ebd7518ded0a6c10549))
* SWAR search for normal order search ([6669b1e](https://github.com/ashvardanian/stringzilla/commit/6669b1e3f38b921aedaa4af01571fbddabb2fbc9))
* Test coverage ([c967582](https://github.com/ashvardanian/stringzilla/commit/c9675825d71592dec075f40633967bd833f99c72))
* Test reproducibility of the `shuffle` ([ce888cc](https://github.com/ashvardanian/stringzilla/commit/ce888ccaadd89b247d3f549d8590837c0b1fe52d))
* Testing suite ([50a2a2f](https://github.com/ashvardanian/stringzilla/commit/50a2a2fc159f36972423590cf4ba5865dc0a3775))
* Tests against Raita ([6a5b18b](https://github.com/ashvardanian/stringzilla/commit/6a5b18b7de77a518cba80d70a3c90e78e81a32c4))
* Use less temp. variables to count matches ([3245330](https://github.com/ashvardanian/stringzilla/commit/32453305cb9d7b84090a8a17979aafd8d82f9c08))
* Using Clang `modulemap`-s ([05d21c5](https://github.com/ashvardanian/stringzilla/commit/05d21c52661138201d7e3b519b75c7c0f9d16aa5))
* Vectorized function calls ([6cd5a69](https://github.com/ashvardanian/stringzilla/commit/6cd5a69096982d2b2c7761063f6e265260f5fac5))
* Window width as runtime argument ([3bd29ae](https://github.com/ashvardanian/stringzilla/commit/3bd29ae5dee4586ed174be8f4f4fda19a2e057d0))

### Make

* `AlwaysBreakBeforeMultilineStrings` ([1dabc3b](https://github.com/ashvardanian/stringzilla/commit/1dabc3ba77e62a1732b6d83d2aa286273118218c))
* `numpy` dependency ([2d825ba](https://github.com/ashvardanian/stringzilla/commit/2d825ba2cfca86ef3c906cfa25a612ba820d0068))
* Add GitHub CI ([ba333db](https://github.com/ashvardanian/stringzilla/commit/ba333dbcf5d432fa27e2c1f4f917eb28dd68977a))
* Add NumPy dependency ([2e928ba](https://github.com/ashvardanian/stringzilla/commit/2e928bab7421ded7b5f4bec7fbcb6679bdde7b6d))
* Adding `.npmignore` ([cf93dfd](https://github.com/ashvardanian/stringzilla/commit/cf93dfd60e0cdc69a93bff848794cb62bc53d184))
* Automate major releases ([987475e](https://github.com/ashvardanian/stringzilla/commit/987475e20edbcaa8c78afaac413a5d62ce453215))
* Build with different compilers at once ([0580219](https://github.com/ashvardanian/stringzilla/commit/05802192a563bcf752be13830de76ce3b2a6f049))
* Bump VERSION ([f221874](https://github.com/ashvardanian/stringzilla/commit/f2218744a370549fe14eaa888c2124db22359f96))
* Bump VERSION ([bebda9f](https://github.com/ashvardanian/stringzilla/commit/bebda9ff05848495d2ab3dad9de3a2d20ac1febd))
* C++17 default, build 11/14/17/20 ([156afae](https://github.com/ashvardanian/stringzilla/commit/156afae9a5a3f7a7302414782cd3493609989e12))
* Change CXX standard ([4f4e69b](https://github.com/ashvardanian/stringzilla/commit/4f4e69b5ed163c44de177c66030cf7f64e12475e))
* CI for Clang and MacOS ([3162760](https://github.com/ashvardanian/stringzilla/commit/31627607d3c39f745fa11d65eb57e0a50f2efbb5))
* Cleaning build caches on Windows ([01d209f](https://github.com/ashvardanian/stringzilla/commit/01d209f6f2ce87f429c22a7c8f2ccde86ebd199c))
* Colorful diagnostics ([0b8d9cd](https://github.com/ashvardanian/stringzilla/commit/0b8d9cdd6d424fa540c04ecb8441a856a1065363))
* Compile for different x86 generations ([ae7b119](https://github.com/ashvardanian/stringzilla/commit/ae7b11934c298e80072edb2b21f9001ceed1c0dc))
* Consistent compilation settings ([6f930ea](https://github.com/ashvardanian/stringzilla/commit/6f930ea703edddef9308e713a70b213631e91496))
* Deduplicate `.clang-format` settings ([3db6845](https://github.com/ashvardanian/stringzilla/commit/3db684571ffa93f8420d5bc62b7285bf10aa07f4))
* Define default build type ([4ce3d64](https://github.com/ashvardanian/stringzilla/commit/4ce3d641943c571a6434687ec46261eb33eaef0e))
* Dependencies for testing ([253a26d](https://github.com/ashvardanian/stringzilla/commit/253a26de2c1c70d69196833b62893eb58d5a8230))
* Deprecate old benchmarks ([b5b1f83](https://github.com/ashvardanian/stringzilla/commit/b5b1f833fd2dfe6e60db01217dcb025df9fdc98e))
* Don't build the library every time ([daaa93b](https://github.com/ashvardanian/stringzilla/commit/daaa93b8a1591f9fca2d3589383be24729c5f7eb))
* Enable DQ extensions for `sz_hashes_avx512` ([26e54c9](https://github.com/ashvardanian/stringzilla/commit/26e54c9cdd604c3fe8cd136e581163e034f8e182))
* Explicitly mark AVX sections ([53a4ef1](https://github.com/ashvardanian/stringzilla/commit/53a4ef1b69a65d36f0f82aef70fa84965938f279))
* Explicitly UTF-8 encoding on Windows ([6c323ea](https://github.com/ashvardanian/stringzilla/commit/6c323ea19ab813d93124ce1d0bfed0832693f7ff))
* Exporting lite builds without LibC ([a5ece39](https://github.com/ashvardanian/stringzilla/commit/a5ece39df940137a402ad282d631b0716d5d8876))
* Exporting lite builds without LibC ([dfba995](https://github.com/ashvardanian/stringzilla/commit/dfba99533f4ef7c9d4277352e82460d2dc546f1a))
* Fetch before rebase ([fda58df](https://github.com/ashvardanian/stringzilla/commit/fda58dfe268bec7f4279c9d607551cde1eb39a5c))
* Fix include paths ([d3c9025](https://github.com/ashvardanian/stringzilla/commit/d3c90255efc4948c17bcf7f84bd54b9fae77004f))
* Fix Windows PyPi releases ([0efaad1](https://github.com/ashvardanian/stringzilla/commit/0efaad194b1228dbc68eebc5eb2393ef701d1365))
* Formatting and docs ([416b885](https://github.com/ashvardanian/stringzilla/commit/416b885429d2eb97e6c677eaac0eba6de5ff9fc4))
* GitHub CI for tests with recent GCC ([48869d3](https://github.com/ashvardanian/stringzilla/commit/48869d3f62dc226a20aa690cbe7eae4787a8a9ae))
* Linking the standard libs in Swift ([6a25a8e](https://github.com/ashvardanian/stringzilla/commit/6a25a8e3c5a10716b7c0cb51a3f2a0bd5c03c5ee))
* Log ENV details if build fails ([8527f38](https://github.com/ashvardanian/stringzilla/commit/8527f386770eb8ee635395338adc6ecc47b35e51))
* Match directory structure of SimSIMD ([afac999](https://github.com/ashvardanian/stringzilla/commit/afac999380220b6d6c9ec0f191f339f29ed30cf0))
* Match directory structure of SimSIMD ([679f9e7](https://github.com/ashvardanian/stringzilla/commit/679f9e758ba181765a5473f7d5264d2c1372ec81))
* Matching only `version` at line start ([bb56b00](https://github.com/ashvardanian/stringzilla/commit/bb56b0079aceb491ee3a39330401b24519434a06))
* Move Python bindings ([e9ac4cb](https://github.com/ashvardanian/stringzilla/commit/e9ac4cb2e516c0b48f1f0e5f43c207b1359913b6))
* MSVC compatibility ([f776087](https://github.com/ashvardanian/stringzilla/commit/f776087ce005b4ecc2f21a5be4c9ce99976af77c))
* NumPy test dependencies ([53481a9](https://github.com/ashvardanian/stringzilla/commit/53481a9fa4b98b7ac7ac61dda5e2bfc719804f2e))
* Optimize `RelWithDebInfo` builds ([0ec4b0d](https://github.com/ashvardanian/stringzilla/commit/0ec4b0d8dce059528d4e4b5a47c7a0fdd1e81e72))
* Pass compilation flags depending on which architecture and compiler ([23846ef](https://github.com/ashvardanian/stringzilla/commit/23846ef733f6463fbb94a4d11296014e2e870662))
* passing empty C++ standard version ([6abf8b6](https://github.com/ashvardanian/stringzilla/commit/6abf8b61bf351aacde639b0a56ba68b9101bbd23))
* Position Independent Code ([2638c66](https://github.com/ashvardanian/stringzilla/commit/2638c66ae92cdd3076720b47be4b73930d7a54e5))
* PR head autoresolution ([b483e59](https://github.com/ashvardanian/stringzilla/commit/b483e595796cd61ff61d1726320f0c7abcc14d7a))
* Pre-set target hardware generation ([a9fe148](https://github.com/ashvardanian/stringzilla/commit/a9fe14806337d90b5e6c23a1183bd58a8f2d6f94))
* Publish Rust crates ([b954a55](https://github.com/ashvardanian/stringzilla/commit/b954a556b1d188003a63b70b5e6594a47e6d33ac))
* Publish StringZilla to NPM ([ff2e85b](https://github.com/ashvardanian/stringzilla/commit/ff2e85b94bc0943910254ba8a676fee22a563315))
* Remove `fuzz.py` ([50ab905](https://github.com/ashvardanian/stringzilla/commit/50ab905ae95ecdaeaeeea818879f72d1980d1a41))
* Remove PyBind11 dependency ([971890c](https://github.com/ashvardanian/stringzilla/commit/971890cd8c53f04ae56f823f8784bba04928a77e))
* sanitizers and silencing false warnings ([6f7d5c1](https://github.com/ashvardanian/stringzilla/commit/6f7d5c1e415055d1069472d262fc0f63e60427ff))
* Semantic Versioning ([4a21db7](https://github.com/ashvardanian/stringzilla/commit/4a21db78774fd391d798822b0162bb5583305dba))
* Separate source files ([9e75d04](https://github.com/ashvardanian/stringzilla/commit/9e75d04a585a56213adaf361d8296d4b6bbee5f7))
* Shift JavaScript CI ([534291f](https://github.com/ashvardanian/stringzilla/commit/534291f13021f6ebcbcca11ab6d2b820aa78dbe1))
* Swift CI and MacOS PyPa image ([9184a42](https://github.com/ashvardanian/stringzilla/commit/9184a42f01be208aca733d30f1bec02eacd432a9))
* Switch to pure C ([e8f7249](https://github.com/ashvardanian/stringzilla/commit/e8f724941136453586a88e862c3f0ab135b34f0f))
* Test cpp ([b4a89c5](https://github.com/ashvardanian/stringzilla/commit/b4a89c534776f86acb8b63c5b4c7c68ea487fc00))
* Update release tasks ([bc938c1](https://github.com/ashvardanian/stringzilla/commit/bc938c158b1bdce175bb28c08f36842018100675))
* Upload versioned files ([5e254b0](https://github.com/ashvardanian/stringzilla/commit/5e254b036fdceda7d777e627be5cdc03a8f4172c))
* Use Clang attribute pragmas ([33ba031](https://github.com/ashvardanian/stringzilla/commit/33ba031e7b470fdfba46826f919f2188cd3f536c))
* use newest SIMD for Python builds ([62c0012](https://github.com/ashvardanian/stringzilla/commit/62c0012e7e1e96ff773d0072592bd520a6fc61f8))
* VSCode launchers for any C++ benchmark ([6f0d799](https://github.com/ashvardanian/stringzilla/commit/6f0d79975ef0b46803cb4c7fc17392f943ca2361))
* Workaround for Swift CI ([bc1869a](https://github.com/ashvardanian/stringzilla/commit/bc1869a85293ff5aa6e5075475263002c43648eb)), closes [/github.com/swift-actions/setup-swift/issues/591#issuecomment-1685710678](https://github.com//github.com/swift-actions/setup-swift/issues/591/issues/issuecomment-1685710678)

### Refacot

* Styling ([e4177b2](https://github.com/ashvardanian/stringzilla/commit/e4177b291db6fbbe7c69cec40e3d7b092ed7488a))

### Refactor

* `on_stack`/`on_heap` to `internal`/`external` ([69e8b70](https://github.com/ashvardanian/stringzilla/commit/69e8b70273a022f4249b45c5d526823f9944bdd4))
* `start` and `length` common member names ([cff3a38](https://github.com/ashvardanian/stringzilla/commit/cff3a38fd6f2b5e06e71567c2ccd30bcfccb00cc))
* args checking ([9395a6b](https://github.com/ashvardanian/stringzilla/commit/9395a6b390e43fa567c29ceb442d972df8f70dc3))
* C++17 -> C99 ([e4429ef](https://github.com/ashvardanian/stringzilla/commit/e4429ef976ab176e8700dddc8eb155680fcef547))
* comparsion operators ([5883633](https://github.com/ashvardanian/stringzilla/commit/5883633bdc6fa4a2bf18cfb97b76a4e1fd7fc537))
* Deprecating C++ version in favor of C99 ([042e59e](https://github.com/ashvardanian/stringzilla/commit/042e59e32d89313ffa56b74ea6984fd74e82dd86))
* Directory structure ([c36bd68](https://github.com/ashvardanian/stringzilla/commit/c36bd685a1b3dac3dc188f2e500fc39999e3a95f))
* Drop slow sorts ([15f1b30](https://github.com/ashvardanian/stringzilla/commit/15f1b30b28f44f4bd1ee6bb3b666db978366d67e))
* Larger arrays for modern CPUs ([96e7234](https://github.com/ashvardanian/stringzilla/commit/96e7234ae990d4d664e47adb4cecfa8340766b23))
* Layout and spelling ([08cc0c7](https://github.com/ashvardanian/stringzilla/commit/08cc0c79de61348650e81eb597d0d1a8d0a833e1))
* Moving constants to the top ([b3c2da2](https://github.com/ashvardanian/stringzilla/commit/b3c2da2ad53bf4426d9c522e20008b7473a6affa))
* New C API for JS ([05a409c](https://github.com/ashvardanian/stringzilla/commit/05a409ce7ab1f76582c7936d2a4d2d6c99e7b3ed))
* no need to cast to string ([ec1744a](https://github.com/ashvardanian/stringzilla/commit/ec1744a7ffaf00d67cb224409aa802c9160fce88))
* Ops order and style ([3a18292](https://github.com/ashvardanian/stringzilla/commit/3a182922c6aec90a3b836bca96471c8810642e7d))
* Regrouping folders ([d9fb16d](https://github.com/ashvardanian/stringzilla/commit/d9fb16d7bab046abbe7a990b52172f98f99b4b17))
* rename `Slices` to `Strs` ([ed8f360](https://github.com/ashvardanian/stringzilla/commit/ed8f3608735c00636aa58c4b811de30b08b5c423))
* Rename bindings file ([f54b791](https://github.com/ashvardanian/stringzilla/commit/f54b791d7f6899023c5b05338287470459dcfee5))
* Restarting CPython bindings ([9fef6d8](https://github.com/ashvardanian/stringzilla/commit/9fef6d8cb32ae4966f46944add18f0017c5288a6))
* Swift bindings ([1c4ffda](https://github.com/ashvardanian/stringzilla/commit/1c4ffda9dbf923ff4a888d8637f603ed171b2894))
* Sync up Py and JS bindings ([cffae4a](https://github.com/ashvardanian/stringzilla/commit/cffae4a684437eafe3ed75299d2fb8c82baa1019))
* Tests, docs ([50adb32](https://github.com/ashvardanian/stringzilla/commit/50adb32ef6b4127ac49db418ae15051267aea405))
* Using `strzl_array_t` structure ([a1249a7](https://github.com/ashvardanian/stringzilla/commit/a1249a710a107e4040dc826e40f70a03b3b29952))

### Test

* Printing failed cases ([10068f6](https://github.com/ashvardanian/stringzilla/commit/10068f617b26bc47e88600ac33573a5d417aa695))
ashvardanian pushed a commit that referenced this issue Feb 6, 2024
# 1.0.0 (2024-02-06)

### Add

* `_sz_find_3byte_serial` ([d542c4b](https://github.com/ashvardanian/stringzilla/commit/d542c4b3a7430efb0dc5745ee390921b385fec13)), closes [#70](https://github.com/ashvardanian/stringzilla/issues/70)
* `begin`, `size` and other utility C++ functions ([5378a6c](https://github.com/ashvardanian/stringzilla/commit/5378a6c869f0b84b50dd5cd02654b0c9ad476dcd))
* `memmem` to benchmarks ([aa14ac8](https://github.com/ashvardanian/stringzilla/commit/aa14ac8370066b1c48eca4aec2412e3df8230962))
* `MemoryMappedFile` ([28638f8](https://github.com/ashvardanian/stringzilla/commit/28638f85ab8887b036859adc44897bc6d85b3b2e))
* `partition` method in Python ([257ac6c](https://github.com/ashvardanian/stringzilla/commit/257ac6cff6860b2893f939bd16cef97cf9420853))
* `qsort_r` benchmarks for Linux ([e31127a](https://github.com/ashvardanian/stringzilla/commit/e31127a7969bbf3336cbb499504a4fe290c14db1))
* `sort()` and `order()` efficient Py methods ([dd4f57f](https://github.com/ashvardanian/stringzilla/commit/dd4f57f95d239492bc21bf76bcee8dc0b1642d08))
* `sort()` interface for Python ([e657baf](https://github.com/ashvardanian/stringzilla/commit/e657bafa5d709a853b9aeb684bfdec5e37924c65))
* `startswith` & `endswith` ([c1cbb77](https://github.com/ashvardanian/stringzilla/commit/c1cbb77fc29382f04d8ad36de2a28d448a8806e5))
* `Str` concatenation ([1d7fed2](https://github.com/ashvardanian/stringzilla/commit/1d7fed2ee4abf4763cc3d9b21d9515a1beb16cf6))
* `Strs` structure in CPython ([4841a54](https://github.com/ashvardanian/stringzilla/commit/4841a541d327c07305fd3d2ceb7a289a6269116e))
* `sz_copy_serial` implementation ([d47fa1c](https://github.com/ashvardanian/stringzilla/commit/d47fa1c3493013b058b10b7387a4895cf2129fb4))
* `sz_move_serial` implementation (#60) ([1342711](https://github.com/ashvardanian/stringzilla/commit/1342711db45bda465b80b36ff98a058a349adcf1)), closes [#60](https://github.com/ashvardanian/stringzilla/issues/60)
* `sz_string_erase` implementation ([a64e091](https://github.com/ashvardanian/stringzilla/commit/a64e091247da3799fbbed129b95607c639e5ccac))
* Arm Neon character counter ([db2f523](https://github.com/ashvardanian/stringzilla/commit/db2f52388a973f1fbddb14913f8ae273adfc33d2))
* Arm NEON Raita search ([7a085e6](https://github.com/ashvardanian/stringzilla/commit/7a085e61af38a1f28e0b2c7faf13c203eff4bf0a))
* Auto-fetching Google Benchmark ([28311f3](https://github.com/ashvardanian/stringzilla/commit/28311f3fa808c6b42de0959bd59297b493418664))
* AVX-512 for `character_set` search ([543a942](https://github.com/ashvardanian/stringzilla/commit/543a94299a47dc16f64374d10217cf544fe346b2))
* AVX-512 functionality ([cca3d19](https://github.com/ashvardanian/stringzilla/commit/cca3d19ccc5cc72b0e08cd81a8955b79b31dc548))
* AVX-512 implementations for similarity scores ([e205c7a](https://github.com/ashvardanian/stringzilla/commit/e205c7a0ea9534732403d8e24990b74a1803b2ae))
* AVX-512 implementations for substring search ([35f7a11](https://github.com/ashvardanian/stringzilla/commit/35f7a11568b09c5b7e3966139b4935fd95caf1fc))
* AVX-512 Levenshtein distance for longer strings ([2b33e61](https://github.com/ashvardanian/stringzilla/commit/2b33e618e76ca6ffc151adf1f54294f62701374a))
* AVX2 baseline implementation ([a99dd56](https://github.com/ashvardanian/stringzilla/commit/a99dd5672f5b92384fa2645a1c81267c8400ec0f))
* Baseline C++ class ([979bf56](https://github.com/ashvardanian/stringzilla/commit/979bf56b02a13e782a757b5f54324883ed7265cf))
* Baseline NodeJS binding ([7abc456](https://github.com/ashvardanian/stringzilla/commit/7abc456ca8ea5bf494b9a975f14b909cebba5c53))
* Baseline NodeJS binding ([611c2c1](https://github.com/ashvardanian/stringzilla/commit/611c2c12ce16625cfbb0af30ab5dd41f80098e6a))
* Benchmark for [<>] search ([e8dd299](https://github.com/ashvardanian/stringzilla/commit/e8dd29902c5488226d771902f1383625b5f277c4))
* Benchmarks notebook ([317fd7f](https://github.com/ashvardanian/stringzilla/commit/317fd7ff8a949f029d58fd8bedc29d53faafef2f))
* Benchmarks on synthetic strings ([f6d8522](https://github.com/ashvardanian/stringzilla/commit/f6d852213c7c35d38145596c7376a761ee59ac92))
* Buffer protocol support ([f4c17b9](https://github.com/ashvardanian/stringzilla/commit/f4c17b91f17e34fa58b391fc0191c9fdb6588757))
* C++ API for scores and fingerprints ([b8778d0](https://github.com/ashvardanian/stringzilla/commit/b8778d035debb494485974ffe80049ddde268f8f))
* char-set, reverse order, and scoring in Py ([563f264](https://github.com/ashvardanian/stringzilla/commit/563f2647722a386ecd46b00b9c85affe9eb1a759)), closes [#23](https://github.com/ashvardanian/stringzilla/issues/23) [#12](https://github.com/ashvardanian/stringzilla/issues/12)
* Collection-level `append`, `extend` ([5066505](https://github.com/ashvardanian/stringzilla/commit/506650585bbb20c0cdf40ac40db6f65c52187ce6))
* Commonly used character sets ([00cc2f3](https://github.com/ashvardanian/stringzilla/commit/00cc2f3b6ef600559db7e57ec51ca3447af8501d))
* comparsion operators ([abe63e4](https://github.com/ashvardanian/stringzilla/commit/abe63e4a7e89dd02e526ecdb1a7f0505dcbd925d))
* compile-time dispatch for fill/move/copy ([9cb00fc](https://github.com/ashvardanian/stringzilla/commit/9cb00fc154643d2fabec451819ee3a18950ddb9e))
* Counting specific characters or subtrings ([67e71d8](https://github.com/ashvardanian/stringzilla/commit/67e71d8647a8a722cac2e3e7f0385f3f9759e9c0))
* Diagonal order Levenshtein distance computation ([d1ac8e3](https://github.com/ashvardanian/stringzilla/commit/d1ac8e3d1905463beef858b45306e02fe881a7ab))
* Dynamic dispatch ([2059c87](https://github.com/ashvardanian/stringzilla/commit/2059c87c9e5b3150c5b45b1161dd405b6707ee85))
* evals for hash quality ([20b4db0](https://github.com/ashvardanian/stringzilla/commit/20b4db091972a0c797495e1db901f0abb0fc250a))
* Examples of lcoating unique strings ([8f5a09b](https://github.com/ashvardanian/stringzilla/commit/8f5a09bdfd61f9d6d59ada8c1511c0658252e21f))
* Exception-throwing cases for STL strings ([8318b32](https://github.com/ashvardanian/stringzilla/commit/8318b32a72be92adc9cc80ee0b03ec73e62eea17))
* Experimental rolling hashes on NEON ([571d1b2](https://github.com/ashvardanian/stringzilla/commit/571d1b27ed34a76e3070b5bb95049a8347ddfc4d))
* Fast integer division for random generator ([c0cc8ba](https://github.com/ashvardanian/stringzilla/commit/c0cc8ba35349f32cb8220388c03dd6b1b6a27177))
* Fast replacements and alloc-free concat ([3720cd0](https://github.com/ashvardanian/stringzilla/commit/3720cd0309761aecfeb16414995e0f29195a8ce0))
* Full line search benchmarks ([9db22d5](https://github.com/ashvardanian/stringzilla/commit/9db22d544475989a703501392c82dbceae0acf84))
* get item with slice ([ab5e5ac](https://github.com/ashvardanian/stringzilla/commit/ab5e5ac868dce0727858d55315e2f3bcafe20e3b))
* Horspool algorithm for longer patterns ([19ed36c](https://github.com/ashvardanian/stringzilla/commit/19ed36c7fb747b6a6c72572733b74b7efdb75890))
* Hybrid sorting with Radix and Quick Sorts ([e6e532c](https://github.com/ashvardanian/stringzilla/commit/e6e532c79f1f662516c98639cb92c6765ab9edf8))
* Initial Arm Neon support ([9d38c7d](https://github.com/ashvardanian/stringzilla/commit/9d38c7d467f8c6ca3a2c7b82b29cb86bb921f9e6))
* Initial Levenstein distance ([9093983](https://github.com/ashvardanian/stringzilla/commit/9093983b7751480fe999d0b374699c7ff11a056c))
* Levenshtein distance benchmarks ([19f5dd5](https://github.com/ashvardanian/stringzilla/commit/19f5dd59111e4d24d29dac24dc4fd5ec5369048e))
* Levenshtein distance tests in C++ ([1efccd9](https://github.com/ashvardanian/stringzilla/commit/1efccd9dd5a466e5e575ff84136d4e1c5f294015))
* Levenstein distance ([7723703](https://github.com/ashvardanian/stringzilla/commit/7723703295d1bdf22c45176b30e9fdf2c643d9fb))
* Merge-, Insertion-, Quick-sorting algos ([061d523](https://github.com/ashvardanian/stringzilla/commit/061d523b370d63ea9b3a0d0652c1bd7132ca82dd))
* Merge-sort for strings ([60e683b](https://github.com/ashvardanian/stringzilla/commit/60e683ba6d611d037eb49a4aa818a7af424f4cbf))
* Micro-benchmarking notebook ([c70e811](https://github.com/ashvardanian/stringzilla/commit/c70e811c81a1e76ce19a321b0ceeb6886f36fa5f))
* misaligned tests ([1e94b7d](https://github.com/ashvardanian/stringzilla/commit/1e94b7d15f81440392016c169b22b24f36eb0888))
* missing `append`, `assign` STL APIs ([b28136a](https://github.com/ashvardanian/stringzilla/commit/b28136aace2fda73544d9194ccfbf693e2d643c6))
* Mutable string slices ([009080b](https://github.com/ashvardanian/stringzilla/commit/009080b118064186fb6ced5aa76e9229ca3c34df))
* Non-STL Pythonic slicing ([8ca6f03](https://github.com/ashvardanian/stringzilla/commit/8ca6f03bb20be543ea8ea122f36863bdf64bb656))
* Purely `qsort`-based hybrid sort benchmark ([eaef636](https://github.com/ashvardanian/stringzilla/commit/eaef636ff64ef0b9f730f739cb57771f776f4826))
* Python bindings ([1c759c2](https://github.com/ashvardanian/stringzilla/commit/1c759c257afe048026bc89d0a8478067b2e43b0f))
* random `shuffle` for strings collections ([6e3309c](https://github.com/ashvardanian/stringzilla/commit/6e3309c00d75326ed87caaa5673fcd6296b68c7d))
* Random strings generator ([eafaba0](https://github.com/ashvardanian/stringzilla/commit/eafaba00315e553f30b1b6e77d5fdc19b6378341))
* Randomize non-owning ranges ([71890ac](https://github.com/ashvardanian/stringzilla/commit/71890acc26926274b56cf22c94e5d977bc007191))
* Range matchers for charsets ([207d1de](https://github.com/ashvardanian/stringzilla/commit/207d1de4fe99b5b1d0a9c6ddf154f7ca27b32f65))
* read-only operations for `string` ([df10847](https://github.com/ashvardanian/stringzilla/commit/df10847c8b5c4ca29e0ca71b9227fb1f8f33897d))
* reverse order AVX2 & benchmarks ([ac05a39](https://github.com/ashvardanian/stringzilla/commit/ac05a39ba22afe02864da2f9c8bfdd3d8a854a97))
* Reverse order iterator ([2931be7](https://github.com/ashvardanian/stringzilla/commit/2931be77445b2a5b3c37f6a961fb10b1f22825d8))
* Rust bindings ([5d75ccf](https://github.com/ashvardanian/stringzilla/commit/5d75ccfe82cd676cc36653e79872a5b1fc2ad659)), closes [#66](https://github.com/ashvardanian/stringzilla/issues/66)
* Search benchmark ([f257df6](https://github.com/ashvardanian/stringzilla/commit/f257df671418f8276e98394bc9e709962987d761))
* Separate notebook for similarity benchmarks ([f3f2ae6](https://github.com/ashvardanian/stringzilla/commit/f3f2ae6c394922278484bda1e99b226a6d4ff5b1))
* Shuffling method in Python ([6b82311](https://github.com/ashvardanian/stringzilla/commit/6b82311f8c12afe731eccab36642fabe6c327cde))
* Slices and rich comparisons ([d2d8de9](https://github.com/ashvardanian/stringzilla/commit/d2d8de9707ebd659fd425efd89bd25f7f4c74c1c))
* small string optimization in C & Cpp ([a0986e9](https://github.com/ashvardanian/stringzilla/commit/a0986e92c24248410e68aadb367af51a590fdee1))
* Sorting functionality for C++ ([39cc4d4](https://github.com/ashvardanian/stringzilla/commit/39cc4d40e6faf7628d2df34f7a1d99723b9bdec5))
* Split functionality ([c3e28c9](https://github.com/ashvardanian/stringzilla/commit/c3e28c954174c5d48337f78c5dda635d9af8c9cb))
* Split into consecutive slices ([f984397](https://github.com/ashvardanian/stringzilla/commit/f984397d16f3640bf212431af09a93ad81180f9c))
* Split ranges ([c591599](https://github.com/ashvardanian/stringzilla/commit/c5915999f08b69931c9249718b49e0666fc41842))
* Split ranges ([ca5e95b](https://github.com/ashvardanian/stringzilla/commit/ca5e95b1ef0f3ce9263b632372fd901539eb9055))
* SSE and Arm variants of CRC32 ([674da60](https://github.com/ashvardanian/stringzilla/commit/674da60244e283845453a874b44d19e8cf7c4369))
* STL compatibility tests ([5281628](https://github.com/ashvardanian/stringzilla/commit/52816283ec98d84b44f8c4ea7af76e076a237d91))
* String conversion functionality ([46ef2b7](https://github.com/ashvardanian/stringzilla/commit/46ef2b708de98ac7c17ef5aa0a5771f5520ca1aa))
* String literals, reverse iterators ([9a48ba2](https://github.com/ashvardanian/stringzilla/commit/9a48ba24dc87ac98553d599c929e62f30fd16a55))
* strippers on both sides ([782cffb](https://github.com/ashvardanian/stringzilla/commit/782cffb4c5e6b72cc566726b576fcfdb707e5c10))
* Subscript methods ([8c6ae0a](https://github.com/ashvardanian/stringzilla/commit/8c6ae0a8c2599ce33b94ef77e6101b6e8ef2a513))
* support of negative slices ([76ebcc4](https://github.com/ashvardanian/stringzilla/commit/76ebcc483605a0ce2312804abc6ad0732b248e3c))
* SwiftPM binding to C ([3940549](https://github.com/ashvardanian/stringzilla/commit/39405490c834677647c94172fb62414dae7bdfa6))
* test for slice operator ([70edef1](https://github.com/ashvardanian/stringzilla/commit/70edef1fe6ef906ef5df2032d4d4fc4dcde8ab92))
* tests for slices ([374fc0b](https://github.com/ashvardanian/stringzilla/commit/374fc0b7d3df8e2630d887b760f0463e750e5a43))
* tests for Slices ([a103c27](https://github.com/ashvardanian/stringzilla/commit/a103c27c61b9679a037fc3324aa6e4569a61b1ea))
* Vectorized `count` ([ef067d8](https://github.com/ashvardanian/stringzilla/commit/ef067d805b7678f1db84ebd55ab4994bb0e351df))
* Vectorized `split` for Python ([69b1e1a](https://github.com/ashvardanian/stringzilla/commit/69b1e1a53d69e00ece4922feb7c0bce9971c94be))
* Windows support ([79e0f47](https://github.com/ashvardanian/stringzilla/commit/79e0f476ef8637c54f52f7ef05e5b6772b4d4582))

### Break

* `sz_string_erase` to return delta ([7f01630](https://github.com/ashvardanian/stringzilla/commit/7f01630fbb9079adebea876a02e3b8408bf70d48))
* Avoiding LibC and new API ([efafbbf](https://github.com/ashvardanian/stringzilla/commit/efafbbf0687f1d315c94b54b08e5b93f91e88be0))
* Deprecate multi-source `Strs`; split tests ([1e09400](https://github.com/ashvardanian/stringzilla/commit/1e09400fe6e07936b9679a35731ab87819c5f8ac))
* New testing suite ([927bff1](https://github.com/ashvardanian/stringzilla/commit/927bff1f372da6702242fea871a5cb1142221a92))
* r-prefixed names for reverse order ([7f1e8c4](https://github.com/ashvardanian/stringzilla/commit/7f1e8c4a4fdb104a51ef97b37a5a5bfa21950265))
* rename C++ `split` to `partition` for consistency ([d8f1940](https://github.com/ashvardanian/stringzilla/commit/d8f194024169ee7d1362a3a7d5461329890d5311))
* Replace `append` -> `expand` ([bb02881](https://github.com/ashvardanian/stringzilla/commit/bb02881979e8ab1e8009b0bdbdeecfe278016165))
* Shorter function prefixes ([c0e129d](https://github.com/ashvardanian/stringzilla/commit/c0e129d8289d5df6ec65b29d2f90ec55d8a19ca5))
* Use two Rabin rolling hashes ([f4980d9](https://github.com/ashvardanian/stringzilla/commit/f4980d915d1f5b567cdef564a384fc6ab471e83f))

### Build

* Released 1.0.0 [skip ci] ([ac6afd5](https://github.com/ashvardanian/stringzilla/commit/ac6afd5cce010f8b652aa12fabb0a856456d3544)), closes [#70](https://github.com/ashvardanian/stringzilla/issues/70) [#60](https://github.com/ashvardanian/stringzilla/issues/60) [#23](https://github.com/ashvardanian/stringzilla/issues/23) [#12](https://github.com/ashvardanian/stringzilla/issues/12) [#66](https://github.com/ashvardanian/stringzilla/issues/66) [#63](https://github.com/ashvardanian/stringzilla/issues/63) [#45](https://github.com/ashvardanian/stringzilla/issues/45) [#74](https://github.com/ashvardanian/stringzilla/issues/74) [github.com/swift-actions/setup-swift/issues/591#issuecomment-1685710678](https://github.com/github.com/swift-actions/setup-swift/issues/591/issues/issuecomment-1685710678)
* Released 1.0.0 [skip ci] ([1e6b0f6](https://github.com/ashvardanian/stringzilla/commit/1e6b0f675c1b749024ee3ae2ab364672cd0016f7))
* Released 1.0.1 [skip ci] ([ab185a6](https://github.com/ashvardanian/stringzilla/commit/ab185a6dc01b4ebe69c0d54a7989b54b39f969f6))
* Released 1.0.2 [skip ci] ([dc4ce27](https://github.com/ashvardanian/stringzilla/commit/dc4ce2740e57e5ede6478f2637faa8cdc5f345e1))
* Released 1.0.3 [skip ci] ([0280ca6](https://github.com/ashvardanian/stringzilla/commit/0280ca60abeab793ee97d8778e201b3ac95dd11b))
* Released 1.1.0 [skip ci] ([22682e7](https://github.com/ashvardanian/stringzilla/commit/22682e732beafb5430b1186da9b6474ee37949b5))
* Released 1.1.1 [skip ci] ([ff64dcc](https://github.com/ashvardanian/stringzilla/commit/ff64dcc7207375416da3ec5b9e9fc15c1177bc8d))
* Released 1.1.2 [skip ci] ([8d2436d](https://github.com/ashvardanian/stringzilla/commit/8d2436dfeb8c62ff2aece8d9cc3650990aba1c1f))
* Released 1.1.3 [skip ci] ([3136ac8](https://github.com/ashvardanian/stringzilla/commit/3136ac868cdee2e529e6f4888c611eab3fe9bd3c))
* Released 1.2.0 [skip ci] ([085b89b](https://github.com/ashvardanian/stringzilla/commit/085b89ba046f7abf0552e770071a859d95d10b1c))
* Released 1.2.1 [skip ci] ([075ce13](https://github.com/ashvardanian/stringzilla/commit/075ce1385aef1b4a781716c85e4b36c9e91fe6cf))
* Released 1.2.2 [skip ci] ([ddac709](https://github.com/ashvardanian/stringzilla/commit/ddac7099cf50a21a99b1a432ec2dab1c09ef80df))
* Released 2.0.0 [skip ci] ([bc30dcf](https://github.com/ashvardanian/stringzilla/commit/bc30dcfdfa480bafde28264f1958cd8e7bd1d91e))
* Released 2.0.1 [skip ci] ([e44faed](https://github.com/ashvardanian/stringzilla/commit/e44faed6fffa8175b2ed4afb262efd6672f1ee08))
* Released 2.0.2 [skip ci] ([74bce88](https://github.com/ashvardanian/stringzilla/commit/74bce88200a6119cc43a9bd4e32f5b0b1328cf21))
* Released 2.0.3 [skip ci] ([d728848](https://github.com/ashvardanian/stringzilla/commit/d728848723ecbe5cec8fd47ce5e45fad7f2bd0ff))
* Released 2.0.4 [skip ci] ([7d0de91](https://github.com/ashvardanian/stringzilla/commit/7d0de911fd9a851175be5e8ea247d79df0dfe198))

### Docs

* Add Apache 2.0 LICENSE ([d9a52df](https://github.com/ashvardanian/stringzilla/commit/d9a52df7b256283105bc5381e566d61761be7e17))
* Add development plans ([cf81e41](https://github.com/ashvardanian/stringzilla/commit/cf81e413075560b43f34173deca9473db222e931))
* Annotate SWAR methods ([8bd2c20](https://github.com/ashvardanian/stringzilla/commit/8bd2c20c0859b0e80cf3302d3385963c002faadc))
* benchmark against BioPython ([c1b85bd](https://github.com/ashvardanian/stringzilla/commit/c1b85bdf90054278e525a97d6e633eb0d6c00c3a))
* Build instructions and contribution guide ([a7883aa](https://github.com/ashvardanian/stringzilla/commit/a7883aaa151a9dd87be196968a1f6d0bb9202d2d))
* correct SSO size in `libc++` ([86ba553](https://github.com/ashvardanian/stringzilla/commit/86ba5533db7bd0cc302050d568c38d77410ba172))
* Extend algorithms ([266c017](https://github.com/ashvardanian/stringzilla/commit/266c01710dddf71fc44800f36c2f992ca9735f87))
* Improved intro ([034260b](https://github.com/ashvardanian/stringzilla/commit/034260b1b6fec373cec3e101cb1aaa0c28b0d868))
* Less sections ([371c24f](https://github.com/ashvardanian/stringzilla/commit/371c24f65c5d1867a8cc417d0c51264da8e17d79))
* Library description ([40dd6f5](https://github.com/ashvardanian/stringzilla/commit/40dd6f56b37b56aad4d47ca73a52735070af9782))
* Linking issues and refreshing C part ([84bc1f5](https://github.com/ashvardanian/stringzilla/commit/84bc1f55b4f161e1b76b4969d8eb6867ce289c26))
* list performance considerations ([0b61591](https://github.com/ashvardanian/stringzilla/commit/0b61591bec153361aa1dff9139b0c940dbf1baae))
* Major improvements for hashing ([c6110b5](https://github.com/ashvardanian/stringzilla/commit/c6110b5890fa6de023c0d5fc7d39c3aa0e921293))
* Make front page easier on the eye ([edc6763](https://github.com/ashvardanian/stringzilla/commit/edc67632f126b691699351b4f208803642933cdf))
* More benchmarking instructions ([4ef7d64](https://github.com/ashvardanian/stringzilla/commit/4ef7d6477841ac0b6991642f27ace05f5b636906))
* More datasets for benchmarks ([87d1973](https://github.com/ashvardanian/stringzilla/commit/87d1973e6f7a05b8540fdfe3e9db0fd03b753c67))
* README and warnings ([f4348e4](https://github.com/ashvardanian/stringzilla/commit/f4348e48b8a5971c2dc16decf74b7cd77cea1c86))
* recommending VSCode extensions ([b19a186](https://github.com/ashvardanian/stringzilla/commit/b19a186897ca3802f7f4fe2c64aac252be803875))
* Refined README ([3caf621](https://github.com/ashvardanian/stringzilla/commit/3caf621596aa070f8720a315d9c07536ecd39d17))
* Refresh intro ([445f292](https://github.com/ashvardanian/stringzilla/commit/445f292ac17a4b935203d7fea3aa7a42c2d7e8d7))
* Restructure groups ([87c55b7](https://github.com/ashvardanian/stringzilla/commit/87c55b7b753145ad27c7f3083280bed787f66d1f))
* Sections on random strings ([067ef21](https://github.com/ashvardanian/stringzilla/commit/067ef21aebb3d828f77e135745d79840e726b516))
* Sorting and PRNG benchmarks ([d7a6e33](https://github.com/ashvardanian/stringzilla/commit/d7a6e33a8ea1ba68242ef4513171499bbbcc3c13))
* spelling ([49b70e8](https://github.com/ashvardanian/stringzilla/commit/49b70e8f9c1f090b85791107da4c24f0f5ee2f19))
* Spelling ([95c9fcf](https://github.com/ashvardanian/stringzilla/commit/95c9fcf8d507eea15fe5ba2450ac942ba764fa6d))
* Suggesting STL API extensions ([6094006](https://github.com/ashvardanian/stringzilla/commit/60940064aeeabfe60cc6e6a62e00f38b9e03668a))
* Update [skip release] ([1b336ee](https://github.com/ashvardanian/stringzilla/commit/1b336eee886c84d6afda9519f493432f3a4cfe47))
* Update LICENSE and table ([76d0c1f](https://github.com/ashvardanian/stringzilla/commit/76d0c1f8b48a983baa9cd70fc63656da19284755))
* Update README.md ([20de986](https://github.com/ashvardanian/stringzilla/commit/20de986212b2afda9f89958f0114ecba1a79c019))
* Update table [skip release] ([cdf425a](https://github.com/ashvardanian/stringzilla/commit/cdf425aa6161fb3c8be8160be4ddcf6e5c0d1a5e))

### Fix

* `comparator` function signature ([635ce6e](https://github.com/ashvardanian/stringzilla/commit/635ce6e1894ec12fa68e6333b32f4f7adfb6c315))
* `length` location assuming little-endian hardware ([e584f8b](https://github.com/ashvardanian/stringzilla/commit/e584f8bf79e363668afb30724451e099622604bb))
* `misaligned_len` estimate ([90ea05d](https://github.com/ashvardanian/stringzilla/commit/90ea05d217ebb7f7662a5a532c4196a70e8b7404))
* `qsort_r` argument order ([eb7c8f8](https://github.com/ashvardanian/stringzilla/commit/eb7c8f891a84e77294f27781cff360c2fb87b1ec))
* `qsort_s` vs `qsort_r` on MacOS ([7aaf624](https://github.com/ashvardanian/stringzilla/commit/7aaf624343008f2d862dc5f12110a32a1a20f534))
* `static_cast` for Clang builds ([246d79d](https://github.com/ashvardanian/stringzilla/commit/246d79dd0229bd655d4724c366695c93d2c27f40))
* `strzl_sort_config_t` symbol ([0e6cda7](https://github.com/ashvardanian/stringzilla/commit/0e6cda78755b57b23064aa5533a367e7546c8c52))
* `sz_move_serial` in reverse order ([6bbc963](https://github.com/ashvardanian/stringzilla/commit/6bbc9636ff5d10cfbe31509bf211151a3c6fe74b))
* `sz_size_bit_ceil(1)` == 1 ([5f19a16](https://github.com/ashvardanian/stringzilla/commit/5f19a164cd103be5aab436bddebb0183ea15200d))
* `sz_size_bit_ceil` and missing constructors ([174fc15](https://github.com/ashvardanian/stringzilla/commit/174fc150e2cc68925a4720e42e3540457c9ed979))
* `sz_size_t` size in MSVC ([d0ad4aa](https://github.com/ashvardanian/stringzilla/commit/d0ad4aa1deedf963ba836b662a2a18eda40b01f4))
* `sz::string` constructors ([805b99a](https://github.com/ashvardanian/stringzilla/commit/805b99a72c8cde876de60fba38d63ddcf74f0e96))
* 32-bit integer overflow in `sz_rfind_avx512` ([2833707](https://github.com/ashvardanian/stringzilla/commit/283370738d715a6fdd03acdb35eecb454492bf1f))
* Alignment score Py test ([3521a8f](https://github.com/ashvardanian/stringzilla/commit/3521a8f160792bbc7a40a69bdafae8ed9ffb14e8))
* Allow no args to `split` ([dd5dd1c](https://github.com/ashvardanian/stringzilla/commit/dd5dd1c11f61f69031412d86f14967b60baa750f))
* Applying sort order in Python ([73e1fc7](https://github.com/ashvardanian/stringzilla/commit/73e1fc7eaca606badcf8f94dcfe77d8fb1a3c90d))
* assertion logging condition ([1c1f4f7](https://github.com/ashvardanian/stringzilla/commit/1c1f4f75dff2c5c2472c9ca6e03d7d1a266d8c70))
* AVX-512 compilation and naming ([82820d4](https://github.com/ashvardanian/stringzilla/commit/82820d459c28aac5c7433a0f81fd9234ce265122))
* AVX-512 tests and cheaper copy construction ([08810e9](https://github.com/ashvardanian/stringzilla/commit/08810e961e04215dfc95630f977daa7b3260417d))
* AVX2 compilation ([3f32d89](https://github.com/ashvardanian/stringzilla/commit/3f32d890a8e561d864152f6e1a65f1ecafad06a1))
* Benchmarks compilation ([204444f](https://github.com/ashvardanian/stringzilla/commit/204444ff9befb044d74d0d6fc7446e0ec11f282a))
* Boundary condition with misaligned loads ([0d39e81](https://github.com/ashvardanian/stringzilla/commit/0d39e81f9c1f65748250371363bdec0925840636))
* Bounded Levenstein distance ([a875b4a](https://github.com/ashvardanian/stringzilla/commit/a875b4a3c70a1556646a7b167506715bd70eae66))
* Buffer width for NodeJS bindings ([3871bbf](https://github.com/ashvardanian/stringzilla/commit/3871bbf3b0f60b783fa0a7656d3804df849710c0))
* bugs in assignment, initialization, ... (#63) ([b234e7c](https://github.com/ashvardanian/stringzilla/commit/b234e7cf61ae8302e15bb234dc702992de1ced15)), closes [#63](https://github.com/ashvardanian/stringzilla/issues/63)
* C++ `rfind` second argument of two ([a243ef1](https://github.com/ashvardanian/stringzilla/commit/a243ef1c9958e0fd2f8f13b822f7dd400b868846))
* Cast to `UInt64` in Swift ([2a78408](https://github.com/ashvardanian/stringzilla/commit/2a78408a99f11fa4b20962323e6994f7b2f5cf68))
* Comparator ([c64dafa](https://github.com/ashvardanian/stringzilla/commit/c64dafa348a58695c10ae314435df76b5bda1650))
* Compilation ([b896f77](https://github.com/ashvardanian/stringzilla/commit/b896f77672c4a6c6c0a666493508f6dbca8771c8))
* Compilation ([71ff4df](https://github.com/ashvardanian/stringzilla/commit/71ff4dfbc0bbace33dfed9234c71ebd1d96b14d4))
* Compilation and warnings ([df47d8a](https://github.com/ashvardanian/stringzilla/commit/df47d8aa57047ebbb657cb3ca5caf831c118ab5c))
* Compilation for older C++ standards ([5629c0b](https://github.com/ashvardanian/stringzilla/commit/5629c0b42a1d32b40bec450751693abd78f265be))
* Compilation on GCC11 ([4da34a8](https://github.com/ashvardanian/stringzilla/commit/4da34a8a132ad7de31cf3fcc696044334cc20da3))
* Compilation on MacOS ([c1d138c](https://github.com/ashvardanian/stringzilla/commit/c1d138ca5f5fb43e3da2953291562b3c44fcbb1d))
* Constructing from string and moves ([9e3aa95](https://github.com/ashvardanian/stringzilla/commit/9e3aa952d8f296b1a3776fd860b6f18749aa45ce))
* Counting substrings with `allowoverlap` ([8f35f54](https://github.com/ashvardanian/stringzilla/commit/8f35f54d8ebc3d552e82a3bad8dbdbb8c1b3903a))
* Cpp20-only constructor ([62e6788](https://github.com/ashvardanian/stringzilla/commit/62e678854acdef2b01efe411765082d7f1e4440a))
* Default argument sign for NW. scores ([3cb1f7a](https://github.com/ashvardanian/stringzilla/commit/3cb1f7a0daf3475ef9507c7d1895d6f7ca83c958))
* Exit search loop in benchmarks ([875200e](https://github.com/ashvardanian/stringzilla/commit/875200edae8279dc668bd21136df580dff271bfd))
* Experimental hashes names ([ff6a660](https://github.com/ashvardanian/stringzilla/commit/ff6a660ceb7bd14e1b0cdc05b20dd3601d4f4b53))
* Global `rsplit` return type ([e00963e](https://github.com/ashvardanian/stringzilla/commit/e00963e38192714253c88b7e2b823da86e216990))
* Identical overlapping semantics to Python ([f1ffe51](https://github.com/ashvardanian/stringzilla/commit/f1ffe518ffa3c67567d27c6d78ae22f7fefd98b3))
* include <stdexcept> for `out_of_range` ([0e5b85b](https://github.com/ashvardanian/stringzilla/commit/0e5b85b671917a8cb84ca29d22fb5a1ccdf9f3f6))
* Invoking the wrong constructor in tests ([8d450f5](https://github.com/ashvardanian/stringzilla/commit/8d450f574330d4753f4d3f2b6304c57a8eb8aa04))
* JS compilation and missing symbols ([582d5ab](https://github.com/ashvardanian/stringzilla/commit/582d5ab41046e02839880d663dca81eeac27e280))
* JS compilation and missing symbols ([61ed1a1](https://github.com/ashvardanian/stringzilla/commit/61ed1a14e3d517f753384add47f25c07ba86a82f))
* leaks and semantics, testing for memory leaks ([e7f0858](https://github.com/ashvardanian/stringzilla/commit/e7f0858e8bf9d716461aaee8751aec257078792e))
* Masking last comparisons in AVX-512 ([d5f6338](https://github.com/ashvardanian/stringzilla/commit/d5f6338539de3c3253bf65f976953b7f89cc7594))
* Matching Python string semantics ([1067090](https://github.com/ashvardanian/stringzilla/commit/10670905d1abd930ab0798045aa8140e95a44aab))
* memory access after `free` ([ec2e9b2](https://github.com/ashvardanian/stringzilla/commit/ec2e9b2f74373c403423b34574d58128d34d1c5b))
* Memory CPython memory allocations ([49030d4](https://github.com/ashvardanian/stringzilla/commit/49030d4af00b7eb48daa07ae8d7e6c3baeefb231))
* Memory leak and extra `strlen` calls ([a013147](https://github.com/ashvardanian/stringzilla/commit/a0131470ef77f40b1820124d7bef59d05624beda))
* Minor merge issues ([cfa540b](https://github.com/ashvardanian/stringzilla/commit/cfa540b638d2ac4ed415d8f7ccd146f3ce8567bf))
* Misaligned count and non C99 features ([1efd896](https://github.com/ashvardanian/stringzilla/commit/1efd8961d4ae1207058acbd407fcfed21bcb9e3b))
* Missing `__builtin_clzll` symbol ([bd4496a](https://github.com/ashvardanian/stringzilla/commit/bd4496a405823b687f43a7b093f180ba2e3cfc14))
* Missing header and test path ([303390e](https://github.com/ashvardanian/stringzilla/commit/303390e4b56f3acadd1d8d797b7b883cf2a2867b))
* Missing initialization for on-stack string ([5d85174](https://github.com/ashvardanian/stringzilla/commit/5d85174e8aef79d8390a137324e1da82c544be02))
* MSVC-compliant initialization ([ef2d66c](https://github.com/ashvardanian/stringzilla/commit/ef2d66c4fcbe5e56e29c5b16f3d2f420542c2185))
* Normalizing offsets in Py ([351567f](https://github.com/ashvardanian/stringzilla/commit/351567f44e0fb59f307710463acac1ed922dcb87))
* NPM build warnings ([da72015](https://github.com/ashvardanian/stringzilla/commit/da72015dbfcae4bae63176e616dda64d1db108c5))
* NPM build warnings ([b2e4b3e](https://github.com/ashvardanian/stringzilla/commit/b2e4b3e0bccbe1a413d6b6c73c8064ae5e3bd69b))
* Overflow bug in Arm NEON ([cdcc3b7](https://github.com/ashvardanian/stringzilla/commit/cdcc3b7e82f6b77cbdc344f12f1ee2c834048435))
* Overflow on consecutive matches ([f4ab1ea](https://github.com/ashvardanian/stringzilla/commit/f4ab1eab2cb8686c8a146414a5c1d6a5d7427100))
* Passing builds with strictest settings ([629a280](https://github.com/ashvardanian/stringzilla/commit/629a280c7ec1df9737ef85ba7a2785f453f00dda))
* Propagating definitions ([847763f](https://github.com/ashvardanian/stringzilla/commit/847763f7b47cb3de35ceac14db91021ecd8cb740))
* Python bindings passing tests ([e995121](https://github.com/ashvardanian/stringzilla/commit/e995121ca5c4d420cea2b8742338a79ef309eac0))
* python slices of splits used incorrect offsets. ([c7e54e4](https://github.com/ashvardanian/stringzilla/commit/c7e54e4bc123938575a105dbf38d427223c6cd03))
* Python sort ([a1d32d8](https://github.com/ashvardanian/stringzilla/commit/a1d32d8cfd7d40e19e2f6a4c8cb7a1b5c0f0750b))
* Python tests passing ([9cd14ab](https://github.com/ashvardanian/stringzilla/commit/9cd14abdeeb0b666618de58340a8e9667f601b1b))
* Random generator type resolution ([16da145](https://github.com/ashvardanian/stringzilla/commit/16da1451823815b3cbe1471ee055609917583e19))
* remove unnecessary include ([1f863e7](https://github.com/ashvardanian/stringzilla/commit/1f863e7b8c6736a4f976e13297aad5d070f4c8b2))
* reporting if step defined ([6af744c](https://github.com/ashvardanian/stringzilla/commit/6af744cbc3edef0a7cd06f95a64e4c01876a2a92))
* Returning `NULL` without setting the error ([cfffaeb](https://github.com/ashvardanian/stringzilla/commit/cfffaeb3734be9c9d914a58f1ed7f8e348f1046d))
* Reverse order ([250a97e](https://github.com/ashvardanian/stringzilla/commit/250a97ea1da53f8d2ca4f03dd28f67575971b01c))
* Sime constructors in C++11 can't be `constexpr` ([9fbbeb8](https://github.com/ashvardanian/stringzilla/commit/9fbbeb8e720cb2d85bdb341bd16a25e49ec0bd18))
* Skipping `misaligned` region twice ([2457915](https://github.com/ashvardanian/stringzilla/commit/2457915d8b2825b1be85b0a7bd5627d3a4f8c638))
* slice function logic ([a48609b](https://github.com/ashvardanian/stringzilla/commit/a48609bb926f3284bfd33fd52976b30561bb26f3))
* Slices ([8449dda](https://github.com/ashvardanian/stringzilla/commit/8449ddaf695d01aa033af6c81c04af80c894c17d))
* Sort in ascending order ([d049043](https://github.com/ashvardanian/stringzilla/commit/d049043ccb230a29f51e219058755a6927aaf3b3))
* Sort test ([7aa2c0b](https://github.com/ashvardanian/stringzilla/commit/7aa2c0b7315ccdfd9cee84be6d331714ba751691))
* speculative_neon_t count ([571e0a5](https://github.com/ashvardanian/stringzilla/commit/571e0a5269f15c339e176d43f1d7c6e439d8ff8c))
* strzl_sort ([612373b](https://github.com/ashvardanian/stringzilla/commit/612373ba85eec048a8b376d9247470574acc616c))
* SWAR search bug ([b62b9c6](https://github.com/ashvardanian/stringzilla/commit/b62b9c666c8970bb4219f1227b225ecb44a0d707))
* Swift build in Xcode ([3321c85](https://github.com/ashvardanian/stringzilla/commit/3321c8530406f816f2ee7f1f5077855f60a663aa))
* Switch to shared mappings to reduce RAM use ([07bc055](https://github.com/ashvardanian/stringzilla/commit/07bc05532f91dbb49c0b3dd350701fa70fe337a9))
* Throughput calculation for rfind ([1c48a42](https://github.com/ashvardanian/stringzilla/commit/1c48a42f44bd01a833712df893d9e5e3d2cb55d6))
* Use different functions depending on arch ([2ad5790](https://github.com/ashvardanian/stringzilla/commit/2ad5790c20cdf83afc7ab766f9267bd3b2c853f7))
* Use different functions depending on arch ([327a149](https://github.com/ashvardanian/stringzilla/commit/327a149037782df6c07d44974b31009dbfa63727))
* Using the right pragma for GCC ivdep ([ca3b62d](https://github.com/ashvardanian/stringzilla/commit/ca3b62defe47994cd2ce574ffd7bc310a02a5ae3))
* wrong intrinsic for non-AVX512 x86 ([550fb38](https://github.com/ashvardanian/stringzilla/commit/550fb38593c637cf6faf2cb743641d91a4394964))

### Fixes

* RNG instantiation UB, reducing avoiding compiler optimization for the callback. ([1ae31a0](https://github.com/ashvardanian/stringzilla/commit/1ae31a0c37447f55b48ed779e530452af4f14813))

### Format

* Compact code style ([4ddee17](https://github.com/ashvardanian/stringzilla/commit/4ddee17153d07e9381619f6a34c05e5e78d0292b))

### Improve

* `_sz_locate_needle_anomalies` for Arm ([a8df0f9](https://github.com/ashvardanian/stringzilla/commit/a8df0f991644d033250184619f8747fe051a437b))
* `_sz_locate_needle_anomalies` for AVX ([e453ab8](https://github.com/ashvardanian/stringzilla/commit/e453ab86745277ad9c8a3decc0065845e5fc3e80))
* `sz::` and `std::string` are mostly compatible ([41570d6](https://github.com/ashvardanian/stringzilla/commit/41570d6e57b9f62c849c452640383eefd6fcb561))
* `vtbl`-based charset search for NEON ([8ed148e](https://github.com/ashvardanian/stringzilla/commit/8ed148e7d126bae25240aa6637b607d66ae4d263))
* Apply Swift API to both strings and buffers ([d52bdb3](https://github.com/ashvardanian/stringzilla/commit/d52bdb389546e8f4ae459196670977013a321420))
* Avoid inner `for`-loop on Arm NEON ([eafe41c](https://github.com/ashvardanian/stringzilla/commit/eafe41cba0b227395f311be676413f39c15efb42))
* avoiding nested loop in AVX2 ([ac7012a](https://github.com/ashvardanian/stringzilla/commit/ac7012a2796e613af75fde91e205ef55fb84944b))
* AVX2 and AVX512 backends ([462a426](https://github.com/ashvardanian/stringzilla/commit/462a4264863fd9e9899276a124c704ede1add4d3))
* BitScan dispatch on Windows ([7e2ca96](https://github.com/ashvardanian/stringzilla/commit/7e2ca96b76db453fca2601a2b72c2d57153e18b1))
* Broader benchmarks ([4014af9](https://github.com/ashvardanian/stringzilla/commit/4014af9f74f0f7e1a0ca6daec7638fd93e7b742d))
* Bypass GIL on long tasks ([59f41f9](https://github.com/ashvardanian/stringzilla/commit/59f41f9a25f2ec364974cef2f72e9273787f3d61))
* C++ tests structure ([f6bec48](https://github.com/ashvardanian/stringzilla/commit/f6bec488380f489fd99872f817f6d39d9504bd94))
* Compatibility with STL strings ([deafa73](https://github.com/ashvardanian/stringzilla/commit/deafa732080d965ba1774ed3747c1693fdf79f06))
* Deduplicate charset-matching on NEON ([7c4e169](https://github.com/ashvardanian/stringzilla/commit/7c4e16928f722e8110804816b55a879fcc31c277))
* drop `ctype`, `stddef`, `stdint` headers ([245da6d](https://github.com/ashvardanian/stringzilla/commit/245da6df67df2a51cca453ff8fd5dd48f20f5994))
* Drop useless AVX-512 parts ([7c104ec](https://github.com/ashvardanian/stringzilla/commit/7c104ec02a943cd0029bc6aac04960e1975f69f4))
* Extend benchmarks ([3838a85](https://github.com/ashvardanian/stringzilla/commit/3838a857d5d8c2eeebc09d787672d57ddbc02662))
* Faster `Str` constructor ([4796afb](https://github.com/ashvardanian/stringzilla/commit/4796afb21b7dfdc3efa4b3f4adfc60bb69013dd4))
* Faster Horspool initialization ([156b814](https://github.com/ashvardanian/stringzilla/commit/156b814848fa5ead86d11889c6bc2e3c15870bdf))
* Identical bit-counting intrinsics ([c934fb5](https://github.com/ashvardanian/stringzilla/commit/c934fb5af3c260aef4c530cb62e7f47a2bb02e35))
* Intro-sort ([644630b](https://github.com/ashvardanian/stringzilla/commit/644630b852ad43be6ba092c3091b458446688c4c))
* Less overhead per benchmark cycle ([6f1bde6](https://github.com/ashvardanian/stringzilla/commit/6f1bde6273ee821d5eea457ece517908385f7a01))
* Loading large files into memory ([c041962](https://github.com/ashvardanian/stringzilla/commit/c041962df9cd9994a0217c9d1d69b40da82db3d8))
* Mimic hyper-scalar code ([21f143c](https://github.com/ashvardanian/stringzilla/commit/21f143c5cf5e337245bee2bb72a1104983570858))
* Missing CPUID checks ([139e4fd](https://github.com/ashvardanian/stringzilla/commit/139e4fd52c115224606b05e62ec675eb56cded61))
* move `skip_length` into the matcher ([8905a56](https://github.com/ashvardanian/stringzilla/commit/8905a5671035a22bfc8f11856de7840c2359afd0))
* NW AVX-512 alignment ([e49cacb](https://github.com/ashvardanian/stringzilla/commit/e49cacbdb4762d06b636d836bc12d825b17b3c13))
* parity between `std` and `sz` string views ([487edd3](https://github.com/ashvardanian/stringzilla/commit/487edd32a8e99dcc6bb077ba8dfc944ab92f189d))
* Passing basic tests ([ee0ab2d](https://github.com/ashvardanian/stringzilla/commit/ee0ab2d138a4c127f7af6a9d2716dc04040791ea))
* Poison ranges with ASAN ([4703fad](https://github.com/ashvardanian/stringzilla/commit/4703fad44d7f2bfcebec8603c6ccf1763ff0317e))
* Polish xxHash ([ca085df](https://github.com/ashvardanian/stringzilla/commit/ca085df4436a87ae3dfc5fd8ba0a7d0a8116a04e))
* Preserving failed tests to disks ([9cd5c21](https://github.com/ashvardanian/stringzilla/commit/9cd5c218a64c052fbd8ccef6306f5c1be1d5a54b))
* Raita-style midpoint check in AVX-512 ([df683d9](https://github.com/ashvardanian/stringzilla/commit/df683d905e3adcc8f16b8e358235f57ec8f78d14))
* random generation and token-level benchmarks ([be54519](https://github.com/ashvardanian/stringzilla/commit/be545196bcac13e7c1fd353b1fa85b3d0d52306b))
* Rearrange tests and benchmarks ([8564852](https://github.com/ashvardanian/stringzilla/commit/856485223075872743cbf6d521c6a09bb0dbe601))
* Reduce `vmaxvq_u8` usage ([982ca69](https://github.com/ashvardanian/stringzilla/commit/982ca6929f0ebce52e0749bb869a1f7d451aec14))
* Reduce `vmaxvq_u8` usage ([53cb5ce](https://github.com/ashvardanian/stringzilla/commit/53cb5ce8b65f7e28e73643ee84e39f8150ee7d0d))
* Reduce number of loads/stores in scoring ([0c860c8](https://github.com/ashvardanian/stringzilla/commit/0c860c834f5d0c528ecdc95f58b72402e2b7d765))
* Reducing swaps in Radix sort ([3eac160](https://github.com/ashvardanian/stringzilla/commit/3eac1601a1d8cb88db9f6e7863c90f53bdf98ca1)), closes [#45](https://github.com/ashvardanian/stringzilla/issues/45)
* Refactoring AVX-512 control-flow for simplicity ([b42394c](https://github.com/ashvardanian/stringzilla/commit/b42394cce6e26b461134898442653bd15b94c71f))
* Remove deprecated code ([e3adaa4](https://github.com/ashvardanian/stringzilla/commit/e3adaa44f98df0127072f00724ae07500a1b46fb))
* Reorganizing for readability ([9dd1f8c](https://github.com/ashvardanian/stringzilla/commit/9dd1f8cdf3ef5c79caf4a0ff3309a9b53e2091ed))
* Reuse the C shared lib for Swift ([bd1686d](https://github.com/ashvardanian/stringzilla/commit/bd1686da68e0550567663d9b2e7db01bbb339ce4))
* Rust Bindings (#74) ([8200ca3](https://github.com/ashvardanian/stringzilla/commit/8200ca3894f575d772754c261b769d5852295877)), closes [#74](https://github.com/ashvardanian/stringzilla/issues/74)
* Same functions as global and members ([4a22ea8](https://github.com/ashvardanian/stringzilla/commit/4a22ea8984173a3f71704e47a8b8dd31213f3808))
* serial move implementation ([9173ca0](https://github.com/ashvardanian/stringzilla/commit/9173ca0f55c61cb1221bc783138185f4a62c443d))
* shorter tests with `std::string_view` ([d9977b0](https://github.com/ashvardanian/stringzilla/commit/d9977b0d07d4a3a776fb39011a31e0f71976a005))
* Silence type-casting warnings ([dbe4db3](https://github.com/ashvardanian/stringzilla/commit/dbe4db30845df932e34b5518133916bd094a14b3))
* Similarity search benchmarks ([d2e8da2](https://github.com/ashvardanian/stringzilla/commit/d2e8da242b43846a34bf4ebd7518ded0a6c10549))
* SWAR search for normal order search ([6669b1e](https://github.com/ashvardanian/stringzilla/commit/6669b1e3f38b921aedaa4af01571fbddabb2fbc9))
* Test coverage ([c967582](https://github.com/ashvardanian/stringzilla/commit/c9675825d71592dec075f40633967bd833f99c72))
* Test reproducibility of the `shuffle` ([ce888cc](https://github.com/ashvardanian/stringzilla/commit/ce888ccaadd89b247d3f549d8590837c0b1fe52d))
* Testing suite ([50a2a2f](https://github.com/ashvardanian/stringzilla/commit/50a2a2fc159f36972423590cf4ba5865dc0a3775))
* Tests against Raita ([6a5b18b](https://github.com/ashvardanian/stringzilla/commit/6a5b18b7de77a518cba80d70a3c90e78e81a32c4))
* Use less temp. variables to count matches ([3245330](https://github.com/ashvardanian/stringzilla/commit/32453305cb9d7b84090a8a17979aafd8d82f9c08))
* Using Clang `modulemap`-s ([05d21c5](https://github.com/ashvardanian/stringzilla/commit/05d21c52661138201d7e3b519b75c7c0f9d16aa5))
* Vectorized function calls ([6cd5a69](https://github.com/ashvardanian/stringzilla/commit/6cd5a69096982d2b2c7761063f6e265260f5fac5))
* Window width as runtime argument ([3bd29ae](https://github.com/ashvardanian/stringzilla/commit/3bd29ae5dee4586ed174be8f4f4fda19a2e057d0))

### Make

* `AlwaysBreakBeforeMultilineStrings` ([1dabc3b](https://github.com/ashvardanian/stringzilla/commit/1dabc3ba77e62a1732b6d83d2aa286273118218c))
* `numpy` dependency ([2d825ba](https://github.com/ashvardanian/stringzilla/commit/2d825ba2cfca86ef3c906cfa25a612ba820d0068))
* Add GitHub CI ([ba333db](https://github.com/ashvardanian/stringzilla/commit/ba333dbcf5d432fa27e2c1f4f917eb28dd68977a))
* Add NumPy dependency ([2e928ba](https://github.com/ashvardanian/stringzilla/commit/2e928bab7421ded7b5f4bec7fbcb6679bdde7b6d))
* Adding `.npmignore` ([cf93dfd](https://github.com/ashvardanian/stringzilla/commit/cf93dfd60e0cdc69a93bff848794cb62bc53d184))
* Automate major releases ([987475e](https://github.com/ashvardanian/stringzilla/commit/987475e20edbcaa8c78afaac413a5d62ce453215))
* Build with different compilers at once ([0580219](https://github.com/ashvardanian/stringzilla/commit/05802192a563bcf752be13830de76ce3b2a6f049))
* Bump VERSION ([f221874](https://github.com/ashvardanian/stringzilla/commit/f2218744a370549fe14eaa888c2124db22359f96))
* Bump VERSION ([bebda9f](https://github.com/ashvardanian/stringzilla/commit/bebda9ff05848495d2ab3dad9de3a2d20ac1febd))
* C++17 default, build 11/14/17/20 ([156afae](https://github.com/ashvardanian/stringzilla/commit/156afae9a5a3f7a7302414782cd3493609989e12))
* Change CXX standard ([4f4e69b](https://github.com/ashvardanian/stringzilla/commit/4f4e69b5ed163c44de177c66030cf7f64e12475e))
* CI for Clang and MacOS ([3162760](https://github.com/ashvardanian/stringzilla/commit/31627607d3c39f745fa11d65eb57e0a50f2efbb5))
* Cleaning build caches on Windows ([01d209f](https://github.com/ashvardanian/stringzilla/commit/01d209f6f2ce87f429c22a7c8f2ccde86ebd199c))
* Colorful diagnostics ([0b8d9cd](https://github.com/ashvardanian/stringzilla/commit/0b8d9cdd6d424fa540c04ecb8441a856a1065363))
* Compile for different x86 generations ([ae7b119](https://github.com/ashvardanian/stringzilla/commit/ae7b11934c298e80072edb2b21f9001ceed1c0dc))
* Consistent compilation settings ([6f930ea](https://github.com/ashvardanian/stringzilla/commit/6f930ea703edddef9308e713a70b213631e91496))
* Deduplicate `.clang-format` settings ([3db6845](https://github.com/ashvardanian/stringzilla/commit/3db684571ffa93f8420d5bc62b7285bf10aa07f4))
* Define default build type ([4ce3d64](https://github.com/ashvardanian/stringzilla/commit/4ce3d641943c571a6434687ec46261eb33eaef0e))
* Dependencies for testing ([253a26d](https://github.com/ashvardanian/stringzilla/commit/253a26de2c1c70d69196833b62893eb58d5a8230))
* Deprecate old benchmarks ([b5b1f83](https://github.com/ashvardanian/stringzilla/commit/b5b1f833fd2dfe6e60db01217dcb025df9fdc98e))
* Don't build the library every time ([daaa93b](https://github.com/ashvardanian/stringzilla/commit/daaa93b8a1591f9fca2d3589383be24729c5f7eb))
* Enable DQ extensions for `sz_hashes_avx512` ([26e54c9](https://github.com/ashvardanian/stringzilla/commit/26e54c9cdd604c3fe8cd136e581163e034f8e182))
* Explicitly mark AVX sections ([53a4ef1](https://github.com/ashvardanian/stringzilla/commit/53a4ef1b69a65d36f0f82aef70fa84965938f279))
* Explicitly UTF-8 encoding on Windows ([6c323ea](https://github.com/ashvardanian/stringzilla/commit/6c323ea19ab813d93124ce1d0bfed0832693f7ff))
* Exporting lite builds without LibC ([a5ece39](https://github.com/ashvardanian/stringzilla/commit/a5ece39df940137a402ad282d631b0716d5d8876))
* Exporting lite builds without LibC ([dfba995](https://github.com/ashvardanian/stringzilla/commit/dfba99533f4ef7c9d4277352e82460d2dc546f1a))
* Fetch before rebase ([fda58df](https://github.com/ashvardanian/stringzilla/commit/fda58dfe268bec7f4279c9d607551cde1eb39a5c))
* Fix include paths ([d3c9025](https://github.com/ashvardanian/stringzilla/commit/d3c90255efc4948c17bcf7f84bd54b9fae77004f))
* Fix Windows PyPi releases ([0efaad1](https://github.com/ashvardanian/stringzilla/commit/0efaad194b1228dbc68eebc5eb2393ef701d1365))
* Formatting and docs ([416b885](https://github.com/ashvardanian/stringzilla/commit/416b885429d2eb97e6c677eaac0eba6de5ff9fc4))
* GitHub CI for tests with recent GCC ([48869d3](https://github.com/ashvardanian/stringzilla/commit/48869d3f62dc226a20aa690cbe7eae4787a8a9ae))
* Linking the standard libs in Swift ([6a25a8e](https://github.com/ashvardanian/stringzilla/commit/6a25a8e3c5a10716b7c0cb51a3f2a0bd5c03c5ee))
* Log ENV details if build fails ([8527f38](https://github.com/ashvardanian/stringzilla/commit/8527f386770eb8ee635395338adc6ecc47b35e51))
* Manually bump SemVer ([24f0693](https://github.com/ashvardanian/stringzilla/commit/24f069366b904615019e3850d8f9b8c4f9246a95))
* Match directory structure of SimSIMD ([afac999](https://github.com/ashvardanian/stringzilla/commit/afac999380220b6d6c9ec0f191f339f29ed30cf0))
* Match directory structure of SimSIMD ([679f9e7](https://github.com/ashvardanian/stringzilla/commit/679f9e758ba181765a5473f7d5264d2c1372ec81))
* Matching only `version` at line start ([bb56b00](https://github.com/ashvardanian/stringzilla/commit/bb56b0079aceb491ee3a39330401b24519434a06))
* Move Python bindings ([e9ac4cb](https://github.com/ashvardanian/stringzilla/commit/e9ac4cb2e516c0b48f1f0e5f43c207b1359913b6))
* MSVC compatibility ([f776087](https://github.com/ashvardanian/stringzilla/commit/f776087ce005b4ecc2f21a5be4c9ce99976af77c))
* NumPy test dependencies ([53481a9](https://github.com/ashvardanian/stringzilla/commit/53481a9fa4b98b7ac7ac61dda5e2bfc719804f2e))
* Optimize `RelWithDebInfo` builds ([0ec4b0d](https://github.com/ashvardanian/stringzilla/commit/0ec4b0d8dce059528d4e4b5a47c7a0fdd1e81e72))
* Pass compilation flags depending on which architecture and compiler ([23846ef](https://github.com/ashvardanian/stringzilla/commit/23846ef733f6463fbb94a4d11296014e2e870662))
* passing empty C++ standard version ([6abf8b6](https://github.com/ashvardanian/stringzilla/commit/6abf8b61bf351aacde639b0a56ba68b9101bbd23))
* Position Independent Code ([2638c66](https://github.com/ashvardanian/stringzilla/commit/2638c66ae92cdd3076720b47be4b73930d7a54e5))
* PR head autoresolution ([b483e59](https://github.com/ashvardanian/stringzilla/commit/b483e595796cd61ff61d1726320f0c7abcc14d7a))
* Pre-set target hardware generation ([a9fe148](https://github.com/ashvardanian/stringzilla/commit/a9fe14806337d90b5e6c23a1183bd58a8f2d6f94))
* Publish Rust crates ([b954a55](https://github.com/ashvardanian/stringzilla/commit/b954a556b1d188003a63b70b5e6594a47e6d33ac))
* Publish StringZilla to NPM ([ff2e85b](https://github.com/ashvardanian/stringzilla/commit/ff2e85b94bc0943910254ba8a676fee22a563315))
* Remove `fuzz.py` ([50ab905](https://github.com/ashvardanian/stringzilla/commit/50ab905ae95ecdaeaeeea818879f72d1980d1a41))
* Remove PyBind11 dependency ([971890c](https://github.com/ashvardanian/stringzilla/commit/971890cd8c53f04ae56f823f8784bba04928a77e))
* sanitizers and silencing false warnings ([6f7d5c1](https://github.com/ashvardanian/stringzilla/commit/6f7d5c1e415055d1069472d262fc0f63e60427ff))
* Semantic Versioning ([4a21db7](https://github.com/ashvardanian/stringzilla/commit/4a21db78774fd391d798822b0162bb5583305dba))
* Separate source files ([9e75d04](https://github.com/ashvardanian/stringzilla/commit/9e75d04a585a56213adaf361d8296d4b6bbee5f7))
* Shift JavaScript CI ([534291f](https://github.com/ashvardanian/stringzilla/commit/534291f13021f6ebcbcca11ab6d2b820aa78dbe1))
* Swift CI and MacOS PyPa image ([9184a42](https://github.com/ashvardanian/stringzilla/commit/9184a42f01be208aca733d30f1bec02eacd432a9))
* Switch to pure C ([e8f7249](https://github.com/ashvardanian/stringzilla/commit/e8f724941136453586a88e862c3f0ab135b34f0f))
* Test cpp ([b4a89c5](https://github.com/ashvardanian/stringzilla/commit/b4a89c534776f86acb8b63c5b4c7c68ea487fc00))
* Update release tasks ([bc938c1](https://github.com/ashvardanian/stringzilla/commit/bc938c158b1bdce175bb28c08f36842018100675))
* Update SemVer toolchain ([26b0dfb](https://github.com/ashvardanian/stringzilla/commit/26b0dfb992159c82bfcce8c693ba31b0b0c80cf2))
* Upload versioned files ([5e254b0](https://github.com/ashvardanian/stringzilla/commit/5e254b036fdceda7d777e627be5cdc03a8f4172c))
* Use Clang attribute pragmas ([33ba031](https://github.com/ashvardanian/stringzilla/commit/33ba031e7b470fdfba46826f919f2188cd3f536c))
* use newest SIMD for Python builds ([62c0012](https://github.com/ashvardanian/stringzilla/commit/62c0012e7e1e96ff773d0072592bd520a6fc61f8))
* VSCode launchers for any C++ benchmark ([6f0d799](https://github.com/ashvardanian/stringzilla/commit/6f0d79975ef0b46803cb4c7fc17392f943ca2361))
* Workaround for Swift CI ([bc1869a](https://github.com/ashvardanian/stringzilla/commit/bc1869a85293ff5aa6e5075475263002c43648eb)), closes [/github.com/swift-actions/setup-swift/issues/591#issuecomment-1685710678](https://github.com//github.com/swift-actions/setup-swift/issues/591/issues/issuecomment-1685710678)

### Refacot

* Styling ([e4177b2](https://github.com/ashvardanian/stringzilla/commit/e4177b291db6fbbe7c69cec40e3d7b092ed7488a))

### Refactor

* `on_stack`/`on_heap` to `internal`/`external` ([69e8b70](https://github.com/ashvardanian/stringzilla/commit/69e8b70273a022f4249b45c5d526823f9944bdd4))
* `start` and `length` common member names ([cff3a38](https://github.com/ashvardanian/stringzilla/commit/cff3a38fd6f2b5e06e71567c2ccd30bcfccb00cc))
* args checking ([9395a6b](https://github.com/ashvardanian/stringzilla/commit/9395a6b390e43fa567c29ceb442d972df8f70dc3))
* C++17 -> C99 ([e4429ef](https://github.com/ashvardanian/stringzilla/commit/e4429ef976ab176e8700dddc8eb155680fcef547))
* comparsion operators ([5883633](https://github.com/ashvardanian/stringzilla/commit/5883633bdc6fa4a2bf18cfb97b76a4e1fd7fc537))
* Deprecating C++ version in favor of C99 ([042e59e](https://github.com/ashvardanian/stringzilla/commit/042e59e32d89313ffa56b74ea6984fd74e82dd86))
* Directory structure ([c36bd68](https://github.com/ashvardanian/stringzilla/commit/c36bd685a1b3dac3dc188f2e500fc39999e3a95f))
* Drop slow sorts ([15f1b30](https://github.com/ashvardanian/stringzilla/commit/15f1b30b28f44f4bd1ee6bb3b666db978366d67e))
* Larger arrays for modern CPUs ([96e7234](https://github.com/ashvardanian/stringzilla/commit/96e7234ae990d4d664e47adb4cecfa8340766b23))
* Layout and spelling ([08cc0c7](https://github.com/ashvardanian/stringzilla/commit/08cc0c79de61348650e81eb597d0d1a8d0a833e1))
* Moving constants to the top ([b3c2da2](https://github.com/ashvardanian/stringzilla/commit/b3c2da2ad53bf4426d9c522e20008b7473a6affa))
* New C API for JS ([05a409c](https://github.com/ashvardanian/stringzilla/commit/05a409ce7ab1f76582c7936d2a4d2d6c99e7b3ed))
* no need to cast to string ([ec1744a](https://github.com/ashvardanian/stringzilla/commit/ec1744a7ffaf00d67cb224409aa802c9160fce88))
* Ops order and style ([3a18292](https://github.com/ashvardanian/stringzilla/commit/3a182922c6aec90a3b836bca96471c8810642e7d))
* Regrouping folders ([d9fb16d](https://github.com/ashvardanian/stringzilla/commit/d9fb16d7bab046abbe7a990b52172f98f99b4b17))
* rename `Slices` to `Strs` ([ed8f360](https://github.com/ashvardanian/stringzilla/commit/ed8f3608735c00636aa58c4b811de30b08b5c423))
* Rename bindings file ([f54b791](https://github.com/ashvardanian/stringzilla/commit/f54b791d7f6899023c5b05338287470459dcfee5))
* Restarting CPython bindings ([9fef6d8](https://github.com/ashvardanian/stringzilla/commit/9fef6d8cb32ae4966f46944add18f0017c5288a6))
* Swift bindings ([1c4ffda](https://github.com/ashvardanian/stringzilla/commit/1c4ffda9dbf923ff4a888d8637f603ed171b2894))
* Sync up Py and JS bindings ([cffae4a](https://github.com/ashvardanian/stringzilla/commit/cffae4a684437eafe3ed75299d2fb8c82baa1019))
* Tests, docs ([50adb32](https://github.com/ashvardanian/stringzilla/commit/50adb32ef6b4127ac49db418ae15051267aea405))
* Using `strzl_array_t` structure ([a1249a7](https://github.com/ashvardanian/stringzilla/commit/a1249a710a107e4040dc826e40f70a03b3b29952))

### Test

* Printing failed cases ([10068f6](https://github.com/ashvardanian/stringzilla/commit/10068f617b26bc47e88600ac33573a5d417aa695))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request good first issue Good for newcomers
Projects
None yet
Development

No branches or pull requests

1 participant