Verified 2026-08-05 against the published crate source recorded as upstream
commit 046e9cbf67d22491e8ecc941ec2891b02a9f3cad and the lockfile generated for
Tursox. The published turso-0.7.2 crate checksum is
f9491d7a80312c5abe66a4409e4dce02065503a235453c94b9e4133877e39ffc.
Exact sources:
Resolution and features
| Component | Exact resolution |
|---|---|
turso | 0.7.2 |
turso_core | 0.7.2 (transitive) |
turso_sdk_kit | 0.7.2 (transitive) |
turso_sync_sdk_kit | 0.7.2 (transitive, not exposed) |
| Tokio | 1.47.1, rt-multi-thread |
| Rustler | 0.38.0, NIF 2.16 |
| RustlerPrecompiled | 0.8.4 |
| Rust | 1.91.0 (f8297e351) |
turso uses default-features = false plus deliberate fts and
pure-rust-crypto features. Tursox therefore does not install the crate's
mimalloc global allocator, while all source/precompiled builds include tested
Tantivy indexes and portable encryption. Cloud sync, memory-yield, stacker, and
test-helper features remain disabled. Tantivy resolves exactly through the native lockfile; the unavailable
crates.io entry for its oneshot = 0.1.13 requirement is satisfied by the exact
vendored upstream v0.1.13 source and licenses.
RustlerPrecompiled names these candidate targets: macOS aarch64/x86-64, Linux aarch64/x86-64 GNU and musl, and Windows x86-64 MSVC. Epic 1 CI proves source compilation on Linux x86-64; aarch64 Apple is the development host. A target is not advertised as release-supported until Epic 7 builds and smokes it.
Stable source surface selected for Tursox
Tursox 0.2.1 exposes every switch on the current experimental-features page at
Database.open/2. Safe-enough options use features; custom types, materialized
views, generated columns, vacuum, and passive MVCC checkpointing use the explicit
unsafe_features list because probes can signal the VM. Encryption wires both
experimental_encryption and with_encryption, with raw key validation and no
secret-bearing metadata. The 0.7.2 core/SDK has autovacuum but its published
top-level Builder omits the method; the vendored exact-source crate adds only
that forwarding flag. Runtime extension loading similarly forwards the existing
per-connection SDK methods. experimental_triggers and experimental_strict
remain compatibility no-ops because those features are always enabled.
Selected stable APIs are:
Builder::new_local, selected feature methods,Builder::build, andDatabase::connect— used by Epic 2;- connection pragma query/update, cache flush, autocommit, and busy timeout — used by Epic 2;
- connection execute, batch, prepare, and last-insert-rowid — used by Epic 3;
- real
Statement::query,execute, columns, reset, and affected changes — used by Epic 3; - incremental
Rows::nextand ordered row/column access — used by Epic 3; - none, positional, and prefixed named
IntoParamsvalues — used by Epic 3; Null, signed 64-bitInteger,Real, UTF-8Text, and byteBlob— used by Epic 3;- distinct busy, busy-snapshot, interrupt, constraint, readonly, database-full, misuse, corrupt/not-a-database, I/O, conversion, and general errors.
Every item is marked used only when its implementation and executable tests land in the matching epic. This avoids claiming behavior from source inspection alone.
Transactions and MVCC
Stable TransactionBehavior contains deferred, immediate, and exclusive only.
Concurrent mode must execute tested BEGIN CONCURRENT SQL; Tursox must not refer
to the Concurrent variant added after 0.7.2. PRAGMA journal_mode = mvcc must
be set and read back before concurrent mode is accepted.
The source exposes experimental_mvcc_passive_checkpoint. Tursox exposes it via
unsafe_features: [:mvcc_passive_checkpoint]; a phase-marked 0.7.2 probe reaches
open, connect, and write, then receives SIGBUS in PRAGMA wal_checkpoint(PASSIVE)
on macOS. mvcc_checkpoint_threshold accepts and reads back non-negative
integers; the suite verifies 64. WAL wal_checkpoint(PASSIVE) safely returns one
ordered three-integer row (busy, log frames, checkpointed frames). MVCC remains
experimental and provides snapshot isolation, not a serializability guarantee.
Intentionally absent
The stable high-level connection has no public interrupt/query-timeout handle,
no documented total-changes accessor, and no read-only/open-mode builder. Tursox
does not reach into turso_core to synthesize those APIs. Cloud sync, remote access, custom I/O/VFS, and production multiprocess support
remain deferred. Native extension loading is available as an unsafe opt-in, but
requires Turso's register_extension ABI. SQLean 0.28.3 exposes SQLite
sqlite3_*_init entry points and fails cleanly at symbol resolution.
Proof
Epic 1 proves exact lock resolution, source compilation, Rust formatting,
cargo check, Clippy with denied warnings, Rust tests, source-built NIF loading,
stable error translation, panic containment, and deterministic resource
accounting through bin/qa_check.sh. Database, SQL, parameter, cursor, and MVCC
claims require the executable suites added in Epics 2–4.