github tursodatabase/turso v0.1.5
0.1.5 -- 2024-09-10

4 hours ago

Release Notes

Added

  • add missing module type for browser package (Nikita Sivukhin)
  • Implement 2-args json_each (Mikaël Francoeur)
  • Add OPFS support to JavaScript bindings (Nikita Sivukhin)
  • test/fuzz: add UPDATE/DELETE fuzz test (Jussi Saurio)
  • add gen-bigass-database.py (Jussi Saurio)
  • Add assertion: we read a page with the correct id (Jussi Saurio)
  • support float without fractional part (Lâm Hoàng Phúc)
  • expr: use more efficient implementation for binary condition exprs (Jussi Saurio)
  • Add json_each table-valued function (1-arg only) (Mikaël Francoeur)
  • Add io_uring support to stress (Pekka Enberg)
  • Refactor LIMIT/OFFSET handling to support expressions (bit-aloo)
  • Encryption: add support for other AEGIS and AES-GCM cipher variants (Frank Denis)
  • introduce package.json for separate *-browser package (both database and sync) (Nikita Sivukhin)
  • introduce eq/contains/starts_with/ends_with_ignore_ascii_case macros (Lâm Hoàng Phúc)
  • introduce match_ignore_ascii_case macro (Lâm Hoàng Phúc)
  • core: Make strict schema support experimental (Pekka Enberg)
  • core/printf: support for more basic substitution types (Luiz Gustavo)
  • Return sqlite_version() without being initialized (Preston Thorpe)
  • Support encryption for raw WAL frames (Gaurav Sarma)
  • bindings/java: Implement date, time related methods under JDBC4PreparedStatement (Kim Seon Woo)
  • Support cipher and encryption key URI options (William Souza)
  • Implement UPSERT (Preston Thorpe)
  • CLI: implement Line output .mode (Andrey Oskin)
  • add sqlite integrity check back (Pedro Muniz)
  • core: Initial pass on synchronous pragma (Pekka Enberg)
  • Introduce and propagate IOContext as required (Avinash Sajjanshetty)
  • Add some docs on encryption (Avinash Sajjanshetty)
  • sqlite3: Implement sqlite3_malloc() and sqlite3_free() (Pekka Enberg)
  • sqlite3: Implement sqlite3_next_stmt() (Pekka Enberg)
  • core/translate: Add support (Pekka Enberg)
  • sqlite3: Implement sqlite3_db_filename() (Pekka Enberg)
  • flake.nix: add uv dependency to nativeBuildInputs (Ceferino Patino)
  • sqlite3: Implement sqlite3_bind_parameter_index() (Pekka Enberg)
  • sqlite3: Implement sqlite3_clear_bindings() (Pekka Enberg)
  • sqlite3: Implement sqlite3_get_autocommit() (Pekka Enberg)
  • Add support for AEGIS encryption algorithm (Avinash Sajjanshetty)
  • bindings/java: Implement batch operations for JDBC4Statement (Kim Seon Woo)
  • Add syntax highlighting for EXPLAIN and ANALYZE (Alex Miller)
  • Add basic support for ANALYZE statement (Alex Miller)
  • correctly implement offset() in parser (Lâm Hoàng Phúc)
  • Switch to new parser in core (Levy A.)
  • github: Remove Intel Mac support (Pekka Enberg)
  • add remove_file method to the IO (Nikita Sivukhin)
  • Add libc fault injection to Antithesis (Pekka Enberg)
  • core/mvcc: support for MVCC (Pere Diaz Bou)
  • SQLite C API improvements: add column type and column decltype (Danawan Bimantoro)
  • Initial pass to support per page encryption (Avinash Sajjanshetty)

