Skip to content

0.1.3 -- 2025-07-29

Latest
Compare
Choose a tag to compare
@github-actions github-actions released this 29 Jul 09:59

Release Notes

Added

  • bindings/rust: Add WAL API support (Nikita Sivukhin)
  • Implement the Returning statement for inserts and updates (Glauber Costa)
  • implement the pragma encoding (Glauber Costa)
  • support doubly qualified identifiers (Glauber Costa)
  • mark detach as supported (Glauber Costa)
  • Support ATTACH (read only) (Glauber Costa)
  • serverless: Add DatabasError type (Pekka Enberg)
  • btree/balance: support case where immediate parent page of unbalanced child page also overflows (Jussi Saurio)
  • serverless: Add Statement.run() method (Pekka Enberg)
  • make add dirty to change flag and also add page to the dirty list (Nikita Sivukhin)
  • types: less noisy Debug implementation for ImmutableRecord (Jussi Saurio)
  • Safe AtomicUsize wrapper for db_state: add DbState and AtomicDbState (Levy A.)
  • Add Github workflow for Turso serverless package (Pekka Enberg)
  • Add Rickrolling Turso blog post to contrib (Avinash Sajjanshetty)
  • Add @tursodatabase/serverless package (Pekka Enberg)
  • Implement pragma database_list (Glauber Costa)
  • fix/test: fix and unignore incorrectly implemented test (Jussi Saurio)
  • implement Debug for Database (Glauber Costa)
  • implement pragma application_id (Glauber Costa)
  • implement write side of pragma schema_version (Glauber Costa)
  • Simplify blocking operations – add io.block(fn) for IO trait implementors (Levy A.)
  • bindings/rust: Initial support for transactions API (Diego Reis)
  • claude sonnet forgot to run clippy when implementing mcp server (Jussi Saurio)
  • bindings/js: support iterator, and more kinds of params (Mikaël Francoeur)
  • Add a native MCP server (Glauber Costa)
  • sim: add order by to some queries (Jussi Saurio)
  • Core: Introduce external sorting (Iaroslav Zeigerman)
  • forgot to set the state to NewTrunk if we have more leaf pages than free entries (Pedro Muniz)
  • Implement IO latency correctly in simulator (Pedro Muniz)
  • page cache: temporarily increase default size until WAL spill is implemented (Jussi Saurio)
  • compat: add integrity_check (Pere Diaz Bou)
  • sim: provide additional context in assertion failures (Jussi Saurio)
  • btree: add some assertions related to #2106 (Jussi Saurio)
  • bench: add insert benchmark (batch sizes: 1,10,100) (Jussi Saurio)
  • Support page_size pragma setting (meteorgan)

Updated

  • bindings/javascript: Generate native npm packages at publish (Pekka Enberg)
  • Replace custom wasm bindings with napi-rs (Diego Reis)
  • core: Enforce shared database object per database file (Pekka Enberg)
  • btree/pager: Improve update performance by reusing freelist pages in allocate_page() (Jussi Saurio)
  • VDBE/op_column: use references to cursor payload instead of cloning (Jussi Saurio)
  • io/unix: wrap file with Mutex (Pere Diaz Bou)
  • core: Clone everything in schema (Pere Diaz Bou)
  • core/translate: Handle Expr::Id in CREATE INDEX (Kristofer)
  • Thread-safe WindowsFile (Levy A.)
  • io_uring: use Arc pointer for user data of entries (Preston Thorpe)
  • Stop checkpointing the entire WAL after every write when wal frame size > threshold (Preston Thorpe)
  • compat police (Glauber Costa)
  • remove upsert statement from COMPAT.md (Glauber Costa)
  • Update limbo -> turso in manual.md (stano)
  • bindings/javascript: Switch to napi v3 (Diego Reis)
  • Simplify sum() aggregation logic (bit-aloo)
  • Ignore WAL frames after bad checksum (Pere Diaz Bou)
  • parser: Distinguish quoted identifiers and unify Id into Name enum (bit-aloo)
  • btree: clear overflow pages when insert overwrites a cell (= UPDATE) (Jussi Saurio)
  • Append WAL frames one by one (Pere Diaz Bou)
  • pager: Clear stale page cache if database changed (Jussi Saurio)
  • sim/aws: ignore child process exits with code 137 (Jussi Saurio)
  • WAL insert API: force schema re-parse if necessary after WAL sync session end (Nikita Sivukhin)
  • WAL insert: mark pages as dirty (Nikita Sivukhin)
  • emit SetCookie after DropTable (Glauber Costa)
  • Bail early for read-only virtual tables (Preston Thorpe)
  • measure only the time it takes to open the actual connection (Glauber Costa)
  • Explicit rowid insert (Nikita Sivukhin)
  • Deserialize keys only once when sorting immutable records (Iaroslav Zeigerman)
  • WAL insert API (Nikita Sivukhin)
  • Pager: clear overflow cells when freeing page (Jussi Saurio)
  • make readonly a property of the database (Glauber Costa)
  • use default hasher for the sake of determinism (Nikita Sivukhin)
  • Load static extensions once and store on Database instead of once per connection (Preston Thorpe)
  • wal: write txn fail in case max_frame change midway (Pere Diaz Bou)
  • Improve Antithesis tests (Pekka Enberg)
  • core/lib: init_pager lock shared wal until filled (Pere Diaz Bou)
  • test/stress&sim: enable indexes by default (Jussi Saurio)
  • Usable space unwrap (Pedro Muniz)
  • BTreeTable::to_sql: wrap special column names in brackets (Nils Koch)
  • Avoid redundant decoding of record headers when reading sorted chunk files (Iaroslav Zeigerman)
  • compat: change page_size pragma and RowData opcode to yes (meteorgan)
  • Explain the Turso challenge (Glauber Costa)
  • gh workflow for dart (test, precompile, publish), only test is activated (Andika Tanuwijaya)
  • bindings/rust: Return number of rows changed from Connection::execute() (Rohith Suresh)
  • bindings/java: Make TursoDB and TursoDB factory thread-safe (Mikaël Francoeur)
  • use wasm32-wasip1 target instead of wasm32-wasi (Nils Koch)
  • improve handling of double quotes (Glauber Costa)
  • Remove find_cell, allow overwrite of index interior cell (Jussi Saurio)
  • sim: change --disable-create-index flag to --enable-create-index (default false) (Jussi Saurio)
  • Reanimate MVCC (Pekka Enberg)
  • Replace verbose IO Completion methods with helpers (Preston Thorpe)
  • Use pread and pwrite in run_once (Ihor Andrianov)
  • make_from_btree should wait for IO to complete (Pedro Muniz)
  • chore: update rust to version 1.88.0 (Nils Koch)
  • refactor/btree&vdbe: fold index key info (sort order, collations) into a single struct (Jussi Saurio)
  • core: Copy-on-write for in-memory schema (Levy A.)
  • simulator: Disable INSERT INTO .. SELECT for being slow (Pekka Enberg)
  • Async IO: registration of file descriptors (Preston Thorpe)
  • Clean up AST unparsing, remove ToSqlString (Levy A.)
  • rename operation_xxx to change_xxx to make naming more consistent (Nikita Sivukhin)
  • Separate user-callable cacheflush from internal cacheflush logic (Diego Reis)
  • make unixepoch to return i64 (Nikita Sivukhin)
  • sim: ignore fsync faults (Jussi Saurio)
  • Updates to the simulator (Alperen Keleş)
  • small refactor: rename "amount" to "extra_amount" (Nikita Sivukhin)
  • refactor: Changes CursorResult to IOResult (Diego Reis)
  • btree: unify table&index seek page boundary handling (Jussi Saurio)
  • Treat table-valued functions as tables (Piotr Rżysko)

Fixed

  • perf: fix logic error in is_simple_count() (Jussi Saurio)
  • Fix writing wal header for async IO (Preston Thorpe)
  • bindings/javascript: Fix tracing and SqliteError message not populated (Levy A.)
  • Fix sum() to follow the SQLite semantics (FamHaggs)
  • Fix error handling when binding column references while translating the UPDATE statement (Iaroslav Zeigerman)
  • Fix schema reparse logic (Nikita Sivukhin)
  • Fix page_count pragma (meteorgan)
  • sqlite3: Improve SQLite error handling and fix C-string safety (Ceferino Patino)
  • fix: SUM returns correct float for mixed numeric/non-numeric types & return value on empty set (Axel Tobieson Rova)
  • silence clippy errors with features disabled (Glauber Costa)
  • fix raw read frame WAL API (Nikita Sivukhin)
  • Work around CREATE TABLE whitespace issue (Jussi Saurio)
  • Fix issues in alter table tests and fix a small error in BTreeTable::to_sql (Jussi Saurio)
  • Fix duplicate SET statement compatibility with SQLite (Ihor Andrianov)
  • test/clickbench: fix clickbench (Jussi Saurio)
  • fix/sim: actually enable indexes by default (Jussi Saurio)
  • fix/btree/balance: interior cell insertion can leave page overfull (Jussi Saurio)
  • Fix error: Stable 1.88.0 is not available in Nix flake (Levy A.)
  • Fix column order for multi-row insertion (Nikita Sivukhin)
  • doc: fix intra-repo links for contribution guide and license, and expand binding links (bit-aloo)
  • fix opcodes missing a database register (Glauber Costa)
  • sorter: fix sorter panic on SortedChunkIOState::WaitingForRead (Jussi Saurio)
  • Fix parent page stack location after interior node replacement (Jussi Saurio)
  • Fix rollback for TxErrors (Diego Reis)
  • make most instrumentation levels to be Debug or Trace instead (Pedro Muniz)
  • Property FaultyQuery should fail if we encounter an error that is not expected (Pedro Muniz)
  • translate/create index: fix wrong collations (Jussi Saurio)
  • bind/java: Fix Linux x86 build release (Diego Reis)
  • fix/btree: fix insert_into_cell() logic (Jussi Saurio)
  • cli: fix not being able to redirect traces to a file from inline query (Jussi Saurio)
  • bind/javascript: Fix presentation mode disabling logic (Diego Reis)
  • btree: fix post-balancing seek bug in delete path (Jussi Saurio)
  • btree: fix trying to go upwards when we are already at the end of the entire btree (Jussi Saurio)
  • btree: fix interior cell replacement in btrees with depth >=3 (Jussi Saurio)
  • extensions/vtab: fix i32 being passed as i64 across FFI boundary (Jussi Saurio)
  • Fix CSV import in the shell (Jussi Saurio)
  • fix record header size calculations and incorrect assumptions (Jussi Saurio)
  • bindings/js: fix more tests (Mikaël Francoeur)

Install turso_cli 0.1.3

Install prebuilt binaries via shell script

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

Install prebuilt binaries via powershell script

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

Download turso_cli 0.1.3

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-x86_64-pc-windows-msvc.zip x64 Windows 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>