You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
sz::split and the other 13 range helpers took the haystack by value β sz::split(view, "-") never compiled, and an owning lvalue was deep-copied so every returned offset pointed into a private copy and was meaningless against your own iterators. Under SSO the offsets came back small and plausible rather than obviously wrong.
Rolling fingerprints published uninitialized counts. A chunk shorter than the window completes no hash and never overwrote the min-count accumulators, so results were stack garbage β a 3-byte text reported 1,006,634,040 against 0 from the per-text path β and reused scratch folded one text's counts into the next.
CUDA contexts are now bound per device and per thread. A current context is per-thread state the driver never creates implicitly, so a scope scheduled on one thread left every other thread with none; kernel tables and timers are keyed by device now.
CPU capabilities were discarded when no GPU was present. Any driver error other than "no device" returned sz_caps_none_k, so driver-less machines and containers reported no backends at all and silently lost every SIMD tier.
Similarity scoring fixed on degenerate and wide-cell shapes across every backend, along with gap-track seeding at the boundary and per-pair DP cell sizing.
Cross-product similarity now batches cells into lockstep launches. Every engine dispatched one cell per scheduler prong while the kernels underneath score 2-64, so a prong filled one lane, idled the rest, and paid the full vector cost β the batched kernels never engaged under the parallel executor. Fixed across serial, NEON, Haswell, Ice Lake and RVV.
sz_isascii helper is retired in favour of an ISA-specific byteset scan. The old SWAR loop could never reach the SIMD kernels; callers now name the backend explicitly and one that names none fails to compile instead of silently settling for the serial tier. 4.9 ns on NEON vs 7.0 ns for the retired SWAR over 100-byte inputs.
Packaging: free-threaded Python 3.14 (cp314t) wheels, CUDA-on-Arm wheels building under Clang as host compiler, and the Swift package building on Windows.