Skip to main content

Portable mixed-precision math, linear-algebra, & retrieval library with 2000+ SIMD kernels for x86, Arm, RISC-V, LoongArch, Power, & WebAssembly

Project description

NumKong for Python

NumKong for Python is the main high-level SDK in the project. It targets the gap between numpy and low-level native kernels: you keep buffer-protocol interoperability and shape-aware outputs, but you stop giving up mixed precision, widened accumulators, packed reuse, and backend-specific optimizations every time you leave float64. It combines NumPy-friendly buffers with native mixed-precision kernels, zero-copy tensor views, packed and symmetric matrix operations, sparse helpers, geometric mesh alignment, and MaxSim. The API feels NumPy-shaped with familiar scalar, batched, and all-pairs entrypoints, while Tensor keeps shape, dtype, and strides visible through a memoryview-backed container. Low-precision dtypes (BFloat16, Float8, Float6, packed bits) flow through the same API, and dense, packed, and symmetric kernels release the GIL around native work.

Ecosystem Comparison

Feature NumKong NumPy/SciPy PyTorch
Operation families dots, distances, binary, probability, geospatial, curved, mesh, sparse, MaxSim, elementwise, reductions, cast, trig dots, distances, elementwise, reductions, some probability via cdist dots, distances, elementwise, reductions
Precision BFloat16 through sub-byte — Float8, Float6, Int4, packed bits; automatic widening; Kahan summation; 0 ULP in Float32/Float64 Float16, partial BFloat16; no auto-widening; standard accuracy Float16, BFloat16, partial Float8; explicit AMP required; standard accuracy
Runtime SIMD dispatch auto-selects best ISA per-thread at runtime on x86, ARM, RISC-V compile-time only CPU: compile-time; CUDA: runtime
Packed matrix, GEMM-like pack once, reuse across query batches np.dot/@ — no persistent packing torch.mm — no persistent distance-oriented packing
Symmetric kernels, SYRK-like skip duplicate pairs, up to 2x speedup for self-distance pdist computes one triangle; cdist recomputes both X @ X.T recomputes both triangles
Output parameter out= Yes — all major entrypoints Yes — most ufuncs and functions; SciPy: some functions only Yes for torch.mm, torch.matmul; No for torch.cdist
Fast CPython calling convention Yes — direct METH_FASTCALL Yes — vectorcall in 2.0+ No — tensor dispatch overhead
GIL release batched, packed, and symmetric kernels some ops only most ops

Quickstart

import numpy as np
import numkong as nk

a, b = np.random.randn(1536).astype(np.float32), np.random.randn(1536).astype(np.float32)
dot = nk.dot(a, b)  # widened accumulation, not same-dtype
print(dot)

Installation

From PyPI:

python -m pip install numkong

From a local checkout:

python -m pip install .

Quick runtime check:

python -c "import numkong as nk; print(nk.get_capabilities())"

Wheel Compatibility and Building from Source

Pre-built wheels are available on PyPI for Linux (x86_64, aarch64, riscv64, plus i686, ppc64le, s390x), macOS (x86_64, arm64), and Windows (AMD64, ARM64). Python 3.9 through 3.14 is supported, including free-threading variants (3.13t, 3.14t). Every wheel is built with NK_DYNAMIC_DISPATCH=1, so a single wheel covers all CPU generations on a given architecture.

When building from source, the compiler requirements depend on the platform. On macOS x86 only AVX2 is available; on macOS ARM NEON is always present, but SME requires Apple M4+ with Xcode 16+ (AppleClang 16+). RISC-V builds require Clang and LLD because GCC lacks zvfh, zvfbfwma, and zvbb support. On Windows, MSVC 19.44+ (Visual Studio 2022 17.14+) is recommended for full AVX-512 with FP16/BF16/VNNI. Build parallelism is controlled by NK_BUILD_PARALLEL, which defaults to min(cpu_count, 4) and should be lowered in memory-constrained containers. There is no OpenMP dependency. Python-side parallelism uses concurrent.futures with GIL-free kernels.

NK_BUILD_PARALLEL=2 pip install . --no-build-isolation

Dot Products

Dot products are their own family because storage type, conjugation rules, and output widening matter.

import numpy as np
import numkong as nk

a = (np.random.randn(256) + 1j * np.random.randn(256)).astype(np.complex64)
b = (np.random.randn(256) + 1j * np.random.randn(256)).astype(np.complex64)

dot = nk.dot(a, b)   # numpy.dot(a, b)
vdot = nk.vdot(a, b) # numpy.vdot(a, b)

print(dot, vdot)

Real low-precision inputs can also be routed through explicit dtype tags when the storage buffer itself is raw bytes.

Dense Distances

The dense distance entrypoints cover sqeuclidean, euclidean, and angular. The first important difference from NumPy or SciPy is that the accumulator policy is not forced to match the storage dtype.

import numpy as np
import numkong as nk

a = np.random.randn(768).astype(np.float16)
b = np.random.randn(768).astype(np.float16)

sqeuclidean = nk.sqeuclidean(a, b)
euclidean = nk.euclidean(a, b)
angular = nk.angular(a, b)

For float16, a naive same-dtype implementation is exactly the kind of path that loses precision or widens too late. NumKong's API makes the widening policy part of the kernel contract.

Output Control: out=, dtype=, and out_dtype=

Most distance and dot-product entrypoints accept out=, dtype=, and out_dtype= keyword arguments. Passing them avoids dynamic memory allocations for temporary objects.

import numpy as np
import numkong as nk

queries = np.random.randn(100, 768).astype(np.float32)
database = np.random.randn(100, 768).astype(np.float32)

# Pre-allocated output with out=
out = nk.zeros((100,), dtype="float32")
nk.sqeuclidean(queries, database[:100], out=out)  # writes in-place, returns None

# Explicit input dtype for raw byte buffers
raw = np.frombuffer(some_bytes, dtype=np.uint16)
nk.dot(raw, raw, dtype=nk.bfloat16)  # reinterpret uint16 as bf16

# Output dtype override
nk.euclidean(queries[0], database[0], out_dtype="float32")  # accumulate in f64, downcast result

When out= is provided, the function writes results in-place and returns None. The out array must be pre-allocated with the correct shape and a supported dtype. For custom float types (bfloat16, float16, float8_e4m3, float8_e5m2, float6_e2m3, float6_e3m2), type objects are preferred over strings — they are faster to dispatch and provide IDE autocomplete:

nk.dot(a, b, dtype=nk.bfloat16) # works faster
nk.dot(a, b, dtype="bfloat16")  # works a bit slower

Set Similarity

Packed-binary metrics operate on packed bits. That is why the right NumPy equivalent uses np.packbits, not bool arrays fed to scalar Python code.

import numpy as np
import numkong as nk

a_bits = np.random.randint(0, 2, size=256, dtype=np.uint8)
b_bits = np.random.randint(0, 2, size=256, dtype=np.uint8)
a, b = np.packbits(a_bits), np.packbits(b_bits)

hamming = nk.hamming(a, b, dtype="uint1")
jaccard = nk.jaccard(a, b, dtype="uint1")

Integer set Jaccard works on sorted ascending arrays of integer identifiers. Both inputs must be sorted in ascending order for correct results.

set_a = np.array([1, 3, 5, 7, 9], dtype=np.uint32)  # must be sorted ascending
set_b = np.array([3, 5, 8, 9, 10], dtype=np.uint32)  # must be sorted ascending
jaccard_sets = nk.jaccard(set_a, set_b) # |A ∩ B| / |A ∪ B|
assert 0.0 < jaccard_sets < 1.0, "|A ∩ B| / |A ∪ B| should be in (0, 1)"

Probability Metrics

Probability divergences deserve their own section because they are not just "one more distance".

import numpy as np
import numkong as nk

p = np.array([0.2, 0.3, 0.5], dtype=np.float32)
q = np.array([0.1, 0.3, 0.6], dtype=np.float32)

kl_forward, kl_reverse = nk.kullbackleibler(p, q), nk.kullbackleibler(q, p)
assert kl_forward != kl_reverse, "KLD is asymmetric"

js_forward, js_reverse = nk.jensenshannon(p, q), nk.jensenshannon(q, p)
np.testing.assert_allclose(js_forward, js_reverse, atol=1e-6)  # JSD is symmetric

Geospatial Metrics

Geospatial kernels take four coordinate arrays. Inputs are in radians. Outputs are in meters.

import numpy as np
import numkong as nk

# Statue of Liberty (40.6892°N, 74.0445°W) → Big Ben (51.5007°N, 0.1246°W)
liberty_lat, liberty_lon = np.array([0.7101605100], dtype=np.float64), np.array([-1.2923203180], dtype=np.float64)
big_ben_lat, big_ben_lon = np.array([0.8988567821], dtype=np.float64), np.array([-0.0021746802], dtype=np.float64)

vincenty = nk.vincenty(liberty_lat, liberty_lon, big_ben_lat, big_ben_lon)    # ≈ 5,589,857 m (ellipsoidal, baseline)
haversine = nk.haversine(liberty_lat, liberty_lon, big_ben_lat, big_ben_lon)  # ≈ 5,543,723 m (spherical, ~46 km less)

# Vincenty in f32 — drifts ~2 m from f64
liberty_lat32 = liberty_lat.astype(np.float32)
liberty_lon32 = liberty_lon.astype(np.float32)
big_ben_lat32 = big_ben_lat.astype(np.float32)
big_ben_lon32 = big_ben_lon.astype(np.float32)
vincenty_f32 = nk.vincenty(liberty_lat32, liberty_lon32, big_ben_lat32, big_ben_lon32)  # ≈ 5,589,859 m (+2 m drift)

Curved Metrics

Curved-space kernels use an extra metric tensor or inverse covariance and should not be mixed into the Euclidean section.

import numpy as np
import numkong as nk

# Complex bilinear form: aᴴ M b
a = (np.ones(16) + 1j * np.zeros(16)).astype(np.complex64)
b = (np.zeros(16) + 1j * np.ones(16)).astype(np.complex64)
m = np.eye(16, dtype=np.complex64)
bilinear = nk.bilinear(a, b, m)

# Real Mahalanobis distance: √((a−b)ᵀ M⁻¹ (a−b))
x = np.ones(32, dtype=np.float32)
y = np.full(32, 2.0, dtype=np.float32)
inv_cov = np.eye(32, dtype=np.float32)
mahalanobis = nk.mahalanobis(x, y, inv_cov)

Scalar Types and Low-Precision Formats

NumKong exposes two different low-precision stories in Python. It exposes Python scalar objects for a few formats. And it exposes tensor dtypes for the broader buffer-oriented path.

The six scalar types have stable payload sizes even though Python object headers are not:

Type Bits Bytes Range Inf NaN
nk.float16 1+5+10 2 ±65504 yes yes
nk.bfloat16 1+8+7 2 ±3.4×10³⁸ yes yes
nk.float8_e4m3 1+4+3 1 ±448 no yes
nk.float8_e5m2 1+5+2 1 ±57344 yes yes
nk.float6_e2m3 1+2+3 1 ±7.5 no no
nk.float6_e3m2 1+3+2 1 ±28 no no

The Bits column shows sign + exponent + mantissa bit counts. The Bytes column is the stable payload size; float8_* and float6_* both store 1 byte because the sub-byte formats are padded to byte alignment.

The full object footprint is interpreter-dependent. Use sys.getsizeof(nk.float16(1.0)) if you need the heap footprint of the Python wrapper object itself. Use Tensor.itemsize and Tensor.nbytes for the stable payload sizes of array storage.

ml_dtypes matters here because NumKong explicitly interoperates with the formats that NumPy still does not model well. The test suite compares bfloat16, float8_e4m3, float8_e5m2, float6_e2m3, and float6_e3m2 behavior against ml_dtypes where that comparison is meaningful.

Promotion is intentional. Mixed exotic floats are routed through wider compute types rather than pretending a same-width accumulator is good enough.

ml_dtypes Interoperability

NumKong accepts ml_dtypes arrays directly — no .view(np.uint8) workaround needed:

import ml_dtypes
a = np.random.randn(100, 768).astype(np.float32).astype(ml_dtypes.bfloat16)
b = np.random.randn(100, 768).astype(np.float32).astype(ml_dtypes.bfloat16)
result = nk.cdist(a, b, "dot")  # just works

NumKong scalars also work as NumPy dtype specifiers:

arr = np.array([1.0, 2.0, 3.0], dtype=nk.bfloat16)
float(arr[0])  # → 1.0

Type name mapping between the two libraries:

ml_dtypes NumKong Status
ml_dtypes.bfloat16 nk.bfloat16 / "bfloat16" Identical format
ml_dtypes.float8_e4m3 nk.float8_e4m3 / "e4m3" Identical (IEEE E4M3)
ml_dtypes.float8_e4m3fn nk.float8_e4m3 / "e4m3" Identical (E4M3FN = no inf)
ml_dtypes.float8_e5m2 nk.float8_e5m2 / "e5m2" Identical format
ml_dtypes.float6_e2m3fn nk.float6_e2m3 / "e2m3" Identical (MX E2M3)
ml_dtypes.float6_e3m2fn nk.float6_e3m2 / "e3m2" Identical (MX E3M2)
ml_dtypes.float8_e4m3fnuz Rejected: different bias, NaN, and zero
ml_dtypes.float8_e5m2fnuz Rejected: different NaN and zero encoding
ml_dtypes.float8_e4m3b11fnuz Rejected: bias=11, incompatible encoding
ml_dtypes.float8_e8m0fnu Not supported: exponent-only MX scale format
ml_dtypes.float8_e3m4 Not supported: no NumKong kernel
ml_dtypes.float4_e2m1fn Not supported: 4-bit MX float
ml_dtypes.int4 "int4" Compatible via buffer protocol
ml_dtypes.uint4 "uint4" Compatible via buffer protocol
ml_dtypes.int2 Not supported
ml_dtypes.uint2 Not supported

Tensor Objects and Buffer Interop

Tensor is a memoryview-backed object with NumPy-like metadata. It is the central container for strided views, transpose, reshape, flatten, and axis reductions.

import numpy as np
import numkong as nk

t = nk.Tensor(np.arange(12, dtype=np.float32).reshape(3, 4))

print(t.shape, t.dtype, t.ndim, t.strides, t.itemsize, t.nbytes)
print(np.asarray(t))      # zero-copy array view when layout allows it
print(t.T.shape)          # transposed Tensor view
print(t.reshape(2, 6).shape)
print(t.flatten().shape)

# Slicing — row, column, and scalar access
row0 = t[0, :]            # first row, shape (4,)
col2 = t[:, 2]            # third column, strided view, shape (3,)
val  = t[1, 2]            # scalar element access → 6.0

# Reductions compose with sliced views
idx = col2.argmin()        # index of the minimum in the third column
mn, i0, mx, i1 = col2.minmax()

The important layout rules are:

  • Tensor preserves shape and byte strides.
  • Transpose and slicing can produce non-contiguous views.
  • General reductions accept those views.
  • Matrix-style packed kernels require row-contiguous left operands.
  • Packed and symmetric outputs require C-contiguous out buffers.

Memory Layout Requirements

API family Input requirement Output requirement
Dense distances (dot, euclidean, etc.) Rows must be contiguous (strides[last] <= itemsize). Strided rows (sliced columns) are rejected. out= can have any stride along dim 0, but inner dim must be contiguous.
cdist Same as dense distances out= must be rank-2 with shape (a.count, b.count)
Elementwise (scale, blend, fma) Arbitrary strides (strided views are supported) out= must match input shape; strides are preserved
Packed matrix (dots_packed) Left operand: rank-2, contiguous rows, no negative strides Output: C-contiguous with expected dtype
Symmetric (dots_symmetric) Contiguous rows out=: C-contiguous square matrix
Tensor reductions (sum, min, argmin, etc.) Arbitrary strides (strided views supported) N/A (returns scalar or reduced tensor)

All-Pairs APIs and cdist

cdist is the NumPy/SciPy-shaped all-pairs entrypoint. It handles rectangular matrix pairs and symmetric self-distance cases.

import numpy as np
import numkong as nk

queries = np.random.randn(100, 768).astype(np.float32)
database = np.random.randn(10_000, 768).astype(np.float32)

pairwise = nk.angular(queries, database[:100])             # rectangular broadcasted pairwise call
all_pairs = nk.cdist(queries, database, metric="angular")  # scipy.spatial.distance.cdist analogue

assert np.asarray(pairwise).shape == (100, 100)
assert np.asarray(all_pairs).shape == (100, 10_000)

The intended large-scale parallel model for packed and symmetric kernels is external partitioning with row ranges, not a hidden threads= argument.

Elementwise Operations

Elementwise arithmetic and fused operations are their own family. They share the tensor infrastructure but should not be collapsed into the reduction or matrix sections.

import numpy as np
import numkong as nk

a = np.arange(8, dtype=np.float32)
b = np.arange(8, dtype=np.float32)[::-1].copy()

scaled = nk.scale(a, alpha=2.0, beta=1.0)     # 2 * a + 1
blended = nk.blend(a, b, alpha=0.25, beta=0.75)
fused = nk.fma(a, b, a, alpha=1.0, beta=1.0)  # a * b + a

assert np.asarray(scaled).shape == (8,)
assert np.asarray(fused).shape == (8,)

Moments Reductions

Moments reductions return (sum, sum_of_squares). The key property is that NumKong does not force you into same-storage accumulation.

import numpy as np
import numkong as nk

x = np.full(4096, 255, dtype=np.uint8)

nk_sum, nk_sumsq = nk.moments(nk.Tensor(x))
naive_sum = np.sum(x, dtype=np.uint8)      # overflows immediately
naive_sumsq = np.sum(x * x, dtype=np.uint8) # also overflows

print(nk_sum, nk_sumsq, naive_sum, naive_sumsq)
assert nk_sum > int(naive_sum)
assert nk_sumsq > int(naive_sumsq)

Same-width accumulation is a bad default for low-precision storage.

Min/Max Reductions

Min/max reductions are in a separate section because they cover strided reduction cases. NumKong provides SIMD-accelerated strided reductions that are not common in other libraries.

import numpy as np
import numkong as nk

matrix = nk.Tensor(np.array([
    [ 3.0,  0.0, 7.0],
    [ 1.0,  2.0, 5.0],
    [ 4.0, -1.0, 6.0],
], dtype=np.float32))

second_column = matrix[:, 1]  # strided view into a row-major Nx3 tensor

