The bundled turso storage engine advances from 0.5.3 to 0.7.2, and the release exists for exactly two reasons: two releases of upstream corruption fixes, and a clone path that now runs 15–20% less CPU than 1.1.0's engine did.
The engine upgrade
All three engine crates are vendored at 0.7.2: turso, turso_sdk_kit, and — new in this release — turso_core. The upgrade picks up upstream fixes for WAL frame-cache slot reuse, page-spill frame reuse, a nonblocking read_page race, and WAL-header init ordering. The vendored read-only open patch is re-applied (immutable parent artifacts must never be opened writable, and upstream's SDK still has no read-only mode). Default features are trimmed to mimalloc; the new fts/tantivy default stays out of the build. No experimental engine feature (MVCC, multiprocess WAL) is enabled — session liveness stays derived from Vfs's own advisory locks.
The prepare-cache fix
turso_core is vendored to carry one patch: Statement drop no longer invalidates the connection's prepared-statement cache. Upstream 0.6+ bumps the prepare-context generation on every statement drop once the TEMP database exists, and BEGIN IMMEDIATE initializes TEMP on every writer connection — so each of a clone workload's ~89,000 statements re-prepared from scratch. With the patch the workload re-prepares zero statements. The vendored SDK also caches one-shot execute/query statements per connection (512 entries, PRAGMAs exempt). Details in third_party/turso_core/PATCHES.md.
The perf contract held the merge until it passed: interleaved per-phase gate against the 0.5.3 baseline, three rounds, no phase red, clone 6–13% faster in every round.
Removed
- The private
TMPDIRsort-spill override and itsSIGKILLreaper: turso 0.6.0 fixed the unlink leak the machinery contained. Children ofrun/exec/init -cnow simply inherit the ambientTMPDIR. PRAGMA temp_store = MEMORYfrom connection setup: anytemp_storeassignment initializes the TEMP database eagerly, and Vfs's statements never materialize temp B-trees.
No contract changes: artifact version, manifest shapes, exit statuses, and the session store layout are untouched from 1.1.0. Sessions packed by any 1.x build adopt cleanly.