Immutable
release. Only release title and notes can be modified.
[0.5.0] - 2026-06-20
Added
- (beir-bench) --ef-search flag for HNSW (was hardcoded const)
- (beir-bench) Within-query-threaded sign baseline + DistL2 HNSW (#244)
- Promote RankQuantFastscan to public API + .ovfs persistence (#233)
- Ordvec on-disk format (.ov* magics) with full back-compat for legacy .tv* (#230)
- (experimental) Constant-weight bitmap overlap + finite null-tail helpers (#222) (#227)
- (experimental) Reusable RankQuant bucket-code API (#220) (#226)
- (experimental) Indexed MultiBucketBitmap contingency kernels + batched projections (#219) (#225)
- (experimental) Stateless dense bucket-overlap contingency + projection API (#219) (#224)
- Capability-gated b=8 RankQuant (research/evidence width) (#221) (#228)
- Add search_asymmetric_subset_batched_serial allocating wrapper
- Add search_asymmetric_subset_batched_serial_into (allocation-free serial batched rerank)
- Add SignBitmap::top_m_candidates_batched_serial_csr (serial CSR stage-1)
- Add CandidateBatch CSR type + helpers
- Add TopK::reset/reset_with_tie_keys/finalize_into_with_scratch for buffer reuse
- Add l2_normalise_into (allocation-free query normalize)
- (python) Ship .pyi type stubs + py.typed for the abi3 wheel
Changed
- State public scale evidence and retract near-flat framing
- Add benchmarks/README front door, move withdrawn results to withdrawn/
- All-Rust BEIR benchmark + README above-the-fold (#237)
- Extract shared subset-rerank row helper + SubsetScratch (behavior-preserving)
Documentation
- Graduate the messy-corpus robustness finding into product docs
- Reconcile TwoNN evidence + Lean-PR status across the writeup
- Add "What is ordinal retrieval" framing to README (#245)
- Finish RankQuantFastscan public-API promotion + positioning lift (PR3) (#243)
- (rank_io) Note OVFS metadata-probe deferral (#232) (#242)
- Product-neutral examples in ordvec-manifest (remove sibling-product names) (#229)
- Disambiguate the _into output width (index length, not row length)
- Make the README quickstart copy-paste runnable + fix determinism.md sentinel claim
- (fuzz) Clarify scratch helper is borrow-safe, not nested-safe
- Document unsorted-candidate-row contract on batched subset rerank
- Document per-row len<=n_vectors cap on batched subset rerank
- (python) Document search_asymmetric_subset min(k, len(candidates)) cap
Fixed
- (beir-bench) Ef in HNSW slug + validate ef>=top_k (review feedback)
- (beir-bench) Streaming row-bounded npy loader (--max-docs honored, ~2x less peak RAM)
- (security) Pin benchmark Python deps + triage bincode advisory (#240)
- (release) Ship license text in the ordvec-manifest crate + wheel
- (fuzz) Harden scratch-file reuse (reentrancy, IO recovery, set_len, docs)
- (deps) Bump pyo3 + numpy 0.27 → 0.29 (security)
- Address review findings
Performance
- (simd) AVX-512 masked-tail scan for non-512-bit-multiple dims (BGE-768 ~4x stage-1) (#214)
- Skip redundant zeroing/preclear in batched subset rerank