v4 vectorized sorting, hashing, and edit distances. v5 goes after the part everyone agreed was too irregular for SIMD — Unicode — plus the hardware and packaging that make it portable.
| Domain | StringZilla v4 | StringZilla v5 |
|---|---|---|
| Unicode | SIMD-vectorized case folding, uncased search | + NFC/NFD/NFKC/NFKD normalization, + grapheme, + sentence, + word, and + line-break iterators |
| Bioinformatics | ~700 GCUPS Levenshtein & ~10 GCUPS NW/SW on an H100 | up to ~6 TCUPS Levenshtein and ~700 GCUPS NW/SW on the same H100 |
| Portability | x86 & Arm | + WebAssembly SIMD, + RISC-V RVV, + LoongArch LASX, + IBM POWER VSX |
| Hashing | on par with xxHash & aHash | + up to 3x faster multi-seed digests of one input — for Cuckoo tables, Count-Min & Bloom sketches |
| Fingerprints | streaming ~390 MB/s | over 700 MB/s on an H100 at the same embedding dimension — for large-scale MinHash content dedup |
Major
- Break: Consume ForkUnion v3 through its C API (76a2de7)
- Break: Align empty-needle search with
strstracross C, C++, and Rust (7cd1953) - Break: Harden the Python binding against degenerate and zero-size inputs (6567fd2)
- Break: Redesign UTF-8 segmentation iterators across C++/Rust/Python (afbadfc)
- Break: Role-based function-qualifier vocabulary (SZ_API_/SZ_HELPER_/SZ_DEVICE_*) (1c581b2)
- Break: Raise StringZillas minimum C++ standard from C++17 to C++20 (a651d7f)
- Break: Plural UAX-29 word segmentation API (be4238c)
- Break: Align kernel & ISA names (a20ffa4)
- Break: Caller-owned scratch & status-carrying APIs for StringZillas (0915e1c)
- Break: Switch the byte-level NW/SW C API to 32×32 class costs and add an AVX2 backend (31ca928)
- Break: Replace dense 256×256 substitution matrix with compact 32×32 class table (498e41c)
- Break: Split parallel StringZillas into per-ISA and per-algorithm units (fb1f077)
- Break: Split core into per-ISA headers; add WASM/RVV/LASX/Power & rename crypto/Power backends (4783d63)
Minor
- Add: Wire RVV similarity engines to full NEON parity + faster kernels (5e8d6db)
- Add: RVV weighted candidate-lane walker for batched NW/SW (3c05571)
- Add: RVV anti-diagonal NW/SW + diagonal Levenshtein scorers (a51bce5)
- Add: RVV batch lane-per-pair Myers + cross-product Levenshtein engine (92eced3)
- Add: RVV similarities foundation + fix clang rv64gcv scoring-ABI miscompile (9059205)
- Add: AVX2 uniform-cost Levenshtein scorers for Haswell (c0f0a92)
- Add: Realistic multi-script UTF-8 prose fixtures across the test suites (82f009b)
- Add: C# / .NET bindings via P/Invoke LibraryImport (e329cef)
- Add: Java bindings via the Foreign Function & Memory API (8898899)
- Add: Vectorized
sz_find_delimiter_utf8UTF-8 delimiter scan (b5f70c3) - Add: Haswell and NEON backends for UTF-8 segmentation kernels (c2560c5)
- Add: Rule-derived UTF-8 test hardening from the UCD tables (ade89e4)
- Add: GB9c Indic-conjunct support to the grapheme test baseline (0d767c6)
- Add: Per-family Python test modules with ICU-anchored UTF-8 coverage (3ee3187)
- Add: UAX-29 sentence kernels and noun-based UTF-8 segmentation API (c85cccb)
- Add: GPU warp-cooperative Myers tier for long/few-pair Levenshtein (67389d0)
- Add: GPU UTF-8 Levenshtein; fix Lev<NW dispatch, affine spills, 100k UTF-8 OOM (47423c8)
- Add: GPU cross-product correctness cases for multi-word Myers reuse (ab165d8)
- Add: UTF-8 unit-cost rune Myers on haswell and neon (6070cdb)
- Add: i32/u32 candidate-lane kernel bodies for the wider-score tier (e3ed352)
- Add: Cross-product all-pairs similarity matrices (77887ff)
- Add: Free-lists for Python
StrandStrsheaders (cb5e796) - Add: UTF-8 normalization across language bindings (1c07bbe)
- Add:
sz_utf8_normbackends for every remaining ISA + differential fuzz (20a3667) - Add: AVX-512
sz_utf8_normbackends (Skylake baseline + Ice Lake override) (6767bea) - Add: WASM SIMD128 case-insensitive UTF-8 find (511e4a2)
- Add: Reverse-order byteset search on Icelake (814d387)
- Add: Single-pass UTF-8 normalizer
sz_utf8_normwith self-documenting tables (70e5d62) - Add: AVX-512 lockstep Myers Levenshtein family for Ice Lake (9f7a27e)
- Add: Multi-language UAX-29 word iteration and byte/Unicode ordering (236ddd3)
- Add: Swift UAX-29 word iteration and byte/Unicode ordering (60f4384)
- Add: Haswell & RVV string-sort backends (6435cf0)
- Add: WebAssembly SIMD128 multi-seed hashing & UTF-8 case folding (387c84e)
- Add: RVV runtime detection & Zvk-accelerated AES/SHA hashing (a0506d6)
- Add: RVV UTF-8 case-folding & case-insensitive search (077b71f)
- Add: Multi-seed Hashing (bb229ee)
- Add: NEON sequence arg-sort & pgram-sort via vqtbl4q-compress partition (b207063)
- Add: NEON u8-cell uniform Levenshtein scorers (Ice Lake parity) (ff374dd)
- Add: NEON uniform-cost Levenshtein distance backend (linear + affine, byte + UTF-8) (c5289f6)
- Add: NEON rolling Min-Hash fingerprint backend (90dc1da)
- Add: Case-folding tests for Rust & Python bindings (ec9ac5b)
- Add: Generative adversarial tests for UTF-8 case kernels (9c9db75)
- Add: Scaffold Haswell UTF-8 case backends (d454121)
Patch
- Make: Build StringZillas against the local core, publish base first (6335e0b)
- Docs: Record the Zenodo DOI in the citation metadata (a63e6df)
- Improve: Public Rust allocator surface, bump allocator-api2 to 0.4 (0f09a8c)
- Make: Build and ship Windows ARM64 wheels natively (668a9b9)
- Make: Split emulated wheel builds one arch per runner (be6f252)
- Make: Build each Pre-Release commit once (2678e73)
- Improve: Turn the UTF-8 norm constants into enums (b6875b6)
- Fix: Share one UTF-8 fold lead-family enum (7354fff)
- Improve: Decode multibyte UTF-8 in-register on WebAssembly, drop the serial stride (6b48460)
- Improve: Prove clean UTF-8 windows on POWER VSX without per-lane classify (107312b)
- Improve: Prove clean UTF-8 windows on LoongArch LASX without per-lane classify (37a2396)
- Improve: Prove clean UTF-8 windows on x86 Ice Lake without per-lane classify (fae13e5)
- Fix: Use sz_size_t for the Haswell copy tail counter (769b98d)
- Fix: Gate the Arm SIMD stack off big-endian targets (2c0e79f)
- Improve: Prove clean UTF-8 windows on x86 Haswell without per-lane classify (29ec6df)
- Improve: Decode 3-byte UTF-8 runs with a vlseg3e8 tile on RVV (e82228d)
- Improve: Skip the class-lookup gather on all-ASCII SVE2 sentence and line-break chunks (64d1a29)
- Docs: Refresh the Arm benchmark column on Graviton 5 (d4e3243)
- Improve: Tile and prove clean windows in the NEON UTF-8 decoder (fbe1681)
- Fix: Align Arm dispatch tie-breaks with 128-bit measurements (b07b37f)
- Make: Record the rejected SVE2 intersect kernel and its numbers (8dc491b)
- Improve: Load shifted views and gate multi-byte classes in NEON whitespaces (87b3c1e)
- Improve: Decode mixed-width UTF-8 chunks in a third clean lane (366f1e7)
- Improve: Resolve NEON delimiter bitmaps one distinct high byte at a time (a5177c8)
- Improve: Stream windowed in-register delimiter scans on SVE2 (fc0c594)
- Fix: Byte-order-correct tail shift in the serial short-hash ladder (e96637a)
- Make: Package exports & subproject hygiene (99e02fd)
- Improve: Port UTF-8 case folding and case-insensitive search to SVE2 (a1c9c74)
- Fix: Scan the remaining suffix when a cased-rune probe bails to serial (86f36b7)
- Fix: Pointer-width argsort indices in 32-bit wheel tests (5838265)
- Improve: Port UAX-29 grapheme clusters to SVE2 and bound the NEON classify (bb46bab)
- Fix: Correct VSX lead-classify table reads, retarget wheel tests (a3ef63c)
- Improve: Port UAX-14 line-break opportunities to SVE2 (7bd7e2c)
- Fix: Explicit vector casts for Clang 20 on POWER (211c13b)
- Improve: Port UAX-29 sentence boundaries to SVE2 (5ccc366)
- Make: Recognize Debian arch names, survive unknown CPUs in builds (6aaaf90)
- Make: Document the local QEMU multi-length and cross-ISA sweeps (3dda6b9)
- Improve: Peek across SVE2 token tiles and un-gate whitespace scans (6a44b75)
- Improve: Stream chunked windows in the SVE2 UTF-8 decoder (500544b)
- Improve: Add SVE2 byte-set search and an SVE reverse substring search (30db9be)
- Fix: Walk delimiter bitmaps scalar in the NEON tokenizer (889b0f7)
- Improve: Retire the hybrid word-break helpers, pin Double_Quote goldens (83535b1)
- Improve: Port WASM, POWER, and LoongArch word-breaks onto the engine (aeaaac5)
- Improve: Port RVV word-breaks onto the shared windowed engine (b82c5e5)
- Make: Emulated LoongArch, POWER, and WASM coverage in CI (b0d6004)
- Make: Reject tool attributions in commit messages (708e6a8)
- Improve: Golden vectors for deferred Mid* word-breaks on every backend (bd14766)
- Fix: Apply WB4 and defer WB3c in the RVV word-break fast path (5d01c63)
- Fix: Emit deferred Mid* word-breaks across window edges (ff5ec28)
- Make: Root the SwiftPM C target at the repository (5384023)
- Improve: Flat gather-fed BMP classifiers for UTF-8 segmentation (0d6584d)
- Fix: Run GPU doctest examples via capability guard instead of skipping (b1a0ff3)
- Improve: Add packed (terminator-free) Arrow view for cuDF columns (692c2c2)
- Make: Native multi-arch CUDA wheels, retire QEMU cross-builds (539326a)
- Improve: Own CUDA device-wide primitives, drop CUB launchers (639501f)
- Improve: Restructure and expand the PyTest suite (23edd03)
- Make: Scale down fuzz budgets for the QEMU test sweeps (7d3e5a1)
- Make: Compile ISA probes from files with keyword arguments (97ca373)
- Fix: Release the file mapping before deleting in the reinit test (a6d1ee7)
- Improve: Pick SVE over NEON by measured register width (b4319b0)
- Fix: Name
evex512&popcntin AVX-512 kernel attributes (124d7e9) - Make: Exercise the Cargo ISA probes in existing CI jobs (ed1614e)
- Fix: Include <unistd.h> so Linux-Arm CPU detection actually runs (0b3ed16)
- Make: Probe ISA compile & run sets in CMake and Cargo (caf2f92)
- Improve: Report full hardware truth from CPU detection (9696cce)
- Fix: Compile the SVE2 word-break engine as C99 (9089357)
- Improve: Broaden
sz_sequence_intersectto tolerate duplicates (74b20a8) - Fix: Match
fileoutput for RISC-V in the cross-build verify step (097feb7) - Fix: Return an empty matrix for empty Strs cross products (3a16f61)
- Fix: Size the empty-string similarity cell to avoid 8-bit wraparound (9195047)
- Fix: Parse capability names by exact match, not prefix (86e24bb)
- Make: Cross-build and QEMU-run RVV/SVE similarity tests across vector lengths (5621f00)
- Fix: Declare
syscall()on RISC-V under a strict-stdvia_DEFAULT_SOURCE(4797f06) - Fix: sz.equal compared its first argument to itself (af81c71)
- Improve: Interleave NEON single-word Myers chains for ILP (0ba5b5f)
- Improve: Faster NEON UTF-8 segmenter classify and compaction (075c674)
- Improve: Parametrize and extend the Python binding's degenerate-case tests (6716d21)
- Improve: Native full-width SVE2 UTF-8 word-break and token kernels (fc2dbdd)
- Fix: Use a portable temp path in the write_to doctest (e5784ae)
- Improve: Multi-script UTF-8 examples in docs and tests across bindings (386a432)
- Improve: Faster rolling-hash fingerprint kernels (f2cf810)
- Improve: Complete the per-ISA forward declarations in the umbrella headers (1cbb98e)
- Improve: Wire and cover sz_utf8_uncased_order across all ISAs (d50dbb8)
- Make: Test C# and Java bindings in pre-release CI (9308679)
- Improve: Lazy iterators and zero-copy MemorySegment splits for Java (9a793dc)
- Improve: Lazy iterators and splitting for the C# binding (21ae19e)
- Fix: Bind C#/Java FFI to the real sz_utf8_wordbreaks export (46036f3)
- Make: Drive per-ISA tests from file-local backend tables (1321ec8)
- Fix: Exclude U+200B/200C/200D from the UTF-8 whitespace set (f42c471)
- Fix: Size the test stdout buffer so Windows ucrt accepts it (becdd7a)
- Improve: Assert the segmenter/decoder contract in the UTF-8 iterators (ca306af)
- Make: Fetch tags in the versioning job so TinySemVer finds them (040f4b2)
- Make: Enable Python CUDA builds on Windows/MSVC (8b59153)
- Improve: Restructure the Rust StringZillas build, enable CUDA on Windows (29f7a94)
- Fix: Gate Rust replace_all helpers behind the std feature (a9b8bd1)
- Improve: Streaming line-break serial engine, no fixed window (e71882c)
- Fix: NEON grapheme and sentence classification of malformed UTF-8 leads (c061385)
- Make: Parallelize MSVC compilation in the Python build (e234f62)
- Fix: NEON local-max fold uses vbslq so GCC accepts the compare mask (c14a810)
- Fix: NEON word-break declares ill-formed 0xF8-0xFF leads as length 4 (bf03dea)
- Fix: Keep sz_static_assert C99-pedantic-clean and move the window assert to file scope (a284141)
- Fix: Silence unused hashing fuzz counts on no-SIMD-tier targets (ec6b342)
- Make: Gate C++23 test targets on real toolchain support (5a91b8d)
- Fix: Load constant NEON vectors via vld1q_u8 for MSVC ARM64 (81b5254)
- Fix: Upgrade sz_static_assert to use _Static_assert when available (9740997)
- Improve: Narrow line-break byte-start array from sz_size_t to sz_u16_t (05c1636)
- Fix: Shrink serial line-break window from 1024 to 128 codepoints (375a44d)
- Make: Support MSVC as NVCC host compiler and CCCL 3.x include layout (6eb20b1)
- Improve: Generalize CUB iterator usage for CUDA 13+ / CCCL 3.x (66696bf)
- Fix: Replace GCC-only [[gnu::noinline]] with portable SZ_NOINLINE macro (091f42b)
- Fix: Explicit instantiation formatting and missing noexcept specifiers (79f89f9)
- Fix: NEON sz_move corruption on overlapping forward moves (374d8e3)
- Fix: NEON out-of-bounds LUT read in ASCII Word_Break classifier (47843e6)
- Fix: CI -Werror/portability nits (a_rune init, hash_serial sz_unused_, execinfo musl guard) (e4666ec)
- Make: Run pre-release CI on all
main*branches (c890d21) - Improve: Expose the utf8_delimiters tokenizer to Rust, C++, and Python (49b08aa)
- Improve: Expose UTF-8 rune counting and normalization to Go (744aa73)
- Fix: Restore C++11/14 compilation of the range views (2eb7c8c)
- Docs: Restructure READMEs; add similarities & fingerprints module docs (e232cae)
- Improve: Rename sz_utf8_valid -> sz_utf8_find_malformed (83748d6)
- Improve: Fuse delimiters into tokens as a segmenter (d0a5875)
- Make: Rust
dynamic-dispatchfeature with compile-time SIMD dispatch (e856f1d) - Fix: Wire Haswell and NEON NW/SW kernels into the similarity benchmark (e9e0fc9)
- Fix: Guard public engine returns with SZ_NOIPA against GCC -O3 miscompile (e1c7087)
- Fix: Sanitize benchmark failure-log filenames (9f9f779)
- Make: Link libm for CUDA benchmark targets (6016de9)
- Fix: Normalize the order benchmark baseline and count only scanned bytes in find_nth (ce7c352)
- Improve: Single-fixup barrett reduction in the floating rolling hash (5f6e412)
- Fix: Drop rolling-hash debug asserts from Release builds (3d014df)
- Docs: Initial tables for operation families (e8d7efd)
- Docs: Add CITATION.cff for software citation metadata (f794350)
- Improve: Mutable metadata_ref accessor and span-based try_argsort coverage (04e53db)
- Improve: Wire utf8_norm and utf8_delimiters into tests and benchmarks (90274c2)
- Improve: Instrument benchmarks to report hashes/s and comparisons/s (b85cc7e)
- Improve: Cover all implemented ISAs in the UTF-8 iteration benchmarks and tests (0a3092f)
- Fix: Align Haswell grapheme and sentence kernels with serial on ill-formed UTF-8 (20f10c2)
- Fix: Compare the full candidate length in the order benchmark (9bf7186)
- Docs: Per-binding READMEs and v5 main-README refresh (c27d952)
- Improve: Restore conditional wide-byte gathers in the NEON rune drain (flat, perf-neutral) (813af50)
- Improve: Restore conditional wide-byte gathers in the LASX rune drain (flat, perf-neutral) (524d431)
- Improve: Restore conditional wide-byte gathers in the Ice Lake rune drain (flat, perf-neutral) (06b9e20)
- Improve: Restore conditional wide-byte gathers in the AVX2 rune drain (flat, perf-neutral) (83032a9)
- Improve: Sort partition/export and NEON/PowerVSX memory kernels (df75303)
- Improve: Reverse byteset search, RVV ordering, and find/compare laggards (f44766e)
- Improve: In-register hash buffer merges and batched SVE bytesum (a34f58b)
- Fix: SVE/x86 kernel correctness and Haswell bytesum high-byte undercount (ac0ad81)
- Improve: Single signed compare for UTF-8 codepoint counting (77bc145)
- Improve: Inline serial tail for short Ice Lake table lookups (697ad50)
- Improve: In-register prefix assembly in Ice Lake sequence intersect (543f96c)
- Improve: Register-only streaming hash merge on Ice Lake (5593fe5)
- Improve: Start-compact the words AVX2 and NEON classifiers (413c7ac)
- Improve: Start-compact the words Ice Lake classifier cold path (0758d58)
- Make: Parallel, header-aware Python extension builds (f57bd29)
- Improve: Faster CJK & 2-byte UTF-8 segmentation on Ice Lake (477d48f)
- Improve: Streamline UTF-8 segmentation test suite (1fd79e8)
- Improve: Harden UTF-8 segmentation test suite (6c60999)
- Improve: O(1)/codepoint serial sentence & linewrap backends (46fe8de)
- Docs: Passing capability tuples to CPython (9de2498)
- Improve: Linewraps carry bit-pack + LB21a/LB10 fixes; sentence dense decode (08e8e15)
- Improve: O(n) forward-pass word serial + fix two Ice Lake word window-edge bugs (05fd48a)
- Improve: Vectorized UAX-14 line-break Ice Lake kernel (60dc54e)
- Fix: Ice Lake SB8 boundary lost when an ATerm neutral right-context outruns one window (85ae8fe)
- Improve: O(n) forward-pass serial sentence segmenter (4x), matching the word/grapheme shape (d33ee83)
- Improve: Gate the sentence page LUT and trie behind lane-presence (20ec449)
- Improve: 4-bit-pack word astral_leaf via the shared nibble cascade (865e6f2)
- Improve: 4-bit-pack grapheme stage_sub to halve the residual cascade (cee3909)
- Improve: CJK/Kana arithmetic fast-path skips the grapheme cold cascade (7e5312c)
- Improve: Default UTF-8 iterator batch STEPS 16 -> 64 (c4c97bb)
- Improve: Re-init-free Ice Lake grapheme classifier, O(n) serial driver, branchless carries (eddb02f)
- Improve: Re-init-free Ice Lake word classifier reads tables from aligned .rodata (3083e6f)
- Improve: Register-resident astral trie for the Ice Lake word kernel (982381f)
- Make: Normalize UTF-8 boundary APIs onto sz_utf8_find_linewraps (1c49c9f)
- Improve: GPU Myers reuse cap to 2048 recovers the 1KB Levenshtein cliff; parallel wheel build (5fd964c)
- Improve: Route 129-512 byte weighted NW/SW pairs to the warp kernel (092f13e)
- Improve: Multi-word Myers Peq-in-shared reuse kernel for 65-256 byte queries (cf0c7f0)
- Improve: Size similarity bench batch from STRINGWARS_BATCH_PER_CORE (b535b93)
- Improve: Spread Myers Peq-reuse cross-product across warps for few queries (ba15528)
- Fix: Reserve a load-transaction word for GPU diagonal scratch (42cc5a7)
- Improve: INTER-batched UTF-8 rune kernels for non-unit & affine Levenshtein (ab5fda7)
- Fix: Return
cuda_status_tvia memory to dodge NVCC struct-return bug (1d9651d) - Make: Candidate-lane cross-product driver generic over element type (659cfe3)
- Improve: GPU router groups tasks into dyadic length bands (331b2a9)
- Improve: Hopper DPX in the register/batch weighted GPU kernels (d519ae7)
- Improve: width-tiered candidate-lane driver activates the i32/u32 tier (ead1302)
- Improve: Zero-copy
out=buffer forStrs.argsort(b6e1a4b) - Fix: Align packed hash state through an ISA-native aligned twin (29bcaaf)
- Fix: UBSan-clean unaligned access in Haswell & LASX memory kernels (2bda78b)
- Improve: Flatten and nativize the UTF-8 iterator kernels (b53b3b4)
- Fix: Streaming hash dropped the trailing partial block (a0a8787)
- Fix: Define lossless malformed-UTF-8 handling; consolidate the rune codec (6e43972)
- Improve: Single-pass UTF-8 newline/whitespace/word iterators across all ISAs (56777b8)
- Improve: Fuse Ice Lake Myers recurrence boolean ops into VPTERNLOGQ (bb2b243)
- Improve: GPU large-input similarity — tiled device tier + Myers (a3c0382)
- Improve: Self-contained, fully-masked RVV kernels & cleanup (c38cfbc)
- Make: Align C/C++/CUDA builds at -O2; skip C rebuild on Rust-only edits (18a3acd)
- Improve: Pin RVV fold mask policy to mask-undisturbed (b49394b)
- Fix: Guard intersect & lookup on 32-bit / WebAssembly targets (966e7bd)
- Make: Expose the WebAssembly target to the Rust build & CI (cadf1c5)
- Improve: Cap-free RVV search & streaming word boundaries (dc34751)
- Improve: Vectorize & clarify UAX-29 word kernels (985c4a7)
- Improve: Case-insensitive arg-sort on the SIMD partition across all tiers (b52e098)
- Improve: Introduce Python DocTests, including in CI (d30050f)
- Docs: Expand & normalize Python docstrings (3e71dbe)
- Improve: Declare all CPU similarity backend aliases uniformly (834a66c)
- Make: Stable arg-sort with reverse, top-K & case-insensitive UTF-8 order (862afee)
- Improve: Benchmark Levenshtein under both unit and non-unit cost schemes (34038e1)
- Fix: Order bytes as unsigned across serial & Skylake comparisons (10ada8b)
- Improve: Use vmovl_high for NEON similarity-scorer widening (b4bbc4a)
- Improve: TBL delta-LUTs for NEON central-European & Greek fold callbacks (2cc1e68)
- Improve: Vector-domain NEON case-insensitive alarms (drop per-value movemasks) (f85a784)
- Improve: Symmetric Armenian, Georgian & Greek UTF-8 case folding across SIMD tiers (4f1fc16)
- Fix: Enforce cumulative SIMD tiers so a tier implies its substrate (2aff348)
- Improve: NEON case-insensitive UTF-8 search (12e97b8)
- Fix: Expose 128/256-bit vector union members under all x86 SIMD tiers (46243e8)
- Improve: NEON Cyrillic, Greek & guarded UTF-8 case folding (6defd08)
- Improve: AVX2 case-insensitive search for remaining scripts (0d05996)
- Improve: AVX2 case-insensitive UTF-8 search (cefeee2)
- Improve: NEON Latin UTF-8 case folding (d8e1a10)
- Improve: AVX2 UTF-8 case folding for Cyrillic, Greek & CJK (0b60ec5)
- Improve: AVX2 UTF-8 case folding for ASCII & Latin (66bfc90)
- Improve: NEON UTF-8 case folding for caseless scripts (ac00e18)
- Improve: Walker-owned layout() scratch & <=512 Myers (31a92ef)
- Improve: Tune Ice Lake case-search microkernels (3b20e03)
- Fix: Case-fold crash & Unicode 17 classifier gaps (6bb7a76)
- Improve: Reorganized UTF-8 case kernels for Ice Lake (1ee6379)
- Fix: Off-by-one in arrow_strings_tape offsets growth (b6721b4)
- Fix: Live timing in benchmark repeat loops (1c5025a)
- Make: Tidy StringZillas CMake library graph (a64c441)
- Make: Precompiled StringZillas static & shared libraries (fb8c9d2)
- Improve: Resolve grids via CUDA driver API, not runtime (4acb3c5)
- Improve: Linear memory serial baselines (960db38)
- Improve: Deduplicate engine constructors (6be92db)
- Improve: Own GPU timing events per engine and move launch sync to the driver API (7e9c098)
- Improve: Affine-gap class-cost NW & Smith-Waterman scorers for Haswell and NEON (7be4867)
- Fix: Transpose class-cost lookups when the serial walker swaps strings (33d7981)
- Improve: Haswell AVX2 anti-diagonal class-cost NW & Smith-Waterman scorers (5d98cb4)
- Improve: Affine-gap register aligners for short CUDA Levenshtein/NW/SW (ea8b03d)
- Improve: ARM NEON anti-diagonal class-cost NW & Smith-Waterman scorers (abc182b)
- Improve: Affine-gap Ice Lake NW/SW class-cost diagonal scorers (de72dca)
- Improve: Narrow per-string lengths and warp-loop counters to 32-bit in the CUDA aligners (d672b37)
- Fix: Prefer the Hopper DPX tier over base CUDA in the similarity dispatch (2557d3f)
- Docs: Document fast test/benchmark iteration knobs (6a31e44)
- Make: Scale the UTF-8 case-fold fuzz with SZ_TESTS_MULTIPLIER (298abf2)
- Make: Shrink fingerprint equivalence inputs and generate them once (7c978c4)
- Improve: Run the core test suite through the shared timed runner (78891c9)
- Improve: Shared test runner and coverage for the new backends (c938f3e)
- Improve: Cap loaded tokens and override batch sizes from benchmark env vars (367da1a)
- Improve: Exchange fingerprint chunks via warp shuffles and reuse CUDA scratch (8de0a33)
- Improve: Register-resident short-sequence GPU aligners and leaner launches (34bb635)
- Improve: Fuse the Hopper min-plus recurrence into a single DPX instruction (bd628c1)
- Improve: Fuse the floating rolling-hash discard and intake into one Barrett reduction (4ce1a59)
- Improve: Ice Lake diagonal SIMD scorers for class-cost NW & Smith-Waterman (266bfc3)
- Improve: Shared test runner with timing, name filtering, and crash backtraces (6c1529b)
- Improve: Per-dimension hasher seeding through constructors (5997d8a)
- Improve: Seed fingerprint hashers from independent splitmix64 streams (d86d57d)
- Improve: De-scalarize RVV/NEON hash loads and vectorize RVV find_nth (4f63a12)
- Improve: WASM v128/v128relaxed kernels — vectorize hash/SHA-256, shed serial loops (9ba9255)
- Improve: LASX SIMD kernels and add UTF-8 iteration benchmarks (7ebd3b6)
- Make: Refresh Python, Rust, Node, and Swift builds for the per-TU C layout (d3d5335)
- Make: Cross-compile toolchains, build wiring, hook, and formatting (5a8da70)