idx = second_column.argmin()
mn, i0, mx, i1 = second_column.minmax()

assert idx == 2
assert int(i0) == 2
assert float(np.asarray(mn)) == -1.0

Fresh measurement for the rewritten docs: on an Apple M2 Pro, np.argmin(matrix[:, 1]) on a row-major 2,000,000 x 3 float32 array took about 1.63 ms median. The equivalent NumKong Tensor(... )[:, 1].argmin() took about 0.67 ms median. That is about 2.45x faster on this strided reduction case.

Sparse Operations and Intersections

Sparse helpers cover both sorted-index intersections and weighted sparse dot products.

import numpy as np
import numkong as nk

idx_a, idx_b = np.array([1, 3, 5, 7], dtype=np.uint32), np.array([3, 4, 5, 8], dtype=np.uint32)
intersection_size = nk.intersect(idx_a, idx_b) # len(np.intersect1d(idx_a, idx_b))
assert intersection_size == 2, "indices 3 and 5"

val_a, val_b = np.array([1.0, 2.0, 3.0, 4.0], dtype=np.float32), np.array([5.0, 6.0, 7.0, 8.0], dtype=np.float32)
sparse_dot = nk.sparse_dot(idx_a, val_a, idx_b, val_b)
assert sparse_dot > 0, "weighted dot over shared indices"

Packed Matrix Kernels for GEMM-Like Workloads

Packed matrix kernels are the right tool when the right-hand side is reused across many query batches. This is the GEMM-like story.

import numpy as np
import numkong as nk

left = np.random.randn(128, 768).astype(np.float32)
right = np.random.randn(10_000, 768).astype(np.float32)

right_packed = nk.dots_pack(right, dtype="float32")  # pack once, reuse many times
scores = nk.dots_packed(left, right_packed)          # equivalent to left @ right.T

assert scores.shape == (128, 10_000)
assert right_packed.nbytes == nk.PackedMatrix.packed_size(10_000, 768, dtype="float32")

Important runtime rules from the current implementation:

  • a must be rank-2
  • a must have contiguous rows
  • negative strides are rejected for these matrix kernels
  • out, when provided, must be C-contiguous with the expected dtype
  • start_row and end_row split the left operand rows

The arithmetic advantages are:

  • one-time packing of B
  • one-time internal layout conversion and depth padding
  • norm reuse for angulars_packed and euclideans_packed
  • no repeated scan of the original right-hand-side layout

Packing itself does not require aligned caller buffers. The packed object owns its internal payload and handles the layout under the hood.

Tensor @ PackedMatrix is also supported and maps to the same packed dot-product path.

Symmetric Kernels for SYRK-Like Workloads

Symmetric kernels solve a different problem from packed cross-matrix kernels. They compute self-similarity or self-distance matrices. This is the SYRK-like story.

import numpy as np
import numkong as nk

vectors = np.random.randn(1024, 768).astype(np.float32)
out = nk.zeros((1024, 1024), dtype="float64")

nk.dots_symmetric(vectors, out=out, start_row=0, end_row=256)
nk.dots_symmetric(vectors, out=out, start_row=256, end_row=512)

assert out.shape == (1024, 1024)

This family has different economics from packed GEMM-like work. It avoids duplicate (i, j) and (j, i) evaluations. It is naturally partitioned by row windows of one square output.

angulars_symmetric and euclideans_symmetric also benefit from reuse of dot-product-derived work inside the symmetric sweep. That is why these APIs are faster than a nested Python loop over angular(a[i], a[j]).

Geometric Mesh Alignment

Mesh alignment returns a structured result object. The current implementation exposes rotation, scale, rmsd, a_centroid, and b_centroid.

import numpy as np
import numkong as nk

source = np.array(
    [[0.0, 0.0, 0.0],
     [1.0, 0.0, 0.0],
     [0.0, 1.0, 0.0]],
    dtype=np.float32,
)

result = nk.kabsch(source, source.copy())
assert np.asarray(result.rotation).shape == (3, 3)
assert float(np.asarray(result.scale)) == 1.0

# Umeyama with known 2x scaling
target = source * 2.0
result = nk.umeyama(source, target)
assert float(np.asarray(result.rmsd)) < 1e-6, "umeyama should recover exact alignment"
assert abs(float(np.asarray(result.scale)) - 2.0) < 0.01, "umeyama should recover 2x scale"

That field-level check is the right style for this API family. It tells the reader exactly what the result object owns.

MaxSim and ColBERT-Style Late Interaction

MaxSim is the late-interaction primitive used by systems such as ColBERT. It is not generic matrix multiplication.

import numpy as np
import numkong as nk

queries = np.random.randn(32, 128).astype(np.float32)
documents = np.random.randn(192, 128).astype(np.float32)

q = nk.maxsim_pack(queries, dtype="float32")
d = nk.maxsim_pack(documents, dtype="float32")
score = nk.maxsim_packed(q, d)

assert np.isfinite(score)
assert q.nbytes == nk.MaxSimPackedMatrix.packed_size(32, 128, dtype="float32")

Capabilities, GIL Behavior, and Parallel Partitioning

Capability detection is explicit:

import numkong as nk

caps = nk.get_capabilities()
print({k: v for k, v in caps.items() if v})

The current implementation releases the GIL around the native dense metric calls and around the packed and symmetric matrix kernels. The repository also has threading tests for packed and symmetric row-range partitioning.

GEMM-like packed work and SYRK-like symmetric work should be documented differently:

import concurrent.futures
import numpy as np
import numkong as nk

left = np.random.randn(4096, 768).astype(np.float32)
right = np.random.randn(8192, 768).astype(np.float32)
packed = nk.dots_pack(right, dtype="float32")
out = nk.zeros((4096, 8192), dtype="float64")  # out must be pre-allocated with correct shape and dtype

def packed_chunk(start, end):
    nk.dots_packed(left, packed, out=out, start_row=start, end_row=end) # split left rows against one shared packed RHS

with concurrent.futures.ThreadPoolExecutor(max_workers=4) as pool:
    for start in range(0, 4096, 1024):
        pool.submit(packed_chunk, start, min(start + 1024, 4096))
import concurrent.futures
import numpy as np
import numkong as nk

vectors = np.random.randn(4096, 768).astype(np.float32)
out = nk.zeros((4096, 4096), dtype="float64")  # out must be pre-allocated with correct shape and dtype

def symmetric_chunk(start, end):
    nk.dots_symmetric(vectors, out=out, start_row=start, end_row=end) # split row windows of one square output

with concurrent.futures.ThreadPoolExecutor(max_workers=4) as pool:
    for start in range(0, 4096, 1024):
        pool.submit(symmetric_chunk, start, min(start + 1024, 4096))

OpenMP and other native schedulers still matter in lower layers. For Python, the intended user-facing story is external partitioning around the GIL-free kernels you actually use.

Addressing External Memory

NumKong implements the Python buffer protocol for zero-copy interop with NumPy, PyTorch, and other buffer-aware libraries. Two additional primitives cover pointer-level workflows: data_ptr reads the integer address out of any Tensor, and from_pointer() wraps any integer address back into one.

data_ptr returns the raw address, suitable for passing into ctypes, CUDA, or any FFI boundary. from_pointer(address, shape, dtype, *, strides=None, owner=None) creates a non-owning Tensor view. The optional owner keeps the source object alive for the lifetime of the view.

import numpy as np
import numkong as nk

# Round-trip through an integer address
matrix = nk.zeros((3, 4), dtype='float32')
address = matrix.data_ptr
matrix_view = nk.from_pointer(address, (3, 4), 'float32', owner=matrix)

# Wrap a NumPy array with zero copies
embeddings = np.random.randn(1024).astype(np.float32)
embeddings_view = nk.from_pointer(embeddings.ctypes.data, (1024,), 'float32', owner=embeddings)
nk.dot(embeddings, embeddings_view)  # same underlying data

PyTorch tensors already implement the buffer protocol, so most functions accept them directly. For explicit pointer-level control, or to go the other direction, the same primitives apply:

import torch

query = torch.randn(512)
nk.dot(query, query)  # buffer protocol, zero copy

# Explicit pointer wrap
query_view = nk.from_pointer(query.data_ptr(), tuple(query.shape), 'float32', owner=query)

# NumKong → PyTorch: 1D via buffer protocol, N-D via numpy bridge
flat = torch.frombuffer(memoryview(nk_tensor), dtype=torch.float32)
shaped = torch.as_tensor(np.asarray(nk_tensor))

CUDA unified memory, pinned buffers, and mmap'd files all work the same way — any CPU-accessible pointer is valid.

import ctypes, mmap

# CUDA unified memory (ensure CPU accessibility first)
cudart = ctypes.CDLL("libcudart.so")
unified_ptr = ctypes.c_void_p()
cudart.cudaMallocManaged(ctypes.byref(unified_ptr), 4096, 1)
cudart.cudaDeviceSynchronize()
unified = nk.from_pointer(unified_ptr.value, (1024,), 'float32')

# Memory-mapped file
with open("data.bin", "r+b") as f:
    mapping = mmap.mmap(f.fileno(), 0)
    mapped = nk.from_pointer(ctypes.addressof(
        ctypes.c_char.from_buffer(mapping)),
        (1024,), 'float32', owner=mapping)

NumKong: Mixed Precision for All

Portable mixed-precision math, linear-algebra, & retrieval library with 2'000+ SIMD kernels for x86, Arm, RISC-V, LoongArch, Power, & WebAssembly, leveraging rare algebraic transforms with both 1D & 2D registers like AMX & SME, covering 15+ numeric types from 4-bit integers & 6-bit floats to 128-bit complex numbers, validated against 118-bit extended-precision baselines with saturation, casting, & rounding edge-case coverage, in a 5-100x smaller binary than other BLAS-like alternatives, co-designed with Tensor abstractions in C++, Python, Rust, JavaScript, GoLang, & Swift.

NumKong banner

Latency, Throughput, & Numerical Stability

Most libraries return dot products in the same type as the input — Float16 × Float16 → Float16, Int8 × Int8 → Int8. This leads to quiet overflow: a 2048-dimensional i8 dot product can reach ±10 million, but i8 maxes out at 127. NumKong promotes to wider accumulators — Float16 → Float32, BFloat16 → Float32, Int8 → Int32, Float32 → Float64 — so results stay in range.

Input NumPy + OpenBLAS PyTorch + MKL JAX NumKong
░░░░░░░░░░░░░░ ░░░░░░░░░░░░░░ ░░░░░░░░░░░░░░ ░░░░░░░░░░░░░░
f64 2.0 gso/s, 1e-15 err 0.6 gso/s, 1e-15 err 0.4 gso/s, 1e-14 err 5.8 gso/s, 1e-16 err
f32 1.5 gso/s, 2e-6 err 0.6 gso/s, 2e-6 err 0.4 gso/s, 5e-6 err 7.1 gso/s, 2e-7 err
bf16 0.5 gso/s, 1.9% err 0.5 gso/s, 1.9% err 9.7 gso/s, 1.8% err
f16 0.2 gso/s, 0.25% err 0.5 gso/s, 0.25% err 0.4 gso/s, 0.25% err 11.5 gso/s, 0.24% err
e5m2 0.7 gso/s, 4.6% err 0.5 gso/s, 4.6% err 7.1 gso/s, 0% err
i8 1.1 gso/s, overflow 0.5 gso/s, overflow 0.5 gso/s, overflow 14.8 gso/s, 0% err

Single 2048-d dot product on Intel Sapphire Rapids, single-threaded. Each cell shows gso/s, mean relative error vs higher-precision reference. gso/s = Giga Scalar Operations per Second — a more suitable name than GFLOP/s when counting both integer and floating-point work. NumPy 2.4, PyTorch 2.10, JAX 0.9.

A fair objection: PyTorch and JAX are designed for throughput, not single-call latency. They lower execution graphs through XLA or vendored BLAS libraries like Intel MKL and Nvidia cuBLAS. So here's the same comparison on a throughput-oriented workload — matrix multiplication:

Input NumPy + OpenBLAS PyTorch + MKL JAX NumKong
░░░░░░░░░░░░░░ ░░░░░░░░░░░░░░ ░░░░░░░░░░░░░░ ░░░░░░░░░░░░░░
f64 65.5 gso/s, 1e-15 err 68.2 gso/s, 1e-15 err ~14.3 gso/s, 1e-15 err 8.6 gso/s, 1e-16 err
f32 140 gso/s, 9e-7 err 145 gso/s, 1e-6 err ~60.5 gso/s, 1e-6 err 37.7 gso/s, 4e-7 err
bf16 851 gso/s, 1.8% err ~25.8 gso/s, 3.4% err 458 gso/s, 3.6% err
f16 0.3 gso/s, 0.25% err 140 gso/s, 0.37% err ~26.1 gso/s, 0.35% err 103 gso/s, 0.26% err
e5m2 0.4 gso/s, 4.6% err ~26.4 gso/s, 4.6% err 398 gso/s, 0% err
i8 0.4 gso/s, overflow 50.0 gso/s, overflow ~0.0 gso/s, overflow 1279 gso/s, 0% err

Matrix multiplication (2048 × 2048) × (2048 × 2048) on Intel Sapphire Rapids, single-threaded. gso/s = Giga Scalar Operations per Second, same format. NumPy 2.4, PyTorch 2.10, JAX 0.9, same versions.

For f64, compensated "Dot2" summation reduces error by 10–50× compared to naive Float64 accumulation, depending on vector length. For f32, widening to Float64 gives 5–10× lower error. The library ships as a relatively small binary:

Package Size Parallelism & Memory Available For
PyTorch + MKL 705 MB Vector & Tile SIMD, OpenMP Threads, Hidden Allocs Python, C++, Java
JAX + jaxlib 357 MB Vector SIMD, XLA Threads, Hidden Allocs Python
NumPy + OpenBLAS 30 MB Vector SIMD, Built-in Threads, Hidden Allocs Python
mathjs 9 MB No SIMD, No Threads, Many Allocs JS
NumKong 5 MB Vector & Tile SIMD, Your Threads, Your Allocs 7 languages

Every kernel is validated against 118-bit extended-precision baselines with per-type ULP budgets across log-normal, uniform, and Cauchy input distributions. Tests check triangle inequality, Cauchy-Schwarz bounds, NaN propagation, overflow detection, and probability-simplex constraints for each ISA variant. Results are cross-validated against OpenBLAS, Intel MKL, and Apple Accelerate. A broader throughput comparison is maintained in NumWars.

Quick Start

Language Install Compatible with Guide
C / C++ CMake, headers, & prebuilt Linux, macOS, Windows, Android include/README.md
Python pip install Linux, macOS, Windows python/README.md
Rust cargo add Linux, macOS, Windows rust/README.md
JS npm install & import Node.js, Bun, Deno & browsers javascript/README.md
Swift Swift Package Manager macOS, iOS, tvOS, watchOS swift/README.md
Go go get Linux, macOS, Windows via cGo golang/README.md

What's Inside

NumKong covers 17 numeric types — from 6-bit floats to 64-bit complex numbers — across dozens of operations and 30+ SIMD backends, with hardware-aware defaults: Arm prioritizes f16, x86 prioritizes bf16.

Language Bindings

Operation C 99 & C++ 23 Python Rust JavaScript Swift GoLang
Vector Ops
Dot Product
Spatial Metric
Set Similarity
Geospatial ·
Mesh Alignment · · ·
Sparse Products · · ·
Probability Divergences ·
Curved Spaces · · ·
Many-to-Many Vector Ops
"Dots" Products
"Spatials" Metrics
"Sets" Similarities ·
MaxSim Scoring ·
Scalar Ops
Cast · ·
Reduce · · ·
Each · · ·
Trigonometry · · ·

Design Decisions

  • Avoid loop unrolling and scalar tails.
  • Don't manage threads and be compatible with any parallelism models.
  • Don't manage memory and be compatible with arbitrary allocators & alignment.
  • Don't constrain ourselves to traditional BLAS-like Matrix Multiplication APIs.
  • Don't throw exceptions and pass values by pointers.
  • Prefer saturated arithmetic and avoid overflows, where needed.
  • Cover most modern CPUs with flexible dispatch and wait for them to converge with GPUs.

The rest of this document unpacks the functionality and the logic behind the design decisions.

Auto-Vectorization & Loop Unrolling

Most "optimized SIMD code" is a 2–4x unrolled data-parallel for-loop over f32 arrays with a serial scalar tail for the last few elements:

float boring_dot_product_f32(float const *a, float const *b, size_t n) {
    __m256 sum0 = _mm256_setzero_ps(), sum1 = _mm256_setzero_ps();
    size_t i = 0;
    for (; i + 16 <= n; i += 16) {
        sum0 = _mm256_fmadd_ps(_mm256_loadu_ps(a + i), _mm256_loadu_ps(b + i), sum0);
        sum1 = _mm256_fmadd_ps(_mm256_loadu_ps(a + i + 8), _mm256_loadu_ps(b + i + 8), sum1);
    }
    float result = _mm256_reduce_add_ps(_mm256_add_ps(sum0, sum1));
    for (; i < n; i++) result += a[i] * b[i]; // serial tail
    return result;
}

This kind of unrolling has been a common request for NumKong, but the library avoids it by design.

Modern CPUs already "unroll" in hardware. Out-of-order engines with reorder buffers of 320–630 entries (Zen 4: 320, Golden Cove: 512, Apple Firestorm: ~630) can keep a dozen of loop iterations in-flight simultaneously. The physical register file is much larger than the ISA-visible architectural registers — Skylake has ~180 physical integer registers behind 16 architectural GPRs, and ~168 physical vector registers behind 32 architectural ZMMs. The register renaming unit maps the same zmm0 in iteration N and iteration N+1 to different physical registers, extracting cross-iteration parallelism automatically — exactly the benefit that source-level unrolling was historically supposed to provide.

Unrolling works against NumKong's goals. Every unrolled copy is a distinct instruction in the binary. With 1,500+ kernel endpoints across 30+ backends, even 2x unrolling would inflate the .text section by megabytes — directly impacting install size for Python wheels, NPM packages, and Rust crates. Larger loop bodies also increase instruction-cache and micro-op-cache pressure; Agner Fog also recommends:

"avoid loop unrolling where possible in order to economize the use of the micro-op cache".

A loop that spills out of the uop cache falls back to the slower legacy decoder, making the "optimized" version slower than the compact original. For a header-only library, unrolling also compounds compilation time: register allocation is NP-hard (reducible to graph coloring), and unrolling multiplies the number of simultaneously live ranges the allocator must consider, increasing compile time super-linearly across every translation unit that includes the headers.

