Go · Highlights

Highlights

8.0.0-rc.1 · b1f866ab

Slice-based API. Plain Go slices are the input model. Widened outputs. int8 and float32 storage widens into safer return types. Packed matrix kernels. GEMM-like batch workloads with pack-once-reuse-many semantics via DotsPackedMatrix. Symmetric self-similarity. SYRK-like kernels that skip duplicate (i, j) and (j, i) work. MaxSim late interaction. ColBERT-style scoring with pre-packed queries and documents via MaxSimPackedMatrix. Binary set metrics. Hamming and Jaccard on packed bit vectors and set-hash vectors. Probability metrics. Kullback-Leibler divergence and Jensen-Shannon distance. Geospatial included. HaversinesF64 and VincentysF64 are part of the same package. Capability bits exposed. You can inspect the runtime SIMD surface from Go.

§ Ecosystem Comparison

FeatureNumKongGoNum
Operation familiesdots, distances, binary, probability, geospatial, MaxSimdots, distances, some statistics
PrecisionBFloat16 through sub-byte; automatic widening; Kahan summation; 0 ULP in Float32/Float64Float64 only; standard accuracy
Runtime SIMD dispatchper call, the highest capability the CPU runs and the build holds, across x86, Arm, RISC-Vno runtime dispatch; some hand-written assembly routines
Packed matrix, GEMM-likepack once, reuse across query batches via DotsPackedMatrixmat.Dense.Mul — no persistent packing
Symmetric kernels, SYRK-likeskips duplicate pairs, up to 2x speedup for self-distanceno duplicate-pair skipping
Memory modelslice-based, caller-owned; cGo zero-copy pointer passingallocates internally in many functions
Host-side parallelismreusable WorkerPool for packed and symmetric batch opspartial — gonum/optimize has some parallel support