Skip to content

release: v0.2.0#84

Merged
joaoh82 merged 1 commit into
mainfrom
release/v0.2.0
May 3, 2026
Merged

release: v0.2.0#84
joaoh82 merged 1 commit into
mainfrom
release/v0.2.0

Conversation

@joaoh82

@joaoh82 joaoh82 commented May 3, 2026

Copy link
Copy Markdown
Owner

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:

Sub-phase What landed
8a (#78) Standalone FTS algorithms (tokenizer + BM25 + posting list) under src/sql/fts/, mirroring Phase 7d.1's HNSW shape
8b (#79) SQL surface: CREATE INDEX … USING fts (col), fts_match, bm25_score, the try_fts_probe optimizer hook, INSERT/DELETE/UPDATE lifecycle
8c (#80) Cell-encoded persistence (KIND_FTS_POSTING, 0x06), stage_fts_btree / load_fts_postings, and the on-demand v4 → v5 file-format bump
8d (#81) Hybrid retrieval worked example at examples/hybrid-retrieval/ — BM25 + vector cosine via raw arithmetic
8e (#82) sqlrite-mcp bm25_search tool, symmetric with vector_search. The MCP server now exposes 8 tools (was 7)
8f (#83) Final docs sweep — new docs/fts.md canonical reference + FTS sections added to every existing doc that needed one

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).

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.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 (sqlrite-enginesqlrite-ask, sqlrite-mcpsqlrite-engine, sdk/wasmsqlrite-ask), the Cargo.toml comment block, and sqlrite-ask/README.md's installation snippet.

Test plan

  • scripts/bump-version.sh 0.2.0 — clean, all 12 manifests verified
  • Inter-crate dep refs updated (3 sites: Cargo.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 refreshed
  • cargo test --workspace --exclude sqlrite-desktop --exclude sqlrite-python --exclude sqlrite-nodejs — engine 303 + MCP 19 + 73 across other crates green
  • cargo fmt --all -- --check — no diff
  • cargo clippy --workspace --exclude sqlrite-desktop --exclude sqlrite-python --exclude sqlrite-nodejs --all-targets — warning counts unchanged from main

After this merges

Tag v0.2.0 and run the publish workflow — sqlrite-engine + sqlrite-ask + sqlrite-mcp to crates.io, Python wheels to PyPI (sqlrite), Node.js + WASM to npm (@joaoh82/sqlrite + @joaoh82/sqlrite-wasm), Go module via sdk/go/v0.2.0 git tag, plus C FFI tarballs, MCP binary tarballs, and unsigned desktop installers as GitHub Release assets.

🤖 Generated with Claude Code

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>
@joaoh82 joaoh82 merged commit 2cb61d5 into main May 3, 2026
15 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant