Skip to content

v0.7.0

Latest

Choose a tag to compare

@github-actions github-actions released this 12 Jun 00:58
· 5 commits to main since this release
cedc85f

Highlights

  • Opt-in :telemetry instrumentation across the whole API: spans with nanosecond timings for every operation, cancellation lifecycle events, and a bridge re-emitting hook fan-outs as [:xqlite, :hook, :*]. Compile-time flag — disabled (the default) means zero telemetry code in the bytecode. New "Wiring xqlite telemetry" guide on hexdocs.
  • Multi-subscriber hooks: update / WAL / commit / rollback / log hooks now fan out to any number of subscribers via register_*_hook / unregister_*_hook handles. New progress-tick hook with per-subscriber decimation.
  • Connection observability: wal_checkpoint/3 (structured results), connection_stats/1, autocommit/1, txn_state/2, plus Xqlite.busy_timeout/2 and the busy handler with retry policy and PID forwarding.

Breaking

  • Hook API renamed: set_X_hook/remove_X_hookregister_X_hook/unregister_X_hook(handle) (multi-subscriber).
  • Cancellable NIFs take a list of cancel tokens (OR-semantics); Xqlite.*_cancellable wrappers accept a single token or a list.
  • XqliteNIF is now the raw NIF boundary only — ergonomic wrappers (open_in_memory/0, serialize/1, backup/2, …) moved to Xqlite.

Fixed

  • WAL hook ↔ wal_autocheckpoint slot conflict. SQLite implements autocheckpointing as a wal_hook, so the two silently disabled each other. xqlite's master callback now owns the slot and emulates the autocheckpoint (passive checkpoint at the configured threshold, default 1000 pages); set_pragma repairs the slot and syncs the threshold. Caveat: raw-SQL PRAGMA wal_autocheckpoint still steals the slot — use set_pragma.

Full details in CHANGELOG.md.