Skip to content

0.7.0 -- 2026-07-13

Latest

Choose a tag to compare

@github-actions github-actions released this 13 Jul 15:39

Release Notes

Added

  • core/mvcc: add passive checkpoint (Pere Diaz Bou)
  • dotnet: support NativeAOT static native linking (Marc-André Moreau)
  • core/alloc: add stable push_within_capacity helper (Pedro Muniz)
  • core/storage: add savepoint rollback consistency intent (Pekka Enberg)
  • Add some testing guidance for agents (Pekka Enberg)
  • Add Aristo WAL verification (Sushant Dinesh)
  • add artificial wait for sticky disk to have latest snapshot (Pedro Muniz)
  • sync/engine: add missing fsync() (Nikita Sivukhin)
  • Add Windows ARM64 CLI release support (Marc-André Moreau)
  • Add .NET remote transactions and batches (Marc-André Moreau)
  • Add .NET remote Hrana execution (Marc-André Moreau)
  • Add Turso EF Core SQLite provider (Marc-André Moreau)
  • mvcc: Add fallible MVCC row payload allocation sites (Pedro Muniz)
  • Add mobile NuGet native targets (Marc-André Moreau)
  • core: register additional virtual tables into the catalog (Glauber Costa)
  • alloc: add specialization in nightly for Vec (Pedro Muniz)
  • core/alloc: Add allocation site annotations and out-of-memory fault injector (Pedro Muniz)
  • mvcc: lazily resolve shadow in new IndexShadowFinger (Preston Thorpe)
  • mvcc: add allocator generic to mv store (Pedro Muniz)
  • Add SQL-standard scalar functions and PG-compatible aliases (Glauber Costa)
  • Add shared buffer views for serialization callbacks (Pedro Muniz)
  • Reject ALTER TABLE ADD COLUM when generated-columns flag is off (Vartan Babayan)
  • add win tests for db/sync on js (Nikita Sivukhin)
  • Add .NET NuGet package publishing workflow (Marc-André Moreau)
  • mvcc: add sequence_watermark function and track sequence allocations (Preston Thorpe)
  • Refactor memory benchmark into library + add CodSpeed CI tracking (Pedro Muniz)
  • core/skiplist: use TursoAllocator for node allocation and add fallible inserts (Pedro Muniz)
  • serverless/javascript: add option for custom request headers (Nikita Sivukhin)
  • add yielding IO back-end for turso-stress to test async re-entrancy (Preston Thorpe)
  • python: enable Tantivy FTS and add tests (Pekka Enberg)
  • feat: add PostgreSQL-style sequences and MVCC-safe AUTOINCREMENT (Glauber Costa)
  • core/storage: Only mark WAL initialized after a successful header sync (Pekka Enberg)
  • core/mvcc: avoid SeekingToLast with MVCC in newrowid (Pere Diaz Bou)
  • Window functions plumbing 1: add stubs for builtins, refactor row_number() to use VDBE aggregate machinery (Jussi Saurio)
  • core/translate: support FILTER in window clauses (Jussi Saurio)
  • Add mvcc recovery benchmark (Mikaël Francoeur)
  • core: Add WITHIN GROUP ordered-set aggregates (Glauber Costa)
  • Add recovery-heavy profile to Whopper (Mikaël Francoeur)
  • Introduce portable logical log metadata for turso sync (Preston Thorpe)
  • Add regression test for incorrect OR expression handling (Pavan Nambi)
  • core/io: add runtime-registrable Rust IO backend (Robert Sturla)
  • extensions: add macro for context-scalar functions (Preston Thorpe)
  • Add core custom collation support (Marc-André Moreau)
  • Add managed aggregate callback support (Marc-André Moreau)
  • core/mvcc: set read_set to Vec and add batch query read bench (Pere Diaz Bou)
  • Add managed scalar callback foundation (Marc-André Moreau)
  • core/mvcc: add MVCC recovery regression cases (Avinash Sajjanshetty)
  • COMPAT.MD: fix errors, be more precise, add turso-specific PRAGMAs (Jussi Saurio)
  • Support UPSERT targets on partial indexes (Pedro Muniz)
  • agent: add yield injections skill (Avinash Sajjanshetty)
  • core/mvcc: Add per-connection extension loading (Marc-André Moreau)
  • core/translate/optimizer: support non-equijoin FULL OUTER JOIN (russell romney)
  • introduce ImmutableRecordRef to reduce cloning (Mikaël Francoeur)
  • Add locale-backed collations to Turso (Aziz Batihk)
  • Add SQLite-compatible .NET bindings (Marc-André Moreau)
  • Add Database.batch() method to JavaScript SDKs (Pekka Enberg)
  • simulator: support virtual columns (Mikaël Francoeur)
  • Add allocator API for fallible allocation (Pedro Muniz)
  • bindings/javascript: Add concurrent transaction support (Pekka Enberg)
  • Add section on AI coding to CONTRIBUTING.md (Pekka Enberg)
  • apply virtual gen-col affinity in OLD probe and NEW key (Mikaël Francoeur)