Serial tails are a correctness hazard. The leftover elements after the last full SIMD chunk run through a scalar loop that silently drops FMA fusion, compensated accumulation, and saturating arithmetic — producing results with different numerical properties than the SIMD body. NumKong often uses masked loads instead (_mm512_maskz_loadu_ps on AVX-512, predicated svld1_f32 on SVE), processing every element through the same arithmetic path regardless of alignment. It's not exactly orthogonal to loop-unrolling, but makes a different kernel layout more compatible.

The gains come from elsewhere. On Intel Sapphire Rapids, NumKong was benchmarked against auto-vectorized code compiled with GCC 12. GCC handles single-precision float well, but struggles with _Float16 and other mixed-precision paths:

Kind GCC 12 f32 GCC 12 f16 NumKong f16 f16 improvement
Inner Product 3,810 K/s 192 K/s 5,990 K/s 31 x
Cosine Distance 3,280 K/s 336 K/s 6,880 K/s 20 x
Euclidean Distance ² 4,620 K/s 147 K/s 5,320 K/s 36 x
Jensen-Shannon Divergence 1,180 K/s 18 K/s 2,140 K/s 118 x

NumKong's f16 kernels are faster than GCC's f32 output — not because of unrolling, but because they use F16C conversion instructions, widening FMA pipelines, and compensated accumulation that compilers do not synthesize from a plain for loop. The same story repeats for bf16, e4m3, i8, and i4: these types require algorithmic transformations — lookup tables, algebraic domain shifts, asymmetric VNNI tricks — that live beyond the reach of auto-vectorization.

Parallelism & Multi-Threading

BLAS libraries traditionally manage their own thread pools. OpenBLAS spawns threads controlled by OPENBLAS_NUM_THREADS, Intel MKL forks its own OpenMP runtime via MKL_NUM_THREADS, and Apple Accelerate delegates to GCD (Grand Central Dispatch). This works in isolation — but the moment your application adds its own parallelism (joblib, std::thread, Tokio, GCD, OpenMP), you get thread oversubscription: MKL spawns 8 threads inside each of your 8 joblib workers, producing 64 threads on 8 cores, thrashing caches and stalling on context switches. The Python ecosystem has built entire libraries just to work around this problem, and scikit-learn's documentation devotes a full page to managing the interaction between joblib parallelism and BLAS thread pools.

NumKong takes a different position: the numerics layer should not own threads. Modern hardware makes the "spawn N threads and split evenly" model increasingly untenable:

  • Server-grade CPUs have hundreds of cores split across sockets, chiplets, and tiles, resulting in dozens of physical NUMA domains with vastly different memory access latencies. A thread pool that ignores NUMA topology will spend more time on remote memory stalls than on arithmetic.
  • Consumer-grade CPUs pack heterogeneous Quality-of-Service core types on the same die — Intel P-cores and E-cores run at different frequencies and sometimes support different ISA extensions. A naive work-split gives equal chunks to fast and slow cores, and the whole task stalls waiting for the slowest partition.
  • Real-time operating systems in robotics and edge AI cannot afford to yield the main thread to a BLAS-managed pool. These systems need deterministic latency, not maximum throughput.

Instead, NumKong exposes row-range parameters that let the caller partition work across any threading model. For GEMM-shaped dots_packed, this is straightforward — pass a slice of A's rows and the full packed B to compute the corresponding slice of C. For SYRK-shaped dots_symmetric, explicit start_row / end_row parameters control which rows of the symmetric output matrix a given thread computes. The GIL (Global Interpreter Lock) is released around every kernel call, making NumKong compatible with concurrent.futures, multiprocessing, or any other parallelism model:

import concurrent.futures, numkong as nk, numpy as np

vectors, num_threads = np.random.randn(1000, 768).astype(np.float32), 4
output = nk.zeros((1000, 1000), dtype="float32")

