Releases: thyn-ai/mojo-kernels
Release list
v0.2.3
v0.2.2
v0.2.1
0.2.1 (2026-09-28)
Fixed
- meta: declare Thyn as author and maintainer, with https://thyn.ai, on every package (#75) (3872c03)
v0.2.0
v0.1.7
v0.1.6
v0.1.5
v0.1.4
v0.1.3
Arena wheels v0.1.1-dev — bm25-mojo 0.1.4.dev0 (Xeon arena fix)
Dev drop carrying one wheel: bm25_mojo-0.1.4.dev0-py3-none-manylinux_2_35_x86_64.whl for the Algenta Speed Arena. Everything else stays pinned to arena-wheels-v0.1.0.
What it fixes. On the Space's Xeon cell (and on some CI x86_64 machines) the 0.1.2 arena wheel's BM25 warm margin vs bm25s sat at ~1.0-1.37x and dipped below 1.0 (held cell: 5,000 docs x 10 queries x 10 terms). Layer autopsy showed the kernel walk was ~2-4us of a ~38us batch call; the rest was wrapper-side numpy/ctypes dispatch. 0.1.4.dev0 packs the query batch in one flat pass (2 numpy calls instead of ~15) and marshals FFI pointers as c_void_p ints.
Measured (linux x86_64, arena-exact protocol, median of 5 warm, pinned query set; CI run 35640240182): arena S 1.98x, M 1.57x (was 1.24x), L 1.63x; full 12-cell sweep 1.27x-2.01x; second sample (EPYC docker --cpus=2): S 2.27x, M 1.90x, L 1.65x. Parity gate: max|diff| vs rank_bm25 1.8e-15 (gate 1e-8). Cold: ~0.36ms vs bm25s' ~167ms numba re-JIT per index.
Provenance. Built by .github/workflows/bench-bm25s-arena.yml (run 35640240182) from branch chore/bm25-xeon-arena @ 1607ea1 (pixi-locked Mojo 1.1.0, --target-cpu x86-64-v3, auditwheel-repaired). sha256: d1d6aa4113b703480d837e7e3d875e2a6584d2ae164f35ca8a41b3c4528da65a
v0.1.4.dev1 (2026-09-21, round 2 — live-Space M-cell fix). Live verification of dev0 on the Space's Xeon 8375C showed S/L winning but the M cell (5,000 docs × 10q × 10t) at the flip point (3/5 direct wins, median 1.136×). Root cause: in the arena's interleave, the per-call walk over the ~2 MB Python vocab dict pays the eviction tax (staged in context: flat map+pack 7.4 µs tight → 36–48 µs). dev1 adds ABI v3: a native FNV-1a vocabulary map attached once at index build + a string-token batch entry point, so the query path never touches the Python dict (pack stage in arena context: 48.5 → 23.9 µs). Exactness: only exact str tokens take the native path (guards refuse non-str/non-ASCII/embedded-NUL/over-wide and fall back to the id path with identical results); rows bit-identical to the id path; differential suite 84/84; gate vs rank_bm25 1.8e-15 ≤ 1e-8. sha256 67376d13144864dbff6159714982d36101c425248755c20f1af52465a0d0a4e2 (CI artifact, run 35652896763, branch chore/bm25-xeon-arena-r2).