release: v0.10.0 -- professionalisation release - #54
Conversation
Bumps the version to 0.10.0 and documents the landed work. No library behaviour changes beyond the surgical SnapIndex.search(k<1) validation shipped in PR #50; everything else is CI, docs, tests, and benchmarks. Adds: - CHANGELOG entry for 0.10.0 covering PRs #43, #49, #50, #51, #52, and #53 (CI matrix + wheels, MkDocs site, 40+ new tests, threading curve, forward-compat errors, competitive Pareto bench). - ROADMAP.md with scoped plans for v0.11 (streaming ingest, OPQ, strict mypy), v0.12 (file format v2, delta buffer), and v1.0 (API freeze + deprecation policy). Explicit non-goals so nobody opens a GPU-backend PR. - CITATION.cff so downstream papers can cite snapvec with a machine-readable metadata file. References TurboQuant (arXiv:2504.19874) and Jegou et al. product quantization as underlying algorithms. - README roadmap link so ROADMAP.md is discoverable from the project root.
There was a problem hiding this comment.
Pull request overview
Release-prep PR that bumps snapvec to v0.10.0 and adds/updates release documentation (changelog, roadmap, citation metadata) to support the upcoming tag-triggered PyPI publication workflow.
Changes:
- Bump package version to 0.10.0 in runtime (
snapvec.__version__) and packaging metadata (pyproject.toml). - Add release documentation:
CHANGELOG.mdentry for 0.10.0 and a newROADMAP.md. - Add project metadata and links: new
CITATION.cffand a README link to the roadmap.
Reviewed changes
Copilot reviewed 6 out of 6 changed files in this pull request and generated 1 comment.
Show a summary per file
| File | Description |
|---|---|
| snapvec/init.py | Updates runtime __version__ to 0.10.0. |
| pyproject.toml | Updates package version metadata to 0.10.0. |
| CHANGELOG.md | Adds 0.10.0 release notes covering prior PRs. |
| ROADMAP.md | Introduces a roadmap with planned work and explicit non-goals. |
| CITATION.cff | Adds citation metadata for academic/research usage. |
| README.md | Links readers to the new roadmap document. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
|
|
||
| ## [0.10.0] -- 2026-04-20 | ||
|
|
||
| Headline: **professionalisation release.** No library behaviour |
The headline claimed 'no library behaviour changes' but the Changed section right below lists one: SnapIndex.search now rejects k < 1 with ValueError instead of silently returning all results. Rewrite the headline to name the one behaviour change explicitly so the reader does not have to reconcile the contradiction themselves.
There was a problem hiding this comment.
Code Review
This pull request prepares the snapvec library for version 0.10.0, focusing on professionalization. Key changes include the implementation of a comprehensive CI matrix, a new documentation site, executable examples, and a significantly expanded test suite with property-based and adversarial tests. Additionally, the PR introduces a CITATION.cff file and a detailed ROADMAP.md outlining future development goals and non-goals. Feedback was provided to ensure the CHANGELOG.md accurately reflects the supported Python versions in the CI matrix.
| ### Added | ||
|
|
||
| - **CI matrix** across Linux x86_64/aarch64, macOS-13 / macOS-14, and | ||
| Windows on CPython 3.10, 3.12, 3.13 (PR #43). Pre-compiled wheels |
There was a problem hiding this comment.
The list of supported CPython versions in the CI matrix description is missing 3.11. Both pyproject.toml and the PR description indicate that Python 3.11 is supported and tested.
| Windows on CPython 3.10, 3.12, 3.13 (PR #43). Pre-compiled wheels | |
| Windows on CPython 3.10, 3.11, 3.12, 3.13 (PR #43). Pre-compiled wheels |
The previous wording blurred two distinct matrices. CI tests run on 3.10, 3.12, 3.13. cibuildwheel emits wheels for 3.10 through 3.13 -- Python 3.11 wheels exist even though there is no 3.11 test job. Spell both out so the release notes match the PyPI artifacts.
Summary
Bumps the version to 0.10.0 and documents all the work landed
between 0.9.0 and today. After merge, tagging `v0.10.0` on `main`
triggers the release workflow and publishes wheels to PyPI via trusted
publishing.
Commits
explicit non-goals
Release procedure after merge
```bash
git checkout main && git pull
git tag -a v0.10.0 -m "snapvec 0.10.0"
git push origin v0.10.0
```
The `Release` workflow picks up the tag, builds wheels for
Linux x86_64/aarch64, macOS-13, macOS-14, and Windows across CPython
3.10-3.13, then uses trusted publishing to push them to PyPI.
Test plan
Manual setup required on PyPI (one-off)
Before the first `v*` tag fires, register snapvec as a trusted
publisher on PyPI:
If this is already done from PR #43 setup, tagging is all that's left.