Updated

  • core: reject co-enablement of MVCC and multiprocess WAL (Jussi Saurio)
  • core/translate: use abort journal analysis for upsert DO UPDATE arms (roboturso)
  • build(deps): bump js-yaml from 4.1.0 to 4.3.0 in /bindings/javascript (app/dependabot)
  • build(deps): bump ws in /examples/react-native (app/dependabot)
  • Eliminate blocking I/O in page cache spill path (Nikita Sivukhin)
  • build(deps): bump shell-quote from 1.8.3 to 1.10.0 in /examples/react-native (app/dependabot)
  • core/json: coerce numeric JSONB aggregate object labels to strings (Hossam Khero)
  • Drop the beta warning (Glauber Costa)
  • core/btree: invalidate shape caches on peer writes; drop trigger workaround (Glauber Costa)
  • core: disallow multiple write stmts in single connection and poison tx if half-done write stmt is abandoned (Jussi Saurio)
  • bindings/js: serialize wasm native calls against sync-engine worker tasks (Jussi Saurio)
  • testing/stress: reset shuttle step counter on iteration progress (Jussi Saurio)
  • Page cache soft limit (Jussi Saurio)
  • core/mvcc: mark recovery delete tombstones for truncated frames btree-resident (Mikaël Francoeur)
  • core: make schema cloning fallible (Pedro Muniz)
  • schema: make sqlite_schema bootstrap allocation fallible (Pedro Muniz)
  • schema: make generated column graph allocation fallible (Pedro Muniz)
  • Mvcc sync (Preston Thorpe)
  • core/wal: prevent stale checkpoint backfill publish (Avinash Sajjanshetty)
  • core/mvcc: reset index shadow finger when index keys are created mid-scan (roboturso)
  • core/storage: capture savepoint WAL position during write_tx upgrade after acquiring write lock (Jussi Saurio)
  • core/mvcc: finish live-version rewrite when a committed commit statement is dropped (roboturso)
  • core: classify virtual tables by parsing schema SQL (roboturso)
  • core/mvcc: keep exact-seek short-circuit for b-tree-only rows (roboturso)
  • bump fossier dependency to allow for vouch command (Preston Thorpe)
  • core/alloc: clone Vec elements through TryClone (Pedro Muniz)
  • core: fsync WAL when raw frame insert session force-commits (Pekka Enberg)
  • fossier: vouch for @roboturso (Preston Thorpe)
  • core/translate: use try_push for create table column Vec (Pedro Muniz)
  • core/vdbe: make vec allocations fallible (Pedro Muniz)
  • core/translate: propagate fallible Vec allocations (Pedro Muniz)
  • core/btree: clear abandoned B-tree overflow cells (Avinash Sajjanshetty)
  • github: skip dotnet code signing on non-main branches (Pekka Enberg)
  • core/storage: Remove checkpoint leak intent (Pekka Enberg)
  • bindings/rust: break sync io worker retention cycle (Pekka Enberg)
  • sqlite/parser: bound expression depth to prevent translator stack overflow (roboturso)
  • github: drop sccache from workflows (Pekka Enberg)
  • perf(vdbe): reuse btree cursor on OpenRead instead of rebuilding (Glauber Costa")
  • perf(vdbe): reuse btree cursor on OpenRead instead of rebuilding (Glauber Costa)
  • propagate push/pull thresholds to the python and golang SDK (Nikita Sivukhin)
  • perf(vdbe): only build the comparator and clone the aggregate arg when needed (Glauber Costa)
  • stress: use bare RNG methods (Mikaël Francoeur)
  • core/vdbe: avoid overflow when cache_size is i32::MIN (roboturso)
  • core/optimizer: improve starting table selection in greedy join (Akira Noda)
  • core/pager: reset pager state on savepoint rollback (Pedro Muniz)
  • Python bindings cleanup (Mikaël Francoeur)
  • python: release the GIL and expose interrupt() / set_query_timeout() (Glauber Costa)
  • core/mvcc: preserve B-tree cleanup markers in MVCC commit logs (Avinash Sajjanshetty)
  • Delete memory benchmark artifact after run (Pedro Muniz)
  • antithesis: squash targeting diff into targeted_coverage.json (Mikaël Francoeur)
  • Bump concurrent-ruby from 1.3.3 to 1.3.7 in /examples/react-native (app/dependabot)
  • core: allow deterministic date functions in generated columns (Artur Kantorczyk)
  • core: allow custom allocator for MVStore (Pedro Muniz)
  • refresh mvcc schema for checkpoint state machine when it acquires checkpoint lock (Jussi Saurio)
  • Clarify in CONTRIBUTING.md that mold linker is Linux only (n3on p0rtal)
  • github: code-sign Windows artifacts with Azure Artifact Signing (Pekka Enberg)
  • Update references from limbo to turso in docs (n3on p0rtal)
  • Exercise MVCC recovery in turso_stress (v2) (Mikaël Francoeur)
  • antithesis diff-focused tests (Mikaël Francoeur)
  • core/mvcc: retain ended btree_resident row versions till checkpoint (Avinash Sajjanshetty)
  • Revert "core/mvcc: use per-MvStore skiplist collectors" (Pedro Muniz)
  • core/mvcc: use per-MvStore skiplist collectors (Pedro Muniz)
  • core/wal: do not mark dirty pages clean during WAL cacheflush (Avinash Sajjanshetty)
  • Linear better than quadratic (Nikita Sivukhin)
  • Move SQLite C API to bindings/c (Pekka Enberg)
  • ci: Gate CodSpeed shards on matching build (Pedro Muniz)
  • Move SQLite parser to sqlite/parser directory (Pekka Enberg)
  • core: More blocking I/O removal (Preston Thorpe)
  • core/btree: prevent leaking pinned pages in page stack (Preston Thorpe)
  • sync: Use core allocator Vec in sync engine for compile reasons (Pedro Muniz)
  • conformance/javascript: cover big integer round-trip with safe integers (Pekka Enberg)
  • Eliminate quadratic performance for prepare of queries with a lot of parameters (Nikita Sivukhin)
  • Track MVCC checkpoint allocation sites (Pedro Muniz)
  • ci: shard CodSpeed benchmarks by toolchain and benchmark (Pedro Muniz)
  • core: remove info instruments that can become verbose (Pere Diaz Bou)
  • mvcc: use fallible skiplist allocations (Pedro Muniz)
  • mvcc: decouple GC from checkpointing and make configurable (Preston Thorpe)
  • avoid full range scan for index seek operation (Nikita Sivukhin)
  • javascript: Return per-statement results from batch() (Pekka Enberg)
  • Experimental features sync sdk (Nikita Sivukhin)
  • mvcc: merge-iterate the index during forward btree scans (Pere Diaz Bou)
  • core/mvcc: reuse record (Pere Diaz Bou)
  • Revert single-pass recovery (Mikaël Francoeur)
  • Make durable storage log completion awaitable (Pedro Muniz)
  • core/translate: SQLite-compatible affinity check for index seeks (Jussi Saurio)
  • Update to PyO3 0.29.0 (Pekka Enberg)
  • Single-pass MVCC recovery (Mikaël Francoeur")
  • mvcc: some memory use improvements (Preston Thorpe)
  • simulator: dont rollback simulator connection level transaction state for create table failure (Preston Thorpe)
  • core, sdk-kit: ColumnTypeInfo for custom-type-aware column metadata (Glauber Costa)
  • mem usage in MVCC: pack timestamp begin/end in RowVersion (Preston Thorpe)
  • core/mvcc: RowKey::Record set to Arc (Pere Diaz Bou)
  • core: make the nightly allocator cfg build green and gate it in CI (Pedro Muniz)
  • core/translate: Improve DDL compatibility with SQLite (Glauber Costa)
  • Step result yield (Nikita Sivukhin)
  • core/mvcc: Shrink version chains and remove empty slots at checkpoint (Pedro Muniz)
  • logs: lower level for spam INFO logs (Nikita Sivukhin)
  • core/skiplist: re-vendor crossbeam-skiplist from upstream main (Pedro Muniz)
  • core: vendor crossbeam-skiplist 0.1.3 as core/skiplist module (Pedro Muniz)
  • build(deps-dev): bump shell-quote from 1.8.3 to 1.8.4 in /bindings/react-native (app/dependabot)
  • perf/connection: regenerate stale limbo lockfile to drop git2 (Pekka Enberg)
  • build(deps-dev): bump @babel/plugin-transform-modules-systemjs from 7.29.0 to 7.29.7 in /bindings/react-native (app/dependabot)
  • core/mvcc: checkpoint must use the schema of the database it operates on (Glauber Costa)
  • Remove blocking IO from mvcc bootstrap and recovery paths (Preston Thorpe)
  • lock cargo-fuzz to 0.13.0 to prevent CI failure (Preston Thorpe)
  • build(deps): bump ws from 8.20.0 to 8.21.0 in /testing/conformance/javascript (app/dependabot)
  • Preserve JS row positional values (Pedro Muniz)
  • core/mvcc: Call checkpoint hooks during bootstrap recovery (Pedro Muniz)
  • Discuss "can I work on it" in CONTRIBUTING.md (Pekka Enberg)
  • core/translate: preserve declaration order when nesting window subqueries (Jussi Saurio)
  • feat: REINDEX (Jussi Saurio)
  • core/vdbe: Make scalar function edge cases SQLite compatible (Ben Zaid)
  • core/schema: Migrate code to use fallible collect (Pedro Muniz)
  • core/numeric: Coerce text exceeding i64::MAX to Float, not saturated int (Jussi Saurio)
  • github: Use Blacksmith build-push action for simulator image build (Pekka Enberg)
  • core/mvcc: allow custom durable storage for encrypted MVCC (Avinash Sajjanshetty)
  • core/translate: case-insensitive NATURAL JOIN and USING column lookup (Jussi Saurio)
  • Update devcontainer (Mikaël Francoeur)
  • move runtime check to compile time (Mikaël Francoeur)
  • Single-pass MVCC recovery (Mikaël Francoeur)
  • do not rollback attached pagers on reprepare if the conn is inside transaction (Pedro Muniz)
  • Expose managed extension APIs through SDK-kit and .NET bindings (Marc-André Moreau)
  • core/mvcc: prevent stale tx from acquiring exclusive_tx after concurrent commit (Avinash Sajjanshetty)
  • Rollback temp schema when dropping MVCC commit (Mikaël Francoeur)
  • Bump idna from 3.11 to 3.15 (app/dependabot)
  • bindings/rust: replace hyper-tls with hyper-rustls (PlumJam)
  • Pin cargo-c to 0.10.16 due to rust-toolchain.toml being pegged at 1.88 (Yinka Makanjuola)
  • core/mvcc: skip seeking on contigous writes to pager (Pere Diaz Bou)
  • Bump openssl from 0.10.79 to 0.10.80 (app/dependabot)
  • core/mvcc: store rowversion chain in mvcc iterator (Pere Diaz Bou)
  • Begin to remove all blocking IO from core (Preston Thorpe)
  • Rework Dockerfiles to use a .dockerignore (Mikaël Francoeur)
  • core/mvcc: preempt checkpoint while collecting rows to write_set (Pere Diaz Bou)
  • impl try_from_iter for Box<[T]> (Pedro Muniz)
  • Remove StreamingLogicalLogReader::next_record (Mikaël Francoeur)
  • refactor Extendable trait to use Result for fallible allocations (Pedro Muniz)
  • migrate hash_table.rs to use fallible Vec (Pedro Muniz)
  • migrate sorter.rs to use fallible vec allocations (Pedro Muniz)
  • migrate order_by.rs to use fallible vec allocations (Pedro Muniz)
  • convert expr_walk* to use iteration instead of recursion (Pedro Muniz)
  • core/mvcc: serialize buffer directly, avoid 2x buffer heap size (Pere Diaz Bou)
  • core: raise recursion_limit to 256 for FromRepr on Insn (Glauber Costa)
  • core/mvcc: Guard global_header write against out-of-order commits (Glauber Costa)
  • core/mvcc: Rollback MVCC tx after commit conflicts with SchemaConflict (Jussi Saurio)
  • core/mvcc: Skip transient view and trigger deletes during MVCC checkpoint (Jussi Saurio)
  • Gate custom benchmark iterations for CodSpeed (Pedro Muniz)
  • revert: make all fallible functions use current infallible methods for now (Pedro Muniz)
  • core/mvcc: make MVCC integrity_check reprepare after checkpoint root publication (Avinash Sajjanshetty)
  • bindings/python: enable PyO3 abi3-py310 for a single cross-version wheel (Pekka Enberg)
  • core/mvcc: rollback savepoint on abandoned statement (Pere Diaz Bou)
  • core: enable percentile extension by default (Preston Thorpe)
  • github: Bump turso_whopper regression-test step timeout to 15 minutes (Pekka Enberg)
  • github: Use Playwright container for wasm browser tests (Pekka Enberg)
  • core/functions: Allow whitespace in datetime() arguments (HoangTechCS | AIE")
  • tests/integration: Verify source MVCC log exists before VACUUM INTO (Vartan Babayan)
  • core/functions: Allow whitespace in datetime() arguments (HoangTechCS | AIE)
  • core/vdbe: Preserve blob bytes when casting to BLOB (Karina)
  • core/mvcc: check schema cookie during get_commit_timestamp (Pere Diaz Bou)
  • Only rollback if auto commit is true (Rohith Suresh)
  • bindings/js/sync: bump concurrent-actions-consistency timeout to 30s (Pekka Enberg)
  • sqlite3: Respect n_byte length in sqlite3_prepare_{v2,v3} (Tommy Williams)
  • chore: rename project from "Limbo" to "Turso" (Nikolai Grlica)
  • core/alter: Clear sqlite_sequence after removing AUTOINCREMENT (Nyasha Hama)
  • core: invalidate deferred seek in op_seek_rowid (Mikaël Francoeur)
  • Feature/6444 pragma vdbe trace (H)
  • Do not reject delete_from sqlite_sequence incorrectly (Rohith Suresh)
  • github: Bump test-limbo timeout to 30 minutes (Pekka Enberg)
  • Github actions cleanups (Pekka Enberg)
  • core: open with absolute path (Pere Diaz Bou)
  • sdk-kit: clarify crates.io descriptions point Rust users to turso (Pekka Enberg)
  • core/mvcc: preserve rowid allocator watermark (Avinash Sajjanshetty)
  • build(deps): bump urllib3 from 2.6.3 to 2.7.0 (app/dependabot)
  • core/printf: return NULL for empty format (oska)
  • bindings/rust: Disable test_sync_parallel_writes_with_sync_ops test case (Pekka Enberg)
  • core/schema: Preserve AUTOINCREMENT after DROP COLUMN (Nyasha Hama)
  • core/mvcc: yield on big serialization of transaction (Pere Diaz Bou)
  • Rollback abandoned MVCC commits on cleanup (Mikaël Francoeur)

Fixed

  • Fix unsafe concurrent BTreeMap use in memory IO backends (Jussi Saurio)
  • core/translate: report qualified column refs in ALTER TABLE trigger errors (roboturso)
  • core/function: resolve jsonb_replace to its jsonb variant (LucasArray)
  • core/json: fix UTF-8 corruption in JSON5 string serialization (Prathamesh Anvekar)
  • github: Fix Windows release build and signing failures (Pekka Enberg)
  • sync: fix race between concurrent opens of the same synced replica (Glauber Costa)
  • fix file lock of WAL for multiprocess opens (Preston Thorpe)
  • fix/sync: Replay pushed CREATE DDL with IF NOT EXISTS (Jussi Saurio)
  • Fix various corruption issues (Jussi Saurio)
  • simulator: fix dropping rows from improperly rolled back connection (Preston Thorpe)
  • remove debug code (Pedro Muniz)
  • core/function: resolve jsonb_patch in function name lookup (LucasArray)
  • core: Fix uuid_str() and uuid_blob() on nullable columns (Preston Thorpe)
  • Fix cdc mode empty txn (Nikita Sivukhin)
  • bump fossier dependency to fix vouch command (Preston Thorpe)
  • stress: handle integrity check error correctly (Mikaël Francoeur)
  • Fix Antithesis targeted coverage output format to JSONL (Mikaël Francoeur)
  • docs: Fix time extension types (Pekka Enberg)
  • change error message for fallible allocations (Pedro Muniz)
  • ci: fix codspeed runs being treated separately (Pedro Muniz)
  • fix nonblocking read_page race and wal frame cache slot reuse corruption (Preston Thorpe)
  • fix duplicate rowid allocation in cdc instructions v2 emission (Preston Thorpe)
  • Fix WAL spill frame reuse during page spills (Pedro Muniz)
  • fix(pragma): silently ignore unknown PRAGMA names (Chris Siddall)
  • github: fix Windows codesign repack, use 7z instead of zip (Pekka Enberg)
  • Fix .NET SQLite facade compatibility (Marc-André Moreau)
  • core/translate: Fix NULL parent-key semantics in FK parent checks (Pavan Nambi)
  • json: fix json_set panics on array append (Artur Kantorczyk)
  • Fix README.md: invalid Go syntax and double .db file extension (n3on p0rtal)
  • fix(schema): store bare trigger target table name on schema reload (Glauber Costa)
  • core/mvcc: fix requires_seek on mvcc checkpoint insert (Pere Diaz Bou)
  • core/translate: Fix partial index predicate consumption (Jussi Saurio)
  • core/mvcc: properly complete checkpoint in case of error (Nikita Sivukhin)
  • Resolve cargo artifact dir via scripts/cargo-target-dir (Pekka Enberg)
  • fix test_normalize_ident: impl was changed, test was not (Jussi Saurio)
  • fix correlated subquery inside aggregate with GROUP BY (Darko)
  • core/translate: Fix ordinal ORDER BY and GROUP BY with COLLATE (Yassine Elyaakoub)
  • fix: materialize DELETE rowset when FK cascade triggers back to target (Jussi Saurio)
  • fix: spurious sqlite_stat1 NULL-idx rows emitted by ANALYZE (Jussi Saurio)
  • fix: handle rowid-alias columns in composite FK key probes (Pavan Nambi)
  • core/vdbe: Fix AVG() for text values with numeric prefixes (Hossam Khero)
  • core/translate: nest FROM-clause subquery coroutine bodies to fix hash join bugs (Jussi Saurio)
  • extensions/fuzzy: Fix index out of bounds panic in fuzzy string (Danawan Bimantoro)
  • core/mvcc: fix deadlock on impl Display for Transaction (Pere Diaz Bou)
  • fix: Invalid changes() Count When CDC Is Enabled (Akira Noda)
  • serverless/javascript: Fix stack overflow error with large blobs (Henry)
  • core/translate: Fix affinity of compound subquery result columns (Glauber Costa)
  • fix: avoid CDC overwriting last insert rowid (Akira Noda)
  • javascript: Fix Database.inTransaction property (Pekka Enberg)
  • Fix recursive FK cascades causing stack overflow (Jussi Saurio)
  • return error instead of panic on invalid type conversion (Nikita Sivukhin)
  • propagate IndexInfo allocation error (Pedro Muniz)
  • Propagate immutable record allocation errors (Pedro Muniz)
  • Fix ignored updates and self-referential updates incorrectly mutating FK violation counters (Jussi Saurio)
  • optimizer: fix two FULL OUTER JOIN planner bugs (Preston Thorpe)
  • Fix for VACUUM INTO panic on nested statement yields (ISSUE #7237) (Benjamin Ebby)
  • testing/simulator: fix drop index accounting in query profile (Pekka Enberg)
  • Fix MVCC schema recovery for frame-level index ops (Jussi Saurio)
  • Convert BitSet and callers that use it to propagate fallible allocation errors (Pedro Muniz)
  • fix: align AUTOINCREMENT seq coercion with SQLite (Kumar Ujjawal)
  • Fix DROP COLUMN expression index metadata (ReV)
  • fix cargo fmt complaints (Avinash Sajjanshetty)
  • core/mvcc: fix MVCC checkpoint duplicate index entries for interior index keys (Avinash Sajjanshetty)

Install turso_cli 0.7.0

Install prebuilt binaries via shell script

curl --proto '=https' --tlsv1.2 -LsSf https://github.com/tursodatabase/turso/releases/download/v0.7.0/turso_cli-installer.sh | sh

Install prebuilt binaries via powershell script

powershell -ExecutionPolicy Bypass -c "irm https://github.com/tursodatabase/turso/releases/download/v0.7.0/turso_cli-installer.ps1 | iex"

Download turso_cli 0.7.0

File Platform Checksum
turso_cli-aarch64-apple-darwin.tar.xz Apple Silicon macOS checksum
turso_cli-x86_64-apple-darwin.tar.xz Intel macOS checksum
turso_cli-aarch64-pc-windows-msvc.zip ARM64 Windows checksum
turso_cli-x86_64-pc-windows-msvc.zip x64 Windows checksum
turso_cli-aarch64-unknown-linux-gnu.tar.xz ARM64 Linux checksum
turso_cli-x86_64-unknown-linux-gnu.tar.xz x64 Linux checksum

Verifying GitHub Artifact Attestations

The artifacts in this release have attestations generated with GitHub Artifact Attestations. These can be verified by using the GitHub CLI:

gh attestation verify <file-path of downloaded artifact> --repo tursodatabase/turso

You can also download the attestation from GitHub and verify against that directly:

gh attestation verify <file-path of downloaded artifact> --bundle <file-path of downloaded attestation>