Skip to content

Commit 2cb61d5

Browse files
joaoh82claude
andauthored
release: v0.2.0 (#84)
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>
1 parent 258b2af commit 2cb61d5

14 files changed

Lines changed: 24 additions & 24 deletions

File tree

Cargo.lock

Lines changed: 7 additions & 7 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.toml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -20,14 +20,14 @@ resolver = "3"
2020
# dependency declaration change:
2121
#
2222
# [dependencies]
23-
# sqlrite-engine = "0.1"
23+
# sqlrite-engine = "0.2"
2424
# # then in code: use sqlrite::{Database, …};
2525
#
2626
# Any workspace member here that depends on the engine uses the
2727
# `package =` key so the import name stays `sqlrite` internally:
2828
# sqlrite = { package = "sqlrite-engine", path = "…" }
2929
name = "sqlrite-engine"
30-
version = "0.1.25"
30+
version = "0.2.0"
3131
authors = ["Joao Henrique Machado Silva <joaoh82@gmail.com>"]
3232
edition = "2024"
3333
rust-version = "1.85"
@@ -138,4 +138,4 @@ fs2 = { version = "0.4", optional = true }
138138
# crate publishes to crates.io, and a path-only dep without a
139139
# version field fails the manifest verification step. See PR #58
140140
# retrospective in docs/roadmap.md.
141-
sqlrite-ask = { version = "0.1", path = "sqlrite-ask", optional = true }
141+
sqlrite-ask = { version = "0.2", path = "sqlrite-ask", optional = true }

desktop/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{
22
"name": "sqlrite-desktop-frontend",
33
"private": true,
4-
"version": "0.1.25",
4+
"version": "0.2.0",
55
"type": "module",
66
"scripts": {
77
"dev": "vite",

desktop/src-tauri/Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[package]
22
name = "sqlrite-desktop"
3-
version = "0.1.25"
3+
version = "0.2.0"
44
description = "SQLRite desktop app — Tauri 2 shell around the engine"
55
authors = ["Joao Henrique Machado Silva <joaoh82@gmail.com>"]
66
edition = "2024"

desktop/src-tauri/tauri.conf.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{
22
"$schema": "https://schema.tauri.app/config/2",
33
"productName": "SQLRite",
4-
"version": "0.1.25",
4+
"version": "0.2.0",
55
"identifier": "com.sqlrite.desktop",
66
"build": {
77
"beforeDevCommand": "npm run dev",

sdk/nodejs/Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[package]
22
name = "sqlrite-nodejs"
3-
version = "0.1.25"
3+
version = "0.2.0"
44
authors = ["Joao Henrique Machado Silva <joaoh82@gmail.com>"]
55
edition = "2024"
66
rust-version = "1.85"

sdk/nodejs/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@joaoh82/sqlrite",
3-
"version": "0.1.25",
3+
"version": "0.2.0",
44
"description": "Node.js bindings for SQLRite — a small, embeddable SQLite clone written in Rust.",
55
"main": "index.js",
66
"types": "index.d.ts",

sdk/python/Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[package]
22
name = "sqlrite-python"
3-
version = "0.1.25"
3+
version = "0.2.0"
44
authors = ["Joao Henrique Machado Silva <joaoh82@gmail.com>"]
55
edition = "2024"
66
rust-version = "1.85"

sdk/python/pyproject.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ build-backend = "maturin"
44

55
[project]
66
name = "sqlrite"
7-
version = "0.1.25"
7+
version = "0.2.0"
88
description = "Python bindings for SQLRite — a small, embeddable SQLite clone written in Rust."
99
authors = [{ name = "Joao Henrique Machado Silva", email = "joaoh82@gmail.com" }]
1010
license = { text = "MIT" }

sdk/wasm/Cargo.toml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77

88
[package]
99
name = "sqlrite-wasm"
10-
version = "0.1.25"
10+
version = "0.2.0"
1111
authors = ["Joao Henrique Machado Silva <joaoh82@gmail.com>"]
1212
edition = "2024"
1313
rust-version = "1.85"
@@ -46,7 +46,7 @@ sqlrite = { package = "sqlrite-engine", path = "../..", default-features = false
4646
# builds for wasm32). Per Q9, the WASM SDK never makes the HTTP call
4747
# itself — the JS caller does that. Browser → backend → LLM provider
4848
# → JS hands the raw response back to `db.askParse()`.
49-
sqlrite-ask = { version = "0.1", path = "../../sqlrite-ask", default-features = false }
49+
sqlrite-ask = { version = "0.2", path = "../../sqlrite-ask", default-features = false }
5050

5151
# wasm-bindgen + friends. `serde-serialize` on wasm-bindgen gives
5252
# us `serde_wasm_bindgen` interop for structured row objects.

0 commit comments

Comments
 (0)