v0.5.0

tursodatabase/tursov0.5.0Mar 4, 2026by github-actions[bot]

AI Summary

A major feature release marking the introduction of MVCC mode, encryption support, and various SQL enhancements like CHECK constraints and FTS.

Key Highlights

  • MVCC (Multi-Version Concurrency Control) mode support
  • Encryption support for local and remote databases
  • CHECK constraints implementation
  • Full Text Search (FTS) support
  • RAISE() function and Materialized views

New Features

  • MVCC mode support
  • Encryption support for local and remote databases
  • CHECK constraints
  • Full Text Search (FTS)
  • RAISE() function
  • Materialized views support
  • CTE (Common Table Expressions) support
  • Named savepoints
  • REGEXP operator support
  • PRAGMA synchronous=NORMAL

Full Release Notes

## Release Notes

### Added
* github/release: Add retry logic to network-dependent install steps (Pekka Enberg")
* github/release: Add retry logic to network-dependent install steps (Pekka Enberg)
* Add JS and Python concurrent write examples (Avinash Sajjanshetty)
* perf/react-native: add c++ getAllRows() helper (Jussi Saurio)
* perf: add compiler branching hints (Preston Thorpe)
* Add concurrent writes example in Rust (Avinash Sajjanshetty)
* Add SQLAlchemy dialect for Python bindings (Orthel Toralen)
* mvcc: add test that asserts no ghost commits after Busy errors happen (Jussi Saurio)
* core: Support views in MVCC mode (RJ Barman)
* add return type checking for Function calls for `CHECK` constraints (Pedro Muniz)
* Add mobibench to gitignore (Preston Thorpe)
* Add native TCL extension for in-process SQLite test harness (Ahmad Alhour)
* bindings/rust: Add statement and row column inspection APIs (Pekka Enberg)
* cli/sync: add read timeout to prevent deadlock on Windows (Orthel Toralen)
* add SQL language reference documentation (Glauber Costa)
* add stable PRAGMA capture_data_changes_conn name and keep old one around for compatibility (Nikita Sivukhin)
* Improve Elle, add rw-register model and chaotic workloads (Avinash Sajjanshetty)
* Add Mobibench evaluation: SQLite vs Turso (Pekka Enberg)
* core/io: Add POSIX fallback for io_uring ftruncate (Pekka Enberg)
* temporarily remove new windows simulation runs (Preston Thorpe)
* feat: support encryption keys for attached databases via URI params (Glauber Costa)
* Finish implementing RAISE (Preston Thorpe)
* autofix: implement FkCheck opcode to prevent RETURNING rows after FK violations (Jussi Saurio)
* Support custom types (Glauber Costa)
* tests/fuzz: add fuzz_iterations helper and cut CI fuzz iters to 50% (Jussi Saurio)
* Add STRICT table support to differential fuzzer (Glauber Costa)
* Add support for RAISE() function (Glauber Costa)
* Add ATTACH support to simulator (Glauber Costa)
* partially implement FULL OUTER + LEFT and RIGHT hash joins (Preston Thorpe)
* EXPLAIN QUERY PLAN: fix incorrect join order, add missing annotations, convert some snapshot tests to EQP-only (Jussi Saurio)
* bindings/rust: add old multithreaded bug reproducers as mvcc regression tests (Jussi Saurio)
* core/mvcc: Implement Hekaton commit dependency tracking (Pere Diaz Bou)
* tests: add CTE regression tests for issue #4637 (Jussi Saurio)
* add serial test crate to make `fuzz_pending_byte_database` serial for mvcc and wal (Pedro Muniz)
* Add more tests to foreign_keys.sqltest (Jussi Saurio)
* tests: add regression tests for expression index UPDATE correctness (Pedro Muniz)
* Implement named savepoints (Preston Thorpe)
* feat: Add materialized views support to Rust bindings and test runner (Martin Mauch)
* Fix STRICT ADD COLUMN default type validation (Kumar Ujjawal)
* Fix freelist_count dirty leak and add regression test (Kumar Ujjawal)
* core: reimplement PRAGMA integrity_check as VDBE and add sqlite parity corpus (Jussi Saurio)
* Restore new antithesis assertions (Mikaël Francoeur)
* Use new Antithesis assertions (Mikaël Francoeur")
* fix: NEW.rowid_alias in UPDATE Trigger WHEN Clause Evaluates to NULL (Jussi Saurio)
* Add MVCC Antithesis stress test configurations (Pekka Enberg)
* add tests verifying check constraints are evaluated before ON CONFLICT clauses (Jussi Saurio)
* Improve support for attach databases (Glauber Costa)
* translate: support row-valued comparison expressions (Jussi Saurio)
* fix: add `changes` support to MVCC and adjust code to always emit it in one place only (Pedro Muniz)
* Add regression tests for correlated subqueries using MULTI-INDEX AND plans (Jussi Saurio)
* add tests verifying INSERT RETURNING does not skip index updates (Jussi Saurio)
* btree: add property tests & make a few functions not panic on corruption (Jussi Saurio)
* Use new Antithesis assertions (Mikaël Francoeur")
* add regression tests for correlated subqueries registers fix (Pedro Muniz)
* Use new Antithesis assertions (Mikaël Francoeur)
* Add regression tests for concurrent commit deadlock in VDBE yield-spin loop (Avinash Sajjanshetty)
* Add TPC-H benchmark README and plotting scripts (Pekka Enberg)
* fix: Panic on ALTER TABLE ADD COLUMN With Invalid Collation Name #5305 (Jussi Saurio)
* ci: add license checker to disallow GPL dependencies (Srinivas A)
* Add some makefile commands for test runner in repo root (Preston Thorpe)
* add exp-index-method to rust backend and for testing (Pavan Nambi)
* Add support for FROM-clause subquery materialization and CTE materialization (Jussi Saurio)
* Add new antithesis assertions (Mikaël Francoeur)
* concurrent-simulator: Add UPDATE and DELETE workloads (Pekka Enberg)
* Implement PRAGMA function_list with enum-derived function probing (Glauber Costa)
* Add hermitage tests (Avinash Sajjanshetty)
* Fix corruption errors caused by stale cursor positioning + add upsert support to simulator (Pavan Nambi)
* make transactions supported in compat.md (Glauber Costa)
* Add REGEXP operator support (Glauber Costa)
* Add test case for MVCC dual cursor transaction isolation (Jussi Saurio)
* Implement CHECK constraints (Glauber Costa)
* Replace panic/todo/unimplemented with proper errors (Mikaël Francoeur)
* testing/runner: Add @skip-if sqlite directive (Preston Thorpe)
* Implement multi-index scan access method (Preston Thorpe)
* add tests for ORDER BY aggregate not in SELECT with GROUP BY (Mikaël Francoeur)
* github: Add workflow to publish crates to crates.io on tags (Pekka Enberg)
* javascript: Add support for Statement.reader property (Pekka Enberg)
* javascript: Fix implicit connect support (Pekka Enberg)
* Add busy timeout and Connector pattern for go bindings (Preston Thorpe)
* core/mvcc: add to destroyed_tables when insert+delete in same checkpoint (Pere Diaz Bou)
* core/vdbe: fix newrowid Start state change on IO (Pere Diaz Bou)
* add duration and fix notebook name (Mikaël Francoeur)
* Add support for PRAGMA synchronous=NORMAL (Jussi Saurio)
* Use new Antithesis trigger action (Mikaël Francoeur)
* core/mvcc: update schema root pages with new allocated btree pages (Pere Diaz Bou)
* add --experimental-attach flag to test runner backends (Mikaël Francoeur)
* add index knowledge skill (Pedro Muniz)
* Implement `vacuum_into` op (Avinash Sajjanshetty)
* fix: only initialize result registers for subqueries that have not been evaluated yet (Pedro Muniz)
* fix: add bounds checking to `cell_interior_read_left_child_page` (Avinash Sajjanshetty)
* Add Namespace field for go-sync package (Preston Thorpe)
* Add "release-official" compilation profile (Jussi Saurio)
* Add support for local encryption in SDKs (Avinash Sajjanshetty)
* fix build.rs rebuilding every time due to always getting new timestamp (Jussi Saurio)
* add turso test runner to workspace member (Pedro Muniz)
* fix dockerfile to add dbhash tool (Pedro Muniz)
* add ReadableName strategy for differential fuzzer so that we mostly generate readable identifiers (Pedro Muniz)
* implement `PRAGMA temp_store` optimization (Preston Thorpe)
* Add `dbhash` tool calculate hash of logical db content (Avinash Sajjanshetty)
* Add local encryption support for Go (Avinash Sajjanshetty)
* mac: introduce PRAGMA fullfsync (Jussi Saurio)
* Reintroduce record header caching (Jussi Saurio")
* Add new insert/write performance benchmarks (Preston Thorpe)
* compat.md: add generated + md reformat (Pere Diaz Bou)
* Add support for remote encryption in sync operations (Avinash Sajjanshetty)
* core/mvcc: add savepoints to mvcc with `begin/end_statment` (Pere Diaz Bou)
* Add benchmark for hash table/spilling performance (Preston Thorpe)
* Reintroduce record header caching (Jussi Saurio"' from Jussi Saurio)
* Reintroduce record header caching (Jussi Saurio")
* Reintroduce record header caching (Jussi Saurio)
* Implement remaining ON CONFLICT ResolveTypes for INSERT and UPDATE statements (Preston Thorpe)
* feat(cli): add .read command to execute SQL from a file (i cook code)
* add bench feature to run benchmarks in nyrkio (Pedro Muniz)
* Implement partial ON CONFLICT support for UPDATE statements (Preston Thorpe)
* Support CTE visibility in VALUES+RETURNING subqueries and allow explicit col names (Preston Thorpe)
* Add ECS task to run sqlancer nightly along with simulator (Preston Thorpe)
* implement simple strategy to restart WAL log if possible (Nikita Sivukhin)
* Add VSCode syntax highlighter for .sqltest files (Jussi Saurio)
* DEFAULT value handling of NON-NULL columns in ADD COLUMN (Preston Thorpe)
* Implement Full Text Search feature (Preston Thorpe)
* add codspeed (Pedro Muniz)
* core/mvcc: Add support for synchronous off mode (Pekka Enberg)
* Add support for subqueries in the WHERE position for DML statements (Preston Thorpe)
* Add vibecoded stress-go testing tool (Jussi Saurio)
* fix: implement IS TRUE/IS FALSE with correct SQLite semantics (Jussi Saurio)
* Add shuttle tests for IO trait (Pedro Muniz)
* bindings/rust: support `prepare_cached` (Pere Diaz Bou)
* Add more comprehensive PRAGMA integrity_check, and add PRAGMA quick_check (Jussi Saurio)
* tests: add  some shuttle tests (Pedro Muniz)
* benchmarks: add micro benchmarks with divan (Pedro Muniz)
* AGENTS.MD: add some magic words about max-turns (Jussi Saurio)
* Add more instructions to AGENTS.MD and use Opus model instead of Claude for github bot (Jussi Saurio)
* bindings/dotnet: implement IsDBNull check (Alex)
* Implement json_object(*) to create JSON object from all columns (Martin Mauch)
* Add some more guidelines to AGENTS.MD (Jussi Saurio)
* Add id-token: write permission to claude action for OIDC (Jussi Saurio)
* Add claude code github action and CLAUDE.MD file (Jussi Saurio)
* antithesis: Add test case for WAL checkpointing (Pekka Enberg)
* implement .dbtotxt and dbpage vtab (Pavan Nambi)
* bindings/java: Add transaction support (Kim Seon Woo)

### Updated
* core/mvcc: disable autoincrement for MVCC (Pere Diaz Bou)
* testing/stress: Allow --seed parameter for non-deterministic runs (Pekka Enberg)
* Update authors in Cargo.toml (Preston Thorpe)
* refactor: reorganize emitter.rs into its own module (Preston Thorpe)
* core/vector: Avoid simsimd on Windows AArch64 (Marc-André Moreau)
* core/storage: Reject non-UTF-8 encoded databases on open (Mikaël Francoeur)
* core/mvcc: Atomic timestamps when preparing commit (Avinash Sajjanshetty)
* Differential fuzzer: detect more false positive with limit and order by (Pedro Muniz)
* core/mvcc:  move `payload_size` to frame header (Avinash Sajjanshetty)
* Fast path no-op update in vdbe (Preston Thorpe)
* Rename experimental_mvcc to mvcc (Eren Türkoğlu)
* Update or replace ordering (Preston Thorpe)
* Hash joins: partition spilling improvements (Preston Thorpe)
* core/translate: Apply explicit view column aliases (Karthik Koralla)
* core/translate: cache GROUP BY compound expressions properly (Jussi Saurio)
* core: per-database MVCC transactions for attached databases (Glauber Costa)
* Logical log tweaks (Jussi Saurio)
* Assert that no two transaction timestamps are ever same (Avinash Sajjanshetty)
* Update sqlite_sequence on ALTER TABLE ... RENAME TO (Kumar Ujjawal)
* core/mvcc: Increase op count and tx payload size in logical log tx record format (Jussi Saurio)
* core/translate: Use usable constraint even if preceded by unusable constraint on same column (Jussi Saurio)
* Preserve BLOB-vs-no-affinity semantics in comparison coercion (Kumar Ujjawal)
* compat: defer CTE column count check until its used (Pedro Muniz)
* Improve SQLite3 tests (Pekka Enberg)
* Accept trailing named column constraints in column defs (Kumar Ujjawal)
* Enable index method table access for DML stmts (Preston Thorpe)
* update unique_sets when renaming a column to prevent schema corruption (Glauber Costa)
* Pretty print elle status progress (Avinash Sajjanshetty)
* Decorrelate simple EXISTS / NOT EXISTS subqueries as semi/antijoins (Jussi Saurio)
* Disable index-method access for DML (Kumar Ujjawal)
* Avoid panic in DecrJumpZero on non-integer register (Kumar Ujjawal)
* core/io: Track write buffer in completion (Jussi Saurio)
* core/schema: Emit table-level UNIQUE constraints in BTreeTable::to_sql() (Jussi Saurio)
* Avoid modulo-by-zero in WAL frame API fuzz rollback (Kumar Ujjawal)
* enable async io in rust bindings (Pedro Muniz)
* Make strict mode non-experimental (Glauber Costa)
* Update misleading comment in MVCC (Avinash Sajjanshetty)
* core/mvcc: Monotonic lockfree rowid allocation (Jussi Saurio)
* core/mvcc: Use hash set to track commit dependencies (Avinash Sajjanshetty)
* core/mvcc: check conflict delete btree resident tombstone (Pere Diaz Bou)
* Adjust React Native example app instructions (Jussi Saurio)
* Update example for VFS extensions in extensions/core/README.md (Preston Thorpe)
* Enable partial indexes in MVCC mode (Preston Thorpe)
* Enable Expression indexes in MVCC mode (Preston Thorpe)
* Gate sqlite_dbpage writes behind --unsafe-testing (Kumar Ujjawal)
* Enable FTS for JavaScript SDK (Nikita Sivukhin)
* Sqltest cross check integrity (Jussi Saurio)
* properly split sql statements for JS runner backend + enable triggers (Pedro Muniz)
* Differential fuzzer improvements (Pedro Muniz)
* core/translate: Remove spurious Affinity instruction from integrity_check (Pekka Enberg)
* Remove some clones from MVCC code (Preston Thorpe)
* remove `Arc<RwLock<Statement>>` from `Insn::Program` (Pedro Muniz)
* ci: split bench into multiple jobs (Jussi Saurio)
* Refactor core_tester fuzz module (Preston Thorpe)
* Replace panic! and assert! with turso_macros assertions (Mikaël Francoeur)
* SQLite compat: restrict ANY affinity special-casing to STRICT tables (Hossam Khero)
* Enable MVCC for a bunch of fuzz tests (Preston Thorpe)
* JS SDK: remote writes experimental (Nikita Sivukhin)
* Reject triggers on virtual tables (Kumar Ujjawal)
* serverless: Export Session and SessionConfig types (Nikita Sivukhin)
* prevent scalar blob into JSONB (김선우)
* install-sqlite: dont fail at get_download_url if sqlite3 already installed (Jussi Saurio)
* refactor: stop using `connection.with_schema` inside `translate` module (Pedro Muniz)
* Reject duplicate CTE names in WITH clause (Kumar Ujjawal)
* Comment out flaky vector jaccard test (Preston Thorpe)
* mvcc: disable cross-incompatible features (Jussi Saurio)
* Random code cleanups to lib.rs (Pekka Enberg)
* Reject column-level multi-column FK refs in ALTER TABLE (Kumar Ujjawal)
* core: Make version functions non-deterministic (ratnesh mishra)
* Experimental SQLRight setup (Mikaël Francoeur)
* Reject FILTER clauses in view definitions (Kumar Ujjawal)
* test/mvcc: re-enable database reopen logic in MVCC transaction fuzzer (Jussi Saurio)
* perf: optimizations for FTS (Preston Thorpe)
* CDC v2: transaction IDs and per-statement COMMIT records (Nikita Sivukhin)
* Enable using Search for WHERE rowid= predicate instead of full scan (Preston Thorpe)
* Reject reserved JSONB element types (Kumar Ujjawal)
* core/mvcc: reparse schema on get_index_info (Pere Diaz Bou)
* refactor: change translate functions to accept `&mut ProgramBuilder` (Pedro Muniz)
* testing/stress: Remove multi-threading warning (Pekka Enberg)
* github: Improve license check (Pekka Enberg)
* core/mvcc: check for unique conflicts (Pere Diaz Bou)
* Btree dump vtab (Nikita Sivukhin)
* Cdc version table (Nikita Sivukhin)
* vector8 + vector1bit (Nikita Sivukhin)
* stress: Use single Database object (Pekka Enberg)
* continue execution if IO was completed immediately (Nikita Sivukhin)
* Lower Windows CI test timeout from 60 to 20 minutes (Pekka Enberg)
* Multi index operator constraint (Pedro Muniz)
* bench: gate nanosecond-level tests behind nanosecond-bench feature (Jussi Saurio)
* use full link in JS SDK README so that links will be correct at npm (Nikita Sivukhin)
* adjust is_constant check for `IN` and `emit_no_constant_insn` to avoid panic in VDBE cursor (Pedro Muniz)
* concurrent-simulator: Explore in fast mode (Pekka Enberg)
* Rewrite printf for full SQLite compatibility (Glauber Costa)
* Pragmas (Glauber Costa)
* testing/stress: Re-enable reopen and reconnect in stress tester (Pekka Enberg)
* make `Numeric` the source of truth for number comparisons (Pedro Muniz)
* Mvcc garbage collection (Jussi Saurio)
* Remove unmaintained dart bindings (Avinash Sajjanshetty)
* Convert antithesis from feature to cfg flag (Mikaël Francoeur)
* core/storage: Remove unused FxHashSet import in btree.rs (Pekka Enberg)
* core/mvcc: check integer primary key conflicts (Pere Diaz Bou)
* use blocking IO for local databases for now (Nikita Sivukhin)
* Make Github actions even more robust (Pekka Enberg)
* bindings/wasm: Switch to notification-based I/O completion (Pekka Enberg)
* Clippy more rules (Nikita Sivukhin)
* properly handle url callback in react native bindings (Nikita Sivukhin)
* Reduce antithesis stdout logging and log sql/tracing to files (Mikaël Francoeur)
* Make Github workflows more robust (Pekka Enberg)
* Change crate types in Dockerfile to restore Antithesis instrumentation (Mikaël Francoeur)
* Whopper elle (Pedro Muniz)
* allow url as function in react native bindings (Nikita Sivukhin)
* JavaScript serverless driver improvements (Pekka Enberg)
* MVCC: enable autocheckpoint at 1000 * 4120 bytes logical log size (Jussi Saurio)
* Validate header (Nikita Sivukhin)
* avoid unnecessary slow worker tasks in JS (Nikita Sivukhin)
* do not cache chunks for .tantivy-meta.lock file (Nikita Sivukhin)
* Destroy any custom index methods while dropping parent table (Preston Thorpe)
* Stress progress bars (Pedro Muniz)
* More snapshot tests (Pedro Muniz)
* pin compiler and runner versions for codspeed benchmark (Pedro Muniz)
* Move test runner to `testing/runner` (Pedro Muniz)
* remove flaky test (Preston Thorpe)
* Updates to COMPAT.MD (Jussi Saurio)
* mark attach as experimental (Jussi Saurio)
* run test with llvm-cov at linux (Nikita Sivukhin)
* sim: generate unique constraints and verify statement rolls back correctly on failure (Pavan Nambi)
* Bump urllib3 from 2.5.0 to 2.6.3 (app/dependabot)
* Bump crossbeam-channel from 0.5.14 to 0.5.15 (app/dependabot)
* JIT query generation in turso_stress (Mikaël Francoeur)
* update determinism to match SQLite (Mikaël Francoeur)
* core: database open is now async (Nikita Sivukhin)
* bump claude code max turns (Pedro Muniz)
* return NULL when there is no record in `op_column` (Pedro Muniz)
* `strftime` should accept any kind of input not only text (Pedro Muniz)
* React native example more tests (Nikita Sivukhin)
* Document Rust sync API (Mikaël Francoeur)
* Tpch snapshot testing (Pedro Muniz)
* test runner: Snapshot testing (Pedro Muniz)
* agressively black box benchmarks (Pedro Muniz)
* Go driver time (Nikita Sivukhin)
* `CHAR` should return `\0` for `NULL` (Pedro Muniz)
* core/mvcc: use dual_peek in exists (Pere Diaz Bou)
* update npm for trusting publishing features (Nikita Sivukhin)
* Separate Connection from a prepared statement to enable proper caching (Preston Thorpe)
* substitute HashMap for FxHashMap in core (Pedro Muniz)
* adjust agents.md to call tursodb cli correctly (Pedro Muniz)
* remove NODE_AUTH_TOKEN (Nikita Sivukhin)
* React native (Nikita Sivukhin)
* sql_generation: reduce likelihood of index name collisions (Jussi Saurio)
* retry on reader contention for `TursoRwLock::read` (Pedro Muniz)
* differential fuzzer + general purpose sql generation (Pedro Muniz)
* cleanup: centralize optimizer params and make them loadable from json (Jussi Saurio)
* remove accesses_db flag (Nikita Sivukhin)
* Migrate more tcl tests (Pedro Muniz)
* testing/system: allow specifying rowcounts for gen-bigass-database.py (Jussi Saurio)
* tests/fuzz/cte_fuzz: try to prevent pathological queries (Jussi Saurio)
* improvements of the whopper (Nikita Sivukhin)
* Some Insert performance improvements (Preston Thorpe)
* Performance improvements for hash joins (Preston Thorpe)
* WAL auto truncation: increase epoch to prevent stale pages reuse (Nikita Sivukhin)
* core/mvcc: reparse schema after stream of schema changes (Pere Diaz Bou)
* Reduce CLI release build time by ~60% (Jussi Saurio)
* cleanup/vdbe: remove unused IndexKeyOwned and remove unused IndexKeyUnpacked::cursor_id (Jussi Saurio)
* Refactor: remove encryption key field from Database struct (Avinash Sajjanshetty)
* Migrate more TCL tests (Pedro Muniz)
* convert agent docs to skills (Pedro Muniz)
* Some optimizations for tpc-h queries (Pavan Nambi)
* Refactor AggContext to use flat payload representation (Jussi Saurio)
* more testing cleanups - move simulators (Pedro Muniz)
* more testing cleanups (Pedro Muniz)
* react-native: prepare (Nikita Sivukhin)
* Move stress to `testing/stress` (Pedro Muniz)
* Move tcl test to `testing/system` (Pedro Muniz)
* ci/bench: increase timeout to 45mins as workaround (Jussi Saurio)
* Remove fts/tantivy as default dependency in turso-core (Preston Thorpe)
* Move antithesis test to `testing/antithesis` (Pedro Muniz)
* feat/perf: use HashTable machinery for DISTINCT instead of ephemeral btree (Jussi Saurio)
* ci: split simulator into separate jobs (Jussi Saurio)
* CI: Reduce iterations in cte fuzzer (Preston Thorpe)
* ci: longer timeout for cargo nextest on windows (Jussi Saurio)
* fuzz/cte: reduce iterations (Jussi Saurio)
* docs: split AGENTS.MD into separate agent-guides files (Jussi Saurio)
* Js test runner (Jussi Saurio)
* refactor/pager: small cleanups (Jussi Saurio)
* sim: only run turso integrity check 10% of the time (Jussi Saurio)
* Rewrite BETWEEN statements for partial indexes in DML paths (Preston Thorpe)
* Create global directive for skipping mvcc in test runner (Preston Thorpe)
* stress: run stress with shuttle (Pedro Muniz)
* Validate Send + Sync for `ProgramState` + change registers to hold a `Box<[Register]>` (Pedro Muniz)
* test-runner: rust backend (Pedro Muniz)
* test-runner: start migrating TCL tests (Pedro Muniz)
* Give Antithesis tests better names (Mikaël Francoeur)
* core/vdbe: Allow leading + sign in numeric string parsing (Pere Diaz Bou)
* core/vdbe: trim return text with integer and float (Pere Diaz Bou)
* Reset ProgramState::once on statement reset (Mikaël Francoeur)
* return blob if we concat blobs (Nikita Sivukhin)
* Replace GPL-2.0 bloom crate with MIT-licensed fastbloom (Jussi Saurio)
* Refactor core/lib.rs Connection impl out to its own file (Preston Thorpe)
* Disallow WITHOUT ROWID tables (Jussi Saurio)
* core: Use fast monotonic time when possible (Pekka Enberg)
* core/vdbe: move mutable fields from Program to ProgramState (Pere Diaz Bou)
* replace custom SmallVec with smallvec crate (Ankush)
* Open autovacuum databases in readonly mode when experimental flag not set (app/copilot-swe-agent)
* remove unused lints, variables and functions (Pedro Muniz)
* separate Sync module (Pedro Muniz)
* Btree: optimize defragment_page (Khashayar Fereidani)
* avoid recursive read locks (Nikita Sivukhin)
* Track WAL state in savepoints for proper rollback (Pavan Nambi)
* vdbe: Resize deferred_seeks on program state reset (Pekka Enberg)
* Reset checkpoint state when PRAGMA wal_checkpoint fails (Jussi Saurio)
* Increase test_eval_param_only_once timeout threshold for CI reliability (app/copilot-swe-agent)
* stress: switch to WAL mode before SQLite integrity check (Pekka Enberg)
* planner: hash-join planning with safe build-side materialization (Preston Thorpe)
* core/mvcc: rollback index rows (Pere Diaz Bou)
* core/vdbe: check negative root pages with `integrity_check` (Pere Diaz Bou)
* antithesis/stress: run in verbose mode (Jussi Saurio)
* docs: change test build instructions (Mason Hall)
* btree: `get_prev_record` and `get_next_record` automatically invalidate_record (Pedro Muniz)
* bindings/dotnet: allow setting TursoParameter.Direction (Alex)
* VDBE micro-optimizations for read path (Jussi Saurio)

### Fixed
* concurrent-simulator: Fix DDL inside BEGIN CONCURRENT transactions (Pekka Enberg)
* core/json: Fix stale cursor crash in json_tree correlated subqueries (Pekka Enberg)
* Avoid panic on unresolved qualified column in DO UPDATE (Kumar Ujjawal)
* Fix unsound schema access when loading extensions (Preston Thorpe)
* Fix unresolved IfNot label in scalar count(*) subqueries (Kumar Ujjawal)
* core/translate: Fix non-literal defaults in Column instruction (Jussi Saurio)
* core/mvcc: Fix header-only write durability (Jussi Saurio)
* fix: IN(subquery) data corruption in ungrouped aggregates with NOT NULL columns (Vimal Prakash)
* temporarily remove big sqltest to fix all the CI errors (Preston Thorpe)
* Fix regression improperly consuming hash join WHERE terms (Preston Thorpe)
* fix: UPDATE OR REPLACE does not fire FK CASCADE on implicitly-deleted row (Pedro Muniz)
* Fix wal truncate on shutdown even after restart (Kumar Ujjawal)
* fix: UPDATE RETURNING correlated subquery uses pre-UPDATE values (Pedro Muniz)
* Make MVCC Elle check errors fail CI build (Pekka Enberg)
* Overflow fix (Nikita Sivukhin)
* fix: Window function with GROUP BY and ORDER BY causes optimizer assertion failure #5552 (Pedro Muniz)
* Fix sync replay generator (Nikita Sivukhin)
* fix: always reset pager state for attached databases (Pedro Muniz)
* Fix three FULL OUTER JOIN bugs (Jussi Saurio)
* fix snapshot isolation in MVCC (Preston Thorpe)
* fix: clean up db-log and fix WAL extension for attached DBs in simulator (Glauber Costa)
* fix: Expression index with correlated EXISTS subquery causes panic #5551 (Pedro Muniz)
* Fix --experimental-strict incorrectly enabling custom types (Glauber Costa)
* autofix: Aggregate COLLATE leaks to subsequent aggregates in same query (Jussi Saurio)
* fix/mvcc: prevent persistent "Database is busy" after failed IO during checkpoint (Jussi Saurio)
* autofix: CTE with UNION ALL corrupts first-column literals when any branch has aggregates (Jussi Saurio)
* autofix: Triggers during FK CASCADE see pre-delete state of parent table (Jussi Saurio)
* autofix: Correlated subquery with explicit JOIN returns wrong results after first row (Jussi Saurio)
* autofix: LEFT JOIN incorrectly converted to INNER JOIN when WHERE uses CASE/IIF (Jussi Saurio)
* autofix: Row value IN expression crashes with register allocation error (Jussi Saurio)
* fix: BEFORE UPDATE trigger corrupts outer cursor position for correlated subqueries (Jussi Saurio)
* autofix: DELETE with LIMIT ignores OFFSET clause (Preston Thorpe)
* fix: UPSERT ON CONFLICT fails to match expression indexes #5550 (Preston Thorpe)
* fix/optimizer: enable multi-index OR scans more widely and fix bad CTE query plans (Jussi Saurio)
* Fix REAL affinity to preserve non-numeric text (Kumar Ujjawal)
* Fix rowid resolution for views/WITHOUT ROWID (Kumar Ujjawal)
* fix: Use pure-rust for macos for aegis to prevent macos compilation issues (Amodh Dhakal)
* fix RETURNING, Statement::reset() and Program::abort() (Jussi Saurio)
* Fix DEFAULT affinity handling (Jussi Saurio)
* Improve I/O error message (Pekka Enberg)
* fix: Handle IVM old record capture when REQUIRE_SEEK is set (Martin Mauch)
* fix: MVCC cursor ignored left join null flag (Jussi Saurio)
* fix: adjust `jump_if_null` branch offset as incorrectly failed NULL in check constraints in integrity checks (Pedro Muniz)
* fix: emit RealAffinity when reading subquery columns from ephemeral indexes (Jussi Saurio)
* fix: default `generate_series` STOP to SQLite Default (4294967295) when omitted (Damian Melia)
* fix: mvcc: DDL statement inside BEGIN CONCURRENT returns a confusing error #3380 (Pedro Muniz)
* fix: do not do unchecked indexing to non-static page offsets #4736 (Pedro Muniz)
* fix: use consistent M_PI constant in degrees/radians for test parity with SQLite (Pedro Muniz)
* fix: Register DBSP state index in schema for integrity_check (Martin Mauch)
* fix: Panic on correlated subquery in IN clause referencing outer table alias #5213 (Pedro Muniz)
* fix(wal): release WAL read lock on rollback to prevent checkpoint busy (Ahmad Alhour)
* sqlite3: Fix segfault in sqlite3_free_table() (Pekka Enberg)
* fix: OR in Partial Index WHERE Clause Causes Unresolved Label Panic (Jussi Saurio)
* fix: No-op UPDATE causes datatype mismatch #5410 (Jussi Saurio)
* fix: Expression Index Key Computed From Pre-Affinity Value During UPDATE (Jussi Saurio)
* fix: ALTER TABLE RENAME COLUMN Does Not Update Partial Index WHERE Clauses (Jussi Saurio)
* fix: Create materialized view in same transaction as source (Martin Mauch)
* fix: "Cursor not found" when delete has a correlated subquery #5434 (Jussi Saurio)
* fix: INSERT INTO With CTE + Compound SELECT Produces Garbled Data #5425 (Jussi Saurio)
* fix: DELETE with correlated subquery sees in-flight deletions #5426 (Jussi Saurio)
* fix: Panic When CTE Is Used in UPDATE SET Clause on Keyed Table (Jussi Saurio)
* Fix FTS LIMIT 0/-1 handling to avoid Tantivy overflow (Kumar Ujjawal)
* fix/correctness: use ephemeral table for UPDATE when expression index refers to updated columns (Mikaël Francoeur)
* fix: update changes() and total_changes() inside explicit transactions (Damian Melia)
* Fix: Fully enable foreign keys for MVCC (Preston Thorpe)
* fix(cli): prevent extra space in multiline readline input (Karthik Koralla)
* Fix materialized view re-entrancy bug (Martin Mauch)
* fix affinity handling in check constraint evaluation (Jussi Saurio)
* fix affinity calculation for index seeks, subqueries and ctes (Jussi Saurio)
* fix: COLLATE Specification Lost in Concatenation with CHECK #5171 (Jussi Saurio)
* fix: INSERT OR IGNORE + CHECK Failure Does Not Update sqlite_sequence (Jussi Saurio)
* fix: Subquery in Trigger Body UPDATE SET Creates Poison Trigger (Jussi Saurio)
* fix: WHERE clause returns wrong result for INT64_MAX compared against overflowed float (Jussi Saurio)
* Fix prepare panic on comment/whitespace-only SQL (Kumar Ujjawal)
* fix: Panic on Scalar Subquery Referencing CTE by Original Name After Alias (Jussi Saurio)
* Fix SUM() type for BLOB inputs to return REAL (Kumar Ujjawal)
* Unify error codes in LibsqlError for serverless package (Pekka Enberg)
* Fix panic with duplicate expressions in window PARTITION BY (Mikaël Francoeur)
* Fix panic and wrong results for window function in EXISTS subquery (Mikaël Francoeur)
* fix: handle NULL properly in composite index seek/termination (Jussi Saurio)
* fix: panic in PRAGMA integrity_check with expression indexes #5117 (Sanjeev)
* fix: avoid cursor panic in SUM(TRUE IS TRUE) (Jussi Saurio)
* Fix CLI exit code on query failure (Ahmad Alhour)
* Fix MVCC trigger recovery rootpage handling (Jussi Saurio)
* Fix collation with reordered hash joins (Preston Thorpe)
* fix/btree: return error instead of panic if parent is unexpectedly a leaf (Jussi Saurio)
* Fix panic on duplicate ORDER BY expressions with GROUP BY (Jussi Saurio)
* fix: Align REAL→INTEGER cast with SQLite clamp semantics (Kumar Ujjawal)
* fix: INSERT with auto-assigned rowid skips explicit index on IPK column (Jussi Saurio)
* Fix affinity conversion of nan/inf text in numeric columns (Kumar Ujjawal)
* fix: Correlated Subquery + Window Function in WHERE Hoisted Before Scan Loop (Jussi Saurio)
* fix: more recursive read locks detected by shuttle with mvcc (Pedro Muniz)
* fix/mvcc: dropped_root_pages tracking must survive restart (Jussi Saurio)
* core/mvcc: Fix MVCC checkpoint panic when deleting index keys in inte… (Pekka Enberg)
* fix: backward table scan skips rows on deep B-trees (ORDER BY DESC) (Pedro Muniz)
* Phantom row fix (Pedro Muniz)
* Insert or fix (Pedro Muniz)
* fix: Panic on SELECT with 32767+ Columns (No SQLITE_MAX_COLUMN Limit) (Jussi Saurio)
* fix: GROUP BY With Constant Expression Causes Infinite Loop #5300 (Jussi Saurio)
* fix: propagate affinity for `IN` Subquery (Pedro Muniz)
* fix(optimizer): fix correctness bugs in LEFT->INNER join optimization (Jussi Saurio)
* fix/mvcc: fix test_logical_log_header_reserved_bytes_rejected test (Jussi Saurio)
* Fix livelock in MVCC commit when pager_commit_lock is contended (Jussi Saurio)
* Fix: handle multiplication overflow in time_date (Zohaib)
* Fix panic on ROLLBACK TO by replacing assert! with bail_parse_error (codingbot24-s)
* fix: Panic on CREATE TABLE with UNIQUE ... ON CONFLICT IGNORE #5221 (Jussi Saurio)
* mvcc: define crash recovery / correctness semantics, rewrite logical log (Jussi Saurio)
* Fix UPDATE incorrectly changing last_insert_rowid() (Kumar Ujjawal)
* Fix panic in sum() with large floating-point values (Jussi Saurio)
* fix(core): Handle PRAGMA cache_size overflow (fixes #5250) (ratnesh mishra)
* fix: allow CTEs to shadow schema objects (Jussi Saurio)
* fix: Panic on INSERT INTO t(nonexistent) SELECT ... FROM t #5226 (Jussi Saurio)
* fix: Panic on Unresolved Table Reference in UPSERT DO UPDATE SET #5281 (Jussi Saurio)
* core/storage: Fix pager commit completion (Pekka Enberg)
* Fix throughput plot colors and hatching to match TPC-H plot (Pekka Enberg)
* fix: Panic on 3+ Way MULTI-INDEX AND Query (RowSet State Violation) #… (Jussi Saurio)
* fix: u16 Overflow in page_free_array Panics on 65536-Byte Pages #5276 (Jussi Saurio)
* fix: handle PRAGMA database_list with argument without panicking (creativcoder)
* fix: INSERT ... RETURNING panics with multi-column scalar subquery #5243 (Jussi Saurio)
* fix: Panic When IN Subquery Used in LIMIT Expression #5247 (Jussi Saurio)
* fix: ALTER TABLE RENAME COLUMN Fails on Case Mismatch #5246 (Jussi Saurio)
* fix: read non-aggregate columns during AggStep for mixed expressions (Glauber Costa)
* fix: null coroutine registers in ungrouped aggregate empty-result path (Glauber Costa)
* fix: json_valid() With Zero Arguments Panics Instead of Returning Error (Jussi Saurio)
* fix: LIMIT With i64::MIN Panics Due to Subtract Overflow in DecrJumpZ… (Jussi Saurio)
* Fix missing dot in NOT NULL constraint error (Eren Türkoğlu)
* fix: Materialized View Panics on Arithmetic With Text Column Values #… (Jussi Saurio)
* fix: Panic on Scalar Subquery Referencing Rowid of Derived Table #5249 (Jussi Saurio)
* Fix MVCC savepoint rollback leaving stale write set entries (Pekka Enberg)
* fix: varint_len returned 10 for values with 58-64 significant bits (Jussi Saurio)
* fix: do not apply numeric affinity of converted float is a NaN (Pedro Muniz)
* try to fix js ci (Nikita Sivukhin)
* fix: QUOTE should emit float in scientific notation (Pedro Muniz)
* fix: GROUP BY sort order for extra columns (Pedro Muniz)
* fix(core): fix ColumnUsedMask::is_only for overflow indices beyond vector length (Pedro Muniz)
* Clear bloomfilters on rewind + hash table fix (Preston Thorpe)
* fix: correctly jump to second OR expression if first expression is NULL (Pedro Muniz)
* bindings/go: Fix spurious test failures from port conflicts (Pekka Enberg)
* Fix changes() value for DELETE (Preston Thorpe)
* core/mvcc: Fix transaction end version visibility check (Pere Diaz Bou)
* Rn locking fix (Nikita Sivukhin)
* fix prevent AUTOINCREMENT on non-INTEGER PKs with mixed-case names (김선우)
* fix: cannot use index seek if the constraining expression references the same table being scanned (Pedro Muniz)
* fix: evaluate result rows on exists subquery with DISTINCT clause (Pedro Muniz)
* Fix multiple index corruption bugs involving INSERT OR <conflict_resolution_mode> (Jussi Saurio)
* scripts/release-status.py: Classify issues as bugs by default (Pekka Enberg)
* Fix broken build (Pavan Nambi)
* Fix segfault in uuid_str/uuid_ts with no arguments (Preston Thorpe)
* fix build (Mikaël Francoeur)
* Strict fixes (Glauber Costa)
* fix: prevent overflow panic in JsonArrayLength with malformed JSONB (Jussi Saurio)
* Fix LEFT JOIN with virtual tables producing wrong results (Glauber Costa)
* Fix user-defined columns named oid/rowid/_rowid_ resolving to internal rowid (Glauber Costa)
* Rn fixes 2 (Nikita Sivukhin)
* fix: emit offset after Distinct deduplication (Pedro Muniz)
* fix: increase tolerance in vector L2 distance test to match simsimd vs rust precision (Pedro Muniz)
* fix/encryption: do not panic if accessing db with missing or incorrect keys (Avinash Sajjanshetty)
* fix: overflow handling in `cast_real_to_integer` (Pedro Muniz)
* fix: convert text and blobs into bytes for correct parsing of strings into numbers (Pedro Muniz)
* fix: `handle_text_sum` treat certain text values as approximate (Pedro Muniz)
* Fix ruff check errors (Avinash Sajjanshetty)
* Fix panic when CTE with indexed subquery is referenced twice (Mikaël Francoeur)
* Fix STRICT tables incorrectly rejecting NULL values (Glauber Costa)
* fix: allow qualified column references in partial index WHERE clause functions (Jussi Saurio)
* Fix deadlock in MVCC mode when loading extensions on file databases (Jussi Saurio)
* fix: WHERE clause treats string literals with numeric prefixes correctly (Jussi Saurio)
* fix(update): apply affinity before MakeRecord to prevent index corruption (Pedro Muniz)
* fix: JSON path UTF-8 char boundary panic (Jussi Saurio)
* MVCC: fix checkpoint consistency and durability bugs (Jussi Saurio)
* Fix CLI ".open" command to preserve experimental flags (Jussi Saurio)
* fix/pager: properly reuse last empty trunk page for page allocation (Jussi Saurio)
* Fix Antithesis CI config (Mikaël Francoeur)
* Fix missing STRICT keyword in BTreeTable::to_sql() (Glauber Costa)
* fix/connection: release wal locks on connection drop to prevent DB from being permalocked (Jussi Saurio)
* Fix JavaScript driver error message to match libSQL (Pekka Enberg)
* MVCC fixes found using whopper (Jussi Saurio)
* Fix bug when empty namespace is provided in go sync driver (Preston Thorpe)
* Fix passing namespace in to config in Go sync driver (Preston Thorpe)
* fix: -0.0 and 0.0 should have the same hash (Pedro Muniz)
* core/mvcc: fix btree row verification (Pere Diaz Bou)
* fix: group concat did not convert values to text on output (Pedro Muniz)
* Fix datetime modifier UTF-8 slicing panic (Mikaël Francoeur)
* fix `is_nonnull` check for primary key columns (Pedro Muniz)
* page cache: fix aggressive spilling logic (Preston Thorpe)
* Fix bug in hash join table mask calculations (Jussi Saurio)
* Fix broken encryption SDK tests (Avinash Sajjanshetty)
* Fix correlated subquery issues (Jussi Saurio)
* fix: avoid exponential CTE re-planning during query compilation (Jussi Saurio)
* ivm: Fix comparison of Integer <-> Float (Martin Mauch)
* Fix cross-link in Claude skills (Ofek Lev)
* mvcc: fix for schema conflict on COMMIT (Nikita Sivukhin)
* Fix bugs in hash-join materialization subplans (Jussi Saurio)
* fix: prevent integer overflow panic in JSONB serialization (Jussi Saurio)
* sqlancer dockerfile fix (Jussi Saurio)
* fix: infer subquery result list column types (Jussi Saurio)
* fix/vdbe: fix QUOTE() - should convert ints&floats to text (Jussi Saurio)
* fix/optimizer: fix output cardinality estimation for index seeks (Jussi Saurio)
* fix: truncate ORDER BY after rowid when rowid is first (Jussi Saurio)
* fix: PRINTF converts non-text format argument to string (Jussi Saurio)
* fix: substr returns NULL when provided NULL length (Jussi Saurio)
* fix docker builds (Pedro Muniz)
* fix: handle EXISTS in expr_vector_size instead of panicing with todo!() (Jussi Saurio)
* fix: move subqueries to ephemeral plan when WHERE clause is moved (Jussi Saurio)
* fix: eagerly remove ORDER BY if single aggregate, no groups/windows (Jussi Saurio)
* fix: IN/NOT IN subqueries return NULL when value not found and subquery contains NULLs (Jussi Saurio)
* fix/optimizer/stats: fix incorrectly named distinct_per_prefix field (Jussi Saurio)
* fix antithesis dockerfile: download libvoidstar.so in Dockerfile instead of COPY (Jussi Saurio)
* Optimizer: fix bugs, improve cost model (Jussi Saurio)
* Fix wal checkpoint (Nikita Sivukhin)
* Busy snapshot bugfix (Nikita Sivukhin)
* fix/translate: revert change that allowed index cursor with stale position to be read (Jussi Saurio)
* try_for_float: use Dekker algorithm to avoid precision error (Jussi Saurio)
* fix: type affinity comparison for TEXT columns with numeric literals (#4745) (Srinivas A)
* fix sync-wasm package to properly handle case when no url is provided (Nikita Sivukhin)
* Fix JSON panics and incompatibility issues (Jussi Saurio)
* Fix misuse of encryption key in the database manager cache (Avinash Sajjanshetty)
* Run cargo clippy --fix --all in turso-test-runner (Preston Thorpe)
* Fix ON CONFLICT resolution propagation to trigger statements (Preston Thorpe)
* Fix sqlancer-runner image name in GH action build (Preston Thorpe)
* Fix misleading turso-test-runner comments regarding mvcc&readonly (Jussi Saurio)
* turso-test-runner: fix flakiness with Rust bindings + MVCC combo (Jussi Saurio)
* Fix datetime parse_modifier() panicing on multibyte utf-8 (Jussi Saurio)
* Ci fixes (Jussi Saurio)
* Scalarfunc fuzzer + fixes (Jussi Saurio)
* bugfix: fix corruption by setting `reserved_bytes` if requested (Avinash Sajjanshetty)
* fix(vdbe): CHAR() function should handle full Unicode range (Mikaël Francoeur)
* do not call unlock_after_restart in case of error during wal truncation - because we already released these locks earlier (Nikita Sivukhin)
* WAL: ignore error from auto-checkpoint and fix bug (Nikita Sivukhin)
* fix: dont create nested aggregates in cte_fuzz (Jussi Saurio)
* properly unlock WriteLock if restart failed and ignore Busy errors when attempt to restart WAL file failed (Nikita Sivukhin)
* fix(parser): reject duplicate PRIMARY KEY clauses on a single column (Mikaël Francoeur)
* Cte fixes (Jussi Saurio)
* fix/connect: read page1 in transaction to prevent illegal WAL read (Jussi Saurio)
* fix: dont panic if decryption or checksum verification fails (Jussi Saurio)
* fix: fsync DB file before truncating WAL after checkpoint (Jussi Saurio)
* Return error instead of panicing when 1. short read occurs 2. page type is invalid (Jussi Saurio)
* Checkpoint restart fix (Nikita Sivukhin)
* fix: nullif/instr/concat should alloc regs for both args upfront (Jussi Saurio)
* core/vdbe/sorter: Propagate write errors instead of corrupting data (Preston Thorpe)
* fix(parser): BETWEEN and LIKE operator precedence with IS NOT NULL (Jussi Saurio)
* fix: allow CTEs to be referenced multiple times (Jussi Saurio)
* fix(parser): reject ?0 parameter with proper error instead of panicking (Jussi Saurio)
* more recursive read lock fixes (Pedro Muniz)
* fix: allow float literals in ORDER BY clause (Jussi Saurio)
* fix: correct operator precedence in replace() argument check (Jussi Saurio)
* fix: reject literal-only index expressions and fix JNI panic (Jussi Saurio)
* fix: handle CAST without type name for SQLite compatibility (Jussi Saurio)
* fix/vdbe: convert BusySnapshot to Busy if conn rolled back (Jussi Saurio)
* sdk-kit: Export busy snapshot error to callers (Pekka Enberg)
* fix: return NULL instead of panicking in uuid7_timestamp_ms for invalid blobs (Jussi Saurio)
* fix: handle parse errors gracefully in LIMIT clause (Jussi Saurio)
* fix: prevent panic on multi-byte UTF-8 in datetime functions (Jussi Saurio)
* fix: INSERT INTO ... SELECT ... UNION ... inserts all rows (Jussi Saurio)
* Fix DEFAULT value handling in integrity check (Jussi Saurio)
* Fix stale overflow page read bug and improper re-entrancy handling in integrity_check (Jussi Saurio)
* Fix integrity_check NOT NULL validation false positive (Jussi Saurio)
* Fix compilation after cross-pollution with unused vars PR and integrity check PR (Jussi Saurio)
* fix: use `checked_cast_text_to_numeric` for `Numeric` cast in `exec_cast` (Pedro Muniz)
* fix: resolve label in ungrouped aggregation with SELECT DISTINCT (Jussi Saurio)
* fix/checkpoint: always read page1 from db file when truncating (Jussi Saurio)
* whopper: Handle BusySnapshot error gracefully (Pekka Enberg)
* Fix WAL truncate checkpoint discarding uncheckpointed frames (Jussi Saurio)
* btree.rs: make #[instrument] conditional on debug_assertions (Jussi Saurio)
* Fix path not fsyncing the DB file after truncate checkpoint (Preston Thorpe)
* core: make datetime functions faster and fix bugs (Jussi Saurio)
* Valueiterator with fixes (Jussi Saurio)
* stress: handle I/O error gracefully instead of panicking (Pekka Enberg)
* stress: dont panic if get BusySnapshot error (Jussi Saurio)
* bindings/rust: return error on out of bounds Row::get access (Jussi Saurio)
* vector: increase fuzz error tolerance on windows (Jussi Saurio)
* sim: fix yet another apply_snapshot() edge case (Jussi Saurio)

## Install turso_cli 0.5.0

### Install prebuilt binaries via shell script

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

### Install prebuilt binaries via powershell script

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

## Download turso_cli 0.5.0

|  File  | Platform | Checksum |
|--------|----------|----------|
| [turso_cli-aarch64-apple-darwin.tar.xz](https://github.com/tursodatabase/turso/releases/download/v0.5.0/turso_cli-aarch64-apple-darwin.tar.xz) | Apple Silicon macOS | [checksum](https://github.com/tursodatabase/turso/releases/download/v0.5.0/turso_cli-aarch64-apple-darwin.tar.xz.sha256) |
| [turso_cli-x86_64-apple-darwin.tar.xz](https://github.com/tursodatabase/turso/releases/download/v0.5.0/turso_cli-x86_64-apple-darwin.tar.xz) | Intel macOS | [checksum](https://github.com/tursodatabase/turso/releases/download/v0.5.0/turso_cli-x86_64-apple-darwin.tar.xz.sha256) |
| [turso_cli-x86_64-pc-windows-msvc.zip](https://github.com/tursodatabase/turso/releases/download/v0.5.0/turso_cli-x86_64-pc-windows-msvc.zip) | x64 Windows | [checksum](https://github.com/tursodatabase/turso/releases/download/v0.5.0/turso_cli-x86_64-pc-windows-msvc.zip.sha256) |
| [turso_cli-aarch64-unknown-linux-gnu.tar.xz](https://github.com/tursodatabase/turso/releases/download/v0.5.0/turso_cli-aarch64-unknown-linux-gnu.tar.xz) | ARM64 Linux | [checksum](https://github.com/tursodatabase/turso/releases/download/v0.5.0/turso_cli-aarch64-unknown-linux-gnu.tar.xz.sha256) |
| [turso_cli-x86_64-unknown-linux-gnu.tar.xz](https://github.com/tursodatabase/turso/releases/download/v0.5.0/turso_cli-x86_64-unknown-linux-gnu.tar.xz) | x64 Linux | [checksum](https://github.com/tursodatabase/turso/releases/download/v0.5.0/turso_cli-x86_64-unknown-linux-gnu.tar.xz.sha256) |

## 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](https://cli.github.com/manual/gh_attestation_verify):
```sh
gh attestation verify <file-path of downloaded artifact> --repo tursodatabase/turso
```

You can also download the attestation from [GitHub](https://github.com/tursodatabase/turso/attestations) and verify against that directly:
```sh
gh attestation verify <file-path of downloaded artifact> --bundle <file-path of downloaded attestation>
```