def compute_slice(t):
    start = t * (len(vectors) // num_threads)
    end = start + len(vectors) // num_threads if t < num_threads - 1 else len(vectors)
    nk.dots_symmetric(vectors, out=output, start_row=start, end_row=end)

with concurrent.futures.ThreadPoolExecutor(max_workers=num_threads) as pool:
    list(pool.map(compute_slice, range(num_threads)))

For users who want a ready-made low-latency thread pool without the oversubscription baggage of OpenMP, we built ForkUnion — a minimalist fork-join library for C, C++, and Rust that avoids mutexes, CAS atomics, and dynamic allocations on the critical path, with optional NUMA pinning on Linux.

Memory Allocation & Management

BLAS libraries typically allocate internal buffers during GEMM — OpenBLAS packs matrices into L2/L3-sized panels via per-thread buffer pools backed by mmap or shmget. This hidden allocation has caused real problems: 14 lock/unlock pairs per small GEMM call throttling 12-thread scaling to 2x, silently incorrect results from thread-unsafe allocation in np.dot, and deadlocks after fork() due to mutex state not being reset in child processes. The BLASFEO library was created specifically for embedded model-predictive control where malloc during computation is unacceptable.

NumKong never allocates memory. Following the same philosophy as Intel MKL's packed GEMM API (cblas_sgemm_pack_get_sizecblas_sgemm_packcblas_sgemm_compute), NumKong exposes typed three-phase interfaces — nk_dots_packed_size_*nk_dots_pack_*nk_dots_packed_* — where the caller owns the buffer and NumKong only fills it.

The reason GEMM libraries repack matrices at all is that every hardware target has a different preferred layout — Intel AMX expects B in a VNNI-interleaved tile format (pairs of BFloat16 values packed into DWORDs across the K dimension), while Arm SME wants column vectors for its FMOPA outer-product instructions. Since GEMM is $O(N^3)$ and repacking is $O(N^2)$, the cost is asymptotically free — but the allocation and locking overhead is not.

NumKong's nk_dots_pack_* family performs five transformations beyond simple reordering:

  • Type pre-conversion — mini-floats (E4M3, BFloat16, etc.) are upcast to the compute type once during packing, not on every GEMM call. This amortizes the conversion cost across all rows of A that will be multiplied against the packed B.
  • SIMD depth padding — rows are zero-padded to the SIMD vector width (16 for AVX-512 Float32, 64 for AVX-512 Int8), allowing inner loops to load without boundary checks.
  • Per-column norm precomputation — squared norms ($|b_j|^2$) are computed and stored alongside the packed data, so distance kernels (angulars_packed, euclideans_packed) can reuse them without a separate pass.
  • ISA-specific tile layout — AMX packing interleaves BFloat16 pairs into 16×32 tiles matching TDPBF16PS expectations; SME packing arranges vectors at SVE granularity for FMOPA outer products; generic backends use simple column-major with depth padding.
  • Power-of-2 stride breaking — when the padded row stride is a power of 2, one extra SIMD step of padding is added. Power-of-2 strides cause cache set aliasing where consecutive rows map to the same cache sets, effectively shrinking usable L1/L2 capacity — stride-256 traversals can be ~10x slower than stride-257.
import numkong as nk, numpy as np

right_matrix = np.random.randn(1000, 768).astype(np.float16)
right_packed = nk.dots_pack(right_matrix, dtype=nk.float16)                        # pack once
for query_batch in stream: results = nk.dots_packed(query_batch, right_packed)    # reuse many times

Why Not Just GEMM? The Evolution of Matrix Multiplication APIs

The classic BLAS GEMM computes $C = \alpha A B + \beta C$ for Float32/Float64 matrices. It covers many use cases, but LLM inference, vector search, and quantum simulation expose three ways in which the traditional interface falls short.

Frozen weights justify separating packing from computation. During LLM inference, a very large share of GEMM calls use a static weight matrix — weights don't change after loading. This makes offline repacking a one-time cost amortized over the entire serving lifetime: NVIDIA's TurboMind explicitly splits GEMM into offline weight packing (hardware-aware layout conversion) and online mixed-precision computation, and Intel MKL's packed GEMM API exposes the same two-phase pattern. NumKong's nk_dots_pack_*nk_dots_packed_* path follows this philosophy — pack the weight matrix once, reuse it across all queries.

Mixed precision demands more than an epilogue addition. Modern transformer layers operate in a precision sandwich: weights stored in BFloat16/Float8, GEMM accumulated in Float32, output downcast back to BFloat16 for the next layer. Between GEMM calls, LayerNorm or RMSNorm re-normalizes hidden states, so the next layer is often much closer to an angular or normalized similarity computation than to a plain raw dot product. nGPT takes this to its logical conclusion: all vectors live on the unit hypersphere, and every matrix-vector product is a pure angular distance. This means many "GEMM" workloads in production are semantically closer to many-to-many angular distance computation — which is exactly what NumKong's angulars_packed and euclideans_packed kernels compute directly, fusing norm handling and type conversion into a single pass.

The GEMM-for-distances trick has real costs. A common shortcut in vector search is to decompose pairwise Euclidean distance as $|a - b|^2 = |a|^2 + |b|^2 - 2 \langle a, b \rangle$, precompute norms, and call sgemm for the inner-product matrix. Both FAISS and scikit-learn use this approach — and both document its limitations. Scikit-learn's docs warn of "catastrophic cancellation" in the subtraction; this has caused real bugs with ~37% error on near-identical Float32 vectors. The $O(N^2)$ postprocessing pass (adding norms, square roots, divisions) is not free either — NVIDIA's RAFT measured a 20–25% speedup from fusing it into the GEMM epilogue. Even FAISS switches to direct SIMD when the query count drops below 20. The standard BLAS interface was never designed for sub-byte types either — no vendor supports Int4, and sub-byte types cannot even be strided without bit-level repacking.

Some operations need more than GEMM + postprocessing. NumKong implements several GEMM-shaped operations where the "epilogue" is too complex for a simple addition:

  • Bilinear forms ($a^T C b$) in quantum computing compute a scalar expectation value — the naive approach materializes an $N$-dimensional intermediate vector $Cb$, but NumKong's typed nk_bilinear_* kernels stream through rows of $C$ with nested compensated dot products, never allocating beyond registers. For complex-valued quantum states, where the intermediate would be a 2N-element complex vector, the savings double.
  • MaxSim scoring for ColBERT-style late-interaction retrieval computes $\sum_i \min_j \text{angular}(q_i, d_j)$ — a sum-of-min-distances across token pairs. A GEMM would produce the full $M \times N$ similarity matrix, but NumKong's typed nk_maxsim_packed_* kernels fuse a coarse Int8-quantized screening with full-precision angular refinement on winning pairs only, packing both query and document matrices to use all 4 SME tiles as accumulators. PLAID and maxsim-cpu have independently shown that dedicated MaxSim kernels can outperform the GEMM decomposition by 5–10x.

NumKong treats these as first-class operations — dots_packed, euclideans_packed, angulars_packed, typed nk_bilinear_* kernels, and typed nk_maxsim_packed_* kernels — rather than decomposing everything into GEMM + postprocessing.

Precision by Design: Saturation, Rounding, & Float6 Over Float8

Floating-point arithmetic on computers is not associative: $(a + b) + c \neq a + (b + c)$ in general, and upcasting to wider types is not always sufficient. NumKong makes operation-specific decisions about where to spend precision and where to economize, rather than applying one rule uniformly.

Saturation depends on the operation. A reduction over a 4 GB array of i8 values contains ~4 billion elements — but Int32 wrapping overflow occurs after just ~17 million Int8 summands ($127 \times 16.9\text{M} > 2^{31}$). Reductions in NumKong use saturating arithmetic because the input can be arbitrarily long. Matrix multiplications don't need saturation because GEMM depth rarely exceeds tens of thousands — well within Int32 range. x86 provides no saturating 32-bit SIMD add (only byte/word variants), so NumKong implements saturation via overflow detection with XOR-based unsigned comparison on platforms that lack native support.

Square roots & special math ops are platform-specific. Angular distance requires $1/\sqrt{|a|^2 \cdot |b|^2}$ — but the cost of computing this normalization varies dramatically across hardware. x86 VSQRTPS takes ~12 cycles, followed by VDIVPS at ~11 cycles — totalling ~23 cycles for a precise 1/sqrt(x). The VRSQRT14PS alternative starts with a 14-bit estimate in ~4 cycles, then one Newton-Raphson iteration ($y = y \cdot (1.5 - 0.5 x y^2)$, ~4 more cycles) reaches full Float32 precision — roughly 3x faster. ARM's FRSQRTE provides only ~8 bits, requiring two Newton-Raphson iterations to match. NumKong selects the iteration count per platform so the final ULP bound is consistent across ISAs, rather than exposing different precision to different users.

E2M3 and E3M2 can outperform E4M3 and E5M2. 6-bit MX formats can be scaled to exact integers, enabling integer accumulation that avoids E5M2's catastrophic cancellation risk. This works because E2M3's narrower exponent range means every representable value maps to an integer after a fixed shift — no rounding, no cancellation. See Mini-Floats for a worked example.

Every such decision — saturation thresholds, Newton-Raphson iteration counts, integer vs floating-point paths — is documented per operation and per type in the module-specific READMEs.

Calling Convention & Error Handling

NumKong never throws exceptions, never sets errno, and never calls setjmp/longjmpexceptions bloat call sites with unwind tables and are invisible to C, Python, Rust, Swift, Go, and JavaScript FFI; errno is thread-local state whose storage model varies across C runtimes. Instead, every function takes inputs as const pointers, writes outputs through caller-provided pointers, and returns void:

void nk_dot_f32(nk_f32_t const *a, nk_f32_t const *b, nk_size_t n, nk_f64_t *result);
void nk_dot_bf16(nk_bf16_t const *a, nk_bf16_t const *b, nk_size_t n, nk_f32_t *result);

Pointers eliminate implicit casts for types with platform-dependent storage — this is why they matter for half-precision types. nk_f16_t and nk_bf16_t resolve to native __fp16 / __bf16 when available but fall back to unsigned short otherwise — if passed by value, the compiler would silently apply integer promotion instead of preserving the bit pattern. Passing by pointer keeps the representation opaque: kernels read raw and convert explicitly when needed, so the same binary works regardless of whether the compiler understands _Float16.

The only place that requires error signaling is dynamic dispatch — looking up the best kernel for the current CPU at runtime. When no kernel matches, the dispatcher sets the capabilities mask to zero and fills the function pointer with a family-specific error stub such as nk_error_dense_ from c/dispatch.h and c/numkong.c that writes 0xFF into the output — NaN for floats, −1 for signed integers, TYPE_MAX for unsigned.

Compile-Time and Run-Time Dispatch

NumKong provides two dispatch mechanisms. Compile-time dispatch selects the fastest kernel supported by the target platform at build time — thinner binaries, no indirection overhead, but requires knowing your deployment hardware. Run-time dispatch compiles every supported kernel into the binary and picks the best one on the target machine via nk_capabilities() — one pointer indirection per call, but a single binary runs everywhere. The run-time path is common in DBMS products (ClickHouse), web browsers (Chromium), and other upstream projects that ship to heterogeneous fleets. Distributed artifacts (Rust crate, Python wheels, JS native modules, shared libs from the default CMake build) pin the translation-unit baseline to each architecture's ABI floor so the library runs on any CPU matching the ABI, not just the build host — see CONTRIBUTING.md for the per-arch table and the NK_MARCH_NATIVE override used for host-tuned local builds.

All kernel names follow the pattern nk_{operation}_{type}_{backend}. If you need to resolve the best kernel manually, use nk_find_kernel_punned with a nk_kernel_kind_t, nk_dtype_t, and a viable capabilities mask:

nk_metric_dense_punned_t angular = 0;
nk_capability_t used = nk_cap_serial_k;
nk_find_kernel_punned(
    nk_kernel_angular_k, nk_f32_k,            // what functionality? for which input type?
    nk_capabilities(),                        // which capabilities are viable?
    (nk_kernel_punned_t *)&angular, &used);   // the kernel found and capabilties used!

The first call to nk_capabilities() initializes the dispatch table; all subsequent calls are lock-free.

Numeric Types

Float64 & Float32: IEEE Precision

Float64 — NumKong uses compensated summation that tracks numerical errors separately. On serial paths, we use Neumaier's algorithm (1974), an improvement over Kahan-Babuška that correctly handles cases where added terms are larger than the running sum, achieving $O(1)$ error growth instead of $O(n)$. On SIMD paths with FMA support, we implement the Dot2 algorithm (Ogita-Rump-Oishi, 2005), maintaining separate error compensators for both multiplication and accumulation via TwoProd and TwoSum operations. The accuracy differences are visible in the benchmark tables above — compensated Float64 suits scientific computing where numerical stability matters more than raw speed.

Float32 — SIMD implementations load Float32 values, upcast to Float64 for full-precision multiplication and accumulation, then downcast only during finalization. This avoids catastrophic cancellation at minimal cost since modern CPUs have dedicated Float64 vector units operating at nearly the same throughput as Float32. The same compensated accumulation strategy applies to Mahalanobis distance, bilinear forms, and KL/JS divergences.

// Dot2 TwoProd: Capture multiplication rounding error
h = a * b;
r = fma(a, b, -h);  // Extracts rounding error

// Dot2 TwoSum: Capture addition rounding error
t = sum + product;
e = (sum - t) + product;  // Compensator term

BFloat16 & Float16: Half Precision

BFloat16 — not an IEEE 754 standard type, but widely adopted for AI workloads. BFloat16 shares Float32's 8-bit exponent but truncates the mantissa to 7 bits, prioritizing dynamic range over precision (±3.4×10³⁸ with coarser granularity). On old CPUs, upcasting BFloat16 to Float32 requires just an unpack and left-shift by 16 bits (essentially free); on newer CPUs, both Arm and x86 provide widening mixed-precision dot products via DPBF16PS (AVX-512 on Genoa/Sapphire Rapids) and BFDOT (NEON on ARMv8.6-A Graviton 3+). NumKong's Float8 types (E4M3/E5M2) upcast to BFloat16 before using DPBF16PS, creating a three-tier precision hierarchy: Float8 for storage, BFloat16 for compute, Float32 for accumulation.

Float16 — IEEE 754 half-precision with 1 sign bit, 5 exponent bits (bias=15), and 10 mantissa bits, giving a range of ±65504. Float16 prioritizes precision over range (10 vs 7 mantissa bits), making it better suited for values near zero and gradients during training. On x86, older CPUs use F16C extensions (Ivy Bridge+) for fast Float16 → Float32 conversion; Sapphire Rapids+ adds native AVX-512-FP16 with dedicated Float16 arithmetic. On Arm, ARMv8.4-A adds FMLAL/FMLAL2 instructions for fused Float16 → Float32 widening multiply-accumulate, reducing the total latency from 7 cycles to 4 cycles and achieving 20–48% speedup over the separate convert-then-FMA path.

Platform BFloat16 Path Step Float16 Path Step
x86
Diamond, '26 ↓ Genoa 32 VDPPHPS widening dot 32
Sapphire, '23 ↓ Genoa 32 ↓ Skylake 16
Genoa, '22 VDPBF16PS widening dot 32 ↓ Skylake 16
Skylake, '15 SLLI + VFMADD 16 VCVTPH2PS + VFMADD 16
Haswell, '13 SLLI + VFMADD 8 VCVTPH2PS + VFMADD 8
Arm
Apple M2+, '22 BFDOT widening dot 8 ↓ FP16FML 8
Graviton 3+, '21 SVBFDOT widening dot 4–32 SVCVTSVFMLA 4–32
Apple M1, '20 ↓ NEON 8 FMLAL widening FMA 8
Graviton 2, '19 ↓ NEON 8 FCVTL + FMLA 4
Graviton 1, '18 SHLL + FMLA 8 bit-manip → FMLA 8
RISC-V
RVV+Zvfbfwma VFWMACCBF16 widening FMA 4–32 ↓ RVV 4–32
RVV+Zvfh ↓ RVV 4–32 VFWMACC widening FMA 4–32
RVV shift + VFMACC 4–32 convert + VFMACC 4–32

BFloat16 shares Float32's 8-bit exponent, so upcasting is a 16-bit left shift (SLLI on x86, SHLL on Arm) that zero-pads the truncated mantissa — essentially free. Float16 has a different exponent width (5 vs 8 bits), requiring a dedicated convert: VCVTPH2PS (x86 F16C) or FCVTL (Arm NEON). Widening dot products (VDPBF16PS, BFDOT, FMLAL) fuse the conversion and multiply-accumulate into one instruction. Sapphire Rapids has native VFMADDPH for Float16 arithmetic, but NumKong does not use it for general dot products — Float16 accumulation loses precision. It is only used for mini-float (E2M3/E3M2) paths where periodic flush-to-Float32 windows keep error bounded. The table above covers only vector dot-product paths - GEMMs also leverage Arm SME and Intel AMX instructions. Beyond x86, Arm, and RISC-V, NumKong also ships LoongArch, WebAssembly, and PowerPC backends, also excluded from the table.

Mini-Floats: E4M3, E5M2, E3M2, & E2M3

Format Bits Range NumKong Promotion Rules Support in GPUs
E5M2FN 8 ±57344 BFloat16 → Float32 H100+, MI300+
E4M3FN 8 ±448 BFloat16 → Float32 H100+, MI300+
E3M2FN 6 → 8 ±28 B- & Float16 → Float32, Int16 → Int32 only block-scaled
E2M3FN 6 → 8 ±7.5 B- & Float16 → Float32, Int8 → Int32 only block-scaled
Scaled NVFP4 4 ±6 B200+
Scaled MXFP4 4 ±6 B200+, MI325+

Block scaling. NumKong does not implement block-scaled variants (MXFP4, NVFP4, or block-scaled E3M2/E2M3). Block scaling couples elements through a shared exponent per block, introducing structural bias into a fundamentally uniform operation. NumKong treats each element independently; block-scaled inputs should be dequantized before processing.

FNUZ variants. AMD MI300 (CDNA 3) uses FNUZ encoding (negative-zero-is-NaN) rather than the OCP standard. MI350+ and NVIDIA H100/B200 both use OCP-standard E4M3FN/E5M2FN. NumKong follows the OCP convention; FNUZ inputs require conversion before processing.

8-bit floats (E4M3 & E5M2) follow the OCP FP8 standard. E4M3FN (no infinities, NaN only) is preferred for training where precision near zero matters; E5M2FN (with infinities) provides wider dynamic range for inference. On x86 Genoa/Sapphire Rapids, E4M3/E5M2 values upcast to BFloat16 via lookup tables, then use native DPBF16PS for 2-per-lane dot products accumulating to Float32. On Arm Graviton 3+, the same BFloat16 upcast happens via NEON table lookups, then BFDOT instructions complete the computation.

Platform E5M2 Path Step E4M3 Path Step
x86
Diamond, '26 VCVTBF82PH → F16 + VDPPHPS 32 VCVTHF82PH → F16 + VDPPHPS 32
Genoa, '22 → BF16 + VDPBF16PS 32 ↓ Ice Lake 64
Ice Lake, '19 ↓ Skylake 16 octave LUT + VPDPBUSD 64
Skylake, '15 rebias → F32 FMA 16 rebias → F32 FMA 16
Haswell, '13 rebias → F32 FMA 8 rebias → F32 FMA 8
Arm
NEON+FP8DOT, '26 native FDOT 16 native FDOT 16
NEON+FP16FML, '20 SHL → F16 + FMLAL 16 LUT → F16 + FMLAL 16
NEON, '18 SHL + FCVTL + FMA 8 → F16 + FCVTL + FMA 8
RISC-V
RVV+Zvfbfwma rebias → BF16 + VFWMACCBF16 4–32 LUT → BF16 + VFWMACCBF16 4–32
RVV+Zvfh SHL → F16 + VFWMACC 4–32 LUT → F16 + VFWMACC 4–32
RVV rebias → F32 + VFMACC 4–32 LUT → F32 + VFMACC 4–32

E5M2 shares Float16's exponent bias (15), so E5M2 → Float16 conversion is a single left-shift by 8 bits (SHL 8). E4M3 on Ice Lake uses "octave decomposition": the 4-bit exponent splits into 2 octave + 2 remainder bits, yielding 7 integer accumulators post-scaled by powers of 2.

6-bit floats (E3M2 & E2M3) follow the OCP MX v1.0 standard. Their smaller range allows scaling to exact integers that fit in i8/i16, enabling integer VPDPBUSD/SDOT accumulation instead of the floating-point pipeline. Float16 can also serve as an accumulator, accurately representing ~50 products of E3M2FN pairs or ~20 products of E2M3FN pairs before overflow. On Arm, NEON FHM extensions bring widening FMLAL dot-products for Float16 — both faster and more widely available than BFDOT for BFloat16.

Platform E3M2 Path Step E2M3 Path Step
x86
Sierra Forest, '24 ↓ Haswell 32 VPSHUFB + VPDPBSSD 32
Alder Lake, '21 ↓ Haswell 32 VPSHUFB + VPDPBUSD 32
Ice Lake, '19 VPERMW + VPMADDWD 32 VPERMB + VPDPBUSD 64
Skylake, '15 VPSHUFB + VPMADDWD 64 VPSHUFB + VPMADDUBSW 64
Haswell, '13 VPSHUFB + VPMADDWD 32 VPSHUFB + VPMADDUBSW 32
Arm
NEON+FP8DOT, '26 → E5M2 + FDOT 16 → E4M3 + FDOT 16
NEON+DotProd, '19 VQTBL2 + SMLAL 16 VQTBL2 + SDOT 16
NEON, '18 → F16 + FCVTL + FMA 16 → F16 + FCVTL + FMA 16
RISC-V
RVV I16 gather LUT + VWMACC 4–32 U8 gather LUT + VWMACC 4–32

E3M2/E2M3 values map to exact integers via 32-entry LUTs (magnitudes up to 448 for E3M2, 120 for E2M3), enabling integer accumulation with no rounding error. On NEON+FP8DOT, E3M2 is first promoted to E5M2 and E2M3 to E4M3 before the hardware FDOT instruction. Sierra Forest and Alder Lake use native VPDPBSSD (signed×signed) and VPDPBUSD (unsigned×signed) respectively for E2M3.

E4M3 and E5M2 cannot use the integer path. E4M3 scaled by 16 reaches 7,680 — too large for Int8, barely fitting Int16 with a 128-entry table. E5M2's range (±57,344) makes the scaled product exceed Int32 entirely. Without the integer path, E5M2 falls back to Float32 accumulation — where its 2-bit mantissa (only 4 values per binade) creates a catastrophic cancellation risk that E2M3's integer path avoids completely:

i = 0 i = 1 i = 2 i = 3 i = 4 i = 5 i = 6
aᵢ 0.00122 20480 −0.00122 1.5 −3072 −640 0.00146
bᵢ −40 320 −1280 −7.63e⁻⁵ 0.000427 10240 −4.58e⁻⁵
aᵢ·bᵢ −0.04883 6553600 1.5625 −0.000114 −1.3125 −6553600 ≈ 0

Why Float32 accumulation fails here. The accurate sum of these 7 products is ≈ 0.201. A vfmaq_f32 call accumulates 4 lanes at a time; the first batch already carries values around ±6.5 M. At that magnitude the Float32 ULP is 0.5 — so the small meaningful terms (−0.049, 1.563, −1.313, −0.0001) are all below one ULP and get absorbed during lane reduction. The large terms then cancel exactly to zero, and the information is gone. Final Float32 result: 0.0 instead of 0.201.

Int8 & Int4: Integer Types

Both signed and unsigned 8-bit and 4-bit integers are supported with Int32 accumulation to prevent overflow. A notable optimization is the VNNI algebraic transform: on Ice Lake+ with AVX-512 VNNI, the native DPBUSD instruction is asymmetric (unsigned × signed → signed), but NumKong uses it for both Int8×Int8 and UInt8×UInt8. For signed Int8×Int8, we convert the signed operand to unsigned via XOR with 0x80, compute DPBUSD(a⊕0x80, b) = (a+128)×b, then subtract a correction term 128×sum(b) to recover the true result. For unsigned UInt8×UInt8, we XOR the second operand to make it signed, compute DPBUSD(a, b⊕0x80) = a×(b-128), then add correction 128×sum(a) via the fast SAD instruction.

Int4 values pack two nibbles per byte, requiring bitmask extraction: low nibbles (byte & 0x0F) and high nibbles (byte >> 4). For signed Int4, the transformation (nibble ⊕ 8) - 8 maps the unsigned range [0,15] to signed range [−8,7]. Separate accumulators for low and high nibbles avoid expensive nibble-interleaving and allow SIMD lanes to work in parallel.

// Asymmetric transform for i8×i8 using DPBUSD (unsigned×signed)
a_unsigned = a XOR 0x80;           // Convert signed→unsigned
result = DPBUSD(a_unsigned, b);    // Computes (a+128)×b
correction = 128 * sum(b);         // Parallel on different port
final = result - correction;       // True a×b value

Binary: Packed Bits

The u1x8 type packs 8 binary values per byte, enabling Hamming distance and Jaccard similarity via population-count instructions. On x86, VPOPCNTDQ (Ice Lake+) counts set bits in 512-bit registers directly; on Arm, CNT (NEON) operates on 8-bit lanes with a horizontal add. Results accumulate into u32 — sufficient for vectors up to 4 billion bits. Binary representations are the most compact option for locality-sensitive hashing and binary neural network inference.

Complex Types

NumKong supports four complex types — f16c, bf16c, f32c, and f64c — stored as interleaved real/imaginary pairs. Complex types are essential in quantum simulation (state vectors, density matrices), signal processing (FFT coefficients, filter design), and electromagnetic modeling. The dot operation computes the unconjugated dot product $\sum a_k b_k$, while vdot computes the conjugated inner product $\sum \bar{a}_k b_k$ standard in physics and signal processing.

For complex dot products, NumKong defers sign flips until after the accumulation loop: instead of using separate FMA and FMS (fused multiply-subtract) instructions for the real component, we compute $a_r b_r + a_i b_i$ treating all products as positive, then apply a single bitwise XOR with 0x80000000 to flip the sign bits. This avoids execution port contention between FMA and FMS, letting dual FMA units stay occupied.

for (...) { // Complex multiply optimization: XOR sign flip after the loop
    sum_real = fma(a, b, sum_real);   // No sign flip in loop
    sum_imag = fma(a, b_swapped, sum_imag);
}
sum_real = xor(sum_real, 0x80000000);  // Single XOR after loop

Reading Materials

Beyond the READMEs in this repository, there are several standalone articles covering different evolution steps and features of this library.

License

Feel free to use the project under Apache 2.0 or the Three-clause BSD license at your preference.

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

numkong-7.5.0.tar.gz (1.2 MB view details)

Uploaded Source

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

numkong-7.5.0-cp314-cp314t-win_arm64.whl (461.1 kB view details)

Uploaded CPython 3.14tWindows ARM64

numkong-7.5.0-cp314-cp314t-win_amd64.whl (492.0 kB view details)

Uploaded CPython 3.14tWindows x86-64

numkong-7.5.0-cp314-cp314t-musllinux_1_2_x86_64.whl (10.6 MB view details)

Uploaded CPython 3.14tmusllinux: musl 1.2+ x86-64

numkong-7.5.0-cp314-cp314t-musllinux_1_2_s390x.whl (2.7 MB view details)

Uploaded CPython 3.14tmusllinux: musl 1.2+ s390x

numkong-7.5.0-cp314-cp314t-musllinux_1_2_ppc64le.whl (3.2 MB view details)

Uploaded CPython 3.14tmusllinux: musl 1.2+ ppc64le

numkong-7.5.0-cp314-cp314t-musllinux_1_2_i686.whl (2.8 MB view details)

Uploaded CPython 3.14tmusllinux: musl 1.2+ i686

numkong-7.5.0-cp314-cp314t-musllinux_1_2_aarch64.whl (5.8 MB view details)

Uploaded CPython 3.14tmusllinux: musl 1.2+ ARM64

numkong-7.5.0-cp314-cp314t-manylinux_2_28_x86_64.whl (10.8 MB view details)

Uploaded CPython 3.14tmanylinux: glibc 2.28+ x86-64

numkong-7.5.0-cp314-cp314t-manylinux_2_28_aarch64.whl (5.8 MB view details)

Uploaded CPython 3.14tmanylinux: glibc 2.28+ ARM64

numkong-7.5.0-cp314-cp314t-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl (2.9 MB view details)

Uploaded CPython 3.14tmanylinux: glibc 2.17+ s390xmanylinux: glibc 2.28+ s390x

numkong-7.5.0-cp314-cp314t-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl (3.2 MB view details)

Uploaded CPython 3.14tmanylinux: glibc 2.17+ ppc64lemanylinux: glibc 2.28+ ppc64le

numkong-7.5.0-cp314-cp314t-manylinux2014_i686.manylinux_2_17_i686.manylinux_2_28_i686.whl (2.6 MB view details)

Uploaded CPython 3.14tmanylinux: glibc 2.17+ i686manylinux: glibc 2.28+ i686

numkong-7.5.0-cp314-cp314t-macosx_11_0_arm64.whl (1.4 MB view details)

Uploaded CPython 3.14tmacOS 11.0+ ARM64

numkong-7.5.0-cp314-cp314t-macosx_10_15_x86_64.whl (1.5 MB view details)

Uploaded CPython 3.14tmacOS 10.15+ x86-64

numkong-7.5.0-cp314-cp314-win_arm64.whl (460.1 kB view details)

Uploaded CPython 3.14Windows ARM64

numkong-7.5.0-cp314-cp314-win_amd64.whl (489.2 kB view details)

Uploaded CPython 3.14Windows x86-64

numkong-7.5.0-cp314-cp314-musllinux_1_2_x86_64.whl (10.6 MB view details)

Uploaded CPython 3.14musllinux: musl 1.2+ x86-64

numkong-7.5.0-cp314-cp314-musllinux_1_2_s390x.whl (2.7 MB view details)

Uploaded CPython 3.14musllinux: musl 1.2+ s390x

numkong-7.5.0-cp314-cp314-musllinux_1_2_ppc64le.whl (3.2 MB view details)

Uploaded CPython 3.14musllinux: musl 1.2+ ppc64le

numkong-7.5.0-cp314-cp314-musllinux_1_2_i686.whl (2.7 MB view details)

Uploaded CPython 3.14musllinux: musl 1.2+ i686

numkong-7.5.0-cp314-cp314-musllinux_1_2_aarch64.whl (5.7 MB view details)

Uploaded CPython 3.14musllinux: musl 1.2+ ARM64

numkong-7.5.0-cp314-cp314-manylinux_2_28_x86_64.whl (10.8 MB view details)

Uploaded CPython 3.14manylinux: glibc 2.28+ x86-64

numkong-7.5.0-cp314-cp314-manylinux_2_28_aarch64.whl (5.8 MB view details)

Uploaded CPython 3.14manylinux: glibc 2.28+ ARM64

numkong-7.5.0-cp314-cp314-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl (2.9 MB view details)

Uploaded CPython 3.14manylinux: glibc 2.17+ s390xmanylinux: glibc 2.28+ s390x

numkong-7.5.0-cp314-cp314-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl (3.2 MB view details)

Uploaded CPython 3.14manylinux: glibc 2.17+ ppc64lemanylinux: glibc 2.28+ ppc64le

numkong-7.5.0-cp314-cp314-manylinux2014_i686.manylinux_2_17_i686.manylinux_2_28_i686.whl (2.6 MB view details)

Uploaded CPython 3.14manylinux: glibc 2.17+ i686manylinux: glibc 2.28+ i686

numkong-7.5.0-cp314-cp314-macosx_11_0_arm64.whl (1.4 MB view details)

Uploaded CPython 3.14macOS 11.0+ ARM64

numkong-7.5.0-cp314-cp314-macosx_10_15_x86_64.whl (1.5 MB view details)

Uploaded CPython 3.14macOS 10.15+ x86-64

numkong-7.5.0-cp313-cp313t-win_arm64.whl (440.1 kB view details)

Uploaded CPython 3.13tWindows ARM64

numkong-7.5.0-cp313-cp313t-win_amd64.whl (476.6 kB view details)

Uploaded CPython 3.13tWindows x86-64

numkong-7.5.0-cp313-cp313t-musllinux_1_2_x86_64.whl (10.6 MB view details)

Uploaded CPython 3.13tmusllinux: musl 1.2+ x86-64

numkong-7.5.0-cp313-cp313t-musllinux_1_2_s390x.whl (2.7 MB view details)

Uploaded CPython 3.13tmusllinux: musl 1.2+ s390x

numkong-7.5.0-cp313-cp313t-musllinux_1_2_ppc64le.whl (3.2 MB view details)

Uploaded CPython 3.13tmusllinux: musl 1.2+ ppc64le

numkong-7.5.0-cp313-cp313t-musllinux_1_2_i686.whl (2.8 MB view details)

Uploaded CPython 3.13tmusllinux: musl 1.2+ i686

numkong-7.5.0-cp313-cp313t-musllinux_1_2_aarch64.whl (5.8 MB view details)

Uploaded CPython 3.13tmusllinux: musl 1.2+ ARM64

numkong-7.5.0-cp313-cp313t-manylinux_2_28_x86_64.whl (10.8 MB view details)

Uploaded CPython 3.13tmanylinux: glibc 2.28+ x86-64

numkong-7.5.0-cp313-cp313t-manylinux_2_28_aarch64.whl (5.8 MB view details)

Uploaded CPython 3.13tmanylinux: glibc 2.28+ ARM64

numkong-7.5.0-cp313-cp313t-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl (2.9 MB view details)

Uploaded CPython 3.13tmanylinux: glibc 2.17+ s390xmanylinux: glibc 2.28+ s390x

numkong-7.5.0-cp313-cp313t-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl (3.2 MB view details)

Uploaded CPython 3.13tmanylinux: glibc 2.17+ ppc64lemanylinux: glibc 2.28+ ppc64le

numkong-7.5.0-cp313-cp313t-manylinux2014_i686.manylinux_2_17_i686.manylinux_2_28_i686.whl (2.6 MB view details)

Uploaded CPython 3.13tmanylinux: glibc 2.17+ i686manylinux: glibc 2.28+ i686

numkong-7.5.0-cp313-cp313t-macosx_11_0_arm64.whl (1.4 MB view details)

Uploaded CPython 3.13tmacOS 11.0+ ARM64

numkong-7.5.0-cp313-cp313t-macosx_10_13_x86_64.whl (1.5 MB view details)

Uploaded CPython 3.13tmacOS 10.13+ x86-64

numkong-7.5.0-cp313-cp313-win_arm64.whl (439.4 kB view details)

Uploaded CPython 3.13Windows ARM64

numkong-7.5.0-cp313-cp313-win_amd64.whl (474.2 kB view details)

Uploaded CPython 3.13Windows x86-64

numkong-7.5.0-cp313-cp313-musllinux_1_2_x86_64.whl (10.6 MB view details)

Uploaded CPython 3.13musllinux: musl 1.2+ x86-64

numkong-7.5.0-cp313-cp313-musllinux_1_2_s390x.whl (2.7 MB view details)

Uploaded CPython 3.13musllinux: musl 1.2+ s390x

numkong-7.5.0-cp313-cp313-musllinux_1_2_ppc64le.whl (3.2 MB view details)

Uploaded CPython 3.13musllinux: musl 1.2+ ppc64le

numkong-7.5.0-cp313-cp313-musllinux_1_2_i686.whl (2.7 MB view details)

Uploaded CPython 3.13musllinux: musl 1.2+ i686

numkong-7.5.0-cp313-cp313-musllinux_1_2_aarch64.whl (5.7 MB view details)

Uploaded CPython 3.13musllinux: musl 1.2+ ARM64

numkong-7.5.0-cp313-cp313-manylinux_2_28_x86_64.whl (10.8 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.28+ x86-64

numkong-7.5.0-cp313-cp313-manylinux_2_28_aarch64.whl (5.8 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.28+ ARM64

numkong-7.5.0-cp313-cp313-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl (2.9 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ s390xmanylinux: glibc 2.28+ s390x

numkong-7.5.0-cp313-cp313-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl (3.2 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ ppc64lemanylinux: glibc 2.28+ ppc64le

numkong-7.5.0-cp313-cp313-manylinux2014_i686.manylinux_2_17_i686.manylinux_2_28_i686.whl (2.6 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ i686manylinux: glibc 2.28+ i686

numkong-7.5.0-cp313-cp313-macosx_11_0_arm64.whl (1.4 MB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

numkong-7.5.0-cp313-cp313-macosx_10_13_x86_64.whl (1.5 MB view details)

Uploaded CPython 3.13macOS 10.13+ x86-64

numkong-7.5.0-cp312-cp312-win_arm64.whl (439.4 kB view details)

Uploaded CPython 3.12Windows ARM64

numkong-7.5.0-cp312-cp312-win_amd64.whl (474.1 kB view details)

Uploaded CPython 3.12Windows x86-64

numkong-7.5.0-cp312-cp312-musllinux_1_2_x86_64.whl (10.6 MB view details)

Uploaded CPython 3.12musllinux: musl 1.2+ x86-64

numkong-7.5.0-cp312-cp312-musllinux_1_2_s390x.whl (2.7 MB view details)

Uploaded CPython 3.12musllinux: musl 1.2+ s390x

numkong-7.5.0-cp312-cp312-musllinux_1_2_ppc64le.whl (3.2 MB view details)

Uploaded CPython 3.12musllinux: musl 1.2+ ppc64le

numkong-7.5.0-cp312-cp312-musllinux_1_2_i686.whl (2.7 MB view details)

Uploaded CPython 3.12musllinux: musl 1.2+ i686

numkong-7.5.0-cp312-cp312-musllinux_1_2_aarch64.whl (5.7 MB view details)

Uploaded CPython 3.12musllinux: musl 1.2+ ARM64

numkong-7.5.0-cp312-cp312-manylinux_2_28_x86_64.whl (10.8 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.28+ x86-64

numkong-7.5.0-cp312-cp312-manylinux_2_28_aarch64.whl (5.8 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.28+ ARM64

numkong-7.5.0-cp312-cp312-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl (2.9 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ s390xmanylinux: glibc 2.28+ s390x

numkong-7.5.0-cp312-cp312-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl (3.2 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ ppc64lemanylinux: glibc 2.28+ ppc64le

numkong-7.5.0-cp312-cp312-manylinux2014_i686.manylinux_2_17_i686.manylinux_2_28_i686.whl (2.6 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ i686manylinux: glibc 2.28+ i686

numkong-7.5.0-cp312-cp312-macosx_11_0_arm64.whl (1.4 MB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

numkong-7.5.0-cp312-cp312-macosx_10_13_x86_64.whl (1.5 MB view details)

Uploaded CPython 3.12macOS 10.13+ x86-64

numkong-7.5.0-cp311-cp311-win_arm64.whl (439.3 kB view details)

Uploaded CPython 3.11Windows ARM64

numkong-7.5.0-cp311-cp311-win_amd64.whl (473.6 kB view details)

Uploaded CPython 3.11Windows x86-64

numkong-7.5.0-cp311-cp311-musllinux_1_2_x86_64.whl (10.6 MB view details)

Uploaded CPython 3.11musllinux: musl 1.2+ x86-64

numkong-7.5.0-cp311-cp311-musllinux_1_2_s390x.whl (2.7 MB view details)

Uploaded CPython 3.11musllinux: musl 1.2+ s390x

numkong-7.5.0-cp311-cp311-musllinux_1_2_ppc64le.whl (3.2 MB view details)

Uploaded CPython 3.11musllinux: musl 1.2+ ppc64le

numkong-7.5.0-cp311-cp311-musllinux_1_2_i686.whl (2.7 MB view details)

Uploaded CPython 3.11musllinux: musl 1.2+ i686

numkong-7.5.0-cp311-cp311-musllinux_1_2_aarch64.whl (5.7 MB view details)

Uploaded CPython 3.11musllinux: musl 1.2+ ARM64

numkong-7.5.0-cp311-cp311-manylinux_2_28_x86_64.whl (10.8 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.28+ x86-64

numkong-7.5.0-cp311-cp311-manylinux_2_28_aarch64.whl (5.8 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.28+ ARM64

numkong-7.5.0-cp311-cp311-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl (2.9 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ s390xmanylinux: glibc 2.28+ s390x

numkong-7.5.0-cp311-cp311-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl (3.2 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ ppc64lemanylinux: glibc 2.28+ ppc64le

numkong-7.5.0-cp311-cp311-manylinux2014_i686.manylinux_2_17_i686.manylinux_2_28_i686.whl (2.6 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ i686manylinux: glibc 2.28+ i686

numkong-7.5.0-cp311-cp311-macosx_11_0_arm64.whl (1.4 MB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

numkong-7.5.0-cp311-cp311-macosx_10_9_x86_64.whl (1.5 MB view details)

Uploaded CPython 3.11macOS 10.9+ x86-64

numkong-7.5.0-cp310-cp310-win_arm64.whl (439.4 kB view details)

Uploaded CPython 3.10Windows ARM64

numkong-7.5.0-cp310-cp310-win_amd64.whl (473.6 kB view details)

Uploaded CPython 3.10Windows x86-64

numkong-7.5.0-cp310-cp310-musllinux_1_2_x86_64.whl (10.6 MB view details)

Uploaded CPython 3.10musllinux: musl 1.2+ x86-64

numkong-7.5.0-cp310-cp310-musllinux_1_2_s390x.whl (2.7 MB view details)

Uploaded CPython 3.10musllinux: musl 1.2+ s390x

numkong-7.5.0-cp310-cp310-musllinux_1_2_ppc64le.whl (3.2 MB view details)

Uploaded CPython 3.10musllinux: musl 1.2+ ppc64le

numkong-7.5.0-cp310-cp310-musllinux_1_2_i686.whl (2.7 MB view details)

Uploaded CPython 3.10musllinux: musl 1.2+ i686

numkong-7.5.0-cp310-cp310-musllinux_1_2_aarch64.whl (5.7 MB view details)

Uploaded CPython 3.10musllinux: musl 1.2+ ARM64

numkong-7.5.0-cp310-cp310-manylinux_2_28_x86_64.whl (10.8 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.28+ x86-64

numkong-7.5.0-cp310-cp310-manylinux_2_28_aarch64.whl (5.8 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.28+ ARM64

numkong-7.5.0-cp310-cp310-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl (2.8 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ s390xmanylinux: glibc 2.28+ s390x

numkong-7.5.0-cp310-cp310-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl (3.2 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ ppc64lemanylinux: glibc 2.28+ ppc64le

numkong-7.5.0-cp310-cp310-manylinux2014_i686.manylinux_2_17_i686.manylinux_2_28_i686.whl (2.6 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ i686manylinux: glibc 2.28+ i686

numkong-7.5.0-cp310-cp310-macosx_11_0_arm64.whl (1.4 MB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

numkong-7.5.0-cp310-cp310-macosx_10_9_x86_64.whl (1.5 MB view details)

Uploaded CPython 3.10macOS 10.9+ x86-64

File details

Details for the file numkong-7.5.0.tar.gz.

File metadata

  • Download URL: numkong-7.5.0.tar.gz
  • Upload date:
  • Size: 1.2 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for numkong-7.5.0.tar.gz
Algorithm Hash digest
SHA256 62586211ef1074b15af3c58f0935377023198c3d748fd12305b7cee29a66de5e
MD5 ea4fc00512c4831810f74e3f2b2f9fa0
BLAKE2b-256 8cfb2a2c738a2ab684d574b6bb913db64c6fbcc32ed9161310ead92a45c6ad82

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.5.0.tar.gz:

Publisher: release-python.yml on ashvardanian/NumKong

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file numkong-7.5.0-cp314-cp314t-win_arm64.whl.

File metadata

  • Download URL: numkong-7.5.0-cp314-cp314t-win_arm64.whl
  • Upload date:
  • Size: 461.1 kB
  • Tags: CPython 3.14t, Windows ARM64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for numkong-7.5.0-cp314-cp314t-win_arm64.whl
Algorithm Hash digest
SHA256 d530fd0983bcbfb6b14209baa356dac3002e906f5d49d30cc20eb3117d81f9ca
MD5 e24c2c06f9199f39d30e7bcca72f8af0
BLAKE2b-256 fd831da97f690cae2327c4e96491944b379ef2e7c4e2beebf897dfc564b0d1b6

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.5.0-cp314-cp314t-win_arm64.whl:

Publisher: release-python.yml on ashvardanian/NumKong

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file numkong-7.5.0-cp314-cp314t-win_amd64.whl.

File metadata

  • Download URL: numkong-7.5.0-cp314-cp314t-win_amd64.whl
  • Upload date:
  • Size: 492.0 kB
  • Tags: CPython 3.14t, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for numkong-7.5.0-cp314-cp314t-win_amd64.whl
Algorithm Hash digest
SHA256 895a9bc6d62023985658f3b7eada76f21260408d53607f43cae4b30760fc2c2c
MD5 4097a6b1af5b430ca3c150475d42cb14
BLAKE2b-256 e3efb09028efb7c92fd93a263857d46f0b36feae6f01dc3531a0bc1cb45bf240

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.5.0-cp314-cp314t-win_amd64.whl:

Publisher: release-python.yml on ashvardanian/NumKong

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file numkong-7.5.0-cp314-cp314t-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for numkong-7.5.0-cp314-cp314t-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 17b2c5a8a6c163fc937f8e9a36e88bb50c18d36313ced127ae97880b6801daed
MD5 043b69e99e880dac4158bf50aa1468b7
BLAKE2b-256 46bbbd2335ded78d9b8feae7520fa561a8b161f8cb7287ab1af83b3c11c05e76

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.5.0-cp314-cp314t-musllinux_1_2_x86_64.whl:

Publisher: release-python.yml on ashvardanian/NumKong

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file numkong-7.5.0-cp314-cp314t-musllinux_1_2_s390x.whl.

File metadata

File hashes

Hashes for numkong-7.5.0-cp314-cp314t-musllinux_1_2_s390x.whl
Algorithm Hash digest
SHA256 68cac4ad92f67823a4b09859a4e4eb55faff8a2d307a8402b24d0d29d6083e7b
MD5 7fe9088dc7349e873c9c39902a3fcdaf
BLAKE2b-256 44355ac9371d335046c7a11f5855be7b089c2aea656f15c6fbf716e61999352f

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.5.0-cp314-cp314t-musllinux_1_2_s390x.whl:

Publisher: release-python.yml on ashvardanian/NumKong

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file numkong-7.5.0-cp314-cp314t-musllinux_1_2_ppc64le.whl.

File metadata

File hashes

Hashes for numkong-7.5.0-cp314-cp314t-musllinux_1_2_ppc64le.whl
Algorithm Hash digest
SHA256 4443c6cf7cb807744d3c2b92e44984cc4ebd936539617a3774a4641a09cc02d6
MD5 269bc8ca7aae79c8ca538d220cdcdf6b
BLAKE2b-256 ab7a2c28763f804c00bc6d8490120ebd200ad191ff6357e0c1c550974bac9b66

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.5.0-cp314-cp314t-musllinux_1_2_ppc64le.whl:

Publisher: release-python.yml on ashvardanian/NumKong

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file numkong-7.5.0-cp314-cp314t-musllinux_1_2_i686.whl.

File metadata

File hashes

Hashes for numkong-7.5.0-cp314-cp314t-musllinux_1_2_i686.whl
Algorithm Hash digest
SHA256 e049c7aa0ae11c52185b668a5ac2259ead08035a6ba6fb15f3a79412c34a4009
MD5 a3c325d4703e3b0c8355ade0a5336001
BLAKE2b-256 63510503f95e23ea81fcfeddf21f9eaeb4ef599a2be4499edd242aed502b327c

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.5.0-cp314-cp314t-musllinux_1_2_i686.whl:

Publisher: release-python.yml on ashvardanian/NumKong

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file numkong-7.5.0-cp314-cp314t-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for numkong-7.5.0-cp314-cp314t-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 e28968fb6ae78c76a734dfe5e2af65deeb01b043c93562b9bc2a0fbc614359c9
MD5 cd6b1ad63fa499363baafe98ed8b45a3
BLAKE2b-256 65f81d343b2adc69dcffc0301e5dfee9fba09932c8851b907bcc8a8936506213

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.5.0-cp314-cp314t-musllinux_1_2_aarch64.whl:

Publisher: release-python.yml on ashvardanian/NumKong

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file numkong-7.5.0-cp314-cp314t-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for numkong-7.5.0-cp314-cp314t-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 e22dbfef2dacdc9ea6b3df5f8d35682b66ab9a735bbbaadbf9655e4af1c99e07
MD5 fb120a9675b3903192d5c428ad11b272
BLAKE2b-256 55e4b176be7d6f3c8ba3c94410292382943830e2ba9634ab06242e3360ddaa8b

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.5.0-cp314-cp314t-manylinux_2_28_x86_64.whl:

Publisher: release-python.yml on ashvardanian/NumKong

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file numkong-7.5.0-cp314-cp314t-manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for numkong-7.5.0-cp314-cp314t-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 60766aead962c28a6e268f4b1acc86ac123c0b375ef81e6adedcc6bb40bed9c8
MD5 a10586b0f0f3f831c6e0a564d827af96
BLAKE2b-256 a3ed64ab36fceb92ebc922577bdc11756029fe232387b3ca738dc3928d0f38d0

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.5.0-cp314-cp314t-manylinux_2_28_aarch64.whl:

Publisher: release-python.yml on ashvardanian/NumKong

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file numkong-7.5.0-cp314-cp314t-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl.

File metadata

File hashes

Hashes for numkong-7.5.0-cp314-cp314t-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl
Algorithm Hash digest
SHA256 54c11a6c2a74d0d4f33dbd387a951cb4a4b2c682df584d1314bf1c9fd2e5482a
MD5 31b9111841d3f07ece56e4f126faaab1
BLAKE2b-256 bdf2a9efaf949e1fb25bb0bf87caa46c8f53a8fc4559570c0dd964f775b4c72a

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.5.0-cp314-cp314t-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl:

Publisher: release-python.yml on ashvardanian/NumKong

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file numkong-7.5.0-cp314-cp314t-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl.

File metadata

File hashes

Hashes for numkong-7.5.0-cp314-cp314t-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl
Algorithm Hash digest
SHA256 430d661dcdea2bdcd8e5f80d6dc208445c2b214a83fb800df4a247b9d419f483
MD5 297a2d24716b7eb6cb6e95b66ad0b006
BLAKE2b-256 5cb5f4e1f1d9966c722f269ff7c303bbac52fda92d654db654d78309441ccc6c

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.5.0-cp314-cp314t-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl:

Publisher: release-python.yml on ashvardanian/NumKong

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file numkong-7.5.0-cp314-cp314t-manylinux2014_i686.manylinux_2_17_i686.manylinux_2_28_i686.whl.

File metadata

File hashes

Hashes for numkong-7.5.0-cp314-cp314t-manylinux2014_i686.manylinux_2_17_i686.manylinux_2_28_i686.whl
Algorithm Hash digest
SHA256 8588dd0379f12fa30b848af9ae8e524cd5531595ace6fdbde80450fd60f68877
MD5 34c4bb91b83f8bb5c196ffb2758d8f0a
BLAKE2b-256 f7804dfa771c51651881bb9a21c2170bae9326c5777e7dbd214de4ba6a499078

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.5.0-cp314-cp314t-manylinux2014_i686.manylinux_2_17_i686.manylinux_2_28_i686.whl:

Publisher: release-python.yml on ashvardanian/NumKong

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file numkong-7.5.0-cp314-cp314t-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for numkong-7.5.0-cp314-cp314t-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 f8f6168db1533ec4d01391e41aa724af59fa54b78a23275e684890506fe577b4
MD5 fc88612f928c5fcb581df35e4ff90ce9
BLAKE2b-256 dd0575c762652cc39c456e89de0c3759dce14e75c89eed2d0ad96e4b23b0a6a1

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.5.0-cp314-cp314t-macosx_11_0_arm64.whl:

Publisher: release-python.yml on ashvardanian/NumKong

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file numkong-7.5.0-cp314-cp314t-macosx_10_15_x86_64.whl.

File metadata

File hashes

Hashes for numkong-7.5.0-cp314-cp314t-macosx_10_15_x86_64.whl
Algorithm Hash digest
SHA256 0f6fe736a76ec55f324b6fb2226ddcb0f5d46cec52d8ff12b270d350d41ee474
MD5 8cc6e972405d9f68e18a9a1620b4f498
BLAKE2b-256 a1c7999ed9544285f9e9e4831341c743971e4354239ac05d6201d0d30bc17e4d

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.5.0-cp314-cp314t-macosx_10_15_x86_64.whl:

Publisher: release-python.yml on ashvardanian/NumKong

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file numkong-7.5.0-cp314-cp314-win_arm64.whl.

File metadata

  • Download URL: numkong-7.5.0-cp314-cp314-win_arm64.whl
  • Upload date:
  • Size: 460.1 kB
  • Tags: CPython 3.14, Windows ARM64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for numkong-7.5.0-cp314-cp314-win_arm64.whl
Algorithm Hash digest
SHA256 5a9354a9a89f153d395db67af1d230dfd5655e0b3d52e65da4891b2ce63aaeca
MD5 9eb24693bd4ed2e40292ac8bbb9bc750
BLAKE2b-256 a4f377b883435da39cd778a98482f6d790722f0edfe93881734de6c7eee76cff

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.5.0-cp314-cp314-win_arm64.whl:

Publisher: release-python.yml on ashvardanian/NumKong

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file numkong-7.5.0-cp314-cp314-win_amd64.whl.

File metadata

  • Download URL: numkong-7.5.0-cp314-cp314-win_amd64.whl
  • Upload date:
  • Size: 489.2 kB
  • Tags: CPython 3.14, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for numkong-7.5.0-cp314-cp314-win_amd64.whl
Algorithm Hash digest
SHA256 8f8dcd842f12042894b241b50736f947993d2a2b108cdc0e641f1393bfe625ff
MD5 fefe55138e00dff388312ad9f6346848
BLAKE2b-256 fb41cbb132f8ef6cdccd50ed73b0cd594193be0650a3388e9b84a4c69acc2477

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.5.0-cp314-cp314-win_amd64.whl:

Publisher: release-python.yml on ashvardanian/NumKong

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file numkong-7.5.0-cp314-cp314-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for numkong-7.5.0-cp314-cp314-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 37927869c695a65ca80ae6ac15bc66d11d8239ea5b9f7dc2bb2eb6e632808f8d
MD5 aa9b560028e19682075495878a6be101
BLAKE2b-256 f3338a66cdd545ab08e2b650ea13e6e24d1192623f2f7fe096fe753b28cb0898

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.5.0-cp314-cp314-musllinux_1_2_x86_64.whl:

Publisher: release-python.yml on ashvardanian/NumKong

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file numkong-7.5.0-cp314-cp314-musllinux_1_2_s390x.whl.

File metadata

File hashes

Hashes for numkong-7.5.0-cp314-cp314-musllinux_1_2_s390x.whl
Algorithm Hash digest
SHA256 9fb6e1f0a97382c1f5e02bc8386715a34065619917b9290f56e266ed800303ed
MD5 9e97b724ce42bda2971fde9435878955
BLAKE2b-256 4c2554ccb6a33aa8d9df19c9d1ce59dc2fa349b7b257b450f109f36727f4dbfc

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.5.0-cp314-cp314-musllinux_1_2_s390x.whl:

Publisher: release-python.yml on ashvardanian/NumKong

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file numkong-7.5.0-cp314-cp314-musllinux_1_2_ppc64le.whl.

File metadata

File hashes

Hashes for numkong-7.5.0-cp314-cp314-musllinux_1_2_ppc64le.whl
Algorithm Hash digest
SHA256 0b53c19bf0de06edb38d53a30e9afc71b079bd0a5f060082924ce4c490e97e2c
MD5 b4e591f0e7d688acc5e70f1deee8bc01
BLAKE2b-256 0f1838e6a7857899ec3f74e169703f3a250f1616110652ba5f3656cb60648b97

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.5.0-cp314-cp314-musllinux_1_2_ppc64le.whl:

Publisher: release-python.yml on ashvardanian/NumKong

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file numkong-7.5.0-cp314-cp314-musllinux_1_2_i686.whl.

File metadata

File hashes

Hashes for numkong-7.5.0-cp314-cp314-musllinux_1_2_i686.whl
Algorithm Hash digest
SHA256 17f851774920b60fc5fc9da1c08facbcef15b792c0ac1aa9a3ea427f4b9dc1e4
MD5 bebabff7b29ed0620a9af8bda41a04f4
BLAKE2b-256 cbbbeb6e7c757226bcf0bf048dee6bcbeb1bd765230a41cac36b9cb2e78682aa

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.5.0-cp314-cp314-musllinux_1_2_i686.whl:

Publisher: release-python.yml on ashvardanian/NumKong

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file numkong-7.5.0-cp314-cp314-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for numkong-7.5.0-cp314-cp314-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 ec6966b83407d6c01fa42b761a84d638c07653e53b9dab1ec2912731310fc643
MD5 d4677b72e949b74aaeb8fd6c1e501a54
BLAKE2b-256 de2030cea5ba94cdb76e6d3ffc983638d331f610c14400582400c2c66ea7cc97

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.5.0-cp314-cp314-musllinux_1_2_aarch64.whl:

Publisher: release-python.yml on ashvardanian/NumKong

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file numkong-7.5.0-cp314-cp314-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for numkong-7.5.0-cp314-cp314-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 fb3db51eaaaf39e9a7067af2a9eb56a67505ccb79c9abed50da2cbb45501f5f4
MD5 88be2b130604072d196013b893ecc44b
BLAKE2b-256 1324b6b7b51c6cc1ee202fa03032ba193d9b732795e99265ae46b6b0e9597ad9

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.5.0-cp314-cp314-manylinux_2_28_x86_64.whl:

Publisher: release-python.yml on ashvardanian/NumKong

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file numkong-7.5.0-cp314-cp314-manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for numkong-7.5.0-cp314-cp314-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 3dc0d81f4bf013212551fc6b1c3044e2e2a4fa8bc4e208857b7a83fafdea5a84
MD5 0e23f012e40603cffa0b51fd637914ca
BLAKE2b-256 be405ea53778688cd7442510e24fff78319f4b948e92203b7a2395e66bc509f7

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.5.0-cp314-cp314-manylinux_2_28_aarch64.whl:

Publisher: release-python.yml on ashvardanian/NumKong

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file numkong-7.5.0-cp314-cp314-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl.

File metadata

File hashes

Hashes for numkong-7.5.0-cp314-cp314-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl
Algorithm Hash digest
SHA256 63192f6d31f257f5321e2fca73eed3ece71c33678c99c14fdc0635ebe9cc589c
MD5 d9bd1783a6aab36609e681f6c2d9bc14
BLAKE2b-256 421e088ef084c91445e4f1f8f872546c43188e1875fb6512c49bfbd6024fed4f

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.5.0-cp314-cp314-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl:

Publisher: release-python.yml on ashvardanian/NumKong

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file numkong-7.5.0-cp314-cp314-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl.

File metadata

File hashes

Hashes for numkong-7.5.0-cp314-cp314-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl
Algorithm Hash digest
SHA256 66cbc562b924616affad40244ff1e304ffe990e0af9c8ebaadb2c8befdf0626d
MD5 5ed59f8650ceed66739a9e5409d59a37
BLAKE2b-256 d038515edfdcc67ad57680a138b79b78a8f4ddf40cb9d150552283eb84d43cef

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.5.0-cp314-cp314-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl:

Publisher: release-python.yml on ashvardanian/NumKong

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file numkong-7.5.0-cp314-cp314-manylinux2014_i686.manylinux_2_17_i686.manylinux_2_28_i686.whl.

File metadata

File hashes

Hashes for numkong-7.5.0-cp314-cp314-manylinux2014_i686.manylinux_2_17_i686.manylinux_2_28_i686.whl
Algorithm Hash digest
SHA256 841e425822537a9349d561144306e61c0024ce98b69b20271d2a1548f35b9f7d
MD5 b6c9186f2c54b7328bdcdde11774ab54
BLAKE2b-256 5cf4a1ac6af2b3f423be8b081b32532f0238945afc16e40afd24580b3675a858

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.5.0-cp314-cp314-manylinux2014_i686.manylinux_2_17_i686.manylinux_2_28_i686.whl:

Publisher: release-python.yml on ashvardanian/NumKong

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file numkong-7.5.0-cp314-cp314-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for numkong-7.5.0-cp314-cp314-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 aeb96c386a3d5cbfd42434e326f21b1a01124db937dee17f25c8eb8a488f4471
MD5 52dca39aa46441411cebe52eb0667cd4
BLAKE2b-256 75d2d0b446ab5172ed05863153f6a3a271211c46c18f3b35c9269600d0d91922

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.5.0-cp314-cp314-macosx_11_0_arm64.whl:

Publisher: release-python.yml on ashvardanian/NumKong

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file numkong-7.5.0-cp314-cp314-macosx_10_15_x86_64.whl.

File metadata

File hashes

Hashes for numkong-7.5.0-cp314-cp314-macosx_10_15_x86_64.whl
Algorithm Hash digest
SHA256 d39836b7317e28911ccf373a74c55599bc09a336b864cfc9302f634f1d1af279
MD5 96ff3067a5a04392dbd6758beeab285b
BLAKE2b-256 998337895c6139587870dd9685e9385444aa017b52bdf3a6dbe40b867b682d88

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.5.0-cp314-cp314-macosx_10_15_x86_64.whl:

Publisher: release-python.yml on ashvardanian/NumKong

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file numkong-7.5.0-cp313-cp313t-win_arm64.whl.

File metadata

  • Download URL: numkong-7.5.0-cp313-cp313t-win_arm64.whl
  • Upload date:
  • Size: 440.1 kB
  • Tags: CPython 3.13t, Windows ARM64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for numkong-7.5.0-cp313-cp313t-win_arm64.whl
Algorithm Hash digest
SHA256 ed6219edb8f08f807fa6fb49a2d95a66f474c07f32971595b99b9a4ad7ca6619
MD5 9cded093f7b72f9ac8e19e2a9e2d50d1
BLAKE2b-256 5a438085207a52fcfeef5a3097ee0188511aabe0551018eae9492b4de8a73828

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.5.0-cp313-cp313t-win_arm64.whl:

Publisher: release-python.yml on ashvardanian/NumKong

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file numkong-7.5.0-cp313-cp313t-win_amd64.whl.

File metadata

  • Download URL: numkong-7.5.0-cp313-cp313t-win_amd64.whl
  • Upload date:
  • Size: 476.6 kB
  • Tags: CPython 3.13t, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for numkong-7.5.0-cp313-cp313t-win_amd64.whl
Algorithm Hash digest
SHA256 cb88538d0465a501b9e69617f08b213c5f7d6da2b0fc68467d44c00d857868e9
MD5 f9bc32577b4c849b75fccff4f515a68b
BLAKE2b-256 23f236ece240f0ede8dcda6ef1aea6ec45cc73281e8e3a22ad2d930361c3b4d3

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.5.0-cp313-cp313t-win_amd64.whl:

Publisher: release-python.yml on ashvardanian/NumKong

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file numkong-7.5.0-cp313-cp313t-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for numkong-7.5.0-cp313-cp313t-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 9dd0f5caf217fec0f74e88b0c7d94a1af62e1b41dda60d9de2b7d07673e80fe6
MD5 cd0739802e5d5c13b991b251a66667aa
BLAKE2b-256 dd2facf54a0c226703765a82898a08cbbb8257593a1049a5f0cc53c21152f846

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.5.0-cp313-cp313t-musllinux_1_2_x86_64.whl:

Publisher: release-python.yml on ashvardanian/NumKong

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file numkong-7.5.0-cp313-cp313t-musllinux_1_2_s390x.whl.

File metadata

File hashes

Hashes for numkong-7.5.0-cp313-cp313t-musllinux_1_2_s390x.whl
Algorithm Hash digest
SHA256 f66919cc1a25a8360aeb1bf5da3edb491f07c452a274e409bc4e05d756786365
MD5 120c0221cba2d03fa75565991f596f80
BLAKE2b-256 bfbd2ea195b86dcfe76db1aac9f035a2258716b5e1deb730fd430a1dc914b030

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.5.0-cp313-cp313t-musllinux_1_2_s390x.whl:

Publisher: release-python.yml on ashvardanian/NumKong

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file numkong-7.5.0-cp313-cp313t-musllinux_1_2_ppc64le.whl.

File metadata

File hashes

Hashes for numkong-7.5.0-cp313-cp313t-musllinux_1_2_ppc64le.whl
Algorithm Hash digest
SHA256 da8b54eac94e0d440fc38e408729ebcec8d0552715c4d01bfdf0ccda40c31224
MD5 0341d9920ba9139bd6d3d45f2d71ae51
BLAKE2b-256 15161070152429be739d555715fa52fa5a4c674638655e933f53889f9010ebab

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.5.0-cp313-cp313t-musllinux_1_2_ppc64le.whl:

Publisher: release-python.yml on ashvardanian/NumKong

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file numkong-7.5.0-cp313-cp313t-musllinux_1_2_i686.whl.

File metadata

File hashes

Hashes for numkong-7.5.0-cp313-cp313t-musllinux_1_2_i686.whl
Algorithm Hash digest
SHA256 146bf09e738149b85808b24382509ea1afea66b59d67ce33331544d70371ae28
MD5 fd97cb0e5e5a1209e41131df09877425
BLAKE2b-256 68f456643e88f9e72c976adbaba352d7bc2d3de6e09018adf1fecd9b398a1adf

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.5.0-cp313-cp313t-musllinux_1_2_i686.whl:

Publisher: release-python.yml on ashvardanian/NumKong

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file numkong-7.5.0-cp313-cp313t-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for numkong-7.5.0-cp313-cp313t-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 d34bdf7391cc4b7cc96a671fe0dee25399259a9ac51df7f4b3c8a7b9f252517e
MD5 6d52b039037cbfbeaf5177201342fb98
BLAKE2b-256 adcb49d3340201f55324581e097b71e1a72642e92e8351278a3ca6417e41271f

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.5.0-cp313-cp313t-musllinux_1_2_aarch64.whl:

Publisher: release-python.yml on ashvardanian/NumKong

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file numkong-7.5.0-cp313-cp313t-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for numkong-7.5.0-cp313-cp313t-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 0b2a8b0d5bf4380dc2800afdb1a3ba80381f10970ce626b4b1bcc24a90f4a225
MD5 9b2b4a4b4d148dc9cf73652d7418334f
BLAKE2b-256 03ca1a94dff8cc228095fa35dd7eecbeeb13bc69fc9f8e8775a5f3f09f6d8933

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.5.0-cp313-cp313t-manylinux_2_28_x86_64.whl:

Publisher: release-python.yml on ashvardanian/NumKong

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file numkong-7.5.0-cp313-cp313t-manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for numkong-7.5.0-cp313-cp313t-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 7bbb2045e1aefaaaea57bba8281741c673308055b63bfce6a7b7a505f1e7d1c1
MD5 7df03af19b65568cf980943ea6571bf7
BLAKE2b-256 949ef01576acdeb91e528597d7f8e2e1c4e27218a8a0089a870548fad7b19c74

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.5.0-cp313-cp313t-manylinux_2_28_aarch64.whl:

Publisher: release-python.yml on ashvardanian/NumKong

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file numkong-7.5.0-cp313-cp313t-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl.

File metadata

File hashes

Hashes for numkong-7.5.0-cp313-cp313t-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl
Algorithm Hash digest
SHA256 1c98f761cc8b009d4b459343d74c28814c85d313710e6783a7768ae5f87694a5
MD5 5be2a796c0a9409052603f00a255cfc7
BLAKE2b-256 46c960153d140a5e63bc5c791269151efacd0ac97d796b8dd4ff371e3dee4317

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.5.0-cp313-cp313t-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl:

Publisher: release-python.yml on ashvardanian/NumKong

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file numkong-7.5.0-cp313-cp313t-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl.

File metadata

File hashes

Hashes for numkong-7.5.0-cp313-cp313t-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl
Algorithm Hash digest
SHA256 e7f6e1ed48fd5aa515ebf646e7b0e725328d6265e6e9fff70de7ae57de9e6695
MD5 2ab03a15528457bab3fe1f7445fdc09c
BLAKE2b-256 c972032f191d799affd4f75b4a15f2f9375d7c90a3647a3164696aedd91243fc

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.5.0-cp313-cp313t-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl:

Publisher: release-python.yml on ashvardanian/NumKong

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file numkong-7.5.0-cp313-cp313t-manylinux2014_i686.manylinux_2_17_i686.manylinux_2_28_i686.whl.

File metadata

File hashes

Hashes for numkong-7.5.0-cp313-cp313t-manylinux2014_i686.manylinux_2_17_i686.manylinux_2_28_i686.whl
Algorithm Hash digest
SHA256 e2811ec4152d8e3e30b5576ca6a212765dcc4796acc833916b1ac2f55ba9c49f
MD5 b76aec2eff44c5dc2597921acfd2a3e4
BLAKE2b-256 02152592c3eedf007b7d31a578fdd794c50139c4d14ff0146f7c399eb0cbb043

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.5.0-cp313-cp313t-manylinux2014_i686.manylinux_2_17_i686.manylinux_2_28_i686.whl:

Publisher: release-python.yml on ashvardanian/NumKong

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file numkong-7.5.0-cp313-cp313t-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for numkong-7.5.0-cp313-cp313t-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 47417d872bc42ec4f7ecf8418b675486a2a1261129649c666f8923d8fc28a209
MD5 09c0b34c4ef3416b2dd70b2b4cf41a39
BLAKE2b-256 e8716f55bb86e49b0f745edc1fec00644120855a5b819dedeb5786aa8fde3e34

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.5.0-cp313-cp313t-macosx_11_0_arm64.whl:

Publisher: release-python.yml on ashvardanian/NumKong

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file numkong-7.5.0-cp313-cp313t-macosx_10_13_x86_64.whl.

File metadata

File hashes

Hashes for numkong-7.5.0-cp313-cp313t-macosx_10_13_x86_64.whl
Algorithm Hash digest
SHA256 4b97dfbac159d916eaea581eb5dd89bc07713c4f8f174bff1cd63ad2bbeed0d4
MD5 b8e0dda42fc6514a0e032719d6290391
BLAKE2b-256 a7cf9e97a1da1ac34a7f949710aad43eca47b602cfe1ea9a0a7652da3ebfc27f

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.5.0-cp313-cp313t-macosx_10_13_x86_64.whl:

Publisher: release-python.yml on ashvardanian/NumKong

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file numkong-7.5.0-cp313-cp313-win_arm64.whl.

File metadata

  • Download URL: numkong-7.5.0-cp313-cp313-win_arm64.whl
  • Upload date:
  • Size: 439.4 kB
  • Tags: CPython 3.13, Windows ARM64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for numkong-7.5.0-cp313-cp313-win_arm64.whl
Algorithm Hash digest
SHA256 82fc278fee79b182fcc432ffa695a3443a8b636025fb410bc2826060a38408e7
MD5 c323c9b5303289a06f20244582cc3ab6
BLAKE2b-256 56adb6d8b76d466aa698c981e8404de8a51585d256726fdd10ee5527362a0eca

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.5.0-cp313-cp313-win_arm64.whl:

Publisher: release-python.yml on ashvardanian/NumKong

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file numkong-7.5.0-cp313-cp313-win_amd64.whl.

File metadata

  • Download URL: numkong-7.5.0-cp313-cp313-win_amd64.whl
  • Upload date:
  • Size: 474.2 kB
  • Tags: CPython 3.13, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for numkong-7.5.0-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 b46c908efeece77283fa78cd1e452ff9df351d1a8c0c7e0b1dc03a25d8366915
MD5 68df01773641d4996675e765142d65f1
BLAKE2b-256 ecb7726110407a5df218d9b6ec5b6e3c5570c36032cb995e9399df4b173b8777

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.5.0-cp313-cp313-win_amd64.whl:

Publisher: release-python.yml on ashvardanian/NumKong

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file numkong-7.5.0-cp313-cp313-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for numkong-7.5.0-cp313-cp313-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 dbf42253c5e5c4da6ba5c5cba594e28f37f1bcc38769cc28cfba43e9a712f435
MD5 f48004870d5cc05205c2b6534f81bd58
BLAKE2b-256 507a0ca3fb20e1a8fc0dc503ef609f386125eee91a72f9b09e2e904692e5e9b9

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.5.0-cp313-cp313-musllinux_1_2_x86_64.whl:

Publisher: release-python.yml on ashvardanian/NumKong

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file numkong-7.5.0-cp313-cp313-musllinux_1_2_s390x.whl.

File metadata

File hashes

Hashes for numkong-7.5.0-cp313-cp313-musllinux_1_2_s390x.whl
Algorithm Hash digest
SHA256 9293c558fc9b95b4dae49debd95fe5b061455a9cd506db3ce83a04e7c502ca5c
MD5 a60becc3071572af2d1fecd828f381f2
BLAKE2b-256 65063978311a50a93008d1635b0ef619f45edbf8417edeb17faefed4c990b740

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.5.0-cp313-cp313-musllinux_1_2_s390x.whl:

Publisher: release-python.yml on ashvardanian/NumKong

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file numkong-7.5.0-cp313-cp313-musllinux_1_2_ppc64le.whl.

File metadata

File hashes

Hashes for numkong-7.5.0-cp313-cp313-musllinux_1_2_ppc64le.whl
Algorithm Hash digest
SHA256 91056e5a76d9c44124dbde9440d11c25bf54a781744aa81708e47147055a9f4e
MD5 d7eeb1c2d9117ce18e702df1ccddb137
BLAKE2b-256 c1729d81bf8c88997b0c994a1f3829e8ed00857b691fb177049f1e8bd6b5166f

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.5.0-cp313-cp313-musllinux_1_2_ppc64le.whl:

Publisher: release-python.yml on ashvardanian/NumKong

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file numkong-7.5.0-cp313-cp313-musllinux_1_2_i686.whl.

File metadata

File hashes

Hashes for numkong-7.5.0-cp313-cp313-musllinux_1_2_i686.whl
Algorithm Hash digest
SHA256 e52e711b69983a757489ac601c41e00221194fd431df557dd6088fc4b350d32e
MD5 e250585ad940c51af6e9cc573c467937
BLAKE2b-256 dba436044337fb9f14aa4f869ba4e7aea6ffc05dceb277c6f11fccb12d222778

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.5.0-cp313-cp313-musllinux_1_2_i686.whl:

Publisher: release-python.yml on ashvardanian/NumKong

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file numkong-7.5.0-cp313-cp313-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for numkong-7.5.0-cp313-cp313-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 8619f1fe5a45d976987d465557e590c209e7f8a6be6a6bfbd99c37fcd589bc1c
MD5 2fc0a535b81b69fb673b2c74d7de0442
BLAKE2b-256 3665c6b4011c1fb1501be30caf5086c1d85d6e7a33b6ebaa79c166f1f154fa4c

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.5.0-cp313-cp313-musllinux_1_2_aarch64.whl:

Publisher: release-python.yml on ashvardanian/NumKong

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file numkong-7.5.0-cp313-cp313-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for numkong-7.5.0-cp313-cp313-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 6777dbcc0f1a8b91189ca73dbc7a163f81c6cd226f25aaac22305356e47ca0a8
MD5 f8f0ac5c4ddd91b4d08798e8ec482721
BLAKE2b-256 bd099a161d4f15952f8bdd59128463ca14980ad08ac506d3b3a100e073e633de

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.5.0-cp313-cp313-manylinux_2_28_x86_64.whl:

Publisher: release-python.yml on ashvardanian/NumKong

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file numkong-7.5.0-cp313-cp313-manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for numkong-7.5.0-cp313-cp313-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 66af3502e37aa29e93ff7b70e8716c7defde7b4edc802f6bf63c7c1044184d34
MD5 40adcc5b7ad0ced893369d8ff2d44f82
BLAKE2b-256 f9ed176c7cf6733cf6cde215c8680d627fe855150b8edcd1af97ce75ca8fd732

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.5.0-cp313-cp313-manylinux_2_28_aarch64.whl:

Publisher: release-python.yml on ashvardanian/NumKong

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file numkong-7.5.0-cp313-cp313-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl.

File metadata

File hashes

Hashes for numkong-7.5.0-cp313-cp313-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl
Algorithm Hash digest
SHA256 05c210824b8cc814eed36603377b3fa6a73091b12606e7d42044e3242e6ee7e5
MD5 fff46886004bf1075e2443c10a657483
BLAKE2b-256 696f57f86d0ec123929e1d3a2a85e8d8362c45b6047200e499ca04a099f134ca

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.5.0-cp313-cp313-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl:

Publisher: release-python.yml on ashvardanian/NumKong

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file numkong-7.5.0-cp313-cp313-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl.

File metadata

File hashes

Hashes for numkong-7.5.0-cp313-cp313-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl
Algorithm Hash digest
SHA256 3170c1cdcc9275b039f71cc6043005160556ad724d27df9ead68aa06883011fc
MD5 598e1dff6fb303e526b4f660e282c8ec
BLAKE2b-256 631036d0347d45b7df38fb3a0a9fe3190083a0d307fe1f81dcf0856a40ebe40e

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.5.0-cp313-cp313-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl:

Publisher: release-python.yml on ashvardanian/NumKong

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file numkong-7.5.0-cp313-cp313-manylinux2014_i686.manylinux_2_17_i686.manylinux_2_28_i686.whl.

File metadata

File hashes

Hashes for numkong-7.5.0-cp313-cp313-manylinux2014_i686.manylinux_2_17_i686.manylinux_2_28_i686.whl
Algorithm Hash digest
SHA256 3013cad580580ca86ea675fa6bd8c778198f129e07953f63cf122405b5029712
MD5 caca928c6b0199086fca786d3bafa0aa
BLAKE2b-256 e04fcb4508be11f8900d6ba9775c97136764c6c7f364df5e8ae6282a8cd998ac

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.5.0-cp313-cp313-manylinux2014_i686.manylinux_2_17_i686.manylinux_2_28_i686.whl:

Publisher: release-python.yml on ashvardanian/NumKong

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file numkong-7.5.0-cp313-cp313-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for numkong-7.5.0-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 df947b16e277eabbe93f216b50529a56e6b203b72bfb6f03ea6dc01b6fe423ec
MD5 d4a516affdfe10777c851638778648f8
BLAKE2b-256 1990e20df2fe1e9fb57b63599e7ce996fe2cf90003a0711be9495b098c344f14

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.5.0-cp313-cp313-macosx_11_0_arm64.whl:

Publisher: release-python.yml on ashvardanian/NumKong

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file numkong-7.5.0-cp313-cp313-macosx_10_13_x86_64.whl.

File metadata

File hashes

Hashes for numkong-7.5.0-cp313-cp313-macosx_10_13_x86_64.whl
Algorithm Hash digest
SHA256 2ec0f5ab4ce68c3074e527151a238733771763ed6aec4a27555703b935c44af7
MD5 3418312949d716d5f37bf09dae71ed2c
BLAKE2b-256 d7eeadac87a0cfd63e5d62475ca37c238bbb121dd911c60fe756b1ad5db1b215

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.5.0-cp313-cp313-macosx_10_13_x86_64.whl:

Publisher: release-python.yml on ashvardanian/NumKong

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file numkong-7.5.0-cp312-cp312-win_arm64.whl.

File metadata

  • Download URL: numkong-7.5.0-cp312-cp312-win_arm64.whl
  • Upload date:
  • Size: 439.4 kB
  • Tags: CPython 3.12, Windows ARM64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for numkong-7.5.0-cp312-cp312-win_arm64.whl
Algorithm Hash digest
SHA256 063ec8233bf6daa915a6b5dec844b64b221cf86b7f83b9a0ddb4496c774aacbc
MD5 397cf7a6a2888ef2d9b2bf3239b4fa1e
BLAKE2b-256 0ffaa6ad91036ae57fc3b745236800a3b9363c7d63ca2011ae32332721591e1c

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.5.0-cp312-cp312-win_arm64.whl:

Publisher: release-python.yml on ashvardanian/NumKong

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file numkong-7.5.0-cp312-cp312-win_amd64.whl.

File metadata

  • Download URL: numkong-7.5.0-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 474.1 kB
  • Tags: CPython 3.12, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for numkong-7.5.0-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 5a3fed4e1410c1cac5362359158e1e210d9fdfb8d5e0c9412be1824ba9a8bd7e
MD5 a3122e6ca9f3354d3e14ccb187d7ffbe
BLAKE2b-256 956fb21a481084392c03d0d5a23d8d1cebf960c4a86d9fc2e0ca78cff8a12c8b

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.5.0-cp312-cp312-win_amd64.whl:

Publisher: release-python.yml on ashvardanian/NumKong

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file numkong-7.5.0-cp312-cp312-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for numkong-7.5.0-cp312-cp312-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 ea5f21cdbc476d0cf62f053c359037c841150b64f7cf9d88fc97575109b11e90
MD5 dc5cf90f805b7d9c1eb8567e3f0d4964
BLAKE2b-256 42753656760b47e5d33343ce6d054c7dba42598b901b3dd0348768e54a4d8eaa

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.5.0-cp312-cp312-musllinux_1_2_x86_64.whl:

Publisher: release-python.yml on ashvardanian/NumKong

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file numkong-7.5.0-cp312-cp312-musllinux_1_2_s390x.whl.

File metadata

File hashes

Hashes for numkong-7.5.0-cp312-cp312-musllinux_1_2_s390x.whl
Algorithm Hash digest
SHA256 366444adcb6b1d2295d54604f2eb01bf5bb867883dd038603d06613aa791a078
MD5 fe2a7398dcbab3e9374e9e24697d520f
BLAKE2b-256 49bd35794bfcc477ea597b7282757416c8eae8fbff648ca83b627eb870b9a8f1

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.5.0-cp312-cp312-musllinux_1_2_s390x.whl:

Publisher: release-python.yml on ashvardanian/NumKong

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file numkong-7.5.0-cp312-cp312-musllinux_1_2_ppc64le.whl.

File metadata

File hashes

Hashes for numkong-7.5.0-cp312-cp312-musllinux_1_2_ppc64le.whl
Algorithm Hash digest
SHA256 aafa8735a26fa47aa34d8f708d91ee4abf8f9102d10f73302eb72635ff6b2c34
MD5 2f7260f84fd3c0f7e4a310d6adf8f789
BLAKE2b-256 4628bd97d573d0a46630b9526cd7325d5ad128d307516869cf9bfd3568edb5b0

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.5.0-cp312-cp312-musllinux_1_2_ppc64le.whl:

Publisher: release-python.yml on ashvardanian/NumKong

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file numkong-7.5.0-cp312-cp312-musllinux_1_2_i686.whl.

File metadata

File hashes

Hashes for numkong-7.5.0-cp312-cp312-musllinux_1_2_i686.whl
Algorithm Hash digest
SHA256 0ed3b2c4a207a75e761ab77e301feda716d28b720988ccbeeaf48f0717374aa6
MD5 d3e52d9961f06ae7c172c4d1831d43f5
BLAKE2b-256 51f10621a3df5059f28c899cba489c26b13e66b92c49bca365938b3f1b825b6b

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.5.0-cp312-cp312-musllinux_1_2_i686.whl:

Publisher: release-python.yml on ashvardanian/NumKong

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file numkong-7.5.0-cp312-cp312-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for numkong-7.5.0-cp312-cp312-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 22118e4f56aade608c855a4ca584e5f674bfe9676597290195a1508e755adb42
MD5 f88f7bfd2dfd6f7f0668f0c82b3e07f6
BLAKE2b-256 6b9da9b7bfc3e4d4175d6c47d676b3da68a6e456dba39fcd07fd6a7b7d2a92ef

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.5.0-cp312-cp312-musllinux_1_2_aarch64.whl:

Publisher: release-python.yml on ashvardanian/NumKong

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file numkong-7.5.0-cp312-cp312-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for numkong-7.5.0-cp312-cp312-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 4639fbd85214901ed5b0438d602251283aea80ea132754456aae89a94301ef78
MD5 c779dac90d4399cb4bf89f23be1ef15a
BLAKE2b-256 7155be5fe572eb26a082c9faa348decb27fd1edc627f23abcdae8980e5e9d572

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.5.0-cp312-cp312-manylinux_2_28_x86_64.whl:

Publisher: release-python.yml on ashvardanian/NumKong

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file numkong-7.5.0-cp312-cp312-manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for numkong-7.5.0-cp312-cp312-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 94ea8c7b8c9c4eb43ac459d29aebb8c29a62d8ae99dbbe70c68a25826678e39f
MD5 c44ae1b9e80bd2259daddd180a0d535b
BLAKE2b-256 25d2c9890a0cfe063a38fc2b50f7f9bf1bb158b1d809cbebdf8cc82bc0ca42c9

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.5.0-cp312-cp312-manylinux_2_28_aarch64.whl:

Publisher: release-python.yml on ashvardanian/NumKong

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file numkong-7.5.0-cp312-cp312-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl.

File metadata

File hashes

Hashes for numkong-7.5.0-cp312-cp312-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl
Algorithm Hash digest
SHA256 c51078a94046896957ecf99b4f1de4c36c3c2d1648f676d6261be34ba6386481
MD5 f09fee9286ee8914f5762823500c511b
BLAKE2b-256 3adb4ac9e1dc22ee80c21d15e36c5e8243c23fbcdca05344a030ea2d653d18f8

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.5.0-cp312-cp312-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl:

Publisher: release-python.yml on ashvardanian/NumKong

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file numkong-7.5.0-cp312-cp312-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl.

File metadata

File hashes

Hashes for numkong-7.5.0-cp312-cp312-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl
Algorithm Hash digest
SHA256 219577a9a144f993353125c50c17dc7607f1b2b8752d5299dea6901509ecb10f
MD5 1e75c7a3463c886acb841c0271756424
BLAKE2b-256 74485de0b44d837efcdb5d9fab2f2a56e32515d0a5d9ed407a863fcce08b30d1

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.5.0-cp312-cp312-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl:

Publisher: release-python.yml on ashvardanian/NumKong

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file numkong-7.5.0-cp312-cp312-manylinux2014_i686.manylinux_2_17_i686.manylinux_2_28_i686.whl.

File metadata

File hashes

Hashes for numkong-7.5.0-cp312-cp312-manylinux2014_i686.manylinux_2_17_i686.manylinux_2_28_i686.whl
Algorithm Hash digest
SHA256 39e192b409b7b48e47fb47ec3d972308047bbe80089c07106d70d9cbc49d3445
MD5 72206ecf3b2be62cddd7a53250953ae8
BLAKE2b-256 fe965b67f049451cb1f25143dd129fbc67f0e49bd800281172212b455e445d7d

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.5.0-cp312-cp312-manylinux2014_i686.manylinux_2_17_i686.manylinux_2_28_i686.whl:

Publisher: release-python.yml on ashvardanian/NumKong

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file numkong-7.5.0-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for numkong-7.5.0-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 f4027f078a340f48d8e1b56efdd8d50d2bfca29a7b8ac809be11213417d2f3b0
MD5 73fc3ad1640c9cb68fd2280ab54b4def
BLAKE2b-256 09e365a95a0067a0b9e24d27be127ec6827ae4d562993279a5799e992f31e914

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.5.0-cp312-cp312-macosx_11_0_arm64.whl:

Publisher: release-python.yml on ashvardanian/NumKong

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file numkong-7.5.0-cp312-cp312-macosx_10_13_x86_64.whl.

File metadata

File hashes

Hashes for numkong-7.5.0-cp312-cp312-macosx_10_13_x86_64.whl
Algorithm Hash digest
SHA256 b0e7a43cbf096454bae3fb5ee9386f514ea4d19485ae0f977ae053d2848b5c41
MD5 9fb60c6b37553cf44cb8cfd3b7d368f4
BLAKE2b-256 d353610e8076b41133dd3aea67a97a74f723fe380438e8088af394a992011b4b

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.5.0-cp312-cp312-macosx_10_13_x86_64.whl:

Publisher: release-python.yml on ashvardanian/NumKong

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file numkong-7.5.0-cp311-cp311-win_arm64.whl.

File metadata

  • Download URL: numkong-7.5.0-cp311-cp311-win_arm64.whl
  • Upload date:
  • Size: 439.3 kB
  • Tags: CPython 3.11, Windows ARM64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for numkong-7.5.0-cp311-cp311-win_arm64.whl
Algorithm Hash digest
SHA256 1de9dcc956115b44fd96969679e94f7c64b19df041093d089d39c6ecfd6ab4b9
MD5 da7a7dfe31ad01ac6c2c1aac0ce6803c
BLAKE2b-256 56378b5ff55e589ff9136c37f7213aa14f38d0ca465eac212a3d26e055a8d20d

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.5.0-cp311-cp311-win_arm64.whl:

Publisher: release-python.yml on ashvardanian/NumKong

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file numkong-7.5.0-cp311-cp311-win_amd64.whl.

File metadata

  • Download URL: numkong-7.5.0-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 473.6 kB
  • Tags: CPython 3.11, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for numkong-7.5.0-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 580ae6c79475cc9d5745db75934c9678343a3db19f3697c52f7c789475874259
MD5 48c293ee6fb5dbc76b45efb48a5ce59a
BLAKE2b-256 725939a7536f7c86a4d706e89ca1aa65610f2e364c218e3c79ddb45ba2b2dae1

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.5.0-cp311-cp311-win_amd64.whl:

Publisher: release-python.yml on ashvardanian/NumKong

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file numkong-7.5.0-cp311-cp311-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for numkong-7.5.0-cp311-cp311-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 bada9a3245bcde102eabc4e334c0c25e99031ec464a81f77396b32acdebd8bbc
MD5 730ddb92dd3d716076b963594bd4bb7f
BLAKE2b-256 376664db79d77175d4bee5278cc2119e24f9f3c8b6dedf39c7f02632b78db5d3

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.5.0-cp311-cp311-musllinux_1_2_x86_64.whl:

Publisher: release-python.yml on ashvardanian/NumKong

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file numkong-7.5.0-cp311-cp311-musllinux_1_2_s390x.whl.

File metadata

File hashes

Hashes for numkong-7.5.0-cp311-cp311-musllinux_1_2_s390x.whl
Algorithm Hash digest
SHA256 72088be7d1a0d556020df9a1993e85ca1625c619cc69315b687489d9101a8784
MD5 0b94d505a0a23ecac1729f54e28c025e
BLAKE2b-256 ad87a3f624b461a8a943cb0844b8753c404e0772db1aef1e907811779f58ef87

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.5.0-cp311-cp311-musllinux_1_2_s390x.whl:

Publisher: release-python.yml on ashvardanian/NumKong

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file numkong-7.5.0-cp311-cp311-musllinux_1_2_ppc64le.whl.

File metadata

File hashes

Hashes for numkong-7.5.0-cp311-cp311-musllinux_1_2_ppc64le.whl
Algorithm Hash digest
SHA256 042aba51c7b01c39cabdc43fc3576886dee3577a10e70d5d09847386ec84caf6
MD5 3b67087abb7723a79f192fd6f7a0ddd8
BLAKE2b-256 a1b3476b9f6747039a4269e2e9c0f93b13669462351500030652c6f73135c260

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.5.0-cp311-cp311-musllinux_1_2_ppc64le.whl:

Publisher: release-python.yml on ashvardanian/NumKong

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file numkong-7.5.0-cp311-cp311-musllinux_1_2_i686.whl.

File metadata

File hashes

Hashes for numkong-7.5.0-cp311-cp311-musllinux_1_2_i686.whl
Algorithm Hash digest
SHA256 0965ac21df658bf435f12c93d516e20564786718c2d451a0c3588afe16af0bbd
MD5 aa427f5f21c65db88caead558fc5f228
BLAKE2b-256 822cd2ac894f75afd1bf64e63d640f14d6a5fbbac529dbc2ad27cde9b3c2fd24

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.5.0-cp311-cp311-musllinux_1_2_i686.whl:

Publisher: release-python.yml on ashvardanian/NumKong

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file numkong-7.5.0-cp311-cp311-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for numkong-7.5.0-cp311-cp311-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 c8e1ebbd8dff09d37a5b378e994a8d4c492ce7a1d5af27b516495a72da307651
MD5 8650644603d615dfe90c58b942a81bc5
BLAKE2b-256 a4976ce03c55f28e803086b9e7a2d87e4e9ae9c58935186efe5f573b66794e53

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.5.0-cp311-cp311-musllinux_1_2_aarch64.whl:

Publisher: release-python.yml on ashvardanian/NumKong

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file numkong-7.5.0-cp311-cp311-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for numkong-7.5.0-cp311-cp311-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 af64934c0fa045b2fd52325f4a643d4a2afac2de7dc3ca1a6ac3b2afea6b4a8f
MD5 4ee8d752045983b319b2583a1ec2e3dd
BLAKE2b-256 23058eda2e9e8562a69fe0050d16caf40548302a387b4cc6af5ad2d29287641e

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.5.0-cp311-cp311-manylinux_2_28_x86_64.whl:

Publisher: release-python.yml on ashvardanian/NumKong

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file numkong-7.5.0-cp311-cp311-manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for numkong-7.5.0-cp311-cp311-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 0bc3d1799505f79e7eed34ae6ca04a1b16ed4a25aae6630e11bfc45a8b39c53c
MD5 d313f97a2c797999167b906cdf7dcab4
BLAKE2b-256 dde3ff3d61c92a6f905e61666b6083823b467cd8b3023f9221b724e07bb1d467

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.5.0-cp311-cp311-manylinux_2_28_aarch64.whl:

Publisher: release-python.yml on ashvardanian/NumKong

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file numkong-7.5.0-cp311-cp311-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl.

File metadata

File hashes

Hashes for numkong-7.5.0-cp311-cp311-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl
Algorithm Hash digest
SHA256 6ec0f52c58ae89d91feeda4b8bec631e572ca5295b74e39aa08cbb11b0a4ef7f
MD5 dcea9c0c09ee208f0271d2129a033e6e
BLAKE2b-256 e47e9a25468d5dd1d2895dbbdeef30b59980d474d5dc37e38c4b78ce8886da8a

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.5.0-cp311-cp311-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl:

Publisher: release-python.yml on ashvardanian/NumKong

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file numkong-7.5.0-cp311-cp311-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl.

File metadata

File hashes

Hashes for numkong-7.5.0-cp311-cp311-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl
Algorithm Hash digest
SHA256 f8a5c708b4299e93f28d74185ce22c76800bfa030152f85f9b8cec1d0c619312
MD5 5dade22577ecfddac32c761eeb21cf8e
BLAKE2b-256 aa82ca6e963eea5eaa26624f3fa6a2c21adf47cc4870241fe36614b04e218741

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.5.0-cp311-cp311-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl:

Publisher: release-python.yml on ashvardanian/NumKong

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file numkong-7.5.0-cp311-cp311-manylinux2014_i686.manylinux_2_17_i686.manylinux_2_28_i686.whl.

File metadata

File hashes

Hashes for numkong-7.5.0-cp311-cp311-manylinux2014_i686.manylinux_2_17_i686.manylinux_2_28_i686.whl
Algorithm Hash digest
SHA256 81c51cc51fb95d66362391dea55b2e3997e71c0e666eaa1d0224f817b3501d7c
MD5 060f3939991e75886ae3b21e4c987746
BLAKE2b-256 be8a654fc1944cceb4532d4d12756891198dd6ab58aa5363112bdf273c44b877

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.5.0-cp311-cp311-manylinux2014_i686.manylinux_2_17_i686.manylinux_2_28_i686.whl:

Publisher: release-python.yml on ashvardanian/NumKong

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file numkong-7.5.0-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for numkong-7.5.0-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 3ff4a4d17c4b61a421da6704558645dd985d32da4024b703282f6eeeed15e283
MD5 c597a9eb22d9f529db1fad1f5ad3ddbf
BLAKE2b-256 df51355c1205a18d094e362e41a5b9c9c4ef16d089223828ae95d8f0d6ebf7ca

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.5.0-cp311-cp311-macosx_11_0_arm64.whl:

Publisher: release-python.yml on ashvardanian/NumKong

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file numkong-7.5.0-cp311-cp311-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for numkong-7.5.0-cp311-cp311-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 611bba832e531c9c8c3d0a08646bc4238029739e1ee3295bc0bdbbb291b2690c
MD5 3fa84ecd7072af7290eb95cbb4981447
BLAKE2b-256 001a45bafcc9a47d0cf97ef7a3b4ad4486ef4456b49849030d955a68cb48350f

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.5.0-cp311-cp311-macosx_10_9_x86_64.whl:

Publisher: release-python.yml on ashvardanian/NumKong

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file numkong-7.5.0-cp310-cp310-win_arm64.whl.

File metadata

  • Download URL: numkong-7.5.0-cp310-cp310-win_arm64.whl
  • Upload date:
  • Size: 439.4 kB
  • Tags: CPython 3.10, Windows ARM64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for numkong-7.5.0-cp310-cp310-win_arm64.whl
Algorithm Hash digest
SHA256 97df1651064a0793e164fa47964bcab55a60f22bad7a4fdac9eaa6208144c2a4
MD5 b2749e5065ca1c03c54538c8c4e41f0e
BLAKE2b-256 a737362c844d1a13b6a1a6892f5b34d923cf0d759362c6c33888e47fa3a536e9

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.5.0-cp310-cp310-win_arm64.whl:

Publisher: release-python.yml on ashvardanian/NumKong

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file numkong-7.5.0-cp310-cp310-win_amd64.whl.

File metadata

  • Download URL: numkong-7.5.0-cp310-cp310-win_amd64.whl
  • Upload date:
  • Size: 473.6 kB
  • Tags: CPython 3.10, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for numkong-7.5.0-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 c93ff202ccb1958a0ea25dbd2d8de020cb835e4671f120203ee4c020555b2bbe
MD5 200312d9564fec98b7f1365251d14204
BLAKE2b-256 e569f4a53bbd525349670b0c884ec768d24e123fb0f51357b5ae0003d38c248b

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.5.0-cp310-cp310-win_amd64.whl:

Publisher: release-python.yml on ashvardanian/NumKong

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file numkong-7.5.0-cp310-cp310-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for numkong-7.5.0-cp310-cp310-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 28463f64487989dd2d91dcdbc3ca8a5d437ec7d76090ae88b93aee48bc340542
MD5 a848eb9a01440d806fbeff9a70d59041
BLAKE2b-256 023fe3ae638ea5071559034ad2fec6112e307ce2459e179f752dcb6669541eca

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.5.0-cp310-cp310-musllinux_1_2_x86_64.whl:

Publisher: release-python.yml on ashvardanian/NumKong

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file numkong-7.5.0-cp310-cp310-musllinux_1_2_s390x.whl.

File metadata

File hashes

Hashes for numkong-7.5.0-cp310-cp310-musllinux_1_2_s390x.whl
Algorithm Hash digest
SHA256 5cc8882cfcf936dbf8da70cf4869adeb6fc13ccd88179b89bfbba2efc3cf5f1d
MD5 845bd33a4e8bbcded6b363dd88de3554
BLAKE2b-256 ee83f70e4573337b267785b51f5480787b8d50562edb1aa7f73a31b0767cbb79

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.5.0-cp310-cp310-musllinux_1_2_s390x.whl:

Publisher: release-python.yml on ashvardanian/NumKong

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file numkong-7.5.0-cp310-cp310-musllinux_1_2_ppc64le.whl.

File metadata

File hashes

Hashes for numkong-7.5.0-cp310-cp310-musllinux_1_2_ppc64le.whl
Algorithm Hash digest
SHA256 015406ccd90efda07bbc77243a24386d5c77f3fdf42e6a44e68c171f064ee81e
MD5 62054e8b20c7a2696e17fe40e059dde1
BLAKE2b-256 f95147f862699b42df09706f8bf5fb011312b7b05369442d1f338fc07854dff1

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.5.0-cp310-cp310-musllinux_1_2_ppc64le.whl:

Publisher: release-python.yml on ashvardanian/NumKong

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file numkong-7.5.0-cp310-cp310-musllinux_1_2_i686.whl.

File metadata

File hashes

Hashes for numkong-7.5.0-cp310-cp310-musllinux_1_2_i686.whl
Algorithm Hash digest
SHA256 dda4c872059535b243d11903c76c77c80fcb08fbf315412574d0d1c9dea3dbb0
MD5 f5cd0e1bb44bb51dbe14be07ad596848
BLAKE2b-256 92a718a6b21ce1bb400abeddf84264a76ee377694ebf2e13127d203a082808ce

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.5.0-cp310-cp310-musllinux_1_2_i686.whl:

Publisher: release-python.yml on ashvardanian/NumKong

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file numkong-7.5.0-cp310-cp310-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for numkong-7.5.0-cp310-cp310-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 f9e623aa6bfe07023533327c3d6fda0e01f9848dc148c4007c21b5bb47b0bdb6
MD5 16de2cd5ce9e74d2ccc089b14573728a
BLAKE2b-256 2d294ee68f90a3a32ed63ec35e1473b49e072cdbb7e4f4460f10020d8efa242f

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.5.0-cp310-cp310-musllinux_1_2_aarch64.whl:

Publisher: release-python.yml on ashvardanian/NumKong

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file numkong-7.5.0-cp310-cp310-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for numkong-7.5.0-cp310-cp310-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 09034d5b1265d011b4174fc1f19e16dfbbd14c0ad1b837134fd52e1604330142
MD5 0fc6ffc22a29b88da9fa1a00200d3bc8
BLAKE2b-256 4b2e68fe99a26d1c09e140c8fda7bfc1e307b07b94559d34b9095d50032d0b58

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.5.0-cp310-cp310-manylinux_2_28_x86_64.whl:

Publisher: release-python.yml on ashvardanian/NumKong

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file numkong-7.5.0-cp310-cp310-manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for numkong-7.5.0-cp310-cp310-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 0bb4812668b05bc2d1541ec11e64312057bd9f523f33d8de0cd647fe176ef11f
MD5 fa703c1d43aa1c8ce6bc9bd08cf03d8b
BLAKE2b-256 c809d03570addf0e96d4113aede9df799d75e34b9140a9118dc92a412ac26587

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.5.0-cp310-cp310-manylinux_2_28_aarch64.whl:

Publisher: release-python.yml on ashvardanian/NumKong

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file numkong-7.5.0-cp310-cp310-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl.

File metadata

File hashes

Hashes for numkong-7.5.0-cp310-cp310-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl
Algorithm Hash digest
SHA256 24593c89cfdd77b94eec8681c8cddcc4340998ac8d32c530cfaa1fc773536b2b
MD5 a7a34e2291675f08835dd909e468a2a6
BLAKE2b-256 622b9652ab8a86a5d738a5c61597c4b4bc5b94b4ae804df955da1d151a2fc6cc

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.5.0-cp310-cp310-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl:

Publisher: release-python.yml on ashvardanian/NumKong

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file numkong-7.5.0-cp310-cp310-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl.

File metadata

File hashes

Hashes for numkong-7.5.0-cp310-cp310-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl
Algorithm Hash digest
SHA256 76c1c89fca614175d196adb9950f8a6f46082eb9d2e2f24d0ab7441053d7518b
MD5 36126ad64ec39af93724cb44f599a70c
BLAKE2b-256 2b973433c08b697f9110f01247a8035491d54f2243a5f95ee8c4136ab4f03110

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.5.0-cp310-cp310-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl:

Publisher: release-python.yml on ashvardanian/NumKong

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file numkong-7.5.0-cp310-cp310-manylinux2014_i686.manylinux_2_17_i686.manylinux_2_28_i686.whl.

File metadata

File hashes

Hashes for numkong-7.5.0-cp310-cp310-manylinux2014_i686.manylinux_2_17_i686.manylinux_2_28_i686.whl
Algorithm Hash digest
SHA256 2def9b6e132c67842c19fadc5320943f46e39baf64f98f3959572770ccaf2607
MD5 475e1af73c2b8c00714dcd4bc89a40b3
BLAKE2b-256 6b164a01eedb8b5ffb58e3a9783c2e350150df8c18a7ba727284858fb650ffad

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.5.0-cp310-cp310-manylinux2014_i686.manylinux_2_17_i686.manylinux_2_28_i686.whl:

Publisher: release-python.yml on ashvardanian/NumKong

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file numkong-7.5.0-cp310-cp310-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for numkong-7.5.0-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 0117470c64d900b52c8cd2804a825afa54585d55562f0f7f4d3cd1837c548451
MD5 d28af0e04b893a74b586c4a6827ef2ac
BLAKE2b-256 47142f8466ebb0b9be6d9fbce7587b015f3ba6a5e394f38da48116a9e72c6484

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.5.0-cp310-cp310-macosx_11_0_arm64.whl:

Publisher: release-python.yml on ashvardanian/NumKong

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file numkong-7.5.0-cp310-cp310-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for numkong-7.5.0-cp310-cp310-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 38e81b1a2a574fffbc602e33f68dfcccbe3a7e2608b1ea33041968497479d7f0
MD5 85c2f9c953f382ddeb00b1ed6c39ea72
BLAKE2b-256 b8dd34b0cfc4de6aa8443aac4352a2113ad06e399143f60303c8462602fe3a8c

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.5.0-cp310-cp310-macosx_10_9_x86_64.whl:

Publisher: release-python.yml on ashvardanian/NumKong

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page