Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1,075 changes: 1,035 additions & 40 deletions Cargo.lock

Large diffs are not rendered by default.

7 changes: 7 additions & 0 deletions Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ members = [
"crates/litewire-postgres",
"crates/litewire-tds",
"crates/litewire-hrana",
"crates/litewire-turso",
]

[workspace.package]
Expand All @@ -24,6 +25,7 @@ litewire-mysql = { path = "crates/litewire-mysql" }
litewire-postgres = { path = "crates/litewire-postgres" }
litewire-tds = { path = "crates/litewire-tds" }
litewire-hrana = { path = "crates/litewire-hrana" }
litewire-turso = { path = "crates/litewire-turso" }

# Async runtime
tokio = { version = "1", features = ["full"] }
Expand All @@ -39,6 +41,11 @@ sqlparser = { version = "0.57", features = ["serde"] }
# to fill in `Column.decltype` on empty result sets (an unexecuted prepared
# SELECT). Without it, wire-frontend type inference has to LIMIT-0 probe.
rusqlite = { version = "0.32", features = ["bundled", "column_decltype"] }
# Turso Database — the ground-up Rust rewrite of SQLite
# (github.com/tursodatabase/turso). Pinned exactly: the engine is Beta and
# API/behavior move between releases. 0.7.0 is the first non-pre release on
# the 0.7 line (July 2026). Bump deliberately, never via `cargo update`.
turso = { version = "=0.7.0", default-features = false }

# HTTP (Hrana)
axum = "0.8"
Expand Down
1 change: 1 addition & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -88,6 +88,7 @@ async fn main() -> anyhow::Result<()> {
|---------|-------------|----------|
| `Rusqlite` | `backend-rusqlite` | Direct in-process SQLite |
| `HranaClient` | `backend-hrana-client` | Remote SQLite via the Hrana HTTP protocol (sqld / Turso) |
| `Turso` | `turso` | **Experimental** — [Turso Database](https://github.com/tursodatabase/turso) engine (Rust rewrite of SQLite, Beta upstream; pinned `=0.7.0`). See `crates/litewire-turso` docs for limitations (no `VACUUM`, no multi-process access) |
| Custom | implement `Backend` trait | Bring your own |

The `HranaClient` backend connects to [sqld](https://github.com/tursodatabase/libsql) via HTTP, enabling embedded replicas and distributed SQLite clusters.
Expand Down
22 changes: 22 additions & 0 deletions crates/litewire-turso/Cargo.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
[package]
name = "litewire-turso"
description = "Experimental Turso Database (Rust SQLite rewrite) backend for litewire"
version.workspace = true
edition.workspace = true
rust-version.workspace = true
license.workspace = true

[dependencies]
# Path dep (not workspace) so default features can be disabled: the trait
# is all this crate needs at runtime; rusqlite stays out of the build.
litewire-backend = { path = "../litewire-backend", version = "0.1.0", default-features = false }
async-trait = { workspace = true }
tokio = { workspace = true }
tracing = { workspace = true }
turso = { workspace = true }

[dev-dependencies]
# rusqlite backend enabled for tests/examples only: the Phase 1 gate
# harness (examples/phase1_gates.rs) compares both engines side by side.
litewire-backend = { workspace = true, features = ["rusqlite"] }
tokio = { workspace = true, features = ["full"] }
Loading
Loading