v0.6.0
Performance and observability release. No breaking changes, and no changes to the
public export surface — safe to upgrade from 0.5.x.
Wins at a glance: up to ~30% faster concurrent writes on top of 0.5.0's
pipelining, a new diagnostics counter for native read-buffer memory, and automatic
reclaim of that memory after large-selectBytes bursts — bounding the RSS trade-off
0.5.0 introduced with native-view transfer.
- New API:
Diagnostics.readerJsonBufHighWaterBytes— the summed capacity of
every reader isolate's nativejson_buf, making the read-buffer high-water mark
directly observable. Surfaces workloads that pin large native buffers after big
selectBytesreads (#183,
exp 183). - Behavior change: a buffered group of
execute()calls that races
Database.close()is now atomic — every call in the group either flushes or is
rejected, never the old lock-order-dependent partial outcome. It still never hangs,
and per-call success/failure semantics are unchanged (#184,
exp 180). - Memory: native read buffers that grow to serve a large
selectBytesread now
reclaim back to their initial capacity on the next small read, once a reader's
json_bufexceeds 1 MB. A one-off concurrent burst of large reads (e.g. 8 × 8 MB)
previously pinned tens of MB for the connection's lifetime; that high-water now
settles back to ~64 KB. Warm large-read workloads keep their capacity (a 256 KB
last-read guard prevents shrink-then-regrow churn) (#183,
exp 183). - Performance. See the interactive benchmark dashboard
for current cross-library numbers.- Cross-call write batching (group commit) — standalone
execute()calls that
pile up while a write is in flight now coalesce into a single cross-isolate
request (each statement still its own autocommit), collapsing a concurrent
burst's per-write round-trips toward two. −26% to −32% on the concurrent
single-insert lane, on top of 0.5.0's pipelining; isolated and sequential writes
are unaffected (#184,
exp 180).
- Cross-call write batching (group commit) — standalone
Companion compatibility releases: resqlite_vector 0.1.2, resqlite_js 0.1.2 (both require resqlite: ^0.6.0).
Perf validation (v0.5.0 → 0.6.0) and the full rejected-experiment list are in #187.