release: v0.2.0#84
Merged
Merged
Conversation
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>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
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 across PRs #78 – #83:
src/sql/fts/, mirroring Phase 7d.1's HNSW shapeCREATE INDEX … USING fts (col),fts_match,bm25_score, thetry_fts_probeoptimizer hook, INSERT/DELETE/UPDATE lifecycleKIND_FTS_POSTING,0x06),stage_fts_btree/load_fts_postings, and the on-demand v4 → v5 file-format bumpexamples/hybrid-retrieval/— BM25 + vector cosine via raw arithmeticsqlrite-mcpbm25_searchtool, symmetric withvector_search. The MCP server now exposes 8 tools (was 7)docs/fts.mdcanonical reference + FTS sections added to every existing doc that needed oneFile-format change
This is the headline reason for the major bump:
askadditions all lived inside the v4 envelope.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).Manifests bumped
12 files via
scripts/bump-version.sh 0.2.0:Cargo.toml(root,sqlrite-engine)sqlrite-ffi/Cargo.toml,sqlrite-ask/Cargo.toml,sqlrite-mcp/Cargo.tomlsdk/python/Cargo.toml+pyproject.tomlsdk/nodejs/Cargo.toml+package.jsonsdk/wasm/Cargo.tomldesktop/src-tauri/Cargo.toml+tauri.conf.jsondesktop/package.jsonPlus inter-crate dep refs (
sqlrite-engine→sqlrite-ask,sqlrite-mcp→sqlrite-engine,sdk/wasm→sqlrite-ask), theCargo.tomlcomment block, andsqlrite-ask/README.md's installation snippet.Test plan
scripts/bump-version.sh 0.2.0— clean, all 12 manifests verifiedCargo.toml,sqlrite-mcp/Cargo.toml,sdk/wasm/Cargo.toml)cargo build --workspace --exclude sqlrite-desktop --exclude sqlrite-python --exclude sqlrite-nodejs --all-targets— builds at v0.2.0; Cargo.lock refreshedcargo test --workspace --exclude sqlrite-desktop --exclude sqlrite-python --exclude sqlrite-nodejs— engine 303 + MCP 19 + 73 across other crates greencargo fmt --all -- --check— no diffcargo clippy --workspace --exclude sqlrite-desktop --exclude sqlrite-python --exclude sqlrite-nodejs --all-targets— warning counts unchanged from mainAfter this merges
Tag
v0.2.0and run the publish workflow —sqlrite-engine+sqlrite-ask+sqlrite-mcpto crates.io, Python wheels to PyPI (sqlrite), Node.js + WASM to npm (@joaoh82/sqlrite+@joaoh82/sqlrite-wasm), Go module viasdk/go/v0.2.0git tag, plus C FFI tarballs, MCP binary tarballs, and unsigned desktop installers as GitHub Release assets.🤖 Generated with Claude Code