Turso 0.7.2 native capability record

Copy Markdown View Source

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

ComponentExact resolution
turso0.7.2
turso_core0.7.2 (transitive)
turso_sdk_kit0.7.2 (transitive)
turso_sync_sdk_kit0.7.2 (transitive, not exposed)
Tokio1.47.1, rt-multi-thread
Rustler0.38.0, NIF 2.16
RustlerPrecompiled0.8.4
Rust1.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, and Database::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::next and ordered row/column access — used by Epic 3;
  • none, positional, and prefixed named IntoParams values — used by Epic 3;
  • Null, signed 64-bit Integer, Real, UTF-8 Text, and byte Blob — 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.