Skip to content

v0.2.0

Choose a tag to compare

@github-actions github-actions released this 05 Aug 11:54

Tursox 0.2.0 — capability coverage and regression confidence

Tursox 0.2.0 expands the Elixir bindings around the pinned Turso 0.7.2 engine. This release does not upgrade Turso. It adds executable compatibility coverage, deliberately enables Tantivy-backed full-text search, and documents exactly which advanced capabilities are supported, partial, unavailable, platform-limited, or unsafe.

Highlights

  • Full-text search: deliberate turso Cargo fts support across source and precompiled builds, with tested FTS indexes, matching, scoring, highlighting, tokenizers, field weights, bound queries, DML maintenance, transactions, optimization, drop, and reopen behavior.
  • Core SQL regression suite: DDL, CRUD, UPSERT, RETURNING, constraints, joins, grouping, compound queries, prepared statements, bounded cursors, transactions, persistence, pools, managers, and resource cleanup.
  • Safe PRAGMA access: injection-safe table/index arguments plus tested metadata, schema introspection, configuration scope, integrity checks, WAL checkpoints, MVCC tuning, and explicit unsupported results.
  • Schema capabilities: tested ordinary views, triggers, WITHOUT ROWID, attach/detach, vacuum, STRICT base types, indexes, multi-connection behavior, and reopen integrity.
  • Extension inventory: runtime-derived coverage for UUID, regexp, vectors, time, percentile functions, and generate_series; unavailable crypto, fuzzy, IP, CSV, and runtime-loading behavior is recorded honestly.
  • Real multiprocess WAL tests: independent BEAM processes verify writes, reader snapshots, writer serialization, checkpoints, schema refresh, process-kill recovery, sidecars, and integrity on supported 64-bit Unix/local-filesystem environments.
  • Native code organization: the former monolithic Rust NIF file is split into cohesive builder, database, query, resource, value, error, runtime, smoke, and atom modules.
  • Cleaner QA: bin/qa_check.sh keeps interactive ExUnit dots/results while capturing noisy compiler/linter logs and showing concise failure diagnostics.

Important pinned-engine findings

These are intentional compatibility results, not hidden regressions:

  • Generated-column reads, custom types/domains/composites, materialized views, and passive MVCC checkpoint paths are classified unsafe on Turso 0.7.2 and are probed only in disposable child BEAMs.
  • Autovacuum, encryption, CDC behavior, runtime extension loading, and several newer documented extension families are unavailable on this pin/build.
  • Multiprocess WAL remains experimental and platform-limited. Memory databases and MVCC combinations are rejected. Turso 0.7.2 also differs from newer documentation for live mode mixing on macOS.
  • Turso FTS is Tantivy-backed and is not SQLite FTS5 syntax compatibility.

See the complete Turso 0.7.2 executable capability report and changelog.

Installation

def deps, do: [{:tursox, "~> 0.2.0"}]

Enable FTS index methods explicitly when opening a database:

{:ok, db} = Tursox.Database.open("app.db", features: [:index_method])

Precompiled binaries

Seven NIF 2.16 archives are attached for:

  • macOS: aarch64, x86-64
  • Linux GNU: aarch64, x86-64
  • Linux musl: aarch64, x86-64
  • Windows MSVC: x86-64

Every archive was built from release commit 836c5f6a498734d02abb72dbfe81f2f03d157968 and directly smoke-tested before publication. Published SHA-256 values are recorded in checksum-Elixir.Tursox.Native.exs. Source and no-Rust precompiled consumer CI are green.