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.6.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.6.0-cp314-cp314t-win_arm64.whl (464.8 kB view details)

Uploaded CPython 3.14tWindows ARM64

numkong-7.6.0-cp314-cp314t-win_amd64.whl (506.2 kB view details)

Uploaded CPython 3.14tWindows x86-64

numkong-7.6.0-cp314-cp314t-musllinux_1_2_x86_64.whl (10.4 MB view details)

Uploaded CPython 3.14tmusllinux: musl 1.2+ x86-64

numkong-7.6.0-cp314-cp314t-musllinux_1_2_s390x.whl (2.4 MB view details)

Uploaded CPython 3.14tmusllinux: musl 1.2+ s390x

numkong-7.6.0-cp314-cp314t-musllinux_1_2_ppc64le.whl (2.9 MB view details)

Uploaded CPython 3.14tmusllinux: musl 1.2+ ppc64le

numkong-7.6.0-cp314-cp314t-musllinux_1_2_i686.whl (2.3 MB view details)

Uploaded CPython 3.14tmusllinux: musl 1.2+ i686

numkong-7.6.0-cp314-cp314t-musllinux_1_2_aarch64.whl (5.4 MB view details)

Uploaded CPython 3.14tmusllinux: musl 1.2+ ARM64

numkong-7.6.0-cp314-cp314t-manylinux_2_28_x86_64.whl (10.5 MB view details)

Uploaded CPython 3.14tmanylinux: glibc 2.28+ x86-64

numkong-7.6.0-cp314-cp314t-manylinux_2_28_aarch64.whl (5.4 MB view details)

Uploaded CPython 3.14tmanylinux: glibc 2.28+ ARM64

numkong-7.6.0-cp314-cp314t-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl (2.5 MB view details)

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

numkong-7.6.0-cp314-cp314t-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl (2.9 MB view details)

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

numkong-7.6.0-cp314-cp314t-manylinux2014_i686.manylinux_2_17_i686.manylinux_2_28_i686.whl (2.3 MB view details)

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

numkong-7.6.0-cp314-cp314t-macosx_11_0_arm64.whl (1.2 MB view details)

Uploaded CPython 3.14tmacOS 11.0+ ARM64

numkong-7.6.0-cp314-cp314t-macosx_10_15_x86_64.whl (1.2 MB view details)

Uploaded CPython 3.14tmacOS 10.15+ x86-64

numkong-7.6.0-cp314-cp314-win_arm64.whl (463.8 kB view details)

Uploaded CPython 3.14Windows ARM64

numkong-7.6.0-cp314-cp314-win_amd64.whl (503.1 kB view details)

Uploaded CPython 3.14Windows x86-64

numkong-7.6.0-cp314-cp314-musllinux_1_2_x86_64.whl (10.3 MB view details)

Uploaded CPython 3.14musllinux: musl 1.2+ x86-64

numkong-7.6.0-cp314-cp314-musllinux_1_2_s390x.whl (2.4 MB view details)

Uploaded CPython 3.14musllinux: musl 1.2+ s390x

numkong-7.6.0-cp314-cp314-musllinux_1_2_ppc64le.whl (2.9 MB view details)

Uploaded CPython 3.14musllinux: musl 1.2+ ppc64le

numkong-7.6.0-cp314-cp314-musllinux_1_2_i686.whl (2.3 MB view details)

Uploaded CPython 3.14musllinux: musl 1.2+ i686

numkong-7.6.0-cp314-cp314-musllinux_1_2_aarch64.whl (5.4 MB view details)

Uploaded CPython 3.14musllinux: musl 1.2+ ARM64

numkong-7.6.0-cp314-cp314-manylinux_2_28_x86_64.whl (10.5 MB view details)

Uploaded CPython 3.14manylinux: glibc 2.28+ x86-64

numkong-7.6.0-cp314-cp314-manylinux_2_28_aarch64.whl (5.4 MB view details)

Uploaded CPython 3.14manylinux: glibc 2.28+ ARM64

numkong-7.6.0-cp314-cp314-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl (2.5 MB view details)

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

numkong-7.6.0-cp314-cp314-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl (2.9 MB view details)

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

numkong-7.6.0-cp314-cp314-manylinux2014_i686.manylinux_2_17_i686.manylinux_2_28_i686.whl (2.3 MB view details)

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

numkong-7.6.0-cp314-cp314-macosx_11_0_arm64.whl (1.2 MB view details)

Uploaded CPython 3.14macOS 11.0+ ARM64

numkong-7.6.0-cp314-cp314-macosx_10_15_x86_64.whl (1.2 MB view details)

Uploaded CPython 3.14macOS 10.15+ x86-64

numkong-7.6.0-cp313-cp313t-win_arm64.whl (444.6 kB view details)

Uploaded CPython 3.13tWindows ARM64

numkong-7.6.0-cp313-cp313t-win_amd64.whl (491.0 kB view details)

Uploaded CPython 3.13tWindows x86-64

numkong-7.6.0-cp313-cp313t-musllinux_1_2_x86_64.whl (10.4 MB view details)

Uploaded CPython 3.13tmusllinux: musl 1.2+ x86-64

numkong-7.6.0-cp313-cp313t-musllinux_1_2_s390x.whl (2.4 MB view details)

Uploaded CPython 3.13tmusllinux: musl 1.2+ s390x

numkong-7.6.0-cp313-cp313t-musllinux_1_2_ppc64le.whl (2.9 MB view details)

Uploaded CPython 3.13tmusllinux: musl 1.2+ ppc64le

numkong-7.6.0-cp313-cp313t-musllinux_1_2_i686.whl (2.3 MB view details)

Uploaded CPython 3.13tmusllinux: musl 1.2+ i686

numkong-7.6.0-cp313-cp313t-musllinux_1_2_aarch64.whl (5.4 MB view details)

Uploaded CPython 3.13tmusllinux: musl 1.2+ ARM64

numkong-7.6.0-cp313-cp313t-manylinux_2_28_x86_64.whl (10.5 MB view details)

Uploaded CPython 3.13tmanylinux: glibc 2.28+ x86-64

numkong-7.6.0-cp313-cp313t-manylinux_2_28_aarch64.whl (5.4 MB view details)

Uploaded CPython 3.13tmanylinux: glibc 2.28+ ARM64

numkong-7.6.0-cp313-cp313t-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl (2.5 MB view details)

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

numkong-7.6.0-cp313-cp313t-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl (2.9 MB view details)

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

numkong-7.6.0-cp313-cp313t-manylinux2014_i686.manylinux_2_17_i686.manylinux_2_28_i686.whl (2.3 MB view details)

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

numkong-7.6.0-cp313-cp313t-macosx_11_0_arm64.whl (1.2 MB view details)

Uploaded CPython 3.13tmacOS 11.0+ ARM64

numkong-7.6.0-cp313-cp313t-macosx_10_13_x86_64.whl (1.2 MB view details)

Uploaded CPython 3.13tmacOS 10.13+ x86-64

numkong-7.6.0-cp313-cp313-win_arm64.whl (443.7 kB view details)

Uploaded CPython 3.13Windows ARM64

numkong-7.6.0-cp313-cp313-win_amd64.whl (488.4 kB view details)

Uploaded CPython 3.13Windows x86-64

numkong-7.6.0-cp313-cp313-musllinux_1_2_x86_64.whl (10.3 MB view details)

Uploaded CPython 3.13musllinux: musl 1.2+ x86-64

numkong-7.6.0-cp313-cp313-musllinux_1_2_s390x.whl (2.4 MB view details)

Uploaded CPython 3.13musllinux: musl 1.2+ s390x

numkong-7.6.0-cp313-cp313-musllinux_1_2_ppc64le.whl (2.9 MB view details)

Uploaded CPython 3.13musllinux: musl 1.2+ ppc64le

numkong-7.6.0-cp313-cp313-musllinux_1_2_i686.whl (2.3 MB view details)

Uploaded CPython 3.13musllinux: musl 1.2+ i686

numkong-7.6.0-cp313-cp313-musllinux_1_2_aarch64.whl (5.4 MB view details)

