Fix: Initialize dummy_input in simsimd_capabilities to fix MSan false positive - #302
Merged
Merged
Conversation
… positive
`simsimd_capabilities` probes SIMD instructions with an uninitialized
`dummy_input` buffer and `n=0`. SVE implementations use `do { ... } while`
loops that always execute the body once. MemorySanitizer doesn't understand
SVE predicated loads and reports use-of-uninitialized-value.
Initialize the buffer to zero to silence the false positive.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
1 task
This was referenced Jul 24, 2026
github-actions Bot
pushed a commit
to Mixaill/SimSIMD
that referenced
this pull request
Jul 24, 2026
### Major
- Break: Fewer args for `nk_find_kernel_punned` (3744bdb1)
- Break: `ml_dtypes` & NumPy v2+ compatibility (6658cc4a)
- Break: Higher precision `mesh/` for F32 & F64 inputs (fbf1bf21)
- Break: Higher precision `probability/` operations for F32 (fe8a1fc3)
- Break: F64 results for F32 curved/, maxsim/ & sparse/ (29f52c37)
- Break: F64 results for F32 dot-products & spatial-distances (22ff3fc9)
- Break: Better complex numbers for Rust (27976e0a)
- Break: MaxSim output signature (238f65fb)
- Break: Ban `threads=` arguments for Python methods (8039f283)
- Break: 32-bit "sizes" for 32-bit platforms (a88b667e)
- Break: Remake CPython binding entirely (0a0f449e)
- Break: Remove `f16` Sapphire curved kernels (f0e9fa0d)
- Break: Deprecate SME for meshes & some SVE ops (f55e9a71)
- Break: Replace the old reductions (285c5e5e)
- Break: Drop `u1` GEMMs (84a369e0)
- Break: Assymetric GEMMs (9fa8c899)
- Break: Replace `_accurate` baseline with C++ templates (5a0b7b4f)
- Break: Consistent E4M3FN handling for NANs (94febd4a)
- Break: New policy for sub-byte dtypes (b1997c95)
- Break: New mixed-precision policy for spatial kernels (2edff57e)
- Break: New dot-product precision guarantees (ffa8efd8)
- Break: Ban typename shortcuts to avoid NumPy conflicts (131dda52)
- Break: Remove legacy Golang symbols (9e310b0e)
- Break: New capability enums for SME & NEONFHM (9ba1ee53)
- Break: New capability names (8029b00d)
- Break: New Rust ABI (325d9056)
- Break: Return types & 4-way finalizers (b55f013a)
- Break: Refactor output types & variable names (8ed877e7)
- Break: New `.h` header reference design (5412fcc6)
- Break: New API for MatMuls (f37afb73)
- Break: Trait for each API (1d0f06a3)
- Break: `js` & `kl` → `jsd` & `kld` (9ef04301)
- Break: `cos` → `angular` distance (a1a6f65f)
- Break: `cos` distance renamed to `angular` (b480b5c3)
- Break: Shorter symbol names (38df49c6)
- Break: Shorter op-codes (383b7991)
- Break: Support mixed-type element-wise ops (4646d6b7)
### Minor
- Add: CMake option to enable AddressSanitizer (f4c93132)
- Add: Rust trait reorganisation, bit reductions, macro purge (31217375)
- Add: Tensor `fill_zeros`, `fill`, `copy`, popcount-style `BitwiseReductions` (01274600)
- Add: DLPack 1.3 interop bridge for numkong.Tensor (ea74fe19)
- Add: Back-port tensor API to C++20 for CUDA (ad930682)
- Add: NEON popcount kernel for nk_reduce_moments_u1 (2181e0c6)
- Add: Tensor constructors, sealed trait family, div_ceil cleanup (2792279f)
- Add: Span-based matrix `_into` APIs, parallel Hammings/Jaccards, full-crate docs (99289df6)
- Add: OpenMP for Python & JavaScript (499ecc92)
- Add: Granite Rapids AMX for F16 & F32 (28036ea6)
- Add: Was elementwise ops & spatial mini-float kernels (81b8c449)
- Add: WASM type-casting kernels (e09df318)
- Add: SVE+SDOT ops for 8-bit integers (913fc6b0)
- Add: NEON & SDOT fallbacks for `i4` & `e3m2` (0c6afa5f)
- Add: `sets/` kernels for LASX (34d3d672)
- Add: Loongson F16 kernels (1a81142f)
- Add: Power9+ ISA backend (176bbe22)
- Add: Diamond Rapids backend (b3136e3b)
- Add: LAPX kernels for LoongArch (565a8475)
- Add: Infra for Loongson, Power, Diamond, NEON FP8 (55772613)
- Add: NEON+FP8 kernels for Olympus (22048acc)
- Add: `nk::cast` & reduction helpers for C++ (80ff0b03)
- Add: Printing individual `nk::vector` dimensions (af719c78)
- Add: Half-precision `mesh/` kernels in AVX-512 (09c3a79b)
- Add: Sub-byte iterators for C++ tensors (7b0268e2)
- Add: Rust `AllClose`, `MinMaxResult`, & new tensor iterators (45fcc127)
- Add: Sub-byte aware iterators for Rust (b0042f33)
- Add: `std::format` for mini-floats (b1427e50)
- Add: Addressing CUDA memory in Rust with `from_raw_parts` (39449a35)
- Add: Zero-copy Tensor views in Python (5c035f82)
- Add: `CustomStringConvertible` for Swift types (75d63cec)
- Add: Basic logging for JS types (c0ab7482)
- Add: Basic `std::formatter` for C++ users (bdb4e73d)
- Add: `e3m2` Alder spatial kernels (bf2ba467)
- Add: Missing BF16 & F16 kernels for NEON & SVE (b9d7434d)
- Add: Packed GEMMs & SYRKs for JS (f293a82b)
- Add: Float8 `spatials/` kernels for WASM (3d08c31c)
- Add: New Tensor constructors for Python (00991a34)
- Add: `bf16` kernels for NEON (c055d0b3)
- Add: Dedicated Swift benchmarks (20f171ca)
- Add: `f16` & `e3m2` initial WASM dot-products (b79d4c94)
- Add: Cleaner API for geospatial ops in Swift (0872fca5)
- Add: Go SDK for GEMMs & MaxSims (df6bed7e)
- Add: Matrix & MaxSim ops for Swift (a080e686)
- Add: Capability checks in GoLang (947aacbd)
- Add: Tensor lookups and slicing in Rust (1dd477a4)
- Add: Partial loads/stores in AVX2 (eeb71651)
- Add: Tensor slicing logic (39ff1852)
- Add: `mesh/` operations in WebAssembly (4babf2ea)
- Add: `sets/` operations in WebAssembly (01526328)
- Add: Custom packer stubs for `dots_u1` on Haswell, Ice Lake, NEON (4c71a29e)
- Add: PyTest for MaxSim (e0f76a28)
- Add: More `dtype` variations for WASM kernels (f1934708)
- Add: MaxSim for Python (28bb0b17)
- Add: MaxSim ops on Sapphire AMX (3b81be96)
- Add: `spatials/` & `maxsim/` ops for C++ (355a7c0c)
- Add: Zero-copy reductions & native `Complex` numeric types for Rust (0c19c834)
- Add: Missing `from_dot` adapters for Haswell, NEON, & WASM (f155ed7c)
- Add: New compensated GEMMs for i4/i8/u8 on x86 (62e18203)
- Add: New matching Matrix & Tensor APIs for Rust & C++ (e3524581)
- Add: Batched many-to-many distances for Python (ff76363d)
- Add: Alder Lake backend & reorganize Sierra Forest (a55c5a5a)
- Add: Consistent Tensor & Vector designs for C++ & Rust (f11b7ee8)
- Add: New DTypes & GEMM-like ops for Swift (61869dd8)
- Add: Sapphire AMX `e4m3` symmetric kernels (0aa5a47b)
- Add: Missing SapphireAMX & Sierra `spatials/` kernels (fcbcfc75)
- Add: `maxsim_pack_f32_sme` (0dbdada8)
- Add: StreamingSVE reductions (45ff3010)
- Add: `f16` scalar ops (5d040cee)
- Add: New headers for common ISA-specific scalar ops (40f0ebbc)
- Add: Full MaxSim support in the C layer (b7e8beb9)
- Add: Complex elementwise Rust traits (638bc3aa)
- Add: `each/` ops for complex numbers (a2ce1efb)
- Add: All new Python testing suite (b367e14b)
- Add: `f64` KLD & JSD on Haswell (743af070)
- Add: `spatials/` for many-to-many distances (ef28bb37)
- Add: Binary dot-products for SME (82d1d313)
- Add: `u1` dot-products (8d67a758)
- Add: Recursive CPython tensor reductions (336d1199)
- Add: MaxSim drafts for Genoa (49c2510c)
- Add: `NK_ALLOW_ISA_REDIRECT` flag for sparse kernels (adceb700)
- Add: Missing reduction type mappings (8286daba)
- Add: New 6- & 16- bit types for Python (fc460b99)
- Add: Sub-byte reductions & arithmetics in Rust (c9d2088f)
- Add: Complex Bilinear forms for Rust (0551b40e)
- Add: `jaccards` kernels in SMEBI32 (c9a3eb3a)
- Add: Universal Cauchy & Log-Normal PRNGs (f8c11a45)
- Add: Draft `maxsim` operation for SME (7444d8d5)
- Add: Kernel return type metadata (ab02e482)
- Add: Haswell Curved kernels (25f867de)
- Add: RVV GEMMs (64db680d)
- Add: SME & Sapphire AMX `e2m3` & `e3m2` kernels (de2aa5ce)
- Add: New reductions for WASM & RVV (3286ce04)
- Add: Draft new reductions for Arm (4c136d53)
- Add: New reductions for Sierra Forest & newer (b7247ed2)
- Add: Mini-float reductions on Ice Lake & Genoa (a29db28d)
- Add: Missing new Flaot6 Skylake reductions (0d9c3daf)
- Add: All-new `moments` & `minmax` combined reductions (b8ae2566)
- Add: `e3m2` products through `i16` (40ec9b91)
- Add: Mesh kernels in for Arm SME draft (0e0bc30c)
- Add: WASM Imported Memory support & zero-copy views (d05e020d)
- Add: Missing float6 Skylake reductions (38a190e1)
- Add: All-new WASM-compatible JS binding (bffa22ab)
- Add: Faster u1/u4/i4 SME kernels (61d010f9)
- Add: 18x faster MOPA-based symmetric pairwise products (06966b39)
- Add: Broader reductions dtype coverage (05e84628)
- Add: Sapphire path for Float6 dots with Flaot16 4-way product sums (98f78151)
- Add: RVV reductions, cruved metrics, divergences, & trigonometry (6ba8bf42)
- Add: Massively faster SME kernels (ad844cf8)
- Add: `e4m3` LUT-based upcasts, `SHLL` for `e5m2`, & FHM GEMMs (ac65bdbe)
- Add: New `RVVBB` capability for bit-ops in RISC-V (e6e9c74c)
- Add: RVV Geospatial & Mesh kernels (d4ea9a4d)
- Add: Full type coverage for reductions (a8a8c99d)
- Add: `EM_JS`-based runtime Relaxed SIMD detection (e619f79b)
- Add: Geospatial kernels for Relaxed WASM (32c40e8f)
- Add: Faster RVV vector-vector dot-products with LUTs (63fffe3f)
- Add: `mahalanobis` tests (3f315059)
- Add: `mesh_result_t` for C++ API (c840ebb3)
- Add: Relaxed SIMD backend for WASM (5ba15e26)
- Add: `i4`, `u4`, `bf16c` Haswell kernels (a82c92c6)
- Add: Float6 dot-products on Haswell (9ab4504b)
- Add: Baselines for `hammings` (bad2b31f)
- Add: Pre-packed "Hammings" for each ISA (b4cdc725)
- Add: Missing Float6 dot-product kernels (10650619)
- Add: Missing Float6 `nk_cast` adaptations (b4500c32)
- Add: Draft `sets.h` to leverage `SMEBI32` (29500b18)
- Add: `Float6` vector-vector x86 kernels (980b681d)
- Add: `Float6` GEMMs for x86 (e9414077)
- Add: `i4` and `u4` NEON dot products (36abbaa8)
- Add: FMLAL for Float6 dots through Float16 (31e62097)
- Add: `e2m3`, `e3m2` for Rust (e9d69662)
- Add: Initial Float6 support with `e2m3` & `e3m2` (1dc1973a)
- Add: `DotsSymmetric` for Rust (a12c3f74)
- Add: Symmetric GEMM APIs (672af9ff)
- Add: Lower-precision RVV kernels (ec971269)
- Add: Curved ops for Rust (ba4743fe)
- Add: Reduce & Each* traits for Rust (6b3abb8a)
- Add: Intersection outputs and new binary.h kernels (b7dcee03)
- Add: New SME kernels (9c6882e1)
- Add: PRNG kernels placeholder (e7234bd5)
- Add: Attention kernels placeholder (d6bcd6c1)
- Add: New Float-as-Int reductions trick (ddb0b6de)
- Add: Casts on Arm NEON (d039acc9)
- Add: Sub-byte matrix multiplications (a08f1957)
- Add: Dispatch orphaned AVX-512 elementwise ops (5f21aa34)
- Add: Dispatch min/max reductions (8c8177f1)
- Add: Parallel MatMuls in Rust via Fork Union (daf7d249)
- Add: `nk_cast` for Sapphire and Ice Lake (c4454e11)
- Add: Rust MatMuls for more numeric types (0cfd3a94)
- Add: Dynamic dispatch for casts (8a5b586f)
- Add: RVV dispatch checks (01412b63)
- Add: Initial RISCV64 support (fa9c345e)
- Add: `u8u8u32` and FP8 variants for AMX (f836acd2)
- Add: Casts & sub-byte types for Rust (5e61c32f)
- Add: Reusable Sapphire AMX logic (7878fb5c)
- Add: Benchmarks for casts (255b8d31)
- Add: Serial tangent helpers (c7092850)
- Add: Type-casting headers (5faf6296)
- Add: Higher-precision dot-product on Haswell (e600fc7e)
- Add: Half-precision trigonometry for SPR (c49c3379)
- Add: Missing b8 Haswell strided blend (957545d7)
- Add: Missing Haswell F64 GEMM (364e29b6)
- Add: Relevant Sierra kernels (1f1e25ba)
- Add: F64 KLD/JSD in AVX-512 (91a2dc79)
- Add: Reduce on Skylake & Ice Lake (e50c4ee8)
- Add: Extensive ULP testing for all APIs (55f6b34a)
- Add: Half-precision mesh for Haswell & NEON (ef4f0f88)
- Add: Missing F8/F16 dispatch tables (608a621e)
- Add: F8 elementwise ops for Haswell & NEON variants (696c66b3)
- Add: F8 reductions for Haswell & NEON variants (c64b2275)
- Add: Serial fallbacks for elementwise & reduction ops (c68ec46a)
- Add: Multiprecision testing against Boost (998de28a)
- Add: `NDArray` for Rust (b8697997)
- Add: Reductions for `nk.NDArray` (c7c5b2b5)
- Add: Reductions dispatch (04df323e)
- Add: Dot products dispatch (02301d15)
- Add: SME, FHM, and AVXVNNI checks (823555a7)
- Add: Missing NEON ops & declarations (17cd8299)
- Add: Missing kernel dispatch (cca00fbb)
- Add: F8 & F64 dot-product for NEON (9de5eb6b)
- Add: Geospatial kernels to Rust (98d2ce9f)
- Add: Serial fallbacks for i8/f16/f64 GEMMs (53f69c3f)
- Add: Matrix multiplications via NEONFHM (4bd30ecd)
- Add: Complex math with NEONFHM (1c18188c)
- Add: Geospatials for Arm NEON (1232890f)
- Add: Improved mat-mul packaging (af5b9400)
- Add: Kernel output metadata for CPython bindings (2927b5b6)
- Add: Type-punned scalars for CPython & NodeJS bindings (5a3c33a3)
- Add: Double-precision GEMM on Arm (5bd1b9eb)
- Add: Missing reductions dispatch & benchmarks (702bf2f3)
- Add: Port trigonometry to NEON (c018f50f)
- Add: Dot-product accelerated reductions (ed245b2d)
- Add: Single-pass reductions on Arm (0a67a039)
- Add: Integer reductions (27ee432c)
- Add: Strided reductions in SIMD (19f291d4)
- Add: Reusable reductions (61f5b5e5)
- Add: Serial stateful Jaccard variant for NxN (d09b7db8)
- Add: Smaller states & faster finalizers for binary kernels (a9c39f05)
- Add: Fast-path GEMM for SIMD-divisible tile sizes (24ca6cef)
- Add: New inner-product matmuls (d3760b1e)
- Add: Tiled serial kernels (95db3d9d)
- Add: New macros to build GEMMs from outer products (b17e9adf)
- Add: MatMuls, MKL, & Mesh benchmarks (0809cdf5)
- Add: Feature-complete Tensor type (fd8b3808)
- Add: Streaming APIs for spatial metrics (068d0755)
- Add: Expose geospatial kernels to the shared lib (55e32f38)
- Add: Backport `f8` dot-products to Haswell (69a6e104)
- Add: Mesh alignment for Rust (f3bd0ce4)
- Add: Umeyama kernels for mesh scaling (f8da516b)
- Add: Sapphire/Granite AMX capabilties (5e72fe7d)
- Add: Kabsch-Umeyama metrics with scaling invariants (ade61a01)
- Add: Haswell Mesh-processing kernels (4f225bf0)
- Add: Separate AMX fast & slow path with buffering (144f977b)
- Add: Kabsch & RMSD for 3D meshes (095d4271)
- Add: AMX-based MatMuls for SPR (55074ce6)
- Add: FP8 vector dot-products (50b8acbc)
- Add: Geospatial Haswell kernels (d81f8062)
- Add: Haversine & Vincenty for `f32` and `f64` (a5c6112f)
- Add: Expose geospatial kernels to Python (202068bd)
- Add: Backport trigonometry to Haswell (1082eba3)
- Add: Geospatial benchmarks (ba860061)
- Add: `ElementwiseOps` & `Trigonometry` traits (78b78581)
- Add: `e5m2` & `e4m3` types for Rust (024be355)
- Add: Draft Geospatial & MatMul kernels (839ef359)
- Add: Saturating math, `e4m3` & `e5m2` (9adb38c6)
- Add: `atan2` Skylake kernels for Haversine (044118d8)
- Add: Elementwise Py annotations (ea86be9b)
- Add: Elementwise scaling & summation (40dc616a)
- Add: Trigonometric functions for Skylake (02711a53)
- Add: `atan` & `atan2` serial variants (bc6ed87a)
- Add: Trigonometry based on SLEEF (96adae55)
- Add: Element-wise Python benchmark (8fb5a0c0)
- Add: BLAS benchmarks for elementwise ops (a22607d9)
- Add: `u8` APIs to Rust SDK (b3f98e68)
- Add: `simsimd.multiply` (d81868aa)
- Add: `simsimd.multiply` (48bd7127)
- Add: Missing serial integer `wsum`-s (3aac9ad5)
- Add: Dynamic dispatch for element-wise ops (602f8126)
- Add: Element-wise saturated addition for Ice Lake (09735ea7)
- Add: `i64`element-wise kernels for Skylake (463e8f39)
- Add: `i32` element-wise kernels for Skylake (d1bb51c6)
- Add: `i16` element-wise kernels for Skylake (8950a7ed)
- Add: `i8` element-wise kernels for Skylake (d10d27e0)
- Add: `i32` element-wise kernels for Haswell (e2698b0b)
- Add: `i16` element-wise kernels for Haswell (0e7c656e)
- Add: `i64` element-wise kernels for NEON (75993e79)
- Add: `i32` element-wise kernels for NEON (1f91b92e)
- Add: `i16` element-wise kernels for NEON (54bb07dc)
- Add: Type-casts to & from `[iuf]64` (4c69e7d6)
- Add: `mdspan` (ac5841f4)
- Add: Same-type element-wise ops (7666884b)
- Add: `simsimd_ndindex_t` for high-rank tensors (a57264a8)
- Add: Sum & Scale APIs (fb5dce73)
### Patch
- Improve: Report Umeyama scale as NaN for degenerate source (895742d8)
- Fix: Fast-math-safe float classification (b25666da)
- Fix: Accumulate `i4` angular bias correction in `i64` on Icelake (f59c9156)
- Fix: `const` friendly & rank-aware tensor ops (ef37cf9b)
- Improve: Harden tensor shapes against `-flto` (3eca0d2c)
- Improve: Accept any integral in sub_byte_ref::operator=, clamp out-of-range (f3004f63)
- Improve: Collapse per-lane finalize args to one pointer-to-vec shape (a35ddcde)
- Improve: FP8 GEMM throughput on Skylake/Haswell + Granite Rapids E5M2 kernel (c19bec99)
- Improve: FP8 pairwise distance kernels via Giesen trick + F16 widen path (679f55fa)
- Fix: Keep `*_serial` kernels scalar across LTO (455d535b)
- Make: Enable symbol exports for `nk_shared` Emscripten builds (482e4fd1)
- Improve: SSD trace-identity fold across all mesh backends + Genoa/NEONFHM kernels (e9d40e5d)
- Make: Normalize base PowerPC & LoongArch cap for JS (ab81191c)
- Fix: Native ISA probe on Apple Clang + compile/runtime glyph (bc13e026)
- Make: Detect illegal instructions in macOS CI (289cdaff)
- Fix: Drop `-march=` on macOS setup.py builds (28aac749)
- Fix: Exclude `std::signal` from WASM builds (14814c56)
- Improve: Drop GNU statement-expression macros in SVE reduce helpers (b8b4ca05)
- Make: Drop `+nosimd` from AArch64 baseline (23f51955)
- Make: Forbid auto-vectorization in portable baseline builds (43e8324d)
- Make: Pin TU baseline to per-arch ABI floor across build systems (453ed5ff)
- Fix: Mitigate GCC 13 wrong BF16 splat in Arm NEON (#346) (fc3d8ecf)
- Improve: Log faulting capability detection (a401f8ac)
- Improve: Log faulting kernel on fatal signals in `nk_test` (22c7c791)
- Make: Normalize Python test dependencies across CI and docs (8a0f3d48)
- Make: Baseline-only ISA for shared-library test, harden Windows CI (19076856)
- Fix: Wrong compiler probes for SMEBF16 & SMEBI32 (8b19ddb3)
- Make: Log host CPU capabilities in macOS and Windows CI jobs (988eeb2b)
- Fix: Pre-declare OpenMP loop counter, universal libomp for macOS (493a0217)
- Fix: Use int for OpenMP loop counters, absolute libomp install name (ccc01180)
- Fix: GCC requires +sme prefix in target attribute for __arm_sc_* stubs (291dc0aa)
- Fix: Signed OpenMP iterators, source-built libomp, JS KMP guard (dc1ae750)
- Fix: OpenMP wheel builds on macOS and Windows (f5691212)
- Fix: Add target("sme") to __arm_sc_* stubs for GCC compatibility (ad2add07)
- Fix: Unpoison SVE scalar reductions for MemorySanitizer (#342) (b42eda77)
- Improve: Move SME runtime stubs to types.h as weak inline definitions (64ca9344)
- Improve: Manual SME streaming control, single enter/exit per API call (6432837b)
- Fix: Update `cdist` edge-case test for re-added `threads=` kwarg (50681aff)
- Make: Allow force-enabling ISA targets via environment variables (0e58702c)
- Improve: Abandon F32→F64 via Ozaki on Granite Rapids (94a5f192)
- Make: FreeBSD, PPC64le, LoongArch, RISC-V releases & compress Windows (a9a0d83e)
- Make: Standardize CI compilers and add Windows test job (9a22ea45)
- Make: Shrink serial fallbacks with scoped size optimization (83154a86)
- Make: Compress Windows builds (e30ad3d3)
- Fix: Streaming-compatible stubs for LLVM SME builds (0be7b2f4)
- Improve: Vectorize F32 SME MaxSim finalizer (0daacf3b)
- Improve: Remove centering from RMSD kernels (1a83ab4f)
- Fix: Emulated vs native test durations (4266451d)
- Fix: ARMv7 Rust cross-compilation with CC for versioned GCC (a5e67e60)
- Make: `check_source_runs`-probing like `march=native` on MSVC (7a152f3b)
- Fix: Drop `_MM_FROUND_NO_EXC` from `_mm256_cvtps_ph` calls (8649b0c0)
- Fix: Guard against old MSVC preprocessor (25d33048)
- Make: Enforce newer preprocessor in MSVC (be966af2)
- Make: Cleaner CIBW artifact names & env forwarding (a6cf6424)
- Make: Forward cross-compilation flags for macOS wheels (6ed3b8c2)
- Make: Split ppc64le, s390x, i686 CIBW runs (c01795cc)
- Fix: Require AArch64 for NEON kernels (2ba1b343)
- Docs: Table order & formatting (8673a56f)
- Make: Avoid `--all-features` in Rust cross-compilation CI (8be8bffe)
- Improve: Arm32 compatibility (64041725)
- Make: `cancel-in-progress` CI to shift compute resources (dfc8fa02)
- Improve: Harden Swift SDK for 6.1+ toolkit (965cd524)
- Make: Strip `.unsafeFlags` & list platforms for SPM consumption (b061b78d)
- Make: Expose `CNumKongDispatch` target to Swift users (6aa00a89)
- Docs: Shrink tables in the main README (6d2ea345)
- Make: Inline Power Shell cross-compilation logic in CI (974c30ca)
- Make: Define `_ARM64_` for Arm JS builds in MSVC (f3030420)
- Make: Skip same-named artifacts on CI reruns (7c098e51)
- Make: Set `repository.url` for NPM (385480d2)
- Make: Pull MSVC ARM64 Cross-Compiler (e20c93ef)
- Fix: Swap `f16x8` for `u16x8` in `cast_neon` (154ec5db)
- Fix: Misplaced NEON loads/stores in Sierra (05e30455)
- Fix: Avoid unconsitional `np` symbols (9dffb681)
- Make: Resolve probe locations for NPM consumers (c602f45f)
- Docs: Refined "What's Inside" (28f35cdb)
- Docs: Mini-float kernel selection strategy (04e6598b)
- Improve: Accelerate PyTests, reduce `Decimal` use (24172485)
- Make: Move `.pyi` for PyLance (688ec2d2)
- Fix: Inconsistent SME function qualifiers (5b4148a4)
- Improve: Smaller test inputs under QEMU (ee36bf2c)
- Improve: Vectorize GEMM "packers" (86127a45)
- Make: Longer timeouts for QEMU in CI (a9cc7322)
- Fix: `vec_t` store helper args order (eecbcac4)
- Fix: Negative stride tensor reductions (3ea81be4)
- Improve: Recursive stride collapsing and axis-lane fast paths for N-D reductions (cf8eaf62)
- Improve: Faster reductions in strided tensors (61651ed1)
- Improve: Wider NEON curved, mesh, & probability F16 kernels (1c17678f)
- Fix: Harden mini-float type-casting (1911b89c)
- Make: Ship `win32-arm64` NPM builds (578b7adf)
- Make: Auto-bump JS platform-specific versions (5617f756)
- Fix: `vcombine` instead of initializer lists for NEON arrays in MSVC (906c1784)
- Fix: Avoid flaky `vld1_f16` for MSVC (7a987d2e)
- Docs: M5 perf stats for Wasmtime v43 (43c2881b)
- Fix: Alternative MSVC-friendly cast (4744b9b3)
- Make: Disable LTCG due to MSVC issues (3d376843)
- Make: Try `PREBUILDS_ONLY=0` in CI (64c5f95d)
- Improve: Lower NEONHALF → NEON requirements (37f99eca)
- Fix: Wire `nk_cast_neon` benchmarks (3793af24)
- Docs: Apple M5 native stats for secondary workloads (d7c81c4f)
- Improve: Faster in-vector 4-way finalizers in NEON (968dcd16)
- Improve: Drop `nk_f16x4_to_f32x4_neon` (84bb20ab)
- Improve: `vcvt_high` for faster unpacking (a5f4a191)
- Docs: Refresh GEMM/SYRK measurements Apple M4 → M5 (3e010de3)
- Fix: Harden strided reductions in NEON & AVX2 (61ac67b9)
- Fix: Double-counted tail in Skylake `f64` RMSD, Kabsch, and Umeyama (5391344b)
- Improve: Share `decimal.Context.traps` rules (3c28ae92)
- Fix: Padding partial tail 32-bit words for `BMOPA` (25984875)
- Fix: Missing scale type definitions of mini-floats (91862da5)
- Fix: Scalar buffer cast internal overwrites & aliasing (7b0e1293)
- Fix: Top-bottom variable names (a0141348)
- Improve: Giesen's E4M3 → F16 in Streaming SVE (25322b50)
- Improve: Fewer branches in SME GEMMs (858263c9)
- Fix: Up-round dimensions count in sub-byte C++ tests (87a72d0f)
- Make: Focus on M4 CPUs for SME probing (5ff63eb6)
- Improve: PyTesting across more shapes (4bc3e442)
- Improve: Cleaner type-casting & promotion rules (23c2474b)
- Make: Hide formatting commits for v7-7.2 (f6ce2dad)
- Make: Native addon resolution for Deno & Bun (0d502d5a)
- Docs: Citations (6220137c)
- Improve: Faster mini-float norms in Streaming SVE (088de570)
- Make: Integrate PyRight (0fe56c00)
- Fix: F16 norms in SSVE skipped odd entries (bf3bfeec)
- Fix: Harden SVE MaxSim upcasting logic (803eb332)
- Fix: Disable `FPCR.AH` bit (7b2b8504)
- Make: Node 24 for trusted publishing (9f1a4ef0)
- Fix: `_m` to zero-out predicated SVE/SME ops (16c157b7)
- Fix: `_m` to zero-out predicated SVE lanes in `spatial/` (ac27cde4)
- Make: Replace stale `prebuildify` (74c5454e)
- Make: 2h timeout budget for JS & Py builds (2e8f081e)
- Fix: Harden implicit narrowing casts (319fae28)
- Fix: Negating unsigned integers in MSVC (9be61e3d)
- Make: Retry flaky CI jobs (b622d630)
- Make: Remove conflicting NEON probes (c0f35733)
- Make: Trusted publishing for NPM (95782713)
- Improve: VNNI spatial kernels for E2M3, E3M2, & E4M3 (02d53256)
- Fix: `NK_TARGET_NEON` auto-detect in MSVC (4ad21241)
- Improve: Listing compile-time capabilities (0e9f04a8)
- Improve: Flush Float16 sums in `spatial/` Float6 kernels (52606b0e)
- Make: Slimmer NPM packages per platform (0a18afcb)
- Improve: Lower E4M3 Genoa to Icelake with 40% gains (8ade366e)
- Make: Extended BF16 support on Arm (70d6ca23)
- Make: `numkong.gypi` interface for downstream addons (2b97a6bd)
- Make: Resolve CMake probes for git-submodule users (772720f5)
- Make: Expose `cargo:include` & `links` for USearch & downstream users (7e58e9fe)
- Fix: Broken Arm probes in AppleClang (7b889985)
- Improve: Giesen's trick for F8 upcasts on NEON & RVV (b2f8faa4)
- Fix: Missing wrong enum for LoongArch (c869f3f5)
- Improve: `__attribute__((may_alias))` for punning unions (59453724)
- Fix: Pre-pack F16 as F32 for serial GEMMs (f51f7f09)
- Improve: Wider `bf16` GEMMs without pre-upcast (26bc2fa6)
- Improve: 2x wider GEMM steps on LASX (f164c4aa)
- Docs: More stable SPR perf numbers for floats (33531da7)
- Fix: `__loongarch_lasx` flag doesn't exist (d57740ec)
- Docs: New "What's Inside" tabular guide (e9d0b19a)
- Fix: Algrebaic transform for i8×u8 dot instructions (5a2e6774)
- Fix: `vec_mergeh` upcasts in VSX (7ae8b6b7)
- Improve: Faster conversions & reductions in LoongArch (661426d0)
- Improve: Faster widening in WASM (695da362)
- Improve: Giesen's trick for F16→F32 upcast (708770e2)
- Make: `<(module_root_dir)` to trace probes for JS (e051236c)
- Fix: Additive "power9-vector" flags (c8555c27)
- Improve: Transpose in finalizers on Power (1dbd8814)
- Improve: `cpu=power9` & partial loads/stores (670767d6)
- Make: SYSROOT for PowerPC & LoongArch (cde23a2f)
- Make: Wire new probing into NPM `preinstall` (9319969f)
- Make: Unified ISA probes for C, Rust, Py, & JS (6fea7389)
- Improve: Detect Arm features in header-only builds (24cbffbd)
- Improve: More accurate `sqrt` on LoongArch (7a45af66)
- Improve: Avoid flaky x86 `ph` load intrinsics (43692629)
- Improve: `.inst` syntax for MRS checks on old compilers (2080b1b1)
- Fix: AVX10.2 & NEON FP8 auto-detection (410e1fc4)
- Make: Power9 flags for build, 10 for CI (e33f7799)
- Make: Ignore "-Wstringop-overflow" for SYRKs (b9509d66)
- Fix: Missing `<lsxintrin.h>` include for `__m128i` for LoongArch (c5282d1c)
- Improve: Test `out=` Python args (243c824a)
- Improve: Multi-axis reductions in Python (0c30debc)
- Improve: 15% faster E4M3 upcasts (452e563b)
- Improve: Compare to BNNS in Accelerate.framework (6b1f57b7)
- Make: Downgrade Diamond Rapids CI to Granite (2e03e7ec)
- Fix: Type-casting issues on LoongArch (636549fa)
- Fix: Avoid changing FTZ/DAZ settings (2ce09b8a)
- Improve: Smaller `TensorError` state (c5475be2)
- Improve: Apply `StorageElement` to every operation class (98064815)
- Improve: Drop redundant NEON MinMax in FHM & BFDOT files (96c869f8)
- Improve: Simpler `i4` dot-product in NEON (bf61c2c4)
- Docs: Apple M5 instruction timings & x86 refresh (835ae52a)
- Fix: Fill only upper triangle in other SME kernels (2a93c309)
- Fix: Filling only upper triangle in `u1_smebi32` kernels (68f5963b)
- Fix: Harden SME streming behaviour (8fe8cc9f)
- Improve: Generalize reductions to NumPy inputs (3660de55)
- Fix: Missing "SME BI32" capability checks & routing (9168efbc)
- Make: Comp-time probe SME features to test/bench on MacOS (3ecbbf69)
- Improve: Cleaner SVE post-processing in `curved/` (f88d9e01)
- Make: Bump CI versions (de4f0d0c)
- Make: Forward `NPM_TOKEN` for NPM uploads (0c81b883)
- Docs: Math blocks, browser install, & wording (ee5e5c96)
- Fix: Preserve accumulator for inactive lanes with `*_m` SVE intrinsics (cea24e90)
- Fix: `sqeuclidean_bf16_svebfdot` predicate mismatch (f33fdb27)
- Fix: Avoid F16 logic for integer FMA ops (a02cf13c)
- Fix: Missing entries in SVE `nk_dot` upcast paths (148b6444)
- Fix: Losing entries in `svehalf` upcasts (5e67f719)
- Make: Bundle `numkong-browser.ts` for WASM in browsers (564108f1)
- Fix: Broken `dot_f16_svehalf` predicated loads (20cfec23)
- Fix: `.inst` encoding for SME `mrs` check (d6c36d84)
- Improve: Standardize error bounds in PyTest (e2f957a1)
- Fix: `try_pack_transposed_in` (10593e92)
- Fix: `#include <unistd.h>` to enable ARM capability detection on Linux (#320) (ae5413c8)
- Improve: Single-pass `mesh/` for NEON, RVV, & WASM (a63bb19c)
- Improve: Reuse type-casting infra in Mesh PyTests (adf19a51)
- Fix: Expose Mesh half-precision kernels to Python (ee3ebd64)
- Fix: `dtype=None` guessing in Python packing functions (1eca2372)
- Improve: `__forceinline` for MSVC (d34221d0)
- Fix: Missing `dimensions_per_value` symbol (c2f132d0)
- Make: Bump to macOS 26 for SME in Py wheels (674778b6)
- Fix: Raise `TypeError` for wrong `dtype=` (cfb39735)
- Docs: Refresh repo links & intro tables (1b553030)
- Fix: `String(_:radix:)` init uses `uppercase:` instead of lower (4042a271)
- Improve: Cheaper string checks in CPython layer (d944197a)
- Improve: Cheaper `dtype=` hints (13d87d2f)
- Improve: Interfaces for `ml_dtype`-like mini-floats (0518c6f8)
- Docs: Explain existing `axis=` args for Python (21d38bde)
- Fix: Simpler (more stable) test for RMSD in Rust (60532761)
- Improve: Consistent `try_close` in Rust (855fe865)
- Improve: `FusedIterator` for Rust containers (ee0e42c1)
- Improve: Cleaner `Debug` vs `Display` style difference in Rust (ed852e4d)
- Make: Include `*.hpp` into the header-only lib (92ef0227)
- Improve: Iterators for `vector_view` & `vector_span` (c2d921bb)
- Improve: `From` trait for mini-floats (43059b38)
- Fix: `core::fmt::Display` doesn't need "std" (fd961616)
- Docs: Broken links & versions (707b0656)
- Make: Cleanup Release CI warnings (7bf755ee)
- Make: Windows & Arm cross-compilation issues (5d482273)
- Make: Bump Clang for Debian builds in CI (6d86870a)
- Make: Exclude READMEs from Crate (a3c904d4)
- Make: Skip Swift benchmarks in CI (a5f9c60c)
- Make: Move Swift benchmarks (f1a6a873)
- Fix: Defensive over-allocation for MSVC (24d8f043)
- Make: Consistent CMake toolchain flags (c767dc6b)
- Make: Drop RISC-V wheels until Clang 23 (bd49085f)
- Fix: Wire remaining kernels in 5 places each (eea2ffbe)
- Fix: Wire `each/`, `mesh/`, `curved/` RVV kernels (0a152c37)
- Make: Lower base RISC-V generation for Python wheels (b7b013fa)
- Fix: `reduce_minmax` strict aliasing (67fa0238)
- Fix: Mantissa overflow in F32 → F16 rouning in RVV (cc4e5b48)
- Improve: MXCSR-independent rounding in trignometry (f8c444fd)
- Fix: Wire missing tests/benchmarks (581aeaa1)
- Make: Prevent constant folding in probes (ed918e26)
- Fix: Success code for non-x86/Arm thread configuration (c118f3a3)
- Fix: Wire kernels into runtime dispatch (8b2236d6)
- Make: Shuffle PyTests in CI (b0f00af9)
- Fix: Refresh dispatch tables after changing static caps (c3535e3b)
- Fix: Prioritize Ice Lake over Alder Lake (e45a023a)
- Make: Adjust probing for cross-compilation (ffd1f7bd)
- Fix: Unused variables & designated initializers (2fe18816)
- Make: Randomize PyTests in CI (13477ba9)
- Fix: Missing serial fallback cast includes (9993a8f9)
- Docs: Cleaner type-promotion explainer (d74ae6f7)
- Make: Package LICENSEs and READMEs (8b386483)
- Make: Portability of MSVC & GCC/Clang feature probes (4b5ef4e0)
- Make: Forward `NK_WASI_HOSTED=ON` through CI (d2c36025)
- Docs: Deduplicate main page (3c5c0031)
- Improve: Harden C++ templates & `std::mspan` interop (b4dd78a6)
- Fix: Pyodide & PEP 3118 compatibility (f4b84b34)
- Docs: Better intros & ecosystem tables (210c70f1)
- Fix: Edge cases in `nk_f16m1_to_f32m2_rvv` (10ab61d0)
- Improve: Reduce NumPy reliance in PyTest (19dd123f)
- Improve: Extend in-browser WASM benchmarks (463fbfce)
- Fix: Unify Emscripten & WASI checks (e60b9fab)
- Improve: Cheaper upcasts in WASM (0b757285)
- Fix: Include serial baselines next to v128 kernels (fea56776)
- Make: Emscripten v5+ syntax & Windows WASM builds (6eff26e2)
- Docs: Narrower table (bc2038a2)
- Docs: Stale accuracy in `dot/` & `each/` (03ef5c38)
- Fix: Wrong Hamming & Jaccard integer semantics in WASM (6edaec04)
- Docs: Top table width (85541558)
- Docs: Mark external baselines (b81c5fbd)
- Docs: Intro table units (fe7194dc)
- Fix: `is_complex_dtype` issues (1d9df2ef)
- Docs: New promo section in ./README (70124ef0)
- Docs: Stale type descriptions (d1235bbc)
- Fix: Stale `f32` outputs for `f32` GEMM inputs in GIL-free PyTest (6dec15ad)
- Fix: Pass `WebAssembly.Memory` to env imports (0d33d76e)
- Fix: Stale `f32` outputs for `f32` GEMM inputs (d18647c5)
- Fix: Broad compilation errors & warnings (17555bd4)
- Improve: Much faster Python type resolution (c09800f4)
- Improve: Harden `fnuz` checks for `ml_dtypes` inputs (298f147d)
- Make: Upload WASM+JS builds for browser to GH (bd957826)
- Improve: Dedup Rust logic with `TensorRef` trait (68a02635)
- Fix: Detect missing kernels in CPython layer (5b4a7da1)
- Docs: How to test? and bench! and contribute! (6c5a9496)
- Fix: Tail-handling in mini-float `minmax` reductions (1762d014)
- Improve: Dedup body & tail vector-vector logic (5bdbd812)
- Docs: For each language SDK (06555edc)
- Improve: Expose `nk_dispatch_table_update` for Swift (f700bb78)
- Fix: Dispatch remaining 1:1 distances (4f25571d)
- Make: `config_macros [exhaustive]` for Clang modules (a7562e55)
- Make: Android NDK cross-compilation in C & Rust (b99487b5)
- Docs: Extend Apple M4 stats (9b8e75b8)
- Fix: SVE flags for cross-compilation on Android (bb20ea83)
- Make: Bump to Go v1.22 for integer `min`s (e66bf160)
- Improve: 40% faster `i8`/`u8` WASM GEMMs with compensation (b41aa7e5)
- Fix: Revert to simpler, non-`i8x16_i7x16` WASM product (683f3762)
- Docs: Extend Apple M4 stats (c4fc26b5)
- Improve: Reuse `angulars` & `euclideans` end logic with Streaming SVE helpers (c4044385)
- Fix: Tail predicates in upcasting SME GEMM kernels (386ce921)
- Docs: Refresh Intel SPR stats (9eb3f3bd)
- Improve: LUT-based `e3m2` → `f16` (85eb83c5)
- Fix: Auto-detect SME variants via `__has_builtin(__builtin_sme*)` (b63e9334)
- Improve: Prioritize `mean_ulp` test outputs (6b171f68)
- Improve: Wire `u8_sapphireamx` kernels (a919c364)
- Fix: WASM & x86 compilation (a5137df3)
- Fix: Wire `u1` serial and SMEBI32 kerenls (fa33699b)
- Improve: Operation-specific precision reports (994a2b04)
- Fix: Harden `f118_t` to integer conversions (fdcc4af0)
- Fix: Harden Round-to-Nearest-Even policy (5b21676e)
- Fix: Missing/unused variables (ee399ef4)
- Improve: Drop `reduce_minmax_f16_neonhalf` (14269736)
- Improve: Direct storage rebinding for Swift low-precision wrappers (c3b5b743)
- Fix: BLAS `sdot` → `dsdot` and other baseline test/bench updates for F32 (e79054fe)
- Improve: Vectorize stores & loads in GEMMs (2582081f)
- Fix: Test signatures for meshes & BLAS (c939ab3e)
- Docs: New Apple M4 perf stats (10470ec5)
- Fix: Correct sub-byte reference reductions via `vector_view`s (33e21eb0)
- Improve: Use C++ concepts to allow positive & negative index lookups (8853531a)
- Fix: Avoid LibC `sqrt` usage (15cf4298)
- Improve: Use F64 FMAs in F32 `sparse_dot` (e44209a5)
- Docs: Missing Intel measurements (bde871cf)
- Make: Switch to merged GBench WASI-friendly release (09af6433)
- Improve: Allow running arbitrary WASI module launch (2904f7eb)
- Make: Grow WASI mem limits for `sets/` (51f01a38)
- Fix: Missing `euclidean_kernel_t` for 4-bit ints (c2c1c72d)
- Fix: Block-skipping condition in symmetric macros (a09e2099)
- Fix: Lack of scoped `-Os` in Clang (efc33874)
- Docs: Intel SPR performance measurements (84c126bd)
- Fix: Cast perf-counters to double via `1.0*` (f367f330)
- Fix: x86-compaible `i4` logic for WASM (530ab755)
- Fix: Wire more `each/` tests for Arm (c84d9727)
- Fix: Bias logic in `dot_u8_v128relaxed` & angular (668333b3)
- Improve: Wire more `nk_cast` & WASM GEMM tests/benchmarks (09e2927a)
- Docs: "JSD" as distance, not divergence (4c6bc36f)
- Improve: Much faster `nk_test` baselines (650d713f)
- Docs: Performance measurements for Intel (be4ddf57)
- Fix: WASI compatibility for `nk_bench` (95c1ef87)
- Fix: Compilation & consistency (387cd610)
- Improve: Relax many WASM instructions (0e0cdfa6)
- Improve: From 7 to 16 terms in `nk_f64_log` serial fallback (ab5dd705)
- Improve: Faster vector-loads in WASM (10f1e2b4)
- Fix: Incorrect packing tupe for v128 packing of `bf16` (2a48bcd9)
- Improve: Allow Sierra & Alder kernels on AVX-512 capable machines (0d6ca426)
- Fix: Avoid ULP sum overflow in 4096³ tests (4b06bdd5)
- Improve: More accurate `maxsim` reference implementation (d831d288)
- Improve: Faster L2 for mini-floats on Genoa (e509578a)
- Improve: Faster serial LUT upcasts for mini-floats (a20ee905)
- Improve: Counting scalar ops in RMSD-like kernels (8d2f72d0)
- Fix: Wire more RVV & GEMM kernels (54c5104f)
- Docs: Deferred Sign-Flip in Complex Dot Products (443a7bdc)
- Improve: Allow nearby coordinates for Geo tests/benchmarks (2afdf5e4)
- Make: Hide symbols by default & enable IPO for `nk_shared` (13fc0779)
- Improve: Shrink binary by 20% (0faedcf9)
- Fix: Use 64-bit numerics for `dot_f32_serial` (77293b4e)
- Make: Avoid `npm ci` due to `package-lock.json` exclusion from history (4c66282c)
- Fix: Compilation issues for NEON & WASM (05765644)
- Improve: Report `scalar-ops` for `curved/` ops (e15fa508)
- Docs: Draft operation-specific surveys (39d6955f)
- Fix: Round to nearest even in NEON casts (24e4c6f8)
- Fix: Sign-flipping in complex dot-products in WASM (ea752941)
- Fix: Swap complex operands in `vdot_f16c_neonfhm` (40fa7d2e)
- Fix: "Negate-then-TwoSum" issue in `f64c_neon` kernels (a0d9594b)
- Improve: Deduplicate matrix packing logic (73547b3a)
- Improve: Prefer `np.testing.assert_allclose` for bounds checks (0b9b800c)
- Improve: Parameterize reduction PyTests by SIMD capability (37e63d17)
- Improve: Relax `bitselect`s & `swizzle`s in WASM (3ac32725)
- Docs: Vector operation READMEs (335e7527)
- Fix: Testing Jaccard & Hamming for integers (64253a1c)
- Fix: Wire Geospatial, Spatial, & Curved kernels (f6108454)
- Improve: Reduce `auto` returns in C++ (83160b60)
- Improve: Transpose, flatten, squeeze in Rust/C++/Python (dbd8eb8d)
- Fix: Wire `dot_u1` kernels into test & bench (e78a97b5)
- Fix: Transposing higher-rank tensors in Rust & C++ (3d01b98f)
- Make: Account for shifted version macros in `capabilities.h` (3bc313fc)
- Docs: Float ranges & resolution in [-1, 1] (ca859560)
- Improve: Clamp large `e5m2` values in flaky PyTests (a4a908da)
- Make: Use Clang for Musl RISC-V wheels (7f71beeb)
- Fix: Pointer past end UB in casts (5eaba81d)
- Fix: Over-reading 8-bit ints in NEON casts (0131f216)
- Make: Drop `libxkbcommon` transient CI dep on AlmaLinux (55153cdf)
- Fix: Re-apply `contiguous_tail` patches for elementwise Python ops (820b8657)
- Improve: Route MaxSim re-ranking through dispatch (0a056382)
- Fix: Avoid ACLE FMA intrinsics in MSVC (1b2ae546)
- Fix: Resolve artifact upload race condition for JS prebuilds (26aac628)
- Fix: Fail Rust build when C library fails to compile (e185a274)
- Fix: Avoid inline Asm for scalar FMA on Windows (98924b6b)
- Fix: MSVC ARM64 compatibility for NEON `f16` (9ac3f5db)
- Fix: 64-bit integers on Windows (0d903069)
- Fix: Surround `#pragma clang` with checks for Clang (#192) (f871d803)
- Improve: Reduce native half-precision usage (486d8b5a)
- Fix: Unpoison SIMD dispatch results for MemorySanitizer (#304) (2513ee7f)
- Fix: Enlarge dummy buffer for SVE predicated loads (#307) (fe9327c5)
- Fix: Beyond-diagonal entries in parallel calls to `_symmetric` macros (76188337)
- Fix: `constexpr` violation for `f118` to `f16` downcast (a21e6499)
- Improve: Parallel Python ergonomics (fdbfd240)
- Improve: Harden `<cmath>` usage & type-casts (ccd34d53)
- Make: Reduce CIBW pressure (9ab0c381)
- Fix: Universally prefer `__bf16` to `__bfloat16` (fdec37f7)
- Fix: Handling non-continuous tails in CPython (9648de44)
- Improve: Cleaner recusrive methods for C++ Tensors (1b7a1e1f)
- Fix: Compile WASM tests into `nk_shared_test` (3bf10146)
- Fix: Enable staging area casts in CPython layer (7d1275b9)
- Fix: Gating conversions through `f64` on Skylake (62639b81)
- Fix: Type-casting warnings for C/C++ ops (78e4976f)
- Fix: Switch to `PyObject_VAR_HEAD` for Py Tensors (4ae86ca0)
- Improve: More consistent `MaxSim` for Rust (810f7933)
- Make: Skip C lib rebuilds when Rust layer changes (6b15dc5c)
- Fix: NEON spatial finalizer widths (8a36ddee)
- Improve: Much faster Alder Lake compensated GEMMs (b162aed5)
- Fix: Avoid serial 128/256-bit loads/stores on Haswell+ (71359e40)
- Fix: Simpler `is_memset_zero_safe` checks (b4b61b92)
- Fix: Handle negative steps/strides for elementwise ops (39951192)
- Fix: Dependent type name inside `std::bool_constant` (13f8dd74)
- Fix: "Unused" compiler warnings on GCC & Clang (14d3c25a)
- Make: Shift `wasmtime` to `[dev-dependencies]` for Rust (bdb1fe10)
- Make: Switch GCC/binutils for Clang/LLD for RISC-V Python wheels (aeca2a40)
- Fix: MSVC initialization issue for NEON vectors (8bdb4824)
- Make: Graft PyTest files (4804aa32)
- Improve: Inline trivial reductions on NEON (2ee54f06)
- Fix: `precise_angular` for zero vectors (344e6a1c)
- Fix: Negative strides UB for tensors (aedecd28)
- Fix: Return value propagation for `wasi-node` tests (ab410a43)
- Fix: `noexcept` qualifier for `syscall()` (1ca39408)
- Make: Correct Debug/Release base flags for MSVC (7fb30b31)
- Make: Probe if we need linking to `libm` (75cb2253)
- Make: Drop OpenMP deps from CMake (504f3d99)
- Fix: Leaking `cargo`s test filter into Wasmtime env (1d2ccbe5)
- Make: Drop `--experimental-wasm*` flag for WASI (0cfeb1ef)
- Make: Cleanup `-march=native` flags in CMake (2cb0b9c8)
- Make: Linking Intel MKL on Windows (54764f88)
- Fix: Missing `spatial/` kernel aliases for 8-bit integers (605555aa)
- Make: Infer `NK_TARGET_*` options for MSVC (e6798633)
- Make: Force STL RegEx in Google Benchmark (299e956e)
- Fix: Avoid `constexpr` qualifiers if `<cmath>` isn't hardened on Windows (0905fcfd)
- Fix: Match `syscall()` linkage (32ed9063)
- Improve Support both 32- and 64-bit WASM addressing (8a814a10)
- Fix: `aligned_alloc` signature on Windows (39769be4)
- Fix: MSVC integer overflow in float downcasts (73771363)
- Fix: Fwd-declare `syscall` as a cleaner solution to missing symbols (26fb0aa7)
- Fix: Guard against `SME=1` outside of Arm builds (13604c0a)
- Fix: Rust casting linter issues (83fb4edf)
- Make: Detecting "Emscripten" more reliably (b08f8ab8)
- Improve: Comp-time capability checks via `_MSC_VER >= N` (60135516)
- Fix: Use `_start` entrypoint in WASI tests (86f52ab6)
- Make: Disable duplicate CI runs (13e810a0)
- Fix: Sapphire AMX and `bh`/`h` intrinsics in MSVC (af65ca41)
- Make: Avoid `${{}}` syntax in container name (086be69b)
- Make: Run CI for "main" PRs (de8bd526)
- Fix: Check compiler versions for SME, AMX, SVE builds (e4ab2f0d)
- Make: Bump versions for Py/JS/CI (42218994)
- Fix: Matching NumPy `dtype` names on Windows (7800f792)
- Make: Bun CI & require Node 22+ (8652ad68)
- Fix: Enforce `NAPI_VERSION=6` for `bigint` support (5e38f2fb)
- Make: Disable diagnostics for `EM_JS` block (a5ae5fd2)
- Fix: Zero union Jaccard case on NEON (d7a41128)
- Fix: Initialize `dummy_input` to fix MSan false positive (#302) (c2ad842d)
- Fix: Type mismatches (6cb60fd5)
- Make: Prebuild JS pack before tests (ae475aed)
- Fix: Avoid `np.finfo` calls for integers (309a7d7c)
- Fix: `dot_i4_haswell` tail handling (3a5c4179)
- Improve: Separate `cdist` testing suite (4f6d5680)
- Fix: Pre-upcasted B matrix scalars in x86 macro-based GEMMs (f6800256)
- Fix: Broken scales for `each.hpp` baselines (4e7eecd2)
- Fix: `vincenty_f64_serial` precision loss due to `tan` (b561e4a0)
- Fix: Enable pipe annotation for `Union`s in Py39 (68068461)
- Improve: Redirect `cdist` to GEMM-like LLC-optimized kernels (88e29b9c)
- Fix: `std::abort()` in exception-less builds (d281d1b6)
- Fix: Extracting integers from `PyObject` scales (682a5500)
- Fix: `e2m3x16_to_f16x8x2` LUT on NEON (1244a6a0)
- Fix: Loading bytes instead of nibbles in Haswell GEMMs (03202c9c)
- Fix: Nibble-packing in PyTest only in the last rank (b6e9c2e0)
- Improve: Prefer exception-free POSIX `regex.h` for test filters (f82a0520)
- Fix: NaN sentinels in NEON/Haswell MinMax reductions (901a745d)
- Fix: Explicit type-casting for Emscripten builds (39bdb69e)
- Fix: Missing `nk_detect_` helpers for WASM (43879019)
- Fix: Missing scalar forward-declarations for CPython (cf4dc28d)
- Make: Run all Python tests (4faabce4)
- Fix: Dispatch `each/` kernels for complex numbers (ac822195)
- Fix: Out-of-bounds writes in the 7-tile SME paths (0f59c254)
- Fix: Stale `wsum` references (5b372ced)
- Fix: Systemic precision issues (6dcddbca)
- Fix: Wrong predicate width in BF16 SVE L2 kernel (#301) (87ae846b)
- Improve: FreeBSD comp-time target selection (#300) (cb11f8bd)
- Improve: SVE-width finalization for MaxSim SME kernels (75103218)
- Fix: Persist per-vector norms for Sapphire AMX (3d743cee)
- Fix: Masked blending of mini-float MinMax tails (02cd5383)
- Fix: Compensation term for `angular_i4_icelake` tail (67349303)
- Fix: Shift `dot_i4_icelake` padding values (70cb2fe4)
- Fix: Check only upper triangle of many-to-many distances (6a107fd0)
- Fix: Avoid `set1_ph` via casting `u16` constants (de43fce6)
- Fix: First vector init in MinMax NEON kernels (7017867b)
- Fix: `bf16` to `f32` upcast (37efdc56)
- Improve: Wire MaxSim kernels (64cdd329)
- Fix: NaN handling in `minmax` APIs (b0bd3bf1)
- Fix: FMA arguments order (ed0db279)
- Improve: Ternary logic for `saturated_add` on Haswell & Icelake (bbcd82ec)
- Fix: Missing includes (a0cca0ad)
- Improve: Reduce pre-`svwhilelt` downcasts (a5b3fab5)
- Make: Parallel CPython wheel builds (0131dca5)
- Fix: Override half-precision test behaviour (e8932fb2)
- Fix: Stale `sadd` method names (9a68a081)
- Make: Consistent build flags (9b2483cb)
- Make: File paths (20467e87)
- Improve: New scalar public APIs (4e46376b)
- Fix: Differntiate `angulars` and `euclideans` signatures (179e00f7)
- Improve: Generalize Rust testing suite (c15849b3)
- Fix: E2M3 LUT magnitudes (f1f7c3de)
- Fix: Transposing Sapphire AMX tiles with AVX-512 (10393f83)
- Fix: Avoid zero square roots on serial path (d2e801cb)
- Fix: Avoid division by zero in Vincenty Skylake kernels (fe423e03)
- Fix: Missing `__arm_tpidr2` stubs for Rust crate compilation on macOS (afcfb25b)
- Fix: Handle sub-byte types in CPython (204d0c1d)
- Fix: Handling exotic types in buffers (8e17927e)
- Fix: Normalizing Jaccard distances (3db3edad)
- Fix: Avoid irrelevant `__arm_new("za")` (193b790b)
- Fix: KLD epsilon contamination (9514487e)
- Fix: Mini-float parsing and assignment (f70afddd)
- Fix: Wrong packed-value types for binary kernels (1b7ee039)
- Fix: Clamp pre-`sqrt` negatives (1b64e050)
- Improve: Generics-based Rust testing suite (457a5164)
- Fix: Wire new i4/u4 & mini-float kernels for dots.h (44bedd30)
- Fix: Loop cycle underflow for mini-floats on Sapphire (27c8ff1d)
- Fix: Wire half-precision trigonometry (303192cc)
- Docs: "Numerical Stability" sections for each operation header (3927d24e)
- Fix: Incorrect input sizes & missing saturation (c3f5ca0e)
- Fix:: Missing type aliases (9c314e6e)
- Fix: Incorrect masks for strided reductions on x86 (b038b650)
- Fix: Differentiate Vincenty thresholds for `f32` & `f64` (901b674d)
- Improve: Shorter test/bench helper signatures (cbc69c70)
- Fix: Strict aliasing GEMM finalizers on x86 (c5c4e6df)
- Fix: Wrong dimensions per value for `sets/` (691627ee)
- Fix: Wire remaining test/bench kernels (d60b3254)
- Improve: Faster attention in SME (e8229a96)
- Fix: Trampolines for all `__arm_locally_streaming` kernels (eda9d92f)
- Improve: Revert from MOPA to StreamingSVE for complex numbers (24994767)
- Improve: Remove Neumaier from already upcasted serial curved logic (8bea6c19)
- Improve: Prefer `np.asarray` to explicit construction (bafcb06b)
- Improve: Merge `DotsSymmetric` into `Dots` trait (fccfdc81)
- Fix: `dtype_family` type naming (8a283d41)
- Improve: Reduce test/bench header inclusions (b2e866f2)
- Fix: Enforce Positive Semi-Definite inputs (c3980ce3)
- Improve: Vectorize via `vclz_u32` on NEON (30504f8b)
- Fix: Avoid `__builtin_memcpy` in kernels (e76d6700)
- Improve: Interleave Ozaki FMOPAs (58967d1b)
- Fix: Stable numerics for RVV curved kernels (2366d25f)
- Fix: Avoid 64-bit floats in `bf16` kernels (0c279a04)
- Fix: Upcast before subtraction in Mahalanobis (550d2e38)
- Fix: Clamp negative `sqrt` args in Mahalanobis (861c2cd8)
- Improve: Group test/bench config params (29bc84b2)
- Improve: Ozaki schemes for `curved.h` via SME (1b92bafe)
- Improve: Dynamic memory budgets for nk_test/nk_bench (75a96d53)
- Fix: Fetch minimum time from `argv` (288e6ed4)
- Improve: Prefer the `dot_output_type` (9ee9c0b7)
- Improve: 50x accuracy at 30% lower speed for F64 dots in SME (e3e6a141)
- Fix: Wire ordering & u1/u4/i4 links (f670cca6)
- Fix: Enumerate new NumKong capabilities in Python (c985846e)
- Fix: BLAS & Mesh test inconsistencies (dd37153e)
- Improve: Reduce bounce buffers for F32/F64 mixed SME (33fb2849)
- Improve: Avoid SME bounce buffers via `MOVA` (5e5829c1)
- Fix: Avoid mirroring symmetric results (f8c06b95)
- Fix: Remove old SME mesh kernels (8c6833b8)
- Fix: CPython type/shape mismatches (f1827571)
- Improve: Stable summation final reduction in all ISAs (978622de)
- Improve: PRNG seeds via `@pytest.fixture`s (34dc47c1)
- Fix: Number of bits as the number of dims (61f6224d)
- Fix: Wider & safer `sqeuclidean_i8` for Haswell & Icelake (3245df81)
- Fix: Missing `i64` & `u64` to `BigInt` conversions for JS (e55bd913)
- Improve: PyTest seeds, dimensions, precision, & meshes (a89a3cd2)
- Fix: Inconsistent kernel signatures (c9422c83)
- Fix: Missing complex `dtype` logic (98dd66ce)
- Fix: RVV tail policies, saturation consistency, & register pressure (33194b09)
- Docs: Why not use `FCMLA` on NEON (bb0562f5)
- Fix: Replace `avx2vnni` with `avxvnni` for Sierra Forest (#296) (a8bb232d)
- Improve: Prefer exception-free POSIX `<regex.h>` over STL (906df380)
- Fix: Output assignment bugs in reductions (c4236ac7)
- Fix: Symmetric GEMM 4x7 accumulators (d895b9a0)
- Fix: Conjugation mismatch in BLAS complex GEMM (3d6c8e9d)
- Make: Experimental features for Relaxed SIMD (8ee720b0)
- Make: Ban exceptions in WASI builds (ffb1ee32)
- Improve: Unused code annotations in tests (83b07156)
- Make: Upgrade lock-file for NodeJS tests (bef0fe7c)
- Make: WASI compilation & testing (5261bd32)
- Make: Upgrade CI from 22.04 LTS era to 24.04 (a0eb570f)
- Docs: `--help` for nk_test & nk_bench (22a2ad83)
- Fix: Using old conversions API (3ba39bea)
- Fix: Stale WASI and reductions usage (b26593a1)
- Fix: `NK_PUBLIC` serial casts (1faf39bb)
- Make: RVV wheel extensions with newer `binutils` (28085d35)
- Fix: Compilation issues across platform (317d7776)
- Improve: Leverage divide-round-up in GEMMs (1d508d25)
- Fix: Staging area to transpose B tiles in SYRK on Sapphire (a27743a2)
- Improve: Vectorize `hammings` finalizers for Icelake (2a238814)
- Improve: Faster `e4m3` to `f16` SSVE upcasts (22363552)
- Docs: File headers (4efcd9bc)
- Fix: RVV compilation errors (c47795fb)
- Improve: 2x wider `bf16` minmax reductions in WASM via integers (4ffff290)
- Improve: Report & stop invalid CLI args in tests (42f8db9a)
- Fix: Benchmarked bit-matrix dimensions (a4243dd3)
- Fix: SqRoor & FMA serial emulation accuracy (33c23262)
- Fix: `minmax` lane extraction (da569080)
- Improve: Log detected ISA features in Rust tests (2bef2943)
- Improve: Unsigned squared sums for signed inputs (6387390c)
- Improve: 128-bit accumulation for correct `i64` saturation (ed3a1ab1)
- Fix: Saturated accumulation & error signaling (bf31df29)
- Improve: Avoid redundant `abs` calls (a2d78746)
- Improve: Faster extraction-free serial `minmax` (6470d781)
- Improve: Conversion-free branchless mini-float comparisons (298d6ae3)
- Fix: Accumulation result type forward declarations (b20824d7)
- Make: Log CPU & OS info at each CI step (ad52c62a)
- Improve: Wider `e2m3` & `e3m2` logic on Haswell and Skylake (b1dd93eb)
- Fix: Detecting missing kernels the new way (9cceb8a1)
- Make: RISC-V wheels for CPython (5ce7865d)
- Fix: Missing `avx512vbmi` in `dots/icelake.h` (c3bb1c97)
- Fix: `_Py_HashDouble` unstable API change (4c97aed5)
- Fix: Missing dispatch & forward-declatations (13f7325d)
- Fix: Avoid f64 downcasting in 3x3 SVD on NEON (54ee7b75)
- Fix: Inconsistent test, bench, & bidings CLI/env args & defaults (fe931327)
- Fix: Checking for a missing kernel in CPython (3f795dc6)
- Improve: New `e2m3` dot scheme via `i8` instructions (ba30e1af)
- Fix: More x86 compilation issues (5e7ab667)
- Fix: x86 compilation issues (97762adf)
- Fix: CPython compilation issues (d8783e73)
- Improve: 2.1 TOP/s i4/u4 SME kernels (d4af7b97)
- Fix: Compilation issues across the CI (663b82df)
- Fix: CI breaking issues (4e289687)
- Fix: Annotate missing output dtypes (d7ab684d)
- Make: CI for WASM (24fc9380)
- Improve: Testing WASM through Rust & Wasmtime (0a64a104)
- Make: Missing wheel dependencies (0db8b5f8)
- Fix: Number of dimensions in `test_set` (06fc2cb6)
- Improve: Wider logic for Mini-Floats on NEON (844e58a4)
- Improve: Faster bodies & cleaner tails for Arm reductions (b7aa757c)
- Fix: `e2m3` subnormals handling (6678b9aa)
- Fix: Logging/checking `rvvbb` (7006d886)
- Fix: Detect newer SME variants on MacOS (912b627c)
- Improve: Wider Amv8.0-A NEON kernels (9e588e85)
- Improve: Vectorize tails with partial loads for meshes (db4703da)
- Fix: Inconsistent wiring of SME tests/benchmarks (db58243c)
- Improve: Missing curved kernel type annotations (8e1f5053)
- Fix: Min/Max horizontal reductions on Haswell/Skylake (5dc7430b)
- Improve: LUTs & postponed horizontal reductions in RISC-V (8d4cfa1a)
- Fix: RVV compiler attributes (435f595a)
- Improve: Faster Streaming SVE curved.h kernels (021ff721)
- Improve: Cleaner each/spatial loops for NEON (ab956504)
- Fix: MOPA predicates in SME kernels (e9582481)
- Make: Refresh Module Maps (82397af7)
- Fix: Non-dynamic visibility of sets.h APIs (d14c79d4)
- Fix: Missing x86 includes (d25b58e6)
- Improve: Relaxed WASM blends (3f8a340b)
- Fix: Avoid `long long` on RISC-V platforms (f26a6a55)
- Fix: Inline WASM target attributes for Clang (ad237bb4)
- Improve: Cleaner partial loads on Haswell (9969ae85)
- Fix: Missing includes (427b5b23)
- Fix: WASM compilation issues (80db9be5)
- Docs: Clean-up header briefs (f7aa105a)
- Fix: Stale "each"-less names in trigonometry (0532e1be)
- Make: 5x faster parallel library builds (2df5d6fb)
- Make: Hierarchical Clang C Module Map (85379fab)
- Improve: Wire untracked kernels (74278fb6)
- Improve: Chronologically-ordered capability enums (dc8c9d59)
- Fix: WASM checks & missing `svcompact_u16` (b9808ae4)
- Fix: RISC-V compilation issues (bea22a7b)
- Fix: Emulating `_mm512_2intersect_epi64` (378daae5)
- Fix: `sparse_.*_ice` kernels step (ad73343a)
- Fix: `accumulate_exact` for Hamming distances (8333307d)
- Fix: Only measure ULP for upper triangle of `dots_symmetric` (528fe94f)
- Fix: Trigonometric error compounding (0aadb7bf)
- Fix: Geospatial UBs (2fdc7c5b)
- Fix: Taylor series convergence near x=1 for `f118_t` (9181b330)
- Fix: Upcasting Float6 & Float8 `dots_pack` (c3792363)
- Fix: `e2m3` denormals range on Haswell (037837c9)
- Fix: `bf16c` sign flips on Haswell (43e4ee14)
- Improve: Using 4+ SME registers at once (a4cd835d)
- Fix: Declare & wire remaining Float6 kernels (c493c21c)
- Improve: Faster `e4m3` & `e5m2` Ice Lake LUTs (512ae7d5)
- Docs: Links for Float6 and Float8 (aae00e48)
- Fix: Float6 LUT for denormals (67821c73)
- Improve: Wire Float6 dispatch for C++ (e3c3dd53)
- Improve: Simpler `dots_packed` baselines (5d7ec7a0)
- Improve: Faster `cross_symmetric` macro (417262c8)
- Fix: Round-to-nearest-even for `bf16` downcast (418922da)
- Fix: Rounding & compilation errors (c38f8453)
- Fix: IEEE 754 round-to-nearest-even for `f16` (7197ed20)
- Fix: Conversion step size on Haswell (031556ac)
- Improve: Generalize GEMM-like cross-correlations (ab97bd32)
- Fix: Missing Float6 converter declarations (c0d5bb41)
- Improve: 2x faster `i8` dot-products (8c419288)
- Improve: Consistent "finalizers" signatures (2652826e)
- Fix: Measuring `scalar-ops` in GEMMs (e2e4c38e)
- Improve: Shorter environment variable names (dd2bf015)
- Fix: Avoid serial stores on Skylake (974b4928)
- Make: Recommend `ccache` in CMake (06965093)
- Make: Shorter compilation option names (20f802d5)
- Improve: Stateful set cross-referencing (ba55103e)
- Improve: Pointer hoisting in `dots_symmetric` (a187924e)
- Fix: Out-of-bounds `fill_uniform` (34578b24)
- Improve: Avoid Neumaier in SqEuclidean (8ae47e97)
- Fix: Wrong packing types for Float6 GEMMs (a40c4711)
- Improve: Partial stores for symmetric dots (413a6687)
- Improve: Tiling `dots_symmetric` (d8f73740)
- Improve: Cleaner stride calculation (50089f89)
- Fix: Sub-byte addressing and compilation on x86 (e94098ae)
- Fix: Signature mismatches in `dots_symmetric` (383650a6)
- Fix: Avoid `<stddef.h>` for `NULL` (76f35032)
- Improve: 60% vector-vector `dot` for Float6 types (04a82a84)
- Improve: Faster `dots_packed` thread assignment (f765ae20)
- Fix: `nk::dots_symmetric` signature mismatch (43bb8ccf)
- Improve: E2M3 upcasts via `TBL` on NEON (01f5bc14)
- Improve: E3M2 upcasts via `TBL` on NEON (78dff64a)
- Improve: Parallelism for `dots_symmetric` (a1f23f62)
- Make: Rename `binary` kernels to `set` (0eaa39af)
- Improve: Propagate new stateful signatures to stateful funcs (01fcd630)
- Fix: `dots.h` instantiations for Arm (5e45055a)
- Improve: Cleaner divide/round-up semantics (8001156a)
- Fix: `typedef` warnings (5ea4de72)
- Fix: 128- and 256-bit serial loads (1133d7ca)
- Fix: `i4` compensation in dots finalizers (48807528)
- Improve: Consistent testing for Rust types (30808f07)
- Fix: Inconsistent handling of sub-byte types (4ac105b0)
- Fix: `e2m3` subnormals (276393dc)
- Fix: `fill_uniform` for sub-byte types (721e4f10)
- Improve: B packing for cache associativity (29fc7525)
- Improve: Algebraic transform for `DPBUSD` (0c8806aa)
- Fix: Measuring tensor ops (be9c2806)
- Improve: `f64` MKL benchmarks (17abf1fb)
- Fix: Binary constants are a GCC extension (d8ba7529)
- Improve: Vectorize tail handling in AVX-512 integer reductions (8b51808c)
- Improve: Consistent dot-product precision in serial backends (594fb10e)
- Improve: Avoid `__builtin`s (d990c64d)
- Improve: Higher-precision curved metrics (5324ae66)
- Docs: Annotate math operations in Rust (49893f37)
- Improve: Expose `MeshAlignment` kernels to Rust (660993e6)
- Fix: Missing `sparse_intersect` dispatch (dc7d0d3e)
- Fix: Enable AMX before Rust GEMM tests (7df020cc)
- Improve: Harden SVE and RVV `f32` spatial kernels (2639d4b0)
- Improve: Expose sparse intersections to Rust (80134871)
- Fix: Post-merge compilation issues - symbol names (8e5f7d65)
- Improve: Consistent environment variable names (482cc2f5)
- Fix: `dots.h` compilation and styling (a0805db5)
- Fix: Missing `std::integral` constructors (fb66c75a)
- Make: From `elementwise` to `each` (8ab787be)
- Improve: Bench/test concerns separation (4190efd4)
- Fix: FMA numerical stability issues (4cfe2f52)
- Make: Configure `clangd` to C++23 (0e0e6112)
- Make: Drop Boost.Multiprecision in favor of `f118_t` (9440a348)
- Improve: Simpler pre-SVE partial loads (29f7a1a1)
- Fix: Inconsistend partial loads/stores names (acee7ac4)
- Improve: `vmul`+`vdup` to `vmul_n` (3e45842f)
- Improve: Templated tests for complex types (ce12fb49)
- Docs: Consistent file headers and benchmark names (c8d6a0ee)
- Improve: `Dots` traits for `i4x2` and `u4x2` (c82dfaa5)
- Improve: Vectorized FP8 conversion on NEON (19f13b89)
- Fix: LAPACK type-casting on AppleClang (c836eee5)
- Fix: Higher `sqrt` stability for Angular on Arm (5bc2ac8b)
- Fix: AppleClang compilation & NEON inconsistencies (f9317a85)
- Fix: Avoid FP8 overflow in elementwise FP16 NEON kernels (63e6e98d)
- Fix: Wrong NEON include guards (4e8d45d0)
- Improve: Guard compiler `#pragma`s (1a221285)
- Fix: SVE includes and NEON conversions (b7d6077d)
- Make: CMake cross-compiler toolchain for RVV/SME (de7b3e04)
- Fix: Parallel AMX usage from Rust (357b0066)
- Make: `amx-tile,amx-bf16,amx-int8` SPR flags (bed477aa)
- Fix: Avoid stack-smashing for NULL kernels (a55381c6)
- Fix: Order of F8 to BF16 LUT-based upcasts (1f647d88)
- Fix: Reducing zero-size arrays (6247ec38)
- Make: Avoid `bf16` on Skylake (0be76f0e)
- Improve: Diaptching all GEMM variants (2b8edd41)
- Make: Missing x86 compiler flags (4f335201)
- Make: Allow cross-compilation in CMake (76da11a5)
- Docs: Use Unicode symbols for math (f36ad8ce)
- Improve: Avoid AVX-512 for AMX tile bounds (f69648a2)
- Improve: Reusable test baselines (1f22497a)
- Improve: Cleaner loop names for GEMM (c18b9537)
- Improve: Clean-up pre-Haswell loads (1d39b423)
- Fix: Overflow in `angular_u4_ice` squaring (f7b7e98b)
- Improve: `i4` & `u4` spatial kernels (e3bb5538)
- Improve: Single-pass reductions on Haswell (d5c2e544)
- Fix: Match `std::complex` args in Accelerate API (54fcaa25)
- Improve: Differentiate `Accelerate` baselines (817ec379)
- Fix: Missing vtable inits in `nk_capabilities` (89a10e67)
- Fix: AppleClang compilation issues (ec554df4)
- Fix: Compiling NEON & SVE kernels (254b77dd)
- Fix: Precompute `_Float16` constant to avoid pedantic warnings (3870ed4c)
- Improve: Accuracy of log2 and f8 conversions (a59cfde2)
- Fix: Jaccard and Mesh baselines (57343742)
- Fix: Inappropriate downcasts in f64 meshes (94a59d85)
- Improve: Small-type-aware PRNG for precision tests (89e18d35)
- Improve: Faster precision conversion on x86 (bb3f906b)
- Improve: Faster F8 upcasts in AVX-512 (32b45ec2)
- Fix: Avoid instability with `atan2` in geospatial (90403d95)
- Improve: 64-bit square roots for F64 (86cbad6f)
- Fix: Incorrect min/max indexing in AVX-512 (fb417899)
- Improve: Uniform GEMM kernel naming (3d7a9d4e)
- Fix: ULP estimate recursion error (d1f955ed)
- Improve: Fine-grained test filtering (6f457e02)
- Make: Auto-detect BLAS and MKL (4fffb013)
- Improve: List all supported ISAs at test/bench start (260e5b97)
- Improve: Filter tests by RegEx (84d3aa77)
- Make: Uniform `.cpp` extension (322ac339)
- Improve: Cleaner macro names (7007c141)
- Improve: Test half-precision trigonometry (d817222d)
- Docs: `@copydoc` for reductions (cfa65287)
- Fix: Iterative widening to 64 bits on Ice Lake (ae40d81e)
- Improve: Reduce port 5 pressure (c8302e49)
- Improve: Use fewer bits for f8/f16/bf16 sums (3cad2d83)
- Improve: Neumaier for f64 → f64 reductions (2a9a320f)
- Fix: x86 compilation issues (dcb83321)
- Improve: Reduce port 5 pressure (de76ebd6)
- Fix: `avxvnni` flag (04f0eaf6)
- Make: Compile with BLAS, MKL, & Accelerate (c93386b1)
- Fix: Missing constants (a1ec738a)
- Improve: Test with Cauchy distribution and F128 (b9e52c6a)
- Improve: Test Python against `ml_dtypes` (72380493)
- Fix: Stale SVE kernel names (17ea3a7a)
- Improve: Time-constrained testing (a305b726)
- Improve: Neumaier scheme instead of Kahan (523cf24b)
- Improve: Consolidate partial loads (ddf00974)
- Fix: Using f32 numerics for f64 distributions (b57cb326)
- Improve: Higher-precision SVD (1564c8d3)
- Make: New `NK_TARGET`s for Python and JS (f892469f)
- Docs: `@copydoc` for integer reductions (59158e05)
- Improve: Use `Accelerate` baseline on macOS (700df6bd)
- Improve: Faster GEMM inner-product macros (112b35c6)
- Fix: Refresh Swift binding (1490af91)
- Improve: Vectorize geosptial tails on Haswell & NEON (82ab615f)
- Fix: Compiling NodeJS bindings (f7a89b89)
- Fix: NEON & SVE symbol suffixes (1ea7bcac)
- Improve: Clean-up `#include`s (6da87cfb)
- Improve: Converting partial-loads for missing types in AVX2 (1af13453)
- Make: Move files to match new cap names (040c7f15)
- Docs: Describe packing layout (7170a024)
- Improve: Unroll NEON meshes by 2x for 20-30% uplift (a4f92447)
- Improve: Vectorize post-SVD RMSD (23ea0186)
- Fix: Type mismatch in SIMD mesh computations (7ced9c15)
- Improve: Tail trigonometry with SIMD on Haswell (e66246e3)
- Improve: Four-way unroll matrix inner products (1bd0f242)
- Improve: Move partial loads (382ecc6e)
- Fix: Type choice inconsistencies (251c46c3)
- Fix: Low-precision square roots for meshes (46b3a772)
- Fix: Sierra Forest finalizers (ff92e7ba)
- Fix: MacOS compilation issues (fc9ca87b)
- Make: Move files (870a5106)
- Fix: Pass `compute_sqrt` to Mesh kernels (b21d6207)
- Improve: Use Kahan for spatial serial metrics (6a757833)
- Fix: Match `mesh.h` ABI in Rust (aa5f5176)
- Improve: Kahan numerics for angular distances (e38fd5dc)
- Fix: Type-casting warnings (5605cab8)
- Fix: On Linux request `_GNU_SOURCE` for AMX (58297ca5)
- Fix: `nonnull` compilation warning for vtable init (1f31115e)
- Improve: Consolidate GEMMs around new partial loads & dot-product finalizers (31fda77a)
- Improve: Faster serial Jaccard with SWAR (fab71e5c)
- Improve: Differentiate `F32` macros (ed08bdd5)
- Fix: Inappropriate dot-product finalization types (4936c363)
- Improve: 4-way finalizers & variable names (6183891b)
- Improve: Finalize 4 running products at once (d164df5a)
- Improve: Clean-up `load_and_convert` (2c3064b8)
- Make: Add optional MKL benchmark baseline (4892d14f)
- Improve: Reorganize MatMul & benchmarks (cbc42545)
- Make: Rename `matmul.h` to `dots.h (9bef3ab4)
- Fix: Comilation issues with `struct` declarations (fb7155d9)
- Docs: List relevant instructions (d224667b)
- Improve: Unroll serial dot-product streaming APIs (c99c1944)
- Docs: Header formatting, tables, & instructions (47753edf)
- Improve: Test matmuls (3c4f6741)
- Make: Missing `avx512dq` flags for meshes (7b8787f4)
- Improve: Remove dead header members in packed GEMMS (c9e59472)
- Improve: Faster `f8` upcast on x86 (e4807361)
- Improve: Extend test coverage (0dc5b984)
- Improve: Try Estrin's scheme & RCPPS with Newton-Raphson (7576046b)
- Fix: Vectorized `cos` one term sign (b41e82b9)
- Improve: Broader test coverage (79bce836)
- Fix: Compilation issues (3b018239)
- Fix: Stale symbol names (5a0161b1)
- Improve: Reuse `simsimd_fui32_t` for conve…
github-actions Bot
pushed a commit
to Mixaill/SimSIMD
that referenced
this pull request
Jul 24, 2026
### Major
- Break: Fewer args for `nk_find_kernel_punned` (3744bdb1)
- Break: `ml_dtypes` & NumPy v2+ compatibility (6658cc4a)
- Break: Higher precision `mesh/` for F32 & F64 inputs (fbf1bf21)
- Break: Higher precision `probability/` operations for F32 (fe8a1fc3)
- Break: F64 results for F32 curved/, maxsim/ & sparse/ (29f52c37)
- Break: F64 results for F32 dot-products & spatial-distances (22ff3fc9)
- Break: Better complex numbers for Rust (27976e0a)
- Break: MaxSim output signature (238f65fb)
- Break: Ban `threads=` arguments for Python methods (8039f283)
- Break: 32-bit "sizes" for 32-bit platforms (a88b667e)
- Break: Remake CPython binding entirely (0a0f449e)
- Break: Remove `f16` Sapphire curved kernels (f0e9fa0d)
- Break: Deprecate SME for meshes & some SVE ops (f55e9a71)
- Break: Replace the old reductions (285c5e5e)
- Break: Drop `u1` GEMMs (84a369e0)
- Break: Assymetric GEMMs (9fa8c899)
- Break: Replace `_accurate` baseline with C++ templates (5a0b7b4f)
- Break: Consistent E4M3FN handling for NANs (94febd4a)
- Break: New policy for sub-byte dtypes (b1997c95)
- Break: New mixed-precision policy for spatial kernels (2edff57e)
- Break: New dot-product precision guarantees (ffa8efd8)
- Break: Ban typename shortcuts to avoid NumPy conflicts (131dda52)
- Break: Remove legacy Golang symbols (9e310b0e)
- Break: New capability enums for SME & NEONFHM (9ba1ee53)
- Break: New capability names (8029b00d)
- Break: New Rust ABI (325d9056)
- Break: Return types & 4-way finalizers (b55f013a)
- Break: Refactor output types & variable names (8ed877e7)
- Break: New `.h` header reference design (5412fcc6)
- Break: New API for MatMuls (f37afb73)
- Break: Trait for each API (1d0f06a3)
- Break: `js` & `kl` → `jsd` & `kld` (9ef04301)
- Break: `cos` → `angular` distance (a1a6f65f)
- Break: `cos` distance renamed to `angular` (b480b5c3)
- Break: Shorter symbol names (38df49c6)
- Break: Shorter op-codes (383b7991)
- Break: Support mixed-type element-wise ops (4646d6b7)
### Minor
- Add: CMake option to enable AddressSanitizer (f4c93132)
- Add: Rust trait reorganisation, bit reductions, macro purge (31217375)
- Add: Tensor `fill_zeros`, `fill`, `copy`, popcount-style `BitwiseReductions` (01274600)
- Add: DLPack 1.3 interop bridge for numkong.Tensor (ea74fe19)
- Add: Back-port tensor API to C++20 for CUDA (ad930682)
- Add: NEON popcount kernel for nk_reduce_moments_u1 (2181e0c6)
- Add: Tensor constructors, sealed trait family, div_ceil cleanup (2792279f)
- Add: Span-based matrix `_into` APIs, parallel Hammings/Jaccards, full-crate docs (99289df6)
- Add: OpenMP for Python & JavaScript (499ecc92)
- Add: Granite Rapids AMX for F16 & F32 (28036ea6)
- Add: Was elementwise ops & spatial mini-float kernels (81b8c449)
- Add: WASM type-casting kernels (e09df318)
- Add: SVE+SDOT ops for 8-bit integers (913fc6b0)
- Add: NEON & SDOT fallbacks for `i4` & `e3m2` (0c6afa5f)
- Add: `sets/` kernels for LASX (34d3d672)
- Add: Loongson F16 kernels (1a81142f)
- Add: Power9+ ISA backend (176bbe22)
- Add: Diamond Rapids backend (b3136e3b)
- Add: LAPX kernels for LoongArch (565a8475)
- Add: Infra for Loongson, Power, Diamond, NEON FP8 (55772613)
- Add: NEON+FP8 kernels for Olympus (22048acc)
- Add: `nk::cast` & reduction helpers for C++ (80ff0b03)
- Add: Printing individual `nk::vector` dimensions (af719c78)
- Add: Half-precision `mesh/` kernels in AVX-512 (09c3a79b)
- Add: Sub-byte iterators for C++ tensors (7b0268e2)
- Add: Rust `AllClose`, `MinMaxResult`, & new tensor iterators (45fcc127)
- Add: Sub-byte aware iterators for Rust (b0042f33)
- Add: `std::format` for mini-floats (b1427e50)
- Add: Addressing CUDA memory in Rust with `from_raw_parts` (39449a35)
- Add: Zero-copy Tensor views in Python (5c035f82)
- Add: `CustomStringConvertible` for Swift types (75d63cec)
- Add: Basic logging for JS types (c0ab7482)
- Add: Basic `std::formatter` for C++ users (bdb4e73d)
- Add: `e3m2` Alder spatial kernels (bf2ba467)
- Add: Missing BF16 & F16 kernels for NEON & SVE (b9d7434d)
- Add: Packed GEMMs & SYRKs for JS (f293a82b)
- Add: Float8 `spatials/` kernels for WASM (3d08c31c)
- Add: New Tensor constructors for Python (00991a34)
- Add: `bf16` kernels for NEON (c055d0b3)
- Add: Dedicated Swift benchmarks (20f171ca)
- Add: `f16` & `e3m2` initial WASM dot-products (b79d4c94)
- Add: Cleaner API for geospatial ops in Swift (0872fca5)
- Add: Go SDK for GEMMs & MaxSims (df6bed7e)
- Add: Matrix & MaxSim ops for Swift (a080e686)
- Add: Capability checks in GoLang (947aacbd)
- Add: Tensor lookups and slicing in Rust (1dd477a4)
- Add: Partial loads/stores in AVX2 (eeb71651)
- Add: Tensor slicing logic (39ff1852)
- Add: `mesh/` operations in WebAssembly (4babf2ea)
- Add: `sets/` operations in WebAssembly (01526328)
- Add: Custom packer stubs for `dots_u1` on Haswell, Ice Lake, NEON (4c71a29e)
- Add: PyTest for MaxSim (e0f76a28)
- Add: More `dtype` variations for WASM kernels (f1934708)
- Add: MaxSim for Python (28bb0b17)
- Add: MaxSim ops on Sapphire AMX (3b81be96)
- Add: `spatials/` & `maxsim/` ops for C++ (355a7c0c)
- Add: Zero-copy reductions & native `Complex` numeric types for Rust (0c19c834)
- Add: Missing `from_dot` adapters for Haswell, NEON, & WASM (f155ed7c)
- Add: New compensated GEMMs for i4/i8/u8 on x86 (62e18203)
- Add: New matching Matrix & Tensor APIs for Rust & C++ (e3524581)
- Add: Batched many-to-many distances for Python (ff76363d)
- Add: Alder Lake backend & reorganize Sierra Forest (a55c5a5a)
- Add: Consistent Tensor & Vector designs for C++ & Rust (f11b7ee8)
- Add: New DTypes & GEMM-like ops for Swift (61869dd8)
- Add: Sapphire AMX `e4m3` symmetric kernels (0aa5a47b)
- Add: Missing SapphireAMX & Sierra `spatials/` kernels (fcbcfc75)
- Add: `maxsim_pack_f32_sme` (0dbdada8)
- Add: StreamingSVE reductions (45ff3010)
- Add: `f16` scalar ops (5d040cee)
- Add: New headers for common ISA-specific scalar ops (40f0ebbc)
- Add: Full MaxSim support in the C layer (b7e8beb9)
- Add: Complex elementwise Rust traits (638bc3aa)
- Add: `each/` ops for complex numbers (a2ce1efb)
- Add: All new Python testing suite (b367e14b)
- Add: `f64` KLD & JSD on Haswell (743af070)
- Add: `spatials/` for many-to-many distances (ef28bb37)
- Add: Binary dot-products for SME (82d1d313)
- Add: `u1` dot-products (8d67a758)
- Add: Recursive CPython tensor reductions (336d1199)
- Add: MaxSim drafts for Genoa (49c2510c)
- Add: `NK_ALLOW_ISA_REDIRECT` flag for sparse kernels (adceb700)
- Add: Missing reduction type mappings (8286daba)
- Add: New 6- & 16- bit types for Python (fc460b99)
- Add: Sub-byte reductions & arithmetics in Rust (c9d2088f)
- Add: Complex Bilinear forms for Rust (0551b40e)
- Add: `jaccards` kernels in SMEBI32 (c9a3eb3a)
- Add: Universal Cauchy & Log-Normal PRNGs (f8c11a45)
- Add: Draft `maxsim` operation for SME (7444d8d5)
- Add: Kernel return type metadata (ab02e482)
- Add: Haswell Curved kernels (25f867de)
- Add: RVV GEMMs (64db680d)
- Add: SME & Sapphire AMX `e2m3` & `e3m2` kernels (de2aa5ce)
- Add: New reductions for WASM & RVV (3286ce04)
- Add: Draft new reductions for Arm (4c136d53)
- Add: New reductions for Sierra Forest & newer (b7247ed2)
- Add: Mini-float reductions on Ice Lake & Genoa (a29db28d)
- Add: Missing new Flaot6 Skylake reductions (0d9c3daf)
- Add: All-new `moments` & `minmax` combined reductions (b8ae2566)
- Add: `e3m2` products through `i16` (40ec9b91)
- Add: Mesh kernels in for Arm SME draft (0e0bc30c)
- Add: WASM Imported Memory support & zero-copy views (d05e020d)
- Add: Missing float6 Skylake reductions (38a190e1)
- Add: All-new WASM-compatible JS binding (bffa22ab)
- Add: Faster u1/u4/i4 SME kernels (61d010f9)
- Add: 18x faster MOPA-based symmetric pairwise products (06966b39)
- Add: Broader reductions dtype coverage (05e84628)
- Add: Sapphire path for Float6 dots with Flaot16 4-way product sums (98f78151)
- Add: RVV reductions, cruved metrics, divergences, & trigonometry (6ba8bf42)
- Add: Massively faster SME kernels (ad844cf8)
- Add: `e4m3` LUT-based upcasts, `SHLL` for `e5m2`, & FHM GEMMs (ac65bdbe)
- Add: New `RVVBB` capability for bit-ops in RISC-V (e6e9c74c)
- Add: RVV Geospatial & Mesh kernels (d4ea9a4d)
- Add: Full type coverage for reductions (a8a8c99d)
- Add: `EM_JS`-based runtime Relaxed SIMD detection (e619f79b)
- Add: Geospatial kernels for Relaxed WASM (32c40e8f)
- Add: Faster RVV vector-vector dot-products with LUTs (63fffe3f)
- Add: `mahalanobis` tests (3f315059)
- Add: `mesh_result_t` for C++ API (c840ebb3)
- Add: Relaxed SIMD backend for WASM (5ba15e26)
- Add: `i4`, `u4`, `bf16c` Haswell kernels (a82c92c6)
- Add: Float6 dot-products on Haswell (9ab4504b)
- Add: Baselines for `hammings` (bad2b31f)
- Add: Pre-packed "Hammings" for each ISA (b4cdc725)
- Add: Missing Float6 dot-product kernels (10650619)
- Add: Missing Float6 `nk_cast` adaptations (b4500c32)
- Add: Draft `sets.h` to leverage `SMEBI32` (29500b18)
- Add: `Float6` vector-vector x86 kernels (980b681d)
- Add: `Float6` GEMMs for x86 (e9414077)
- Add: `i4` and `u4` NEON dot products (36abbaa8)
- Add: FMLAL for Float6 dots through Float16 (31e62097)
- Add: `e2m3`, `e3m2` for Rust (e9d69662)
- Add: Initial Float6 support with `e2m3` & `e3m2` (1dc1973a)
- Add: `DotsSymmetric` for Rust (a12c3f74)
- Add: Symmetric GEMM APIs (672af9ff)
- Add: Lower-precision RVV kernels (ec971269)
- Add: Curved ops for Rust (ba4743fe)
- Add: Reduce & Each* traits for Rust (6b3abb8a)
- Add: Intersection outputs and new binary.h kernels (b7dcee03)
- Add: New SME kernels (9c6882e1)
- Add: PRNG kernels placeholder (e7234bd5)
- Add: Attention kernels placeholder (d6bcd6c1)
- Add: New Float-as-Int reductions trick (ddb0b6de)
- Add: Casts on Arm NEON (d039acc9)
- Add: Sub-byte matrix multiplications (a08f1957)
- Add: Dispatch orphaned AVX-512 elementwise ops (5f21aa34)
- Add: Dispatch min/max reductions (8c8177f1)
- Add: Parallel MatMuls in Rust via Fork Union (daf7d249)
- Add: `nk_cast` for Sapphire and Ice Lake (c4454e11)
- Add: Rust MatMuls for more numeric types (0cfd3a94)
- Add: Dynamic dispatch for casts (8a5b586f)
- Add: RVV dispatch checks (01412b63)
- Add: Initial RISCV64 support (fa9c345e)
- Add: `u8u8u32` and FP8 variants for AMX (f836acd2)
- Add: Casts & sub-byte types for Rust (5e61c32f)
- Add: Reusable Sapphire AMX logic (7878fb5c)
- Add: Benchmarks for casts (255b8d31)
- Add: Serial tangent helpers (c7092850)
- Add: Type-casting headers (5faf6296)
- Add: Higher-precision dot-product on Haswell (e600fc7e)
- Add: Half-precision trigonometry for SPR (c49c3379)
- Add: Missing b8 Haswell strided blend (957545d7)
- Add: Missing Haswell F64 GEMM (364e29b6)
- Add: Relevant Sierra kernels (1f1e25ba)
- Add: F64 KLD/JSD in AVX-512 (91a2dc79)
- Add: Reduce on Skylake & Ice Lake (e50c4ee8)
- Add: Extensive ULP testing for all APIs (55f6b34a)
- Add: Half-precision mesh for Haswell & NEON (ef4f0f88)
- Add: Missing F8/F16 dispatch tables (608a621e)
- Add: F8 elementwise ops for Haswell & NEON variants (696c66b3)
- Add: F8 reductions for Haswell & NEON variants (c64b2275)
- Add: Serial fallbacks for elementwise & reduction ops (c68ec46a)
- Add: Multiprecision testing against Boost (998de28a)
- Add: `NDArray` for Rust (b8697997)
- Add: Reductions for `nk.NDArray` (c7c5b2b5)
- Add: Reductions dispatch (04df323e)
- Add: Dot products dispatch (02301d15)
- Add: SME, FHM, and AVXVNNI checks (823555a7)
- Add: Missing NEON ops & declarations (17cd8299)
- Add: Missing kernel dispatch (cca00fbb)
- Add: F8 & F64 dot-product for NEON (9de5eb6b)
- Add: Geospatial kernels to Rust (98d2ce9f)
- Add: Serial fallbacks for i8/f16/f64 GEMMs (53f69c3f)
- Add: Matrix multiplications via NEONFHM (4bd30ecd)
- Add: Complex math with NEONFHM (1c18188c)
- Add: Geospatials for Arm NEON (1232890f)
- Add: Improved mat-mul packaging (af5b9400)
- Add: Kernel output metadata for CPython bindings (2927b5b6)
- Add: Type-punned scalars for CPython & NodeJS bindings (5a3c33a3)
- Add: Double-precision GEMM on Arm (5bd1b9eb)
- Add: Missing reductions dispatch & benchmarks (702bf2f3)
- Add: Port trigonometry to NEON (c018f50f)
- Add: Dot-product accelerated reductions (ed245b2d)
- Add: Single-pass reductions on Arm (0a67a039)
- Add: Integer reductions (27ee432c)
- Add: Strided reductions in SIMD (19f291d4)
- Add: Reusable reductions (61f5b5e5)
- Add: Serial stateful Jaccard variant for NxN (d09b7db8)
- Add: Smaller states & faster finalizers for binary kernels (a9c39f05)
- Add: Fast-path GEMM for SIMD-divisible tile sizes (24ca6cef)
- Add: New inner-product matmuls (d3760b1e)
- Add: Tiled serial kernels (95db3d9d)
- Add: New macros to build GEMMs from outer products (b17e9adf)
- Add: MatMuls, MKL, & Mesh benchmarks (0809cdf5)
- Add: Feature-complete Tensor type (fd8b3808)
- Add: Streaming APIs for spatial metrics (068d0755)
- Add: Expose geospatial kernels to the shared lib (55e32f38)
- Add: Backport `f8` dot-products to Haswell (69a6e104)
- Add: Mesh alignment for Rust (f3bd0ce4)
- Add: Umeyama kernels for mesh scaling (f8da516b)
- Add: Sapphire/Granite AMX capabilties (5e72fe7d)
- Add: Kabsch-Umeyama metrics with scaling invariants (ade61a01)
- Add: Haswell Mesh-processing kernels (4f225bf0)
- Add: Separate AMX fast & slow path with buffering (144f977b)
- Add: Kabsch & RMSD for 3D meshes (095d4271)
- Add: AMX-based MatMuls for SPR (55074ce6)
- Add: FP8 vector dot-products (50b8acbc)
- Add: Geospatial Haswell kernels (d81f8062)
- Add: Haversine & Vincenty for `f32` and `f64` (a5c6112f)
- Add: Expose geospatial kernels to Python (202068bd)
- Add: Backport trigonometry to Haswell (1082eba3)
- Add: Geospatial benchmarks (ba860061)
- Add: `ElementwiseOps` & `Trigonometry` traits (78b78581)
- Add: `e5m2` & `e4m3` types for Rust (024be355)
- Add: Draft Geospatial & MatMul kernels (839ef359)
- Add: Saturating math, `e4m3` & `e5m2` (9adb38c6)
- Add: `atan2` Skylake kernels for Haversine (044118d8)
- Add: Elementwise Py annotations (ea86be9b)
- Add: Elementwise scaling & summation (40dc616a)
- Add: Trigonometric functions for Skylake (02711a53)
- Add: `atan` & `atan2` serial variants (bc6ed87a)
- Add: Trigonometry based on SLEEF (96adae55)
- Add: Element-wise Python benchmark (8fb5a0c0)
- Add: BLAS benchmarks for elementwise ops (a22607d9)
- Add: `u8` APIs to Rust SDK (b3f98e68)
- Add: `simsimd.multiply` (d81868aa)
- Add: `simsimd.multiply` (48bd7127)
- Add: Missing serial integer `wsum`-s (3aac9ad5)
- Add: Dynamic dispatch for element-wise ops (602f8126)
- Add: Element-wise saturated addition for Ice Lake (09735ea7)
- Add: `i64`element-wise kernels for Skylake (463e8f39)
- Add: `i32` element-wise kernels for Skylake (d1bb51c6)
- Add: `i16` element-wise kernels for Skylake (8950a7ed)
- Add: `i8` element-wise kernels for Skylake (d10d27e0)
- Add: `i32` element-wise kernels for Haswell (e2698b0b)
- Add: `i16` element-wise kernels for Haswell (0e7c656e)
- Add: `i64` element-wise kernels for NEON (75993e79)
- Add: `i32` element-wise kernels for NEON (1f91b92e)
- Add: `i16` element-wise kernels for NEON (54bb07dc)
- Add: Type-casts to & from `[iuf]64` (4c69e7d6)
- Add: `mdspan` (ac5841f4)
- Add: Same-type element-wise ops (7666884b)
- Add: `simsimd_ndindex_t` for high-rank tensors (a57264a8)
- Add: Sum & Scale APIs (fb5dce73)
### Patch
- Improve: Report Umeyama scale as NaN for degenerate source (895742d8)
- Fix: Fast-math-safe float classification (b25666da)
- Fix: Accumulate `i4` angular bias correction in `i64` on Icelake (f59c9156)
- Fix: `const` friendly & rank-aware tensor ops (ef37cf9b)
- Improve: Harden tensor shapes against `-flto` (3eca0d2c)
- Improve: Accept any integral in sub_byte_ref::operator=, clamp out-of-range (f3004f63)
- Improve: Collapse per-lane finalize args to one pointer-to-vec shape (a35ddcde)
- Improve: FP8 GEMM throughput on Skylake/Haswell + Granite Rapids E5M2 kernel (c19bec99)
- Improve: FP8 pairwise distance kernels via Giesen trick + F16 widen path (679f55fa)
- Fix: Keep `*_serial` kernels scalar across LTO (455d535b)
- Make: Enable symbol exports for `nk_shared` Emscripten builds (482e4fd1)
- Improve: SSD trace-identity fold across all mesh backends + Genoa/NEONFHM kernels (e9d40e5d)
- Make: Normalize base PowerPC & LoongArch cap for JS (ab81191c)
- Fix: Native ISA probe on Apple Clang + compile/runtime glyph (bc13e026)
- Make: Detect illegal instructions in macOS CI (289cdaff)
- Fix: Drop `-march=` on macOS setup.py builds (28aac749)
- Fix: Exclude `std::signal` from WASM builds (14814c56)
- Improve: Drop GNU statement-expression macros in SVE reduce helpers (b8b4ca05)
- Make: Drop `+nosimd` from AArch64 baseline (23f51955)
- Make: Forbid auto-vectorization in portable baseline builds (43e8324d)
- Make: Pin TU baseline to per-arch ABI floor across build systems (453ed5ff)
- Fix: Mitigate GCC 13 wrong BF16 splat in Arm NEON (#346) (fc3d8ecf)
- Improve: Log faulting capability detection (a401f8ac)
- Improve: Log faulting kernel on fatal signals in `nk_test` (22c7c791)
- Make: Normalize Python test dependencies across CI and docs (8a0f3d48)
- Make: Baseline-only ISA for shared-library test, harden Windows CI (19076856)
- Fix: Wrong compiler probes for SMEBF16 & SMEBI32 (8b19ddb3)
- Make: Log host CPU capabilities in macOS and Windows CI jobs (988eeb2b)
- Fix: Pre-declare OpenMP loop counter, universal libomp for macOS (493a0217)
- Fix: Use int for OpenMP loop counters, absolute libomp install name (ccc01180)
- Fix: GCC requires +sme prefix in target attribute for __arm_sc_* stubs (291dc0aa)
- Fix: Signed OpenMP iterators, source-built libomp, JS KMP guard (dc1ae750)
- Fix: OpenMP wheel builds on macOS and Windows (f5691212)
- Fix: Add target("sme") to __arm_sc_* stubs for GCC compatibility (ad2add07)
- Fix: Unpoison SVE scalar reductions for MemorySanitizer (#342) (b42eda77)
- Improve: Move SME runtime stubs to types.h as weak inline definitions (64ca9344)
- Improve: Manual SME streaming control, single enter/exit per API call (6432837b)
- Fix: Update `cdist` edge-case test for re-added `threads=` kwarg (50681aff)
- Make: Allow force-enabling ISA targets via environment variables (0e58702c)
- Improve: Abandon F32→F64 via Ozaki on Granite Rapids (94a5f192)
- Make: FreeBSD, PPC64le, LoongArch, RISC-V releases & compress Windows (a9a0d83e)
- Make: Standardize CI compilers and add Windows test job (9a22ea45)
- Make: Shrink serial fallbacks with scoped size optimization (83154a86)
- Make: Compress Windows builds (e30ad3d3)
- Fix: Streaming-compatible stubs for LLVM SME builds (0be7b2f4)
- Improve: Vectorize F32 SME MaxSim finalizer (0daacf3b)
- Improve: Remove centering from RMSD kernels (1a83ab4f)
- Fix: Emulated vs native test durations (4266451d)
- Fix: ARMv7 Rust cross-compilation with CC for versioned GCC (a5e67e60)
- Make: `check_source_runs`-probing like `march=native` on MSVC (7a152f3b)
- Fix: Drop `_MM_FROUND_NO_EXC` from `_mm256_cvtps_ph` calls (8649b0c0)
- Fix: Guard against old MSVC preprocessor (25d33048)
- Make: Enforce newer preprocessor in MSVC (be966af2)
- Make: Cleaner CIBW artifact names & env forwarding (a6cf6424)
- Make: Forward cross-compilation flags for macOS wheels (6ed3b8c2)
- Make: Split ppc64le, s390x, i686 CIBW runs (c01795cc)
- Fix: Require AArch64 for NEON kernels (2ba1b343)
- Docs: Table order & formatting (8673a56f)
- Make: Avoid `--all-features` in Rust cross-compilation CI (8be8bffe)
- Improve: Arm32 compatibility (64041725)
- Make: `cancel-in-progress` CI to shift compute resources (dfc8fa02)
- Improve: Harden Swift SDK for 6.1+ toolkit (965cd524)
- Make: Strip `.unsafeFlags` & list platforms for SPM consumption (b061b78d)
- Make: Expose `CNumKongDispatch` target to Swift users (6aa00a89)
- Docs: Shrink tables in the main README (6d2ea345)
- Make: Inline Power Shell cross-compilation logic in CI (974c30ca)
- Make: Define `_ARM64_` for Arm JS builds in MSVC (f3030420)
- Make: Skip same-named artifacts on CI reruns (7c098e51)
- Make: Set `repository.url` for NPM (385480d2)
- Make: Pull MSVC ARM64 Cross-Compiler (e20c93ef)
- Fix: Swap `f16x8` for `u16x8` in `cast_neon` (154ec5db)
- Fix: Misplaced NEON loads/stores in Sierra (05e30455)
- Fix: Avoid unconsitional `np` symbols (9dffb681)
- Make: Resolve probe locations for NPM consumers (c602f45f)
- Docs: Refined "What's Inside" (28f35cdb)
- Docs: Mini-float kernel selection strategy (04e6598b)
- Improve: Accelerate PyTests, reduce `Decimal` use (24172485)
- Make: Move `.pyi` for PyLance (688ec2d2)
- Fix: Inconsistent SME function qualifiers (5b4148a4)
- Improve: Smaller test inputs under QEMU (ee36bf2c)
- Improve: Vectorize GEMM "packers" (86127a45)
- Make: Longer timeouts for QEMU in CI (a9cc7322)
- Fix: `vec_t` store helper args order (eecbcac4)
- Fix: Negative stride tensor reductions (3ea81be4)
- Improve: Recursive stride collapsing and axis-lane fast paths for N-D reductions (cf8eaf62)
- Improve: Faster reductions in strided tensors (61651ed1)
- Improve: Wider NEON curved, mesh, & probability F16 kernels (1c17678f)
- Fix: Harden mini-float type-casting (1911b89c)
- Make: Ship `win32-arm64` NPM builds (578b7adf)
- Make: Auto-bump JS platform-specific versions (5617f756)
- Fix: `vcombine` instead of initializer lists for NEON arrays in MSVC (906c1784)
- Fix: Avoid flaky `vld1_f16` for MSVC (7a987d2e)
- Docs: M5 perf stats for Wasmtime v43 (43c2881b)
- Fix: Alternative MSVC-friendly cast (4744b9b3)
- Make: Disable LTCG due to MSVC issues (3d376843)
- Make: Try `PREBUILDS_ONLY=0` in CI (64c5f95d)
- Improve: Lower NEONHALF → NEON requirements (37f99eca)
- Fix: Wire `nk_cast_neon` benchmarks (3793af24)
- Docs: Apple M5 native stats for secondary workloads (d7c81c4f)
- Improve: Faster in-vector 4-way finalizers in NEON (968dcd16)
- Improve: Drop `nk_f16x4_to_f32x4_neon` (84bb20ab)
- Improve: `vcvt_high` for faster unpacking (a5f4a191)
- Docs: Refresh GEMM/SYRK measurements Apple M4 → M5 (3e010de3)
- Fix: Harden strided reductions in NEON & AVX2 (61ac67b9)
- Fix: Double-counted tail in Skylake `f64` RMSD, Kabsch, and Umeyama (5391344b)
- Improve: Share `decimal.Context.traps` rules (3c28ae92)
- Fix: Padding partial tail 32-bit words for `BMOPA` (25984875)
- Fix: Missing scale type definitions of mini-floats (91862da5)
- Fix: Scalar buffer cast internal overwrites & aliasing (7b0e1293)
- Fix: Top-bottom variable names (a0141348)
- Improve: Giesen's E4M3 → F16 in Streaming SVE (25322b50)
- Improve: Fewer branches in SME GEMMs (858263c9)
- Fix: Up-round dimensions count in sub-byte C++ tests (87a72d0f)
- Make: Focus on M4 CPUs for SME probing (5ff63eb6)
- Improve: PyTesting across more shapes (4bc3e442)
- Improve: Cleaner type-casting & promotion rules (23c2474b)
- Make: Hide formatting commits for v7-7.2 (f6ce2dad)
- Make: Native addon resolution for Deno & Bun (0d502d5a)
- Docs: Citations (6220137c)
- Improve: Faster mini-float norms in Streaming SVE (088de570)
- Make: Integrate PyRight (0fe56c00)
- Fix: F16 norms in SSVE skipped odd entries (bf3bfeec)
- Fix: Harden SVE MaxSim upcasting logic (803eb332)
- Fix: Disable `FPCR.AH` bit (7b2b8504)
- Make: Node 24 for trusted publishing (9f1a4ef0)
- Fix: `_m` to zero-out predicated SVE/SME ops (16c157b7)
- Fix: `_m` to zero-out predicated SVE lanes in `spatial/` (ac27cde4)
- Make: Replace stale `prebuildify` (74c5454e)
- Make: 2h timeout budget for JS & Py builds (2e8f081e)
- Fix: Harden implicit narrowing casts (319fae28)
- Fix: Negating unsigned integers in MSVC (9be61e3d)
- Make: Retry flaky CI jobs (b622d630)
- Make: Remove conflicting NEON probes (c0f35733)
- Make: Trusted publishing for NPM (95782713)
- Improve: VNNI spatial kernels for E2M3, E3M2, & E4M3 (02d53256)
- Fix: `NK_TARGET_NEON` auto-detect in MSVC (4ad21241)
- Improve: Listing compile-time capabilities (0e9f04a8)
- Improve: Flush Float16 sums in `spatial/` Float6 kernels (52606b0e)
- Make: Slimmer NPM packages per platform (0a18afcb)
- Improve: Lower E4M3 Genoa to Icelake with 40% gains (8ade366e)
- Make: Extended BF16 support on Arm (70d6ca23)
- Make: `numkong.gypi` interface for downstream addons (2b97a6bd)
- Make: Resolve CMake probes for git-submodule users (772720f5)
- Make: Expose `cargo:include` & `links` for USearch & downstream users (7e58e9fe)
- Fix: Broken Arm probes in AppleClang (7b889985)
- Improve: Giesen's trick for F8 upcasts on NEON & RVV (b2f8faa4)
- Fix: Missing wrong enum for LoongArch (c869f3f5)
- Improve: `__attribute__((may_alias))` for punning unions (59453724)
- Fix: Pre-pack F16 as F32 for serial GEMMs (f51f7f09)
- Improve: Wider `bf16` GEMMs without pre-upcast (26bc2fa6)
- Improve: 2x wider GEMM steps on LASX (f164c4aa)
- Docs: More stable SPR perf numbers for floats (33531da7)
- Fix: `__loongarch_lasx` flag doesn't exist (d57740ec)
- Docs: New "What's Inside" tabular guide (e9d0b19a)
- Fix: Algrebaic transform for i8×u8 dot instructions (5a2e6774)
- Fix: `vec_mergeh` upcasts in VSX (7ae8b6b7)
- Improve: Faster conversions & reductions in LoongArch (661426d0)
- Improve: Faster widening in WASM (695da362)
- Improve: Giesen's trick for F16→F32 upcast (708770e2)
- Make: `<(module_root_dir)` to trace probes for JS (e051236c)
- Fix: Additive "power9-vector" flags (c8555c27)
- Improve: Transpose in finalizers on Power (1dbd8814)
- Improve: `cpu=power9` & partial loads/stores (670767d6)
- Make: SYSROOT for PowerPC & LoongArch (cde23a2f)
- Make: Wire new probing into NPM `preinstall` (9319969f)
- Make: Unified ISA probes for C, Rust, Py, & JS (6fea7389)
- Improve: Detect Arm features in header-only builds (24cbffbd)
- Improve: More accurate `sqrt` on LoongArch (7a45af66)
- Improve: Avoid flaky x86 `ph` load intrinsics (43692629)
- Improve: `.inst` syntax for MRS checks on old compilers (2080b1b1)
- Fix: AVX10.2 & NEON FP8 auto-detection (410e1fc4)
- Make: Power9 flags for build, 10 for CI (e33f7799)
- Make: Ignore "-Wstringop-overflow" for SYRKs (b9509d66)
- Fix: Missing `<lsxintrin.h>` include for `__m128i` for LoongArch (c5282d1c)
- Improve: Test `out=` Python args (243c824a)
- Improve: Multi-axis reductions in Python (0c30debc)
- Improve: 15% faster E4M3 upcasts (452e563b)
- Improve: Compare to BNNS in Accelerate.framework (6b1f57b7)
- Make: Downgrade Diamond Rapids CI to Granite (2e03e7ec)
- Fix: Type-casting issues on LoongArch (636549fa)
- Fix: Avoid changing FTZ/DAZ settings (2ce09b8a)
- Improve: Smaller `TensorError` state (c5475be2)
- Improve: Apply `StorageElement` to every operation class (98064815)
- Improve: Drop redundant NEON MinMax in FHM & BFDOT files (96c869f8)
- Improve: Simpler `i4` dot-product in NEON (bf61c2c4)
- Docs: Apple M5 instruction timings & x86 refresh (835ae52a)
- Fix: Fill only upper triangle in other SME kernels (2a93c309)
- Fix: Filling only upper triangle in `u1_smebi32` kernels (68f5963b)
- Fix: Harden SME streming behaviour (8fe8cc9f)
- Improve: Generalize reductions to NumPy inputs (3660de55)
- Fix: Missing "SME BI32" capability checks & routing (9168efbc)
- Make: Comp-time probe SME features to test/bench on MacOS (3ecbbf69)
- Improve: Cleaner SVE post-processing in `curved/` (f88d9e01)
- Make: Bump CI versions (de4f0d0c)
- Make: Forward `NPM_TOKEN` for NPM uploads (0c81b883)
- Docs: Math blocks, browser install, & wording (ee5e5c96)
- Fix: Preserve accumulator for inactive lanes with `*_m` SVE intrinsics (cea24e90)
- Fix: `sqeuclidean_bf16_svebfdot` predicate mismatch (f33fdb27)
- Fix: Avoid F16 logic for integer FMA ops (a02cf13c)
- Fix: Missing entries in SVE `nk_dot` upcast paths (148b6444)
- Fix: Losing entries in `svehalf` upcasts (5e67f719)
- Make: Bundle `numkong-browser.ts` for WASM in browsers (564108f1)
- Fix: Broken `dot_f16_svehalf` predicated loads (20cfec23)
- Fix: `.inst` encoding for SME `mrs` check (d6c36d84)
- Improve: Standardize error bounds in PyTest (e2f957a1)
- Fix: `try_pack_transposed_in` (10593e92)
- Fix: `#include <unistd.h>` to enable ARM capability detection on Linux (#320) (ae5413c8)
- Improve: Single-pass `mesh/` for NEON, RVV, & WASM (a63bb19c)
- Improve: Reuse type-casting infra in Mesh PyTests (adf19a51)
- Fix: Expose Mesh half-precision kernels to Python (ee3ebd64)
- Fix: `dtype=None` guessing in Python packing functions (1eca2372)
- Improve: `__forceinline` for MSVC (d34221d0)
- Fix: Missing `dimensions_per_value` symbol (c2f132d0)
- Make: Bump to macOS 26 for SME in Py wheels (674778b6)
- Fix: Raise `TypeError` for wrong `dtype=` (cfb39735)
- Docs: Refresh repo links & intro tables (1b553030)
- Fix: `String(_:radix:)` init uses `uppercase:` instead of lower (4042a271)
- Improve: Cheaper string checks in CPython layer (d944197a)
- Improve: Cheaper `dtype=` hints (13d87d2f)
- Improve: Interfaces for `ml_dtype`-like mini-floats (0518c6f8)
- Docs: Explain existing `axis=` args for Python (21d38bde)
- Fix: Simpler (more stable) test for RMSD in Rust (60532761)
- Improve: Consistent `try_close` in Rust (855fe865)
- Improve: `FusedIterator` for Rust containers (ee0e42c1)
- Improve: Cleaner `Debug` vs `Display` style difference in Rust (ed852e4d)
- Make: Include `*.hpp` into the header-only lib (92ef0227)
- Improve: Iterators for `vector_view` & `vector_span` (c2d921bb)
- Improve: `From` trait for mini-floats (43059b38)
- Fix: `core::fmt::Display` doesn't need "std" (fd961616)
- Docs: Broken links & versions (707b0656)
- Make: Cleanup Release CI warnings (7bf755ee)
- Make: Windows & Arm cross-compilation issues (5d482273)
- Make: Bump Clang for Debian builds in CI (6d86870a)
- Make: Exclude READMEs from Crate (a3c904d4)
- Make: Skip Swift benchmarks in CI (a5f9c60c)
- Make: Move Swift benchmarks (f1a6a873)
- Fix: Defensive over-allocation for MSVC (24d8f043)
- Make: Consistent CMake toolchain flags (c767dc6b)
- Make: Drop RISC-V wheels until Clang 23 (bd49085f)
- Fix: Wire remaining kernels in 5 places each (eea2ffbe)
- Fix: Wire `each/`, `mesh/`, `curved/` RVV kernels (0a152c37)
- Make: Lower base RISC-V generation for Python wheels (b7b013fa)
- Fix: `reduce_minmax` strict aliasing (67fa0238)
- Fix: Mantissa overflow in F32 → F16 rouning in RVV (cc4e5b48)
- Improve: MXCSR-independent rounding in trignometry (f8c444fd)
- Fix: Wire missing tests/benchmarks (581aeaa1)
- Make: Prevent constant folding in probes (ed918e26)
- Fix: Success code for non-x86/Arm thread configuration (c118f3a3)
- Fix: Wire kernels into runtime dispatch (8b2236d6)
- Make: Shuffle PyTests in CI (b0f00af9)
- Fix: Refresh dispatch tables after changing static caps (c3535e3b)
- Fix: Prioritize Ice Lake over Alder Lake (e45a023a)
- Make: Adjust probing for cross-compilation (ffd1f7bd)
- Fix: Unused variables & designated initializers (2fe18816)
- Make: Randomize PyTests in CI (13477ba9)
- Fix: Missing serial fallback cast includes (9993a8f9)
- Docs: Cleaner type-promotion explainer (d74ae6f7)
- Make: Package LICENSEs and READMEs (8b386483)
- Make: Portability of MSVC & GCC/Clang feature probes (4b5ef4e0)
- Make: Forward `NK_WASI_HOSTED=ON` through CI (d2c36025)
- Docs: Deduplicate main page (3c5c0031)
- Improve: Harden C++ templates & `std::mspan` interop (b4dd78a6)
- Fix: Pyodide & PEP 3118 compatibility (f4b84b34)
- Docs: Better intros & ecosystem tables (210c70f1)
- Fix: Edge cases in `nk_f16m1_to_f32m2_rvv` (10ab61d0)
- Improve: Reduce NumPy reliance in PyTest (19dd123f)
- Improve: Extend in-browser WASM benchmarks (463fbfce)
- Fix: Unify Emscripten & WASI checks (e60b9fab)
- Improve: Cheaper upcasts in WASM (0b757285)
- Fix: Include serial baselines next to v128 kernels (fea56776)
- Make: Emscripten v5+ syntax & Windows WASM builds (6eff26e2)
- Docs: Narrower table (bc2038a2)
- Docs: Stale accuracy in `dot/` & `each/` (03ef5c38)
- Fix: Wrong Hamming & Jaccard integer semantics in WASM (6edaec04)
- Docs: Top table width (85541558)
- Docs: Mark external baselines (b81c5fbd)
- Docs: Intro table units (fe7194dc)
- Fix: `is_complex_dtype` issues (1d9df2ef)
- Docs: New promo section in ./README (70124ef0)
- Docs: Stale type descriptions (d1235bbc)
- Fix: Stale `f32` outputs for `f32` GEMM inputs in GIL-free PyTest (6dec15ad)
- Fix: Pass `WebAssembly.Memory` to env imports (0d33d76e)
- Fix: Stale `f32` outputs for `f32` GEMM inputs (d18647c5)
- Fix: Broad compilation errors & warnings (17555bd4)
- Improve: Much faster Python type resolution (c09800f4)
- Improve: Harden `fnuz` checks for `ml_dtypes` inputs (298f147d)
- Make: Upload WASM+JS builds for browser to GH (bd957826)
- Improve: Dedup Rust logic with `TensorRef` trait (68a02635)
- Fix: Detect missing kernels in CPython layer (5b4a7da1)
- Docs: How to test? and bench! and contribute! (6c5a9496)
- Fix: Tail-handling in mini-float `minmax` reductions (1762d014)
- Improve: Dedup body & tail vector-vector logic (5bdbd812)
- Docs: For each language SDK (06555edc)
- Improve: Expose `nk_dispatch_table_update` for Swift (f700bb78)
- Fix: Dispatch remaining 1:1 distances (4f25571d)
- Make: `config_macros [exhaustive]` for Clang modules (a7562e55)
- Make: Android NDK cross-compilation in C & Rust (b99487b5)
- Docs: Extend Apple M4 stats (9b8e75b8)
- Fix: SVE flags for cross-compilation on Android (bb20ea83)
- Make: Bump to Go v1.22 for integer `min`s (e66bf160)
- Improve: 40% faster `i8`/`u8` WASM GEMMs with compensation (b41aa7e5)
- Fix: Revert to simpler, non-`i8x16_i7x16` WASM product (683f3762)
- Docs: Extend Apple M4 stats (c4fc26b5)
- Improve: Reuse `angulars` & `euclideans` end logic with Streaming SVE helpers (c4044385)
- Fix: Tail predicates in upcasting SME GEMM kernels (386ce921)
- Docs: Refresh Intel SPR stats (9eb3f3bd)
- Improve: LUT-based `e3m2` → `f16` (85eb83c5)
- Fix: Auto-detect SME variants via `__has_builtin(__builtin_sme*)` (b63e9334)
- Improve: Prioritize `mean_ulp` test outputs (6b171f68)
- Improve: Wire `u8_sapphireamx` kernels (a919c364)
- Fix: WASM & x86 compilation (a5137df3)
- Fix: Wire `u1` serial and SMEBI32 kerenls (fa33699b)
- Improve: Operation-specific precision reports (994a2b04)
- Fix: Harden `f118_t` to integer conversions (fdcc4af0)
- Fix: Harden Round-to-Nearest-Even policy (5b21676e)
- Fix: Missing/unused variables (ee399ef4)
- Improve: Drop `reduce_minmax_f16_neonhalf` (14269736)
- Improve: Direct storage rebinding for Swift low-precision wrappers (c3b5b743)
- Fix: BLAS `sdot` → `dsdot` and other baseline test/bench updates for F32 (e79054fe)
- Improve: Vectorize stores & loads in GEMMs (2582081f)
- Fix: Test signatures for meshes & BLAS (c939ab3e)
- Docs: New Apple M4 perf stats (10470ec5)
- Fix: Correct sub-byte reference reductions via `vector_view`s (33e21eb0)
- Improve: Use C++ concepts to allow positive & negative index lookups (8853531a)
- Fix: Avoid LibC `sqrt` usage (15cf4298)
- Improve: Use F64 FMAs in F32 `sparse_dot` (e44209a5)
- Docs: Missing Intel measurements (bde871cf)
- Make: Switch to merged GBench WASI-friendly release (09af6433)
- Improve: Allow running arbitrary WASI module launch (2904f7eb)
- Make: Grow WASI mem limits for `sets/` (51f01a38)
- Fix: Missing `euclidean_kernel_t` for 4-bit ints (c2c1c72d)
- Fix: Block-skipping condition in symmetric macros (a09e2099)
- Fix: Lack of scoped `-Os` in Clang (efc33874)
- Docs: Intel SPR performance measurements (84c126bd)
- Fix: Cast perf-counters to double via `1.0*` (f367f330)
- Fix: x86-compaible `i4` logic for WASM (530ab755)
- Fix: Wire more `each/` tests for Arm (c84d9727)
- Fix: Bias logic in `dot_u8_v128relaxed` & angular (668333b3)
- Improve: Wire more `nk_cast` & WASM GEMM tests/benchmarks (09e2927a)
- Docs: "JSD" as distance, not divergence (4c6bc36f)
- Improve: Much faster `nk_test` baselines (650d713f)
- Docs: Performance measurements for Intel (be4ddf57)
- Fix: WASI compatibility for `nk_bench` (95c1ef87)
- Fix: Compilation & consistency (387cd610)
- Improve: Relax many WASM instructions (0e0cdfa6)
- Improve: From 7 to 16 terms in `nk_f64_log` serial fallback (ab5dd705)
- Improve: Faster vector-loads in WASM (10f1e2b4)
- Fix: Incorrect packing tupe for v128 packing of `bf16` (2a48bcd9)
- Improve: Allow Sierra & Alder kernels on AVX-512 capable machines (0d6ca426)
- Fix: Avoid ULP sum overflow in 4096³ tests (4b06bdd5)
- Improve: More accurate `maxsim` reference implementation (d831d288)
- Improve: Faster L2 for mini-floats on Genoa (e509578a)
- Improve: Faster serial LUT upcasts for mini-floats (a20ee905)
- Improve: Counting scalar ops in RMSD-like kernels (8d2f72d0)
- Fix: Wire more RVV & GEMM kernels (54c5104f)
- Docs: Deferred Sign-Flip in Complex Dot Products (443a7bdc)
- Improve: Allow nearby coordinates for Geo tests/benchmarks (2afdf5e4)
- Make: Hide symbols by default & enable IPO for `nk_shared` (13fc0779)
- Improve: Shrink binary by 20% (0faedcf9)
- Fix: Use 64-bit numerics for `dot_f32_serial` (77293b4e)
- Make: Avoid `npm ci` due to `package-lock.json` exclusion from history (4c66282c)
- Fix: Compilation issues for NEON & WASM (05765644)
- Improve: Report `scalar-ops` for `curved/` ops (e15fa508)
- Docs: Draft operation-specific surveys (39d6955f)
- Fix: Round to nearest even in NEON casts (24e4c6f8)
- Fix: Sign-flipping in complex dot-products in WASM (ea752941)
- Fix: Swap complex operands in `vdot_f16c_neonfhm` (40fa7d2e)
- Fix: "Negate-then-TwoSum" issue in `f64c_neon` kernels (a0d9594b)
- Improve: Deduplicate matrix packing logic (73547b3a)
- Improve: Prefer `np.testing.assert_allclose` for bounds checks (0b9b800c)
- Improve: Parameterize reduction PyTests by SIMD capability (37e63d17)
- Improve: Relax `bitselect`s & `swizzle`s in WASM (3ac32725)
- Docs: Vector operation READMEs (335e7527)
- Fix: Testing Jaccard & Hamming for integers (64253a1c)
- Fix: Wire Geospatial, Spatial, & Curved kernels (f6108454)
- Improve: Reduce `auto` returns in C++ (83160b60)
- Improve: Transpose, flatten, squeeze in Rust/C++/Python (dbd8eb8d)
- Fix: Wire `dot_u1` kernels into test & bench (e78a97b5)
- Fix: Transposing higher-rank tensors in Rust & C++ (3d01b98f)
- Make: Account for shifted version macros in `capabilities.h` (3bc313fc)
- Docs: Float ranges & resolution in [-1, 1] (ca859560)
- Improve: Clamp large `e5m2` values in flaky PyTests (a4a908da)
- Make: Use Clang for Musl RISC-V wheels (7f71beeb)
- Fix: Pointer past end UB in casts (5eaba81d)
- Fix: Over-reading 8-bit ints in NEON casts (0131f216)
- Make: Drop `libxkbcommon` transient CI dep on AlmaLinux (55153cdf)
- Fix: Re-apply `contiguous_tail` patches for elementwise Python ops (820b8657)
- Improve: Route MaxSim re-ranking through dispatch (0a056382)
- Fix: Avoid ACLE FMA intrinsics in MSVC (1b2ae546)
- Fix: Resolve artifact upload race condition for JS prebuilds (26aac628)
- Fix: Fail Rust build when C library fails to compile (e185a274)
- Fix: Avoid inline Asm for scalar FMA on Windows (98924b6b)
- Fix: MSVC ARM64 compatibility for NEON `f16` (9ac3f5db)
- Fix: 64-bit integers on Windows (0d903069)
- Fix: Surround `#pragma clang` with checks for Clang (#192) (f871d803)
- Improve: Reduce native half-precision usage (486d8b5a)
- Fix: Unpoison SIMD dispatch results for MemorySanitizer (#304) (2513ee7f)
- Fix: Enlarge dummy buffer for SVE predicated loads (#307) (fe9327c5)
- Fix: Beyond-diagonal entries in parallel calls to `_symmetric` macros (76188337)
- Fix: `constexpr` violation for `f118` to `f16` downcast (a21e6499)
- Improve: Parallel Python ergonomics (fdbfd240)
- Improve: Harden `<cmath>` usage & type-casts (ccd34d53)
- Make: Reduce CIBW pressure (9ab0c381)
- Fix: Universally prefer `__bf16` to `__bfloat16` (fdec37f7)
- Fix: Handling non-continuous tails in CPython (9648de44)
- Improve: Cleaner recusrive methods for C++ Tensors (1b7a1e1f)
- Fix: Compile WASM tests into `nk_shared_test` (3bf10146)
- Fix: Enable staging area casts in CPython layer (7d1275b9)
- Fix: Gating conversions through `f64` on Skylake (62639b81)
- Fix: Type-casting warnings for C/C++ ops (78e4976f)
- Fix: Switch to `PyObject_VAR_HEAD` for Py Tensors (4ae86ca0)
- Improve: More consistent `MaxSim` for Rust (810f7933)
- Make: Skip C lib rebuilds when Rust layer changes (6b15dc5c)
- Fix: NEON spatial finalizer widths (8a36ddee)
- Improve: Much faster Alder Lake compensated GEMMs (b162aed5)
- Fix: Avoid serial 128/256-bit loads/stores on Haswell+ (71359e40)
- Fix: Simpler `is_memset_zero_safe` checks (b4b61b92)
- Fix: Handle negative steps/strides for elementwise ops (39951192)
- Fix: Dependent type name inside `std::bool_constant` (13f8dd74)
- Fix: "Unused" compiler warnings on GCC & Clang (14d3c25a)
- Make: Shift `wasmtime` to `[dev-dependencies]` for Rust (bdb1fe10)
- Make: Switch GCC/binutils for Clang/LLD for RISC-V Python wheels (aeca2a40)
- Fix: MSVC initialization issue for NEON vectors (8bdb4824)
- Make: Graft PyTest files (4804aa32)
- Improve: Inline trivial reductions on NEON (2ee54f06)
- Fix: `precise_angular` for zero vectors (344e6a1c)
- Fix: Negative strides UB for tensors (aedecd28)
- Fix: Return value propagation for `wasi-node` tests (ab410a43)
- Fix: `noexcept` qualifier for `syscall()` (1ca39408)
- Make: Correct Debug/Release base flags for MSVC (7fb30b31)
- Make: Probe if we need linking to `libm` (75cb2253)
- Make: Drop OpenMP deps from CMake (504f3d99)
- Fix: Leaking `cargo`s test filter into Wasmtime env (1d2ccbe5)
- Make: Drop `--experimental-wasm*` flag for WASI (0cfeb1ef)
- Make: Cleanup `-march=native` flags in CMake (2cb0b9c8)
- Make: Linking Intel MKL on Windows (54764f88)
- Fix: Missing `spatial/` kernel aliases for 8-bit integers (605555aa)
- Make: Infer `NK_TARGET_*` options for MSVC (e6798633)
- Make: Force STL RegEx in Google Benchmark (299e956e)
- Fix: Avoid `constexpr` qualifiers if `<cmath>` isn't hardened on Windows (0905fcfd)
- Fix: Match `syscall()` linkage (32ed9063)
- Improve Support both 32- and 64-bit WASM addressing (8a814a10)
- Fix: `aligned_alloc` signature on Windows (39769be4)
- Fix: MSVC integer overflow in float downcasts (73771363)
- Fix: Fwd-declare `syscall` as a cleaner solution to missing symbols (26fb0aa7)
- Fix: Guard against `SME=1` outside of Arm builds (13604c0a)
- Fix: Rust casting linter issues (83fb4edf)
- Make: Detecting "Emscripten" more reliably (b08f8ab8)
- Improve: Comp-time capability checks via `_MSC_VER >= N` (60135516)
- Fix: Use `_start` entrypoint in WASI tests (86f52ab6)
- Make: Disable duplicate CI runs (13e810a0)
- Fix: Sapphire AMX and `bh`/`h` intrinsics in MSVC (af65ca41)
- Make: Avoid `${{}}` syntax in container name (086be69b)
- Make: Run CI for "main" PRs (de8bd526)
- Fix: Check compiler versions for SME, AMX, SVE builds (e4ab2f0d)
- Make: Bump versions for Py/JS/CI (42218994)
- Fix: Matching NumPy `dtype` names on Windows (7800f792)
- Make: Bun CI & require Node 22+ (8652ad68)
- Fix: Enforce `NAPI_VERSION=6` for `bigint` support (5e38f2fb)
- Make: Disable diagnostics for `EM_JS` block (a5ae5fd2)
- Fix: Zero union Jaccard case on NEON (d7a41128)
- Fix: Initialize `dummy_input` to fix MSan false positive (#302) (c2ad842d)
- Fix: Type mismatches (6cb60fd5)
- Make: Prebuild JS pack before tests (ae475aed)
- Fix: Avoid `np.finfo` calls for integers (309a7d7c)
- Fix: `dot_i4_haswell` tail handling (3a5c4179)
- Improve: Separate `cdist` testing suite (4f6d5680)
- Fix: Pre-upcasted B matrix scalars in x86 macro-based GEMMs (f6800256)
- Fix: Broken scales for `each.hpp` baselines (4e7eecd2)
- Fix: `vincenty_f64_serial` precision loss due to `tan` (b561e4a0)
- Fix: Enable pipe annotation for `Union`s in Py39 (68068461)
- Improve: Redirect `cdist` to GEMM-like LLC-optimized kernels (88e29b9c)
- Fix: `std::abort()` in exception-less builds (d281d1b6)
- Fix: Extracting integers from `PyObject` scales (682a5500)
- Fix: `e2m3x16_to_f16x8x2` LUT on NEON (1244a6a0)
- Fix: Loading bytes instead of nibbles in Haswell GEMMs (03202c9c)
- Fix: Nibble-packing in PyTest only in the last rank (b6e9c2e0)
- Improve: Prefer exception-free POSIX `regex.h` for test filters (f82a0520)
- Fix: NaN sentinels in NEON/Haswell MinMax reductions (901a745d)
- Fix: Explicit type-casting for Emscripten builds (39bdb69e)
- Fix: Missing `nk_detect_` helpers for WASM (43879019)
- Fix: Missing scalar forward-declarations for CPython (cf4dc28d)
- Make: Run all Python tests (4faabce4)
- Fix: Dispatch `each/` kernels for complex numbers (ac822195)
- Fix: Out-of-bounds writes in the 7-tile SME paths (0f59c254)
- Fix: Stale `wsum` references (5b372ced)
- Fix: Systemic precision issues (6dcddbca)
- Fix: Wrong predicate width in BF16 SVE L2 kernel (#301) (87ae846b)
- Improve: FreeBSD comp-time target selection (#300) (cb11f8bd)
- Improve: SVE-width finalization for MaxSim SME kernels (75103218)
- Fix: Persist per-vector norms for Sapphire AMX (3d743cee)
- Fix: Masked blending of mini-float MinMax tails (02cd5383)
- Fix: Compensation term for `angular_i4_icelake` tail (67349303)
- Fix: Shift `dot_i4_icelake` padding values (70cb2fe4)
- Fix: Check only upper triangle of many-to-many distances (6a107fd0)
- Fix: Avoid `set1_ph` via casting `u16` constants (de43fce6)
- Fix: First vector init in MinMax NEON kernels (7017867b)
- Fix: `bf16` to `f32` upcast (37efdc56)
- Improve: Wire MaxSim kernels (64cdd329)
- Fix: NaN handling in `minmax` APIs (b0bd3bf1)
- Fix: FMA arguments order (ed0db279)
- Improve: Ternary logic for `saturated_add` on Haswell & Icelake (bbcd82ec)
- Fix: Missing includes (a0cca0ad)
- Improve: Reduce pre-`svwhilelt` downcasts (a5b3fab5)
- Make: Parallel CPython wheel builds (0131dca5)
- Fix: Override half-precision test behaviour (e8932fb2)
- Fix: Stale `sadd` method names (9a68a081)
- Make: Consistent build flags (9b2483cb)
- Make: File paths (20467e87)
- Improve: New scalar public APIs (4e46376b)
- Fix: Differntiate `angulars` and `euclideans` signatures (179e00f7)
- Improve: Generalize Rust testing suite (c15849b3)
- Fix: E2M3 LUT magnitudes (f1f7c3de)
- Fix: Transposing Sapphire AMX tiles with AVX-512 (10393f83)
- Fix: Avoid zero square roots on serial path (d2e801cb)
- Fix: Avoid division by zero in Vincenty Skylake kernels (fe423e03)
- Fix: Missing `__arm_tpidr2` stubs for Rust crate compilation on macOS (afcfb25b)
- Fix: Handle sub-byte types in CPython (204d0c1d)
- Fix: Handling exotic types in buffers (8e17927e)
- Fix: Normalizing Jaccard distances (3db3edad)
- Fix: Avoid irrelevant `__arm_new("za")` (193b790b)
- Fix: KLD epsilon contamination (9514487e)
- Fix: Mini-float parsing and assignment (f70afddd)
- Fix: Wrong packed-value types for binary kernels (1b7ee039)
- Fix: Clamp pre-`sqrt` negatives (1b64e050)
- Improve: Generics-based Rust testing suite (457a5164)
- Fix: Wire new i4/u4 & mini-float kernels for dots.h (44bedd30)
- Fix: Loop cycle underflow for mini-floats on Sapphire (27c8ff1d)
- Fix: Wire half-precision trigonometry (303192cc)
- Docs: "Numerical Stability" sections for each operation header (3927d24e)
- Fix: Incorrect input sizes & missing saturation (c3f5ca0e)
- Fix:: Missing type aliases (9c314e6e)
- Fix: Incorrect masks for strided reductions on x86 (b038b650)
- Fix: Differentiate Vincenty thresholds for `f32` & `f64` (901b674d)
- Improve: Shorter test/bench helper signatures (cbc69c70)
- Fix: Strict aliasing GEMM finalizers on x86 (c5c4e6df)
- Fix: Wrong dimensions per value for `sets/` (691627ee)
- Fix: Wire remaining test/bench kernels (d60b3254)
- Improve: Faster attention in SME (e8229a96)
- Fix: Trampolines for all `__arm_locally_streaming` kernels (eda9d92f)
- Improve: Revert from MOPA to StreamingSVE for complex numbers (24994767)
- Improve: Remove Neumaier from already upcasted serial curved logic (8bea6c19)
- Improve: Prefer `np.asarray` to explicit construction (bafcb06b)
- Improve: Merge `DotsSymmetric` into `Dots` trait (fccfdc81)
- Fix: `dtype_family` type naming (8a283d41)
- Improve: Reduce test/bench header inclusions (b2e866f2)
- Fix: Enforce Positive Semi-Definite inputs (c3980ce3)
- Improve: Vectorize via `vclz_u32` on NEON (30504f8b)
- Fix: Avoid `__builtin_memcpy` in kernels (e76d6700)
- Improve: Interleave Ozaki FMOPAs (58967d1b)
- Fix: Stable numerics for RVV curved kernels (2366d25f)
- Fix: Avoid 64-bit floats in `bf16` kernels (0c279a04)
- Fix: Upcast before subtraction in Mahalanobis (550d2e38)
- Fix: Clamp negative `sqrt` args in Mahalanobis (861c2cd8)
- Improve: Group test/bench config params (29bc84b2)
- Improve: Ozaki schemes for `curved.h` via SME (1b92bafe)
- Improve: Dynamic memory budgets for nk_test/nk_bench (75a96d53)
- Fix: Fetch minimum time from `argv` (288e6ed4)
- Improve: Prefer the `dot_output_type` (9ee9c0b7)
- Improve: 50x accuracy at 30% lower speed for F64 dots in SME (e3e6a141)
- Fix: Wire ordering & u1/u4/i4 links (f670cca6)
- Fix: Enumerate new NumKong capabilities in Python (c985846e)
- Fix: BLAS & Mesh test inconsistencies (dd37153e)
- Improve: Reduce bounce buffers for F32/F64 mixed SME (33fb2849)
- Improve: Avoid SME bounce buffers via `MOVA` (5e5829c1)
- Fix: Avoid mirroring symmetric results (f8c06b95)
- Fix: Remove old SME mesh kernels (8c6833b8)
- Fix: CPython type/shape mismatches (f1827571)
- Improve: Stable summation final reduction in all ISAs (978622de)
- Improve: PRNG seeds via `@pytest.fixture`s (34dc47c1)
- Fix: Number of bits as the number of dims (61f6224d)
- Fix: Wider & safer `sqeuclidean_i8` for Haswell & Icelake (3245df81)
- Fix: Missing `i64` & `u64` to `BigInt` conversions for JS (e55bd913)
- Improve: PyTest seeds, dimensions, precision, & meshes (a89a3cd2)
- Fix: Inconsistent kernel signatures (c9422c83)
- Fix: Missing complex `dtype` logic (98dd66ce)
- Fix: RVV tail policies, saturation consistency, & register pressure (33194b09)
- Docs: Why not use `FCMLA` on NEON (bb0562f5)
- Fix: Replace `avx2vnni` with `avxvnni` for Sierra Forest (#296) (a8bb232d)
- Improve: Prefer exception-free POSIX `<regex.h>` over STL (906df380)
- Fix: Output assignment bugs in reductions (c4236ac7)
- Fix: Symmetric GEMM 4x7 accumulators (d895b9a0)
- Fix: Conjugation mismatch in BLAS complex GEMM (3d6c8e9d)
- Make: Experimental features for Relaxed SIMD (8ee720b0)
- Make: Ban exceptions in WASI builds (ffb1ee32)
- Improve: Unused code annotations in tests (83b07156)
- Make: Upgrade lock-file for NodeJS tests (bef0fe7c)
- Make: WASI compilation & testing (5261bd32)
- Make: Upgrade CI from 22.04 LTS era to 24.04 (a0eb570f)
- Docs: `--help` for nk_test & nk_bench (22a2ad83)
- Fix: Using old conversions API (3ba39bea)
- Fix: Stale WASI and reductions usage (b26593a1)
- Fix: `NK_PUBLIC` serial casts (1faf39bb)
- Make: RVV wheel extensions with newer `binutils` (28085d35)
- Fix: Compilation issues across platform (317d7776)
- Improve: Leverage divide-round-up in GEMMs (1d508d25)
- Fix: Staging area to transpose B tiles in SYRK on Sapphire (a27743a2)
- Improve: Vectorize `hammings` finalizers for Icelake (2a238814)
- Improve: Faster `e4m3` to `f16` SSVE upcasts (22363552)
- Docs: File headers (4efcd9bc)
- Fix: RVV compilation errors (c47795fb)
- Improve: 2x wider `bf16` minmax reductions in WASM via integers (4ffff290)
- Improve: Report & stop invalid CLI args in tests (42f8db9a)
- Fix: Benchmarked bit-matrix dimensions (a4243dd3)
- Fix: SqRoor & FMA serial emulation accuracy (33c23262)
- Fix: `minmax` lane extraction (da569080)
- Improve: Log detected ISA features in Rust tests (2bef2943)
- Improve: Unsigned squared sums for signed inputs (6387390c)
- Improve: 128-bit accumulation for correct `i64` saturation (ed3a1ab1)
- Fix: Saturated accumulation & error signaling (bf31df29)
- Improve: Avoid redundant `abs` calls (a2d78746)
- Improve: Faster extraction-free serial `minmax` (6470d781)
- Improve: Conversion-free branchless mini-float comparisons (298d6ae3)
- Fix: Accumulation result type forward declarations (b20824d7)
- Make: Log CPU & OS info at each CI step (ad52c62a)
- Improve: Wider `e2m3` & `e3m2` logic on Haswell and Skylake (b1dd93eb)
- Fix: Detecting missing kernels the new way (9cceb8a1)
- Make: RISC-V wheels for CPython (5ce7865d)
- Fix: Missing `avx512vbmi` in `dots/icelake.h` (c3bb1c97)
- Fix: `_Py_HashDouble` unstable API change (4c97aed5)
- Fix: Missing dispatch & forward-declatations (13f7325d)
- Fix: Avoid f64 downcasting in 3x3 SVD on NEON (54ee7b75)
- Fix: Inconsistent test, bench, & bidings CLI/env args & defaults (fe931327)
- Fix: Checking for a missing kernel in CPython (3f795dc6)
- Improve: New `e2m3` dot scheme via `i8` instructions (ba30e1af)
- Fix: More x86 compilation issues (5e7ab667)
- Fix: x86 compilation issues (97762adf)
- Fix: CPython compilation issues (d8783e73)
- Improve: 2.1 TOP/s i4/u4 SME kernels (d4af7b97)
- Fix: Compilation issues across the CI (663b82df)
- Fix: CI breaking issues (4e289687)
- Fix: Annotate missing output dtypes (d7ab684d)
- Make: CI for WASM (24fc9380)
- Improve: Testing WASM through Rust & Wasmtime (0a64a104)
- Make: Missing wheel dependencies (0db8b5f8)
- Fix: Number of dimensions in `test_set` (06fc2cb6)
- Improve: Wider logic for Mini-Floats on NEON (844e58a4)
- Improve: Faster bodies & cleaner tails for Arm reductions (b7aa757c)
- Fix: `e2m3` subnormals handling (6678b9aa)
- Fix: Logging/checking `rvvbb` (7006d886)
- Fix: Detect newer SME variants on MacOS (912b627c)
- Improve: Wider Amv8.0-A NEON kernels (9e588e85)
- Improve: Vectorize tails with partial loads for meshes (db4703da)
- Fix: Inconsistent wiring of SME tests/benchmarks (db58243c)
- Improve: Missing curved kernel type annotations (8e1f5053)
- Fix: Min/Max horizontal reductions on Haswell/Skylake (5dc7430b)
- Improve: LUTs & postponed horizontal reductions in RISC-V (8d4cfa1a)
- Fix: RVV compiler attributes (435f595a)
- Improve: Faster Streaming SVE curved.h kernels (021ff721)
- Improve: Cleaner each/spatial loops for NEON (ab956504)
- Fix: MOPA predicates in SME kernels (e9582481)
- Make: Refresh Module Maps (82397af7)
- Fix: Non-dynamic visibility of sets.h APIs (d14c79d4)
- Fix: Missing x86 includes (d25b58e6)
- Improve: Relaxed WASM blends (3f8a340b)
- Fix: Avoid `long long` on RISC-V platforms (f26a6a55)
- Fix: Inline WASM target attributes for Clang (ad237bb4)
- Improve: Cleaner partial loads on Haswell (9969ae85)
- Fix: Missing includes (427b5b23)
- Fix: WASM compilation issues (80db9be5)
- Docs: Clean-up header briefs (f7aa105a)
- Fix: Stale "each"-less names in trigonometry (0532e1be)
- Make: 5x faster parallel library builds (2df5d6fb)
- Make: Hierarchical Clang C Module Map (85379fab)
- Improve: Wire untracked kernels (74278fb6)
- Improve: Chronologically-ordered capability enums (dc8c9d59)
- Fix: WASM checks & missing `svcompact_u16` (b9808ae4)
- Fix: RISC-V compilation issues (bea22a7b)
- Fix: Emulating `_mm512_2intersect_epi64` (378daae5)
- Fix: `sparse_.*_ice` kernels step (ad73343a)
- Fix: `accumulate_exact` for Hamming distances (8333307d)
- Fix: Only measure ULP for upper triangle of `dots_symmetric` (528fe94f)
- Fix: Trigonometric error compounding (0aadb7bf)
- Fix: Geospatial UBs (2fdc7c5b)
- Fix: Taylor series convergence near x=1 for `f118_t` (9181b330)
- Fix: Upcasting Float6 & Float8 `dots_pack` (c3792363)
- Fix: `e2m3` denormals range on Haswell (037837c9)
- Fix: `bf16c` sign flips on Haswell (43e4ee14)
- Improve: Using 4+ SME registers at once (a4cd835d)
- Fix: Declare & wire remaining Float6 kernels (c493c21c)
- Improve: Faster `e4m3` & `e5m2` Ice Lake LUTs (512ae7d5)
- Docs: Links for Float6 and Float8 (aae00e48)
- Fix: Float6 LUT for denormals (67821c73)
- Improve: Wire Float6 dispatch for C++ (e3c3dd53)
- Improve: Simpler `dots_packed` baselines (5d7ec7a0)
- Improve: Faster `cross_symmetric` macro (417262c8)
- Fix: Round-to-nearest-even for `bf16` downcast (418922da)
- Fix: Rounding & compilation errors (c38f8453)
- Fix: IEEE 754 round-to-nearest-even for `f16` (7197ed20)
- Fix: Conversion step size on Haswell (031556ac)
- Improve: Generalize GEMM-like cross-correlations (ab97bd32)
- Fix: Missing Float6 converter declarations (c0d5bb41)
- Improve: 2x faster `i8` dot-products (8c419288)
- Improve: Consistent "finalizers" signatures (2652826e)
- Fix: Measuring `scalar-ops` in GEMMs (e2e4c38e)
- Improve: Shorter environment variable names (dd2bf015)
- Fix: Avoid serial stores on Skylake (974b4928)
- Make: Recommend `ccache` in CMake (06965093)
- Make: Shorter compilation option names (20f802d5)
- Improve: Stateful set cross-referencing (ba55103e)
- Improve: Pointer hoisting in `dots_symmetric` (a187924e)
- Fix: Out-of-bounds `fill_uniform` (34578b24)
- Improve: Avoid Neumaier in SqEuclidean (8ae47e97)
- Fix: Wrong packing types for Float6 GEMMs (a40c4711)
- Improve: Partial stores for symmetric dots (413a6687)
- Improve: Tiling `dots_symmetric` (d8f73740)
- Improve: Cleaner stride calculation (50089f89)
- Fix: Sub-byte addressing and compilation on x86 (e94098ae)
- Fix: Signature mismatches in `dots_symmetric` (383650a6)
- Fix: Avoid `<stddef.h>` for `NULL` (76f35032)
- Improve: 60% vector-vector `dot` for Float6 types (04a82a84)
- Improve: Faster `dots_packed` thread assignment (f765ae20)
- Fix: `nk::dots_symmetric` signature mismatch (43bb8ccf)
- Improve: E2M3 upcasts via `TBL` on NEON (01f5bc14)
- Improve: E3M2 upcasts via `TBL` on NEON (78dff64a)
- Improve: Parallelism for `dots_symmetric` (a1f23f62)
- Make: Rename `binary` kernels to `set` (0eaa39af)
- Improve: Propagate new stateful signatures to stateful funcs (01fcd630)
- Fix: `dots.h` instantiations for Arm (5e45055a)
- Improve: Cleaner divide/round-up semantics (8001156a)
- Fix: `typedef` warnings (5ea4de72)
- Fix: 128- and 256-bit serial loads (1133d7ca)
- Fix: `i4` compensation in dots finalizers (48807528)
- Improve: Consistent testing for Rust types (30808f07)
- Fix: Inconsistent handling of sub-byte types (4ac105b0)
- Fix: `e2m3` subnormals (276393dc)
- Fix: `fill_uniform` for sub-byte types (721e4f10)
- Improve: B packing for cache associativity (29fc7525)
- Improve: Algebraic transform for `DPBUSD` (0c8806aa)
- Fix: Measuring tensor ops (be9c2806)
- Improve: `f64` MKL benchmarks (17abf1fb)
- Fix: Binary constants are a GCC extension (d8ba7529)
- Improve: Vectorize tail handling in AVX-512 integer reductions (8b51808c)
- Improve: Consistent dot-product precision in serial backends (594fb10e)
- Improve: Avoid `__builtin`s (d990c64d)
- Improve: Higher-precision curved metrics (5324ae66)
- Docs: Annotate math operations in Rust (49893f37)
- Improve: Expose `MeshAlignment` kernels to Rust (660993e6)
- Fix: Missing `sparse_intersect` dispatch (dc7d0d3e)
- Fix: Enable AMX before Rust GEMM tests (7df020cc)
- Improve: Harden SVE and RVV `f32` spatial kernels (2639d4b0)
- Improve: Expose sparse intersections to Rust (80134871)
- Fix: Post-merge compilation issues - symbol names (8e5f7d65)
- Improve: Consistent environment variable names (482cc2f5)
- Fix: `dots.h` compilation and styling (a0805db5)
- Fix: Missing `std::integral` constructors (fb66c75a)
- Make: From `elementwise` to `each` (8ab787be)
- Improve: Bench/test concerns separation (4190efd4)
- Fix: FMA numerical stability issues (4cfe2f52)
- Make: Configure `clangd` to C++23 (0e0e6112)
- Make: Drop Boost.Multiprecision in favor of `f118_t` (9440a348)
- Improve: Simpler pre-SVE partial loads (29f7a1a1)
- Fix: Inconsistend partial loads/stores names (acee7ac4)
- Improve: `vmul`+`vdup` to `vmul_n` (3e45842f)
- Improve: Templated tests for complex types (ce12fb49)
- Docs: Consistent file headers and benchmark names (c8d6a0ee)
- Improve: `Dots` traits for `i4x2` and `u4x2` (c82dfaa5)
- Improve: Vectorized FP8 conversion on NEON (19f13b89)
- Fix: LAPACK type-casting on AppleClang (c836eee5)
- Fix: Higher `sqrt` stability for Angular on Arm (5bc2ac8b)
- Fix: AppleClang compilation & NEON inconsistencies (f9317a85)
- Fix: Avoid FP8 overflow in elementwise FP16 NEON kernels (63e6e98d)
- Fix: Wrong NEON include guards (4e8d45d0)
- Improve: Guard compiler `#pragma`s (1a221285)
- Fix: SVE includes and NEON conversions (b7d6077d)
- Make: CMake cross-compiler toolchain for RVV/SME (de7b3e04)
- Fix: Parallel AMX usage from Rust (357b0066)
- Make: `amx-tile,amx-bf16,amx-int8` SPR flags (bed477aa)
- Fix: Avoid stack-smashing for NULL kernels (a55381c6)
- Fix: Order of F8 to BF16 LUT-based upcasts (1f647d88)
- Fix: Reducing zero-size arrays (6247ec38)
- Make: Avoid `bf16` on Skylake (0be76f0e)
- Improve: Diaptching all GEMM variants (2b8edd41)
- Make: Missing x86 compiler flags (4f335201)
- Make: Allow cross-compilation in CMake (76da11a5)
- Docs: Use Unicode symbols for math (f36ad8ce)
- Improve: Avoid AVX-512 for AMX tile bounds (f69648a2)
- Improve: Reusable test baselines (1f22497a)
- Improve: Cleaner loop names for GEMM (c18b9537)
- Improve: Clean-up pre-Haswell loads (1d39b423)
- Fix: Overflow in `angular_u4_ice` squaring (f7b7e98b)
- Improve: `i4` & `u4` spatial kernels (e3bb5538)
- Improve: Single-pass reductions on Haswell (d5c2e544)
- Fix: Match `std::complex` args in Accelerate API (54fcaa25)
- Improve: Differentiate `Accelerate` baselines (817ec379)
- Fix: Missing vtable inits in `nk_capabilities` (89a10e67)
- Fix: AppleClang compilation issues (ec554df4)
- Fix: Compiling NEON & SVE kernels (254b77dd)
- Fix: Precompute `_Float16` constant to avoid pedantic warnings (3870ed4c)
- Improve: Accuracy of log2 and f8 conversions (a59cfde2)
- Fix: Jaccard and Mesh baselines (57343742)
- Fix: Inappropriate downcasts in f64 meshes (94a59d85)
- Improve: Small-type-aware PRNG for precision tests (89e18d35)
- Improve: Faster precision conversion on x86 (bb3f906b)
- Improve: Faster F8 upcasts in AVX-512 (32b45ec2)
- Fix: Avoid instability with `atan2` in geospatial (90403d95)
- Improve: 64-bit square roots for F64 (86cbad6f)
- Fix: Incorrect min/max indexing in AVX-512 (fb417899)
- Improve: Uniform GEMM kernel naming (3d7a9d4e)
- Fix: ULP estimate recursion error (d1f955ed)
- Improve: Fine-grained test filtering (6f457e02)
- Make: Auto-detect BLAS and MKL (4fffb013)
- Improve: List all supported ISAs at test/bench start (260e5b97)
- Improve: Filter tests by RegEx (84d3aa77)
- Make: Uniform `.cpp` extension (322ac339)
- Improve: Cleaner macro names (7007c141)
- Improve: Test half-precision trigonometry (d817222d)
- Docs: `@copydoc` for reductions (cfa65287)
- Fix: Iterative widening to 64 bits on Ice Lake (ae40d81e)
- Improve: Reduce port 5 pressure (c8302e49)
- Improve: Use fewer bits for f8/f16/bf16 sums (3cad2d83)
- Improve: Neumaier for f64 → f64 reductions (2a9a320f)
- Fix: x86 compilation issues (dcb83321)
- Improve: Reduce port 5 pressure (de76ebd6)
- Fix: `avxvnni` flag (04f0eaf6)
- Make: Compile with BLAS, MKL, & Accelerate (c93386b1)
- Fix: Missing constants (a1ec738a)
- Improve: Test with Cauchy distribution and F128 (b9e52c6a)
- Improve: Test Python against `ml_dtypes` (72380493)
- Fix: Stale SVE kernel names (17ea3a7a)
- Improve: Time-constrained testing (a305b726)
- Improve: Neumaier scheme instead of Kahan (523cf24b)
- Improve: Consolidate partial loads (ddf00974)
- Fix: Using f32 numerics for f64 distributions (b57cb326)
- Improve: Higher-precision SVD (1564c8d3)
- Make: New `NK_TARGET`s for Python and JS (f892469f)
- Docs: `@copydoc` for integer reductions (59158e05)
- Improve: Use `Accelerate` baseline on macOS (700df6bd)
- Improve: Faster GEMM inner-product macros (112b35c6)
- Fix: Refresh Swift binding (1490af91)
- Improve: Vectorize geosptial tails on Haswell & NEON (82ab615f)
- Fix: Compiling NodeJS bindings (f7a89b89)
- Fix: NEON & SVE symbol suffixes (1ea7bcac)
- Improve: Clean-up `#include`s (6da87cfb)
- Improve: Converting partial-loads for missing types in AVX2 (1af13453)
- Make: Move files to match new cap names (040c7f15)
- Docs: Describe packing layout (7170a024)
- Improve: Unroll NEON meshes by 2x for 20-30% uplift (a4f92447)
- Improve: Vectorize post-SVD RMSD (23ea0186)
- Fix: Type mismatch in SIMD mesh computations (7ced9c15)
- Improve: Tail trigonometry with SIMD on Haswell (e66246e3)
- Improve: Four-way unroll matrix inner products (1bd0f242)
- Improve: Move partial loads (382ecc6e)
- Fix: Type choice inconsistencies (251c46c3)
- Fix: Low-precision square roots for meshes (46b3a772)
- Fix: Sierra Forest finalizers (ff92e7ba)
- Fix: MacOS compilation issues (fc9ca87b)
- Make: Move files (870a5106)
- Fix: Pass `compute_sqrt` to Mesh kernels (b21d6207)
- Improve: Use Kahan for spatial serial metrics (6a757833)
- Fix: Match `mesh.h` ABI in Rust (aa5f5176)
- Improve: Kahan numerics for angular distances (e38fd5dc)
- Fix: Type-casting warnings (5605cab8)
- Fix: On Linux request `_GNU_SOURCE` for AMX (58297ca5)
- Fix: `nonnull` compilation warning for vtable init (1f31115e)
- Improve: Consolidate GEMMs around new partial loads & dot-product finalizers (31fda77a)
- Improve: Faster serial Jaccard with SWAR (fab71e5c)
- Improve: Differentiate `F32` macros (ed08bdd5)
- Fix: Inappropriate dot-product finalization types (4936c363)
- Improve: 4-way finalizers & variable names (6183891b)
- Improve: Finalize 4 running products at once (d164df5a)
- Improve: Clean-up `load_and_convert` (2c3064b8)
- Make: Add optional MKL benchmark baseline (4892d14f)
- Improve: Reorganize MatMul & benchmarks (cbc42545)
- Make: Rename `matmul.h` to `dots.h (9bef3ab4)
- Fix: Comilation issues with `struct` declarations (fb7155d9)
- Docs: List relevant instructions (d224667b)
- Improve: Unroll serial dot-product streaming APIs (c99c1944)
- Docs: Header formatting, tables, & instructions (47753edf)
- Improve: Test matmuls (3c4f6741)
- Make: Missing `avx512dq` flags for meshes (7b8787f4)
- Improve: Remove dead header members in packed GEMMS (c9e59472)
- Improve: Faster `f8` upcast on x86 (e4807361)
- Improve: Extend test coverage (0dc5b984)
- Improve: Try Estrin's scheme & RCPPS with Newton-Raphson (7576046b)
- Fix: Vectorized `cos` one term sign (b41e82b9)
- Improve: Broader test coverage (79bce836)
- Fix: Compilation issues (3b018239)
- Fix: Stale symbol names (5a0161b1)
- Improve: Reuse `simsimd_fui32_t` for conve…
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
simsimd_capabilitiesprobes SIMD instructions with an uninitializeddummy_inputbuffer andn=0. SVE implementations (e.g.simsimd_cos_f32_sve) usedo { ... } whileloops that always execute the body once. MemorySanitizer doesn't understand SVE predicated loads and reports use-of-uninitialized-value false positives.The fix simply initializes the buffer to zero:
largest_scalar_t dummy_input[1] = {0};Context
Discovered during ClickHouse CI stress testing with MSan on ARM (aarch64).