First major-version bump of SQLRite. The 0.1.x cycle covered Phase 0 →
Phase 7 (modernization → AI-era extensions). v0.2.0 marks Phase 8 —
full-text search + hybrid retrieval — and the on-disk file-format change
that comes with it.
What ships in v0.2.0
====================
Phase 8 — Full-text search + hybrid retrieval (PRs #78–#83):
- 8a — Standalone FTS algorithms (tokenizer + BM25 + posting list)
under src/sql/fts/, mirroring Phase 7d.1's HNSW shape.
- 8b — SQL surface: CREATE INDEX … USING fts (col), fts_match(col, 'q'),
bm25_score(col, 'q'), the try_fts_probe optimizer hook, and
INSERT/DELETE/UPDATE lifecycle wiring (rebuild-on-save).
- 8c — Cell-encoded persistence (KIND_FTS_POSTING, 0x06), stage_fts_btree
/ load_fts_postings, and the on-demand v4 → v5 file-format bump.
Existing v4 databases without FTS keep writing v4; the first save
with an FTS index attached promotes to v5. Decoders accept both.
- 8d — Hybrid retrieval worked example at examples/hybrid-retrieval/ —
BM25 + vector cosine via raw arithmetic (no new typed function),
hand-baked vectors so it stays reproducible without a model.
- 8e — sqlrite-mcp bm25_search tool, symmetric with vector_search. The
MCP server now exposes 8 tools (was 7).
- 8f — Final docs sweep: new docs/fts.md canonical reference; FTS
sections added to supported-sql.md, architecture.md, file-format.md
(KIND_FTS_POSTING layout + v5 history entry), sql-engine.md,
mcp.md (count bump 7→8), smoke-test.md; _index.md and roadmap.md
updated to mark Phase 8 complete.
File-format change
==================
This is the headline reason for the major bump:
- v4 (Phase 7) — value block dispatch gained the Vector tag (Phase 7a).
Phase 7's JSON, HNSW, and ask additions all lived inside the v4
envelope.
- v5 (Phase 8c) — adds KIND_FTS_POSTING (0x06). On-demand: only
written when the database has at least one FTS index attached.
Decoders accept v4 and v5; v0.2.0 readers can open v0.1.x files
without surprise. v0.1.x readers cannot open v5 files (clean
"unsupported version" error).
Testing
=======
Engine 303 + MCP 19 + 73 across the other crates — all green at the new
version. Inter-crate deps bumped from 0.1 to 0.2 in three places
(Cargo.toml's optional sqlrite-ask, sqlrite-mcp's sqlrite-engine ref,
sdk/wasm's sqlrite-ask ref); cargo build refreshed Cargo.lock.
Manifests bumped (12 files via scripts/bump-version.sh):
- Cargo.toml
- sqlrite-ffi/Cargo.toml
- sqlrite-ask/Cargo.toml
- sqlrite-mcp/Cargo.toml
- sdk/python/Cargo.toml + pyproject.toml
- sdk/nodejs/Cargo.toml + package.json
- sdk/wasm/Cargo.toml
- desktop/src-tauri/Cargo.toml + tauri.conf.json
- desktop/package.json
Plus inter-crate dep refs, the Cargo.toml comment block, and
sqlrite-ask/README.md's installation snippet.
Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>