Skip to content

v0.2.0

  • v0.2.0
  • 2cb61d5
  • Verified

    This commit was created on GitHub.com and signed with GitHub’s verified signature.
  • Choose a tag to compare

  • v0.2.0
  • 2cb61d5
  • Choose a tag to compare

  • Verified

    This commit was created on GitHub.com and signed with GitHub’s verified signature.
@joaoh82 joaoh82 tagged this 03 May 21:07
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>
Assets 2
Loading