Updated

  • clean print_query_result (Lâm Hoàng Phúc)
  • update update-script to properly handle JS workspace (Nikita Sivukhin)
  • no need QueryStatistics if self.opts.timer is not set (Lâm Hoàng Phúc)
  • optimizer: convert outer join to inner join if possible (Jussi Saurio)
  • Handle case where null flag is set in op_column (Jussi Saurio)
  • remove &1 (Lâm Hoàng Phúc)
  • reduce cloning Arc<Page> (Lâm Hoàng Phúc)
  • Evaluate left join seek key condition again after null row (Jussi Saurio)
  • use mlugg/setup-zig instead of unmaintained action (Kingsword)
  • Prevent setting of encryption keys if already set (Gaurav Sarma)
  • Remove RefCell from Cursor (Pedro Muniz)
  • Page Cache: optimize and use sieve/Gclock hybird algorithm in place of LRU (Preston Thorpe)
  • core: handle edge cases for read_varint (Sonny)
  • Persistence for DBSP-based materialized views (Glauber Costa)
  • io_uring: prevent out of order operations that could interfere with durability (Preston Thorpe)
  • core: Simplify WalFileShared life cycle (Pekka Enberg)
  • prevent modification to system tables. (Glauber Costa)
  • mark completion as done only after callback will be executed (Nikita Sivukhin)
  • core/mvcc: make commit_txn return on I/O (Pere Diaz Bou)
  • windows iterator returns no values for shorter slice (Lâm Hoàng Phúc)
  • Unify resolution of aggregate functions (Piotr Rżysko)
  • replace some matches with match_ignore_ascii_case macro (Lâm Hoàng Phúc)
  • Make io_uring sound for connections on multiple threads (Preston Thorpe)
  • build native package for ARM64 (Nikita Sivukhin)
  • refactor parser fmt (Lâm Hoàng Phúc)
  • string sometimes used as identifier quoting (Lâm Hoàng Phúc)
  • CURRENT_TIMESTAMP can fallback TK_ID (Lâm Hoàng Phúc)
  • remove turso_sqlite3_parser from turso_parser (Lâm Hoàng Phúc)
  • Simulate I/O in memory (Pedro)
  • Simulate I/O in memory (Pedro Muniz)
  • Refactor encryption to manage authentication tag internally (bit-aloo)
  • Unify handling of grouped and ungrouped aggregations (Piotr Rżysko)
  • Evict page from cache if page is unlocked and unloaded (Pedro Muniz)
  • Use u64 for file offsets in I/O and calculate such offsets in u64 (Preston Thorpe)
  • Document how to use CDC (Pavan Nambi)
  • Upgrade Rust version in simulator build Dockerfile (Preston Thorpe)
  • Parse booleans to integer literals in expressions (Preston Thorpe)
  • Simulator Profiles (Pedro Muniz)
  • Change views to use DBSP circuits (Glauber Costa)
  • core/wal: cache file size (Pere Diaz Bou)
  • Remove some code duplication in the CLI (Preston Thorpe)
  • core/translate: parse_table remove unnecessary clone of table name (Pere Diaz Bou)
  • Update COMPAT.md to remove CREATE INDEX default disabled (Preston Thorpe)
  • core/translate: remove unneessary agg clones (Pere Diaz Bou)
  • core/vdbe: Micro-optimize "zero_or_null" opcode (Pekka Enberg)
  • translate: with_capacity insns (Pere Diaz Bou)
  • perf: avoid constructing PageType in helper methods (Jussi Saurio)
  • refactor/perf: remove BTreePageInner (Jussi Saurio)
  • Improve integrity check (Nikita Sivukhin)
  • translate/insert: Improve string format performance (Pere Diaz Bou)
  • core/schema: get_dependent_materialized_views_unnormalized (Pere Diaz Bou)
  • core/util: emit literal, cow instead of replace (Pere Diaz Bou)
  • core/translate: sanize_string fast path improvement (Pere Diaz Bou)
  • core/io: Switch Unix I/O to use libc::pwrite() (Pekka Enberg)
  • Update README.md for Go documentation (Preston Thorpe)
  • improve sync engine (Nikita Sivukhin)
  • Remove Go bindings (Preston Thorpe)
  • core/storage: Micro-optimize Pager::commit_dirty_pages() (Pekka Enberg)
  • Rename Go driver to turso to not conflict with sqlite3 (Preston Thorpe)
  • Refactor: Cell instead of RefCell to store CipherMode in connection (Avinash Sajjanshetty)
  • Improve documentation of page pinning (Jussi Saurio)
  • Remove double indirection in the Parser (Pedro Muniz")
  • Fail CI run if Turso output differs from SQLite in TPC-H queries (Jussi Saurio)
  • Decouple SQL generation from Simulator crate (Pedro Muniz)
  • Make fill_cell_payload() safe for async IO and cache spilling (Jussi Saurio)
  • Remove Windows IO in place of Generic IO (Preston Thorpe)
  • Improve encryption API (Avinash Sajjanshetty)
  • Remove double indirection in the Parser (Pedro Muniz)
  • Update TPC-H running instructions in PERF.md (Alex Miller)
  • Truncate the WAL on last connection close (Preston Thorpe)
  • DBSP projection (Pekka Enberg)
  • Use vectored I/O for appending WAL frames (Preston Thorpe)
  • Remove unnecessary argument from Pager::end_tx() (Nikita Sivukhin)
  • refactor/btree: rewrite the find_free_cell() function (Jussi Saurio)
  • refactor/btree: rewrite the free_cell_range() function (Jussi Saurio)
  • Remove Result from signature (Mikaël Francoeur)
  • Remove duplicated attribute in (bit-aloo)
  • reduce cloning Token in parser (Lâm Hoàng Phúc)
  • refactor encryption module and make it configurable (Avinash Sajjanshetty)
  • Replace a couple refcells for types that trivially impl Copy (Preston Thorpe)
  • wal-api: allow to mix frames insert with SQL execution (Nikita Sivukhin)
  • move check code into parser (Lâm Hoàng Phúc)
  • Serialize compat tests and use Mutex::lock() instead of Mutex::try_lock() in UnixIO (Jussi Saurio)
  • sim: remove "run_once faults" (Jussi Saurio)
  • should not return a Completion when there is a page cache hit (Pedro Muniz)
  • github: Reduce Python build matrix (Pekka Enberg)
  • Page cache truncate (Nikita Sivukhin)
  • Wal api checkpoint seq (Nikita Sivukhin)
  • Use more structured approach in translate_insert (Jussi Saurio)
  • Remove hardcoded flag usage in DBHeader for encryption (Avinash Sajjanshetty)
  • properly execute pragmas - they may require some IO (Nikita Sivukhin)
  • Wal checkpoint upper bound (Nikita Sivukhin)
  • Improve WAL checkpointing performance (Preston Thorpe)
  • core/mvcc: store txid in conn and reset transaction state on commit (Pere Diaz Bou)
  • core/mvcc: start first rowid at 1 (Pere Diaz Bou)
  • refactor/vdbe: move insert-related seeking to VDBE from BTreeCursor (Jussi Saurio)

Fixed

  • Fix clear_page_cache method and rollback (Preston Thorpe)
  • Fix read_entire_wal_dumb: incrementally build the frame cache (Preston Thorpe)
  • Fix merge script to prompt if tests are still in progress (Preston Thorpe)
  • SQL generation fixes (Pekka Enberg)
  • Fix affinity handling in MakeRecord (Pekka Enberg)
  • Fix infinite loop when IO failure happens on allocating first page (Preston Thorpe)
  • Fix crash in Next opcode if cursor stack has no pages (Jussi Saurio)
  • cli: Fix dump compatibility in "PRAGMA foreign_keys" (Pekka Enberg)
  • Small fixes (Nikita Sivukhin)
  • Avoid allocating and then immediately fallbacking errors in affinity (Jussi Saurio)
  • Fix float formatting and comparison + Blob concat (Levy A.)
  • Fix infinite loop when query starts comment token ("--") (Lâm Hoàng Phúc)
  • Fix sqlite3 test cases (Pekka Enberg)
  • Fix non-determinism in simulator (Pedro Muniz)
  • Fix column count in ImmutableRow (Glauber Costa)
  • Fix memory leak in page cache during balancing (Preston Thorpe)
  • Fix sim-schema command (Pedro Muniz)
  • Propagate decryption error from the callback (Avinash Sajjanshetty)
  • Fix sorter column deduplication (Piotr Rżysko)
  • Fix missing functions after revert (Pedro Muniz)
  • ci: fix merge-pr issue to escape command-line backticks (Ceferino Patino)
  • Fix several issues with integrity_check (Jussi Saurio)
  • core/io: Fix build on Android and iOS (Pekka Enberg)
  • WAL txn: fix reads from DB file (Nikita Sivukhin)
  • Fix blob type handling in JavaScript (Pekka Enberg)
  • Fix: all indexes need to be updated if the rowid changes (Jussi Saurio)
  • Fix: in UPDATE, insert rowid into index instead of NULL (Jussi Saurio)
  • Fix: normalize table name in DELETE (Jussi Saurio)

Install turso_cli 0.1.5

Install prebuilt binaries via shell script

curl --proto '=https' --tlsv1.2 -LsSf https://github.com/tursodatabase/turso/releases/download/v0.1.5/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.5/turso_cli-installer.ps1 | iex"

Download turso_cli 0.1.5

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>

Don't miss a new turso release

NewReleases is sending notifications on new releases.