Uploaded CPython 3.13musllinux: musl 1.2+ ARM64

numkong-7.6.0-cp313-cp313-manylinux_2_28_x86_64.whl (10.5 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.28+ x86-64

numkong-7.6.0-cp313-cp313-manylinux_2_28_aarch64.whl (5.4 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.28+ ARM64

numkong-7.6.0-cp313-cp313-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl (2.5 MB view details)

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

numkong-7.6.0-cp313-cp313-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl (2.9 MB view details)

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

numkong-7.6.0-cp313-cp313-manylinux2014_i686.manylinux_2_17_i686.manylinux_2_28_i686.whl (2.3 MB view details)

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

numkong-7.6.0-cp313-cp313-macosx_11_0_arm64.whl (1.2 MB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

numkong-7.6.0-cp313-cp313-macosx_10_13_x86_64.whl (1.2 MB view details)

Uploaded CPython 3.13macOS 10.13+ x86-64

numkong-7.6.0-cp312-cp312-win_arm64.whl (443.7 kB view details)

Uploaded CPython 3.12Windows ARM64

numkong-7.6.0-cp312-cp312-win_amd64.whl (488.4 kB view details)

Uploaded CPython 3.12Windows x86-64

numkong-7.6.0-cp312-cp312-musllinux_1_2_x86_64.whl (10.3 MB view details)

Uploaded CPython 3.12musllinux: musl 1.2+ x86-64

numkong-7.6.0-cp312-cp312-musllinux_1_2_s390x.whl (2.4 MB view details)

Uploaded CPython 3.12musllinux: musl 1.2+ s390x

numkong-7.6.0-cp312-cp312-musllinux_1_2_ppc64le.whl (2.9 MB view details)

Uploaded CPython 3.12musllinux: musl 1.2+ ppc64le

numkong-7.6.0-cp312-cp312-musllinux_1_2_i686.whl (2.3 MB view details)

Uploaded CPython 3.12musllinux: musl 1.2+ i686

numkong-7.6.0-cp312-cp312-musllinux_1_2_aarch64.whl (5.4 MB view details)

Uploaded CPython 3.12musllinux: musl 1.2+ ARM64

numkong-7.6.0-cp312-cp312-manylinux_2_28_x86_64.whl (10.5 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.28+ x86-64

numkong-7.6.0-cp312-cp312-manylinux_2_28_aarch64.whl (5.4 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.28+ ARM64

numkong-7.6.0-cp312-cp312-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl (2.5 MB view details)

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

numkong-7.6.0-cp312-cp312-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl (2.9 MB view details)

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

numkong-7.6.0-cp312-cp312-manylinux2014_i686.manylinux_2_17_i686.manylinux_2_28_i686.whl (2.3 MB view details)

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

numkong-7.6.0-cp312-cp312-macosx_11_0_arm64.whl (1.2 MB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

numkong-7.6.0-cp312-cp312-macosx_10_13_x86_64.whl (1.2 MB view details)

Uploaded CPython 3.12macOS 10.13+ x86-64

numkong-7.6.0-cp311-cp311-win_arm64.whl (443.6 kB view details)

Uploaded CPython 3.11Windows ARM64

numkong-7.6.0-cp311-cp311-win_amd64.whl (487.9 kB view details)

Uploaded CPython 3.11Windows x86-64

numkong-7.6.0-cp311-cp311-musllinux_1_2_x86_64.whl (10.3 MB view details)

Uploaded CPython 3.11musllinux: musl 1.2+ x86-64

numkong-7.6.0-cp311-cp311-musllinux_1_2_s390x.whl (2.4 MB view details)

Uploaded CPython 3.11musllinux: musl 1.2+ s390x

numkong-7.6.0-cp311-cp311-musllinux_1_2_ppc64le.whl (2.9 MB view details)

Uploaded CPython 3.11musllinux: musl 1.2+ ppc64le

numkong-7.6.0-cp311-cp311-musllinux_1_2_i686.whl (2.3 MB view details)

Uploaded CPython 3.11musllinux: musl 1.2+ i686

numkong-7.6.0-cp311-cp311-musllinux_1_2_aarch64.whl (5.4 MB view details)

Uploaded CPython 3.11musllinux: musl 1.2+ ARM64

numkong-7.6.0-cp311-cp311-manylinux_2_28_x86_64.whl (10.5 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.28+ x86-64

numkong-7.6.0-cp311-cp311-manylinux_2_28_aarch64.whl (5.4 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.28+ ARM64

numkong-7.6.0-cp311-cp311-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl (2.5 MB view details)

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

numkong-7.6.0-cp311-cp311-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl (2.9 MB view details)

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

numkong-7.6.0-cp311-cp311-manylinux2014_i686.manylinux_2_17_i686.manylinux_2_28_i686.whl (2.3 MB view details)

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

numkong-7.6.0-cp311-cp311-macosx_11_0_arm64.whl (1.2 MB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

numkong-7.6.0-cp311-cp311-macosx_10_9_x86_64.whl (1.2 MB view details)

Uploaded CPython 3.11macOS 10.9+ x86-64

numkong-7.6.0-cp310-cp310-win_arm64.whl (443.8 kB view details)

Uploaded CPython 3.10Windows ARM64

numkong-7.6.0-cp310-cp310-win_amd64.whl (488.0 kB view details)

Uploaded CPython 3.10Windows x86-64

numkong-7.6.0-cp310-cp310-musllinux_1_2_x86_64.whl (10.3 MB view details)

Uploaded CPython 3.10musllinux: musl 1.2+ x86-64

numkong-7.6.0-cp310-cp310-musllinux_1_2_s390x.whl (2.4 MB view details)

Uploaded CPython 3.10musllinux: musl 1.2+ s390x

numkong-7.6.0-cp310-cp310-musllinux_1_2_ppc64le.whl (2.9 MB view details)

Uploaded CPython 3.10musllinux: musl 1.2+ ppc64le

numkong-7.6.0-cp310-cp310-musllinux_1_2_i686.whl (2.3 MB view details)

Uploaded CPython 3.10musllinux: musl 1.2+ i686

numkong-7.6.0-cp310-cp310-musllinux_1_2_aarch64.whl (5.4 MB view details)

Uploaded CPython 3.10musllinux: musl 1.2+ ARM64

numkong-7.6.0-cp310-cp310-manylinux_2_28_x86_64.whl (10.5 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.28+ x86-64

numkong-7.6.0-cp310-cp310-manylinux_2_28_aarch64.whl (5.4 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.28+ ARM64

numkong-7.6.0-cp310-cp310-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl (2.5 MB view details)

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

numkong-7.6.0-cp310-cp310-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl (2.9 MB view details)

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

numkong-7.6.0-cp310-cp310-manylinux2014_i686.manylinux_2_17_i686.manylinux_2_28_i686.whl (2.2 MB view details)

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

numkong-7.6.0-cp310-cp310-macosx_11_0_arm64.whl (1.2 MB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

numkong-7.6.0-cp310-cp310-macosx_10_9_x86_64.whl (1.2 MB view details)

Uploaded CPython 3.10macOS 10.9+ x86-64

File details

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

File metadata

  • Download URL: numkong-7.6.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.6.0.tar.gz
Algorithm Hash digest
SHA256 49848908b4e715e3d9083bf2093ea8c818dff96c27520822b19fd4e73cd6e309
MD5 0a9a7a671056f3c45054f0fd2688a2ce
BLAKE2b-256 741eac7620be0f21e9a2ca63a1f1068854fd72de064f66a988fb67e4670e1123

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.6.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.6.0-cp314-cp314t-win_arm64.whl.

File metadata

  • Download URL: numkong-7.6.0-cp314-cp314t-win_arm64.whl
  • Upload date:
  • Size: 464.8 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.6.0-cp314-cp314t-win_arm64.whl
Algorithm Hash digest
SHA256 2fefa6cfb8c75c1b69a56aa9d121fedf71907bd0ca017954f455ca5514aeb0ee
MD5 0e5aacfd561afa3be7b01c9edb51a32c
BLAKE2b-256 1e2ef46522d45a4a444ea96649c417a37c6568e79e4bf416ea0cda62ed80fad0

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.6.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.6.0-cp314-cp314t-win_amd64.whl.

File metadata

  • Download URL: numkong-7.6.0-cp314-cp314t-win_amd64.whl
  • Upload date:
  • Size: 506.2 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.6.0-cp314-cp314t-win_amd64.whl
Algorithm Hash digest
SHA256 3d7108bcc29db31d99c2cb70426d5c18c5d762794bf04f1ff36411c9e045b97e
MD5 f0c28d059c18a18eee4f1be8dead0b60
BLAKE2b-256 a94ecb8db1f98f822c7f148faa6fb6986a7f2390892a864c39d92017c2e715e3

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.6.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.6.0-cp314-cp314t-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for numkong-7.6.0-cp314-cp314t-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 07172e3af18f48a2324ac203b35cf18c85eece7cc68cb0ac2b50a66dbd740fe2
MD5 57f6940bec290588e0168ac4bde7bff9
BLAKE2b-256 f05864b8712bbddf40380bfab27074fe2944b749b425a8afa093ecdabb09e5ab

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.6.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.6.0-cp314-cp314t-musllinux_1_2_s390x.whl.

File metadata

File hashes

Hashes for numkong-7.6.0-cp314-cp314t-musllinux_1_2_s390x.whl
Algorithm Hash digest
SHA256 1c97a02eb6823746662e6fc6b29252e80f6d02993453272724ab2cd46e03f1ad
MD5 1abe124b645e85b787cc7dfa6eccfaf2
BLAKE2b-256 fd1fa2a03c30c37c001f00e287bd614b21818a7c41d3500f4d907c69c7ae832b

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.6.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.6.0-cp314-cp314t-musllinux_1_2_ppc64le.whl.

File metadata

File hashes

Hashes for numkong-7.6.0-cp314-cp314t-musllinux_1_2_ppc64le.whl
Algorithm Hash digest
SHA256 eae94268af3877c90e8260440605fa4a7dacaced45e445f59ce52210df764167
MD5 514d2bdd14b7172fccbb16869741c6de
BLAKE2b-256 0f5a2070de8362e1ce9f716bcb3434a90953e5cbde748a9702c42422300742b8

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.6.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.6.0-cp314-cp314t-musllinux_1_2_i686.whl.

File metadata

File hashes

Hashes for numkong-7.6.0-cp314-cp314t-musllinux_1_2_i686.whl
Algorithm Hash digest
SHA256 9c0344abcf1f53d56fc35c2ef172a483156ecf731b1e20b752d1b2f6d675b573
MD5 1f1970ec521a23b3c918b4b72fe550e0
BLAKE2b-256 4163cbcc6201e56e537a31cdfaf3b8b1a0435d0f5d4035e6da75360828a67973

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.6.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.6.0-cp314-cp314t-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for numkong-7.6.0-cp314-cp314t-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 cecfb3a8cd0d90d952e396e14f431ae48476ad149fd12d3ee44be9996f000807
MD5 dbae2d1897483abb3f104370ce6ce01a
BLAKE2b-256 b753e1714e8b2c83a3f6b08347148883a4dbdea07d4ec8d5bd979e374fa7a3a5

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.6.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.6.0-cp314-cp314t-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for numkong-7.6.0-cp314-cp314t-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 7dcaf8a7307ea860e0d996a1f408a06bfaea03356310b2c3343628a384f7616a
MD5 a1cee78823210792dc36243f1ad5d7da
BLAKE2b-256 ce1a67e1b270eab0b89eed988329e20916acc49fad5f54a27ce31fac53af1ff4

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.6.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.6.0-cp314-cp314t-manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for numkong-7.6.0-cp314-cp314t-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 88c13d71e5b71790c2f352dad09b7fe059e055f9c6fe71a5f8412e288a8828bb
MD5 aa314ff0c86b761102d0d3e19c1bafeb
BLAKE2b-256 977d632a44ff3c1fc2fd616e3483de7d36f84a5416797451cdfcf678b3db0998

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.6.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.6.0-cp314-cp314t-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl.

File metadata

File hashes

Hashes for numkong-7.6.0-cp314-cp314t-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl
Algorithm Hash digest
SHA256 da90ea664b2ad1b9f2592f35e273e96f36f1395e455c197b05a074c07e5862bd
MD5 17a8b1ffd1a6f9b8e3cf839ac4f881d5
BLAKE2b-256 93dbe50ca25b69e564ea872610744859728d753347254a7ad940988da74fc614

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.6.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.6.0-cp314-cp314t-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl.

File metadata

File hashes

Hashes for numkong-7.6.0-cp314-cp314t-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl
Algorithm Hash digest
SHA256 66836141a4bc45309c63634524ea8393284f5e7a0276c5ca450241245a773aa9
MD5 cec8a8fd02960d6bc72971ea3171d0a2
BLAKE2b-256 30be11cee69228f427bdcc6380d3cd499bda795893237ff91584382a9e53ff77

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.6.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.6.0-cp314-cp314t-manylinux2014_i686.manylinux_2_17_i686.manylinux_2_28_i686.whl.

File metadata

File hashes

Hashes for numkong-7.6.0-cp314-cp314t-manylinux2014_i686.manylinux_2_17_i686.manylinux_2_28_i686.whl
Algorithm Hash digest
SHA256 524a1084bdd28f8a6f96ba07ef7dc0b7b3938a7b6123ecd071b289c1f055621b
MD5 66725bc01db845997a7997b7bf0fc856
BLAKE2b-256 8f5962be8abd04e94a7ed2b105de0b2a351b0a172f1c90d56c54ef097ba90ae0

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.6.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.6.0-cp314-cp314t-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for numkong-7.6.0-cp314-cp314t-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 c4b9419e3b724a189a0d2d2724f08e1607b0d2b2891f5f1831fa6ba7a9b0a0fd
MD5 97101c3116c68ce8e7060bc3726d779f
BLAKE2b-256 6eb6ec05531b2d011bdf44a14602ddbf604f008d39bff5202600ad42051cd070

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.6.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.6.0-cp314-cp314t-macosx_10_15_x86_64.whl.

File metadata

File hashes

Hashes for numkong-7.6.0-cp314-cp314t-macosx_10_15_x86_64.whl
Algorithm Hash digest
SHA256 81c62a68ae1e585875543c690d856147c346af38223f1f67cbf8bef1638b4f89
MD5 390b8078256e603f8a7c946a565d65fa
BLAKE2b-256 d6c72404d3822263b8e22a12cca375969b1d15a14e11d90712159424863853e0

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.6.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.6.0-cp314-cp314-win_arm64.whl.

File metadata

  • Download URL: numkong-7.6.0-cp314-cp314-win_arm64.whl
  • Upload date:
  • Size: 463.8 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.6.0-cp314-cp314-win_arm64.whl
Algorithm Hash digest
SHA256 6a445d83a6aec50146a2b1530741b92d282f5c1e7b609d5dc2078fe05a1e878e
MD5 85bd56512b7c031ec1c5e75697e91e87
BLAKE2b-256 45d0134a74400bd3dd636c33ff0fa790e1de4edd3f7bab7fd09c2e75135a076a

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.6.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.6.0-cp314-cp314-win_amd64.whl.

File metadata

  • Download URL: numkong-7.6.0-cp314-cp314-win_amd64.whl
  • Upload date:
  • Size: 503.1 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.6.0-cp314-cp314-win_amd64.whl
Algorithm Hash digest
SHA256 649f19f599c0ab4569ae8224a77e3831a917eea86b87d182d05db77b251246b2
MD5 51a1aeefae4a926dbdd71be89822c3d3
BLAKE2b-256 9b83e2ca0090074167224c70a03ecf7cb3edf3c6cb23e6759558c9df21cd7ccd

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.6.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.6.0-cp314-cp314-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for numkong-7.6.0-cp314-cp314-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 86285bfaf1f8a98c3c341ea2d7a375a79ff2ecc3bd120d1db7cdccd40efad237
MD5 6c4ab06d98af3f4862155e6d58ae337f
BLAKE2b-256 68e6da2c60af1df7bdc6506f5aff13e9de6fd1b49ba366c61df5e45f5834b78d

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.6.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.6.0-cp314-cp314-musllinux_1_2_s390x.whl.

File metadata

File hashes

Hashes for numkong-7.6.0-cp314-cp314-musllinux_1_2_s390x.whl
Algorithm Hash digest
SHA256 e1ca552d91a18105b9aea06a5ba302557477d0fcab0d1f48ff8d20022aa20045
MD5 a748d419048600c44bba679280d7988d
BLAKE2b-256 628f5127288532d07dae4b4c9fd4d1b77da8f4fb1fd3c53d2d621d9d4cca3746

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.6.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.6.0-cp314-cp314-musllinux_1_2_ppc64le.whl.

File metadata

File hashes

Hashes for numkong-7.6.0-cp314-cp314-musllinux_1_2_ppc64le.whl
Algorithm Hash digest
SHA256 d5c28876893b6d3ed48d1d66af5a59119ac511c5485d85322e7346eca673624f
MD5 15b491cbe7b4b9a9c5409c36995b65ce
BLAKE2b-256 4c3973c08c90fad1d885a9fbfb8f34079c50c6f6227ea2bf8369f1e05822511e

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.6.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.6.0-cp314-cp314-musllinux_1_2_i686.whl.

File metadata

File hashes

Hashes for numkong-7.6.0-cp314-cp314-musllinux_1_2_i686.whl
Algorithm Hash digest
SHA256 187941f96b635d58e34162812bce12143a66ca7563b0e2c32b1d9ec96f154da9
MD5 3666d4d4e3c27d2a733403a7806acbfe
BLAKE2b-256 49722bbacf5d127ec37c1de1251f94251dd1afab0da0b4a9625be15a1e1fc485

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.6.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.6.0-cp314-cp314-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for numkong-7.6.0-cp314-cp314-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 2cf3c8cf2d257c7e4a59d16c9a02277182fd2d465770c654aaf1f5dfc7fcf026
MD5 a2d03371a8de1fcaa19ca3e7b1bc8c5b
BLAKE2b-256 d582deb096f647e8a06d2b932505b033411df095e0e47c5d0f173528dbefe5db

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.6.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.6.0-cp314-cp314-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for numkong-7.6.0-cp314-cp314-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 52a89adce06bf933cb5520cc5f98d69487477453ab0c168e04c494daac621610
MD5 a1e306e528e40dd5c4019179fc239ad6
BLAKE2b-256 5dcfa5be91e32eae23fdb8fd5211c6d0f2e27d057cb72d4239306bc87b3c2d88

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.6.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.6.0-cp314-cp314-manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for numkong-7.6.0-cp314-cp314-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 b7ed6798a86ee5e141240b299c808c5ac5a077b687fc3cd77c0f11ec37d15c8a
MD5 f2fbfaea666f32ea9bddcc052bab4dfa
BLAKE2b-256 b6a4589ccd146db1f6db85743792ae9e11ec73cd66cda57e82bf35e0c9809b9b

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.6.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.6.0-cp314-cp314-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl.

File metadata

File hashes

Hashes for numkong-7.6.0-cp314-cp314-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl
Algorithm Hash digest
SHA256 fbfba18c86367bb4386e494173047f374a90cdaab90f8f40cc97596a1626cc87
MD5 d70a102b391b7858c0c3abcd58a51b4b
BLAKE2b-256 82c9251f58b3a920f6e102ea79b9283c2922b36d9e0be1e2c54e60ce07c1a928

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.6.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.6.0-cp314-cp314-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl.

File metadata

File hashes

Hashes for numkong-7.6.0-cp314-cp314-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl
Algorithm Hash digest
SHA256 e4128873bc6d3f62e0bc2fc11b33be12adbb198fa901efd213a3259a743e6562
MD5 dab98b2f742e5520ec798fcac6bc0391
BLAKE2b-256 03d8b33b8e95bcfc31b5d1b29050e13cbbbbd739b1a34c617966e73ca2f14541

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.6.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.6.0-cp314-cp314-manylinux2014_i686.manylinux_2_17_i686.manylinux_2_28_i686.whl.

File metadata

File hashes

Hashes for numkong-7.6.0-cp314-cp314-manylinux2014_i686.manylinux_2_17_i686.manylinux_2_28_i686.whl
Algorithm Hash digest
SHA256 f7232f608b87cd164c94289d5d26ac42e00a636f1d83b64d2e58350cf048f0ae
MD5 746ecf7596c1d34b93df21a4586d2e8a
BLAKE2b-256 53c59fdb09abb4d1214eaea3ca0ce97e4d8a742bb957405b4a7d44a0935b392b

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.6.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.6.0-cp314-cp314-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for numkong-7.6.0-cp314-cp314-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 1956587ab3806cc6e668246590cd0c71ab2931b9207c77cb13cb9505b6a0492d
MD5 94d467431b5671aa6552a8d2a8cb33b4
BLAKE2b-256 ca51594cfad882612c7ad2bcce36eee5c2a26d9ee3dfb6271e43ee6ca912e051

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.6.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.6.0-cp314-cp314-macosx_10_15_x86_64.whl.

File metadata

File hashes

Hashes for numkong-7.6.0-cp314-cp314-macosx_10_15_x86_64.whl
Algorithm Hash digest
SHA256 cb6c4625ee64a6bacbf7651c742c6ec7019fb87181bc519b8b96712975e544a2
MD5 56e28030977dcde9ff2c3a7030b1f85a
BLAKE2b-256 ba42358475e248b3fdd9b4d7b3d93cdf980fdcbf7b4eedb62d8fd9ff9a8d408b

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.6.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.6.0-cp313-cp313t-win_arm64.whl.

File metadata

  • Download URL: numkong-7.6.0-cp313-cp313t-win_arm64.whl
  • Upload date:
  • Size: 444.6 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.6.0-cp313-cp313t-win_arm64.whl
Algorithm Hash digest
SHA256 0cd7a1ce9c35052a1c83d411fd6462d96a7c71aebcb6fc158ba08d27f261d425
MD5 a537b34ea62bda757180801ead7549f0
BLAKE2b-256 29925f2c93b718880f02f9154d35c867cdb20ef94adec8af5f86cf630bce5192

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.6.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.6.0-cp313-cp313t-win_amd64.whl.

File metadata

  • Download URL: numkong-7.6.0-cp313-cp313t-win_amd64.whl
  • Upload date:
  • Size: 491.0 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.6.0-cp313-cp313t-win_amd64.whl
Algorithm Hash digest
SHA256 76a8eac04075ec918216eacdac087bec0925e9510a68d8ee0c026fb9dc182be9
MD5 f91f0413feb9706ae8f339e198451e10
BLAKE2b-256 0e7afbebfd0ff080b60f29374d62a746a9eb346293d803b63c8c19a0e672a1e3

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.6.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.6.0-cp313-cp313t-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for numkong-7.6.0-cp313-cp313t-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 a46961a19571550c063c68e4be9574e95b0afe59348a1fbf466267cf34ceb519
MD5 a03de40acbbd00490dd84fcac5be74eb
BLAKE2b-256 5435b2d4cb32f5fc8e9e98981d75c50e980ac783e72c7c62c38e53a98426dfe5

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.6.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.6.0-cp313-cp313t-musllinux_1_2_s390x.whl.

File metadata

File hashes

Hashes for numkong-7.6.0-cp313-cp313t-musllinux_1_2_s390x.whl
Algorithm Hash digest
SHA256 97fbd9f208a3570151a4f9f0519ad449eabd9fc95580e2d195e8a1a62b965541
MD5 b7e9990cea4039e6912f01e77e14d6bb
BLAKE2b-256 cefc58e1ad2049797250579ae3decd83f34db11c7b3cdc80f749cabc365f7763

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.6.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.6.0-cp313-cp313t-musllinux_1_2_ppc64le.whl.

File metadata

File hashes

Hashes for numkong-7.6.0-cp313-cp313t-musllinux_1_2_ppc64le.whl
Algorithm Hash digest
SHA256 a7df422f55209d036973cd05bb5d1cad43d166bea94e3d2755e1168b45a1db50
MD5 0766fcdb490ad2abcbe8cad2a3e14938
BLAKE2b-256 39620007888e2273e5782a3a9a41e2f3a4129a986f905f00a0e527f8ccd974f3

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.6.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.6.0-cp313-cp313t-musllinux_1_2_i686.whl.

File metadata

File hashes

Hashes for numkong-7.6.0-cp313-cp313t-musllinux_1_2_i686.whl
Algorithm Hash digest
SHA256 41836a37ef3246430658b6e8d5e53ac26c8fbdbc255062a1d3ad34b41a6be534
MD5 ca91d7f42a7e63d170f2104200018ff9
BLAKE2b-256 dd8777e52cb37e52c7a342645b1c5211a786c095d5e3e72f6294ccdc78cfe685

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.6.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.6.0-cp313-cp313t-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for numkong-7.6.0-cp313-cp313t-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 20a9ac6b43d391dbfdd8210496f1b699ff340a95bd907f959b5359c2046b5bb3
MD5 d9c7ced1b1ebd19b5f15891e77d7b02e
BLAKE2b-256 bd0daaeace9bf3c2c72d22cedf68f74c75f2c49512e32e026b4c2b26b249076f

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.6.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.6.0-cp313-cp313t-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for numkong-7.6.0-cp313-cp313t-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 7db4021ad15f1957de42d94d75ae47c7fcd414f897726eab6a73a95511d5a728
MD5 b29725aa3175ed7b294fa140cc71489a
BLAKE2b-256 7fc86ab4c3c53937453b40a6d477950e97500fef9e89f21e28cbf62040e02c09

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.6.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.6.0-cp313-cp313t-manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for numkong-7.6.0-cp313-cp313t-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 2d88c89f27fc68f2f6a0c7f11559790bef8d48dd6449c09abe24c5929564bc9a
MD5 2ec7d769fd9ddb046fdd9011a270b35a
BLAKE2b-256 69b03c345bd3d52c922ff632bc8d372bcf25c262402855b7a07c6c550033710f

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.6.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.6.0-cp313-cp313t-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl.

File metadata

File hashes

Hashes for numkong-7.6.0-cp313-cp313t-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl
Algorithm Hash digest
SHA256 7577849909a9a2614c100be9e2c8b79b5cb421e6efd57c95dd6df9e60011d6e2
MD5 f37273e9aa0060ba9a9154db8f29cd48
BLAKE2b-256 6b62bcad0396f68e275df37cc1449224e59cc1d8c41850e47d79cdbc0878082c

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.6.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.6.0-cp313-cp313t-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl.

File metadata

File hashes

Hashes for numkong-7.6.0-cp313-cp313t-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl
Algorithm Hash digest
SHA256 0a3a92b081a235d018412c24d90dbcf3b03c7b5df6c6a5c4619a42ba4e963a9c
MD5 f26603b6db9c34bb802e45f89a63e03e
BLAKE2b-256 62903b8df5671405ae2fd1549abaabade077793b44fa9e3a40dea8128b587c0c

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.6.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.6.0-cp313-cp313t-manylinux2014_i686.manylinux_2_17_i686.manylinux_2_28_i686.whl.

File metadata

File hashes

Hashes for numkong-7.6.0-cp313-cp313t-manylinux2014_i686.manylinux_2_17_i686.manylinux_2_28_i686.whl
Algorithm Hash digest
SHA256 b448f5cb7bd48a8cdb0a41078e87e35a756788e9b9eb9545de488df066024239
MD5 3b238d4682df9d4dd53c1d804d4960e5
BLAKE2b-256 4412e962d095c3d99c74081fcecb7cb2c79994eb80bc36270e17dd06bb407f60

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.6.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.6.0-cp313-cp313t-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for numkong-7.6.0-cp313-cp313t-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 8d51335fedfae103722cf6ad550c64aef05784db1de42c2f2a98a51613eb1b2e
MD5 3e35af1521b30baa50338dc3448ea783
BLAKE2b-256 859a5cd5b83952ad86e7f769567e5b6cc4388b2ef7cda136db13651d66e27ade

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.6.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.6.0-cp313-cp313t-macosx_10_13_x86_64.whl.

File metadata

File hashes

Hashes for numkong-7.6.0-cp313-cp313t-macosx_10_13_x86_64.whl
Algorithm Hash digest
SHA256 71f98fc563319ff58dbc8ed09dc5a4f5bd02b2574a3226aca7d5d223418f65f6
MD5 57713ef6d72f9984f73d3a7fe5f48017
BLAKE2b-256 947d761a4f7791e170f0e13c448e7977f6dde4bd9071cee5a6f32673485836f3

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.6.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.6.0-cp313-cp313-win_arm64.whl.

File metadata

  • Download URL: numkong-7.6.0-cp313-cp313-win_arm64.whl
  • Upload date:
  • Size: 443.7 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.6.0-cp313-cp313-win_arm64.whl
Algorithm Hash digest
SHA256 dd3e52e3f9f3eb7720af328b6ff9f347614282e1e2c2aec53ebb1cc110ba8eb7
MD5 c8a0b1a9fa1c3bfeb2a7003133244e14
BLAKE2b-256 16495036c65646a768eeebcc562495cba0d9d0ca6a2170463c689b58316ba7c7

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.6.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.6.0-cp313-cp313-win_amd64.whl.

File metadata

  • Download URL: numkong-7.6.0-cp313-cp313-win_amd64.whl
  • Upload date:
  • Size: 488.4 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.6.0-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 30cd0bc625ea3ed86e97dc4e9c204be7cd6420c02c11cb86e092e11fcac3d00c
MD5 d7b788a629255eaaf238d406ab09163e
BLAKE2b-256 c1b702905cfd29d8763f56f515bf57b88ddb2746dee246224bfeb4f5aac76a28

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.6.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.6.0-cp313-cp313-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for numkong-7.6.0-cp313-cp313-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 f7d6d2ff412882b17388997d52dd6b78d9df58fc545ac7f28b2cd607b984c9da
MD5 1a7b729b136605362c44b14e26409aa6
BLAKE2b-256 7873758c3d8c651b55456acab2602fb0df140efbdd33d00b9cc7d871e892b946

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.6.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.6.0-cp313-cp313-musllinux_1_2_s390x.whl.

File metadata

File hashes

Hashes for numkong-7.6.0-cp313-cp313-musllinux_1_2_s390x.whl
Algorithm Hash digest
SHA256 44d7f742d9bc68dbb020d95a0ef7591fdcdc1c790bcf4d2d7699d40ae03be5c9
MD5 cb12bc17d3dafa442791a13c9c9234ab
BLAKE2b-256 b6d7c015387f4f85f8579521d7b9debc38cf987a9d079aeededdf8f5f18f454c

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.6.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.6.0-cp313-cp313-musllinux_1_2_ppc64le.whl.

File metadata

File hashes

Hashes for numkong-7.6.0-cp313-cp313-musllinux_1_2_ppc64le.whl
Algorithm Hash digest
SHA256 a24ac9bce14be47f0fa29608fdb1db75ee0e647f4a9457eb2c22df4d1fb09d12
MD5 ee56dfcf35710bc172ad856cfd726ddb
BLAKE2b-256 2b2c4b18aac518c4adef7b591e79a79b3afa029858a005b975dde586fbb49fda

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.6.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.6.0-cp313-cp313-musllinux_1_2_i686.whl.

File metadata

File hashes

Hashes for numkong-7.6.0-cp313-cp313-musllinux_1_2_i686.whl
Algorithm Hash digest
SHA256 160f8b5f5c7521bd11a5d5ec3afcf0a112aea907e8f90d38eae68240d56f55c3
MD5 13ea1d7bad5f800329af0e70831fa531
BLAKE2b-256 520190e33be03f247c0e785d23f53abcb7d5d9e00bb912c1b326ee9badff24ee

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.6.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.6.0-cp313-cp313-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for numkong-7.6.0-cp313-cp313-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 d97cbbab31deb575c13602e7a1f7baf6413d72eefd503a10d74ddbac3205707d
MD5 c4725835f2c93b87e903f512e3066b38
BLAKE2b-256 419b7c3a70e335788cc5254181573b9e4f29251ee2b243426e1ad917813ae1c2

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.6.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.6.0-cp313-cp313-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for numkong-7.6.0-cp313-cp313-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 42f3f272c95eef7558cbf297f0609100e0899c2fc0833c8c12232caab5f5748c
MD5 e1763dc7c6a55a1245db2ae658558cd4
BLAKE2b-256 8fd46196786337153b76a68f4ac67e49b4d55548ad8f2a2300c9729e21eba174

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.6.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.6.0-cp313-cp313-manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for numkong-7.6.0-cp313-cp313-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 b99603e103b7a6ca67da973893578efac3877b578b3901b799889693540da3bd
MD5 fd4d6f7a65808a30655df2899d036d58
BLAKE2b-256 8cd17e526d9760a357854731f84896f3e867971919c311efc7a531b4157db6d0

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.6.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.6.0-cp313-cp313-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl.

File metadata

File hashes

Hashes for numkong-7.6.0-cp313-cp313-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl
Algorithm Hash digest
SHA256 75f240f156a3afd63ba547d330d12ff6609b00e51fb59b469c58511c1c7c375b
MD5 62251f5a5c72d18164167961fbcc610c
BLAKE2b-256 57f8519f9ae069b7b4e8260f3210c08de4967355e2db4d36d5e4a760bfddc423

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.6.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.6.0-cp313-cp313-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl.

File metadata

File hashes

Hashes for numkong-7.6.0-cp313-cp313-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl
Algorithm Hash digest
SHA256 9c578208d9ca1a4d99edfc9530b13211c1623c3ea235c148ffaba362544dc579
MD5 259958f151ba4d6a53de68e5e74982a9
BLAKE2b-256 85c0246c6d138871079c051b65c2bb85d6f3d4767fe313da897727506e43f6d7

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.6.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.6.0-cp313-cp313-manylinux2014_i686.manylinux_2_17_i686.manylinux_2_28_i686.whl.

File metadata

File hashes

Hashes for numkong-7.6.0-cp313-cp313-manylinux2014_i686.manylinux_2_17_i686.manylinux_2_28_i686.whl
Algorithm Hash digest
SHA256 31f93350c1b729800d876c690429d2d77aea58f79b7c7211a5cd5b762c5fb7c6
MD5 895a2c645fe83b0b5b5eea26dc63c08c
BLAKE2b-256 a9be91145a8f6368752925a5ccc0ee5f4d93201516e8d918ff1c04be7f1f23fa

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.6.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.6.0-cp313-cp313-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for numkong-7.6.0-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 b85c65df740c9ef5be16ca567e84355229e469048c6ea42de721292f3027ac17
MD5 e339aada83545f140cc4a6b0a04ddef1
BLAKE2b-256 70e1ab0e29c538e3f012784344fb4a75ecb0921aa63c8af2fe347ab162aaf944

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.6.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.6.0-cp313-cp313-macosx_10_13_x86_64.whl.

File metadata

File hashes

Hashes for numkong-7.6.0-cp313-cp313-macosx_10_13_x86_64.whl
Algorithm Hash digest
SHA256 50edbafefd70fc5ca6deeeb4c84d7f7564ad53475f845df8a44d410e7e6104d1
MD5 4b26b9f257a05677cf29a957d880275e
BLAKE2b-256 e7897e9e63044ed28012d384d30fd8b725065d02fef4ba3eb3b965848f3f8461

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.6.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.6.0-cp312-cp312-win_arm64.whl.

File metadata

  • Download URL: numkong-7.6.0-cp312-cp312-win_arm64.whl
  • Upload date:
  • Size: 443.7 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.6.0-cp312-cp312-win_arm64.whl
Algorithm Hash digest
SHA256 cb1eac007401343c0ffab903fdabbb4ebf39418f2a02c499ad410ea2e490b451
MD5 a35acc74ee8091c35484562964d42b4c
BLAKE2b-256 d6ab3e11d85a5b76ba3fcb72e390c1cbdaecf163288178bae884280d8d26d6cf

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.6.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.6.0-cp312-cp312-win_amd64.whl.

File metadata

  • Download URL: numkong-7.6.0-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 488.4 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.6.0-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 46ca0f608f61bb1058cb634241f8492379a29e7277b5c95851e10bffc4e8df70
MD5 5c397a029bce3bc3a2807e583f8d29ba
BLAKE2b-256 dc453f2cb091e7be1c7a662d8eac0b9159b37a0e1db8f4bf832dfbfdb7677b8f

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.6.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.6.0-cp312-cp312-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for numkong-7.6.0-cp312-cp312-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 1a26a326fdb278b3a8eb293ab98132765c58f186cba97e1712512b35f498aaaf
MD5 ca90da3114b7963707e265ef6f7e1cb1
BLAKE2b-256 8cfb3ac57bad0493db53306833de006bf91dbe5d60f77d76e669cbab865fc2ee

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.6.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.6.0-cp312-cp312-musllinux_1_2_s390x.whl.

File metadata

File hashes

Hashes for numkong-7.6.0-cp312-cp312-musllinux_1_2_s390x.whl
Algorithm Hash digest
SHA256 9a880f29200f022af0b5b464001e6f055817e7df94738d680ac5478feb472b7d
MD5 036337a8bf90ab56330fd846eba9203a
BLAKE2b-256 4723068083b52f10aadb3c90d6210eb37fb2cae4f2de916befb2d2b46ad27f49

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.6.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.6.0-cp312-cp312-musllinux_1_2_ppc64le.whl.

File metadata

File hashes

Hashes for numkong-7.6.0-cp312-cp312-musllinux_1_2_ppc64le.whl
Algorithm Hash digest
SHA256 76b11ac75bcfe07ef7de2cb16c5a9848d862d62a497a3b8d754bd80ac622a800
MD5 34a785ffad6084eaa66a27fbf4544759
BLAKE2b-256 9aaf70baa63a18699b886f19d7f2215a66e100dc37d6a44152508bfa67c8f5f2

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.6.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.6.0-cp312-cp312-musllinux_1_2_i686.whl.

File metadata

File hashes

Hashes for numkong-7.6.0-cp312-cp312-musllinux_1_2_i686.whl
Algorithm Hash digest
SHA256 0a1fda50b19861af84fe1cf56668e372540f6721e8e32a1a84fb17390cf77882
MD5 b42817ae921d1532c84868b43251c9e0
BLAKE2b-256 4a151dad963224dac13989e169ff95a87b3e9fe9822c5b5a9413b4365bcee712

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.6.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.6.0-cp312-cp312-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for numkong-7.6.0-cp312-cp312-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 2dc8dee044a36a2b5d6b2fc505edca3b19891ec2876ce2f526139d21c2c1c857
MD5 f3fa5c7805ad062808b8a2e6c962a423
BLAKE2b-256 5a342c4048988eccf18b12415e29ace9fce952483f98db61f25693b678b727c6

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.6.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.6.0-cp312-cp312-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for numkong-7.6.0-cp312-cp312-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 a7a1eae8134a6a4d30bc96363e3312a8c2433df3fa5695fb23fdd4d85261ab95
MD5 9c0aca2f41c6df900ac01c7999e2f26a
BLAKE2b-256 0c00b84bc575679191796d2a41f674ba6bbf31c99dbb922ac79094737bfdfdb4

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.6.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.6.0-cp312-cp312-manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for numkong-7.6.0-cp312-cp312-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 8373b50ab4d03a7229f4ccb585548dea6f108e43d7cf1f8bcafb953cab1326e2
MD5 1ea370e46f01b84d0067cf6969dcec32
BLAKE2b-256 5f1a358309205239b86c388b49d496e8f466ef6800c3e6fbc6cc5771141e9bef

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.6.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.6.0-cp312-cp312-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl.

File metadata

File hashes

Hashes for numkong-7.6.0-cp312-cp312-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl
Algorithm Hash digest
SHA256 8616f90ec7469130c55fcbacfcb49189cd830467a51790b0d79e142d99a98194
MD5 b5613f93e924b937f6f79d6b3bcc7d3d
BLAKE2b-256 9ed9177ccb8827e2df2f647378bb1e8698120092a93b7065c7b1ef6226d0c265

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.6.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.6.0-cp312-cp312-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl.

File metadata

File hashes

Hashes for numkong-7.6.0-cp312-cp312-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl
Algorithm Hash digest
SHA256 7ae544d185d46692af786028ace9c774f663a3aeb684c485d75d883fec094ff4
MD5 fd9a9c534ce80c911ac485a1b714a302
BLAKE2b-256 8119d3f104b31418b8469e11e718aeadced254ae9cef30f56a06268db4f85f33

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.6.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.6.0-cp312-cp312-manylinux2014_i686.manylinux_2_17_i686.manylinux_2_28_i686.whl.

File metadata

File hashes

Hashes for numkong-7.6.0-cp312-cp312-manylinux2014_i686.manylinux_2_17_i686.manylinux_2_28_i686.whl
Algorithm Hash digest
SHA256 9c2a0cdbc79f650b4457ed160ea31830678132065547fe272035b9fa49e360e9
MD5 81f656a16fc7e6882667b56072ce57fb
BLAKE2b-256 ae095478c2e3918ac886868b3b9f05d74f71c0ab6f4b31b1b404cb08b0e4bcbb

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.6.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.6.0-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for numkong-7.6.0-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 93e7ee1d616b2b7a1fde9eb2392ba289f0c89c119e721ef25bd862b1ff54c450
MD5 064ff1e8e33a01326dc91b4daabb1ee3
BLAKE2b-256 be213b1fd5fd5d303952d195de33d6d17898a2af81864c438228e330e9f67d05

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.6.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.6.0-cp312-cp312-macosx_10_13_x86_64.whl.

File metadata

File hashes

Hashes for numkong-7.6.0-cp312-cp312-macosx_10_13_x86_64.whl
Algorithm Hash digest
SHA256 338e0731ca822b54b5a1de225a7e8463058a1a0052b58cc0552383d02342e0e3
MD5 ea2675fc794795e16353cd79d6acef7d
BLAKE2b-256 8415985c0e45a3312b31ee837ef269b991ba2d3b52ec12c3ff6c15f183d22ff7

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.6.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.6.0-cp311-cp311-win_arm64.whl.

File metadata

  • Download URL: numkong-7.6.0-cp311-cp311-win_arm64.whl
  • Upload date:
  • Size: 443.6 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.6.0-cp311-cp311-win_arm64.whl
Algorithm Hash digest
SHA256 ff9f30679bd237c4587b060ac90b9d46a494e816bd10543cee51c162a2379e5b
MD5 4d9f08d24287d55f8be08c64975238c9
BLAKE2b-256 bc16a30ea8da08f2e73de4f7fded58f333cb805b27cc2719dc61446f52f0d7ec

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.6.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.6.0-cp311-cp311-win_amd64.whl.

File metadata

  • Download URL: numkong-7.6.0-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 487.9 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.6.0-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 035f03bee72bd18892be92a124d949579dc446eaceb8707eba2e0ebf7471cabd
MD5 155323415b5ba1a6c422ea17452a62db
BLAKE2b-256 fd5beaff9717b4d92bd68bcc39f93b8d1c3068be8502154286d430cdff6c852d

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.6.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.6.0-cp311-cp311-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for numkong-7.6.0-cp311-cp311-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 c97ab3f921fcb7876cee4e0a30e6e480acfb432808cc3c686fdf08f90f677c2e
MD5 0005b5afd61567e28a84ef25313a4d4c
BLAKE2b-256 9b73f3901c2e0bd95c9eb2a5946ced64dcf3b4fd3386ac708cf083f353328137

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.6.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.6.0-cp311-cp311-musllinux_1_2_s390x.whl.

File metadata

File hashes

Hashes for numkong-7.6.0-cp311-cp311-musllinux_1_2_s390x.whl
Algorithm Hash digest
SHA256 54b7b2f98ade718f4cb9d784f26481a53a3fcc7419489c2c32fca6591a439277
MD5 f14a3cebda09bf62fbcd5eb104d5e3b6
BLAKE2b-256 196b18ed9c21eb3b35b698dc4c9a4e986896bbec05c85ba1b3d19cf183e2fb85

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.6.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.6.0-cp311-cp311-musllinux_1_2_ppc64le.whl.

File metadata

File hashes

Hashes for numkong-7.6.0-cp311-cp311-musllinux_1_2_ppc64le.whl
Algorithm Hash digest
SHA256 01a7e5edbd1f89c5f063cd725019986015bbe748477569f30b2e03a7905b90cd
MD5 5f75a3e6b4fb225def1064971ac63344
BLAKE2b-256 d2c7c10320b053187c68edf5f7223aa39d6ed60528391e1051ee0d88f19d1f58

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.6.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.6.0-cp311-cp311-musllinux_1_2_i686.whl.

File metadata

File hashes

Hashes for numkong-7.6.0-cp311-cp311-musllinux_1_2_i686.whl
Algorithm Hash digest
SHA256 6da7784ee4127a9a6f701b1ab5c1a3bfa75963ac297f0f06c23524bb4e8cba60
MD5 773c0edcf5228ecc319ab709761d5fc5
BLAKE2b-256 84751964c6c239324dea88b9b1c386076691e5ebe7979c05c79676e2e55195db

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.6.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.6.0-cp311-cp311-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for numkong-7.6.0-cp311-cp311-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 e69fd3d36f7f05a0e47b3f9f8bddcf6cfa67ad88138cddec56545f4515cd9a7e
MD5 dc5cadb4ff848c8fc986e60f12a3aa4c
BLAKE2b-256 baf58f3838f8342f07fea5ef45309973663f5e5fc0eb35c0db61444f11af5586

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.6.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.6.0-cp311-cp311-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for numkong-7.6.0-cp311-cp311-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 7e9539bd3bb732b0ef05702c3c44d0353a1e2ac5ffc9728f3675b08805eba921
MD5 3ea8c782745ddcd86169ac1eae608965
BLAKE2b-256 07c450625f223102b0234aa31fc0bed524978c1abef6c2e7f32ef1818c5c20d3

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.6.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.6.0-cp311-cp311-manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for numkong-7.6.0-cp311-cp311-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 205b5d8a1477ddc552a27ce905b214f0b1cfda198437ffb9a37217f5ec806eb3
MD5 012d489b3426ae918bd49613b472b988
BLAKE2b-256 9c0fcb8b790444881f1d4cb7ca154c8e79618c47a33e6b32e0b29d7d300e319f

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.6.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.6.0-cp311-cp311-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl.

File metadata

File hashes

Hashes for numkong-7.6.0-cp311-cp311-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl
Algorithm Hash digest
SHA256 8e25ca4729ddd35ceac6174dad011ce89ba27617f793644e8a624c39a006cde1
MD5 b54202a6c8a4218452df9e500d191b87
BLAKE2b-256 8599dcb6e658ce8791baa4abba0387505719006fb0e1024037886d3bffdb98c9

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.6.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.6.0-cp311-cp311-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl.

File metadata

File hashes

Hashes for numkong-7.6.0-cp311-cp311-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl
Algorithm Hash digest
SHA256 39056a8fbc19ac09e522e6e5adbb83a2a89574523d52846a002a3ab9f629395a
MD5 049b3cae7ce1b0108efc35cb1a29129e
BLAKE2b-256 cf2f3707ccf8698f3ff64ab83285bef67a0c0a7f7daf6e1a1b5b644451396f09

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.6.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.6.0-cp311-cp311-manylinux2014_i686.manylinux_2_17_i686.manylinux_2_28_i686.whl.

File metadata

File hashes

Hashes for numkong-7.6.0-cp311-cp311-manylinux2014_i686.manylinux_2_17_i686.manylinux_2_28_i686.whl
Algorithm Hash digest
SHA256 8e07588b30d523d9336025b8ad0ef07876fb94b714823d15ee888723df416034
MD5 496d6dca3258111c91174864faeaee53
BLAKE2b-256 804162898cdc38f3403dd4713cb7864774aeeb90c5c8a74521b614858964aa43

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.6.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.6.0-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for numkong-7.6.0-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 fd04fd98da52094c7850dd6c3f350a545e70c06aea7b467e9c79a8bb37bfbf8e
MD5 0350e3546cff9af9cf28217379a5e04f
BLAKE2b-256 c10a76cf12c729ebdc492c1b22717845afa6cbdf85685e708a21fe80698814a6

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.6.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.6.0-cp311-cp311-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for numkong-7.6.0-cp311-cp311-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 25ed3200c78e841b9bc866deda82976123c06cdc2ebb6d6a46d1bb8ad002b1c1
MD5 97e68b12fce53ecad6b10a2bf9c63b96
BLAKE2b-256 0b5f50a222ecedfbe871bb07850f0581e0c243d5e6688db151cc51a0a7c256b1

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.6.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.6.0-cp310-cp310-win_arm64.whl.

File metadata

  • Download URL: numkong-7.6.0-cp310-cp310-win_arm64.whl
  • Upload date:
  • Size: 443.8 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.6.0-cp310-cp310-win_arm64.whl
Algorithm Hash digest
SHA256 04c5c4f01c06d838c84387a8c74eee8d390d9bdba37b0acddca337031aa2642f
MD5 84bedf89a046f00e347b042e4948f872
BLAKE2b-256 4db1458b55e37db41c1bc9c5fa783d549a7239b0082d7402868888d73c4df34a

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.6.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.6.0-cp310-cp310-win_amd64.whl.

File metadata

  • Download URL: numkong-7.6.0-cp310-cp310-win_amd64.whl
  • Upload date:
  • Size: 488.0 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.6.0-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 e69baad2a668c62b581b5b0437ade513bee2d465220c35f32232c7df05f89394
MD5 fd7f7a141ae980a032afa67d057b732a
BLAKE2b-256 4483712fa8f2e3fd007136a18da9f09c4de65d1d7f8f5fe5d690a774191154a4

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.6.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.6.0-cp310-cp310-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for numkong-7.6.0-cp310-cp310-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 d06ccd062483e37ba4e007fe01bec85a8a1eff9fcc3d4b43e3363f98d08f1c20
MD5 ab30d52f70bb2d624f72516ece4d55ab
BLAKE2b-256 5cba765857905f54a2a704d45f35dd60bfcbdab9858185383b05f2e709c103c3

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.6.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.6.0-cp310-cp310-musllinux_1_2_s390x.whl.

File metadata

File hashes

Hashes for numkong-7.6.0-cp310-cp310-musllinux_1_2_s390x.whl
Algorithm Hash digest
SHA256 3a3e8cf39b75e98bfbdfd206edd3b22b487500225720ac5b7767df6d1409d0ec
MD5 7e12065223ff4ad472e9f83c3414d108
BLAKE2b-256 32b93f6a154949480944fe628a48463c15acf18b18d3c135b55762648756fcc3

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.6.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.6.0-cp310-cp310-musllinux_1_2_ppc64le.whl.

File metadata

File hashes

Hashes for numkong-7.6.0-cp310-cp310-musllinux_1_2_ppc64le.whl
Algorithm Hash digest
SHA256 6599ac0279deef27edb44c0f16a5ac30503b5be85f6139e8dfcca9a105befbc1
MD5 3ecdaeb96709fe84ef1b4f9a9417ea2b
BLAKE2b-256 a4942385da5e118d3e12ae3bd68c893dd8e87a1cde20269256b4a497016e27c8

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.6.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.6.0-cp310-cp310-musllinux_1_2_i686.whl.

File metadata

File hashes

Hashes for numkong-7.6.0-cp310-cp310-musllinux_1_2_i686.whl
Algorithm Hash digest
SHA256 66ec37da238f2de30e14fd9ea749d5ad6fe212f42cb4fe07e67d257796fc36d2
MD5 7f76efd6a8a9f6b1e436e675d9567e4f
BLAKE2b-256 6dd98c5319a6c92b501ddf330b6097e9c3efee2ccf3ba7296d69522867956d34

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.6.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.6.0-cp310-cp310-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for numkong-7.6.0-cp310-cp310-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 4eb490d209d455b8e02047af96682ada3c1e237f51e4f1cf87d3a3010c455e5e
MD5 3d380e50cd1840ca267eabbeab1c6de8
BLAKE2b-256 8d47f5b3c22f5b1fe600ea77aed25fc61d035643e52bff42594146a5d05f64a2

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.6.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.6.0-cp310-cp310-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for numkong-7.6.0-cp310-cp310-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 d62f2e61760184d622d2d4acc29774420eb1e14c70d80ea01d2c534828e723a2
MD5 5b1016b6cf48b02c8299ee3182c9e419
BLAKE2b-256 38022b36f58361d4344392a20345828d4531cb458c36bc35c5e6c2b63a1f8a9a

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.6.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.6.0-cp310-cp310-manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for numkong-7.6.0-cp310-cp310-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 35251f6092a3c2c870c706d6323ea8330308373bb4fa09fc68294e59b5e662fd
MD5 039b55c70e377471faf3d05a0713557a
BLAKE2b-256 235f0364e6a5b584da753a9029c171554d632f3393880e6c3019db8ddb0d6d9e

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.6.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.6.0-cp310-cp310-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl.

File metadata

File hashes

Hashes for numkong-7.6.0-cp310-cp310-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl
Algorithm Hash digest
SHA256 e9aac13e7a05956f8445a877607e8a8dc6381de7e5efb34545b9a01733b863f8
MD5 8c45f9ceeb0526f858d0f49b7224500b
BLAKE2b-256 921e9816c12eefd5e560f5e923c29865167eeceb975aff4fc68c70bf88af8071

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.6.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.6.0-cp310-cp310-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl.

File metadata

File hashes

Hashes for numkong-7.6.0-cp310-cp310-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl
Algorithm Hash digest
SHA256 eb9f8f759c6be71321af94c005618370164b1e94b7c929a494b14637dcde55bf
MD5 88c8371b30f2cf88bb2fdba2149e846c
BLAKE2b-256 4149a2029463d3be56ccc585eb8d48cf28099c82785e408628e72c5fa746613e

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.6.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.6.0-cp310-cp310-manylinux2014_i686.manylinux_2_17_i686.manylinux_2_28_i686.whl.

File metadata

File hashes

Hashes for numkong-7.6.0-cp310-cp310-manylinux2014_i686.manylinux_2_17_i686.manylinux_2_28_i686.whl
Algorithm Hash digest
SHA256 6f3859cc99286ed90b337de202bcc5da904756218cef254c95e6ad5977a71db6
MD5 818a68b01bc36e708e10ccc5b114ae73
BLAKE2b-256 33e6d26a3888c517617f3ef1f664a719b56671948412c89233f7b88908f4460c

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.6.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.6.0-cp310-cp310-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for numkong-7.6.0-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 76478e60603cc00bf3162e4a863b6875b26a3bf30d74968440bbf02ab1fb16e9
MD5 5fb58d7a20ba741b0b49b2f8fd241f62
BLAKE2b-256 72ca7a0962972aa0b46b6c1859b452c44fe765612bdadefa706dc17cebeaa224

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.6.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.6.0-cp310-cp310-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for numkong-7.6.0-cp310-cp310-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 4700e1de5454977a7ae0df8628a2910ade2f484ebdef8dd5e94dc337d6e11c81
MD5 95046b93703ba6ae0b1c3857af607d9a
BLAKE2b-256 3965480219793941c6ca2303ba5d749ebdf8df9207f424d0d4c612a69873ba0f

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.6.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