Skip to content

Release 0.5.0 - #179

Merged
danReynolds merged 1 commit into
mainfrom
danreynolds/serene-perlman-9e9d44
Jun 16, 2026
Merged

Release 0.5.0#179
danReynolds merged 1 commit into
mainfrom
danreynolds/serene-perlman-9e9d44

Conversation

@danReynolds

@danReynolds danReynolds commented Jun 16, 2026

Copy link
Copy Markdown
Owner

Performance and reliability release since 0.4.0. No breaking changes and no changes to the public export surface (lib/resqlite.dart unchanged) — safe to upgrade from 0.4.x.

Wins at a glance

Up to 45% faster concurrent writes, ~1.8× faster large selectBytes reads (>256 KB), faster Row/batch operations, a new diagnostics counter for silent re-query fallbacks, and a reader-isolate crash fix for diagnostics() under load.

What's in it (with traceability)

  • New APIDiagnostics.unknownDependencyFallbackCount: cumulative counter of writes that conservatively re-queried every registered stream because native dependency tracking overflowed its caps (or hit OOM). Previously unobservable. (#151)

  • Bug fixDatabase.diagnostics() could intermittently SEGV a reader isolate when polled while readers were mid-query (it toggled SQLite memory accounting on live NOMUTEX reader connections). Read workers now bracket each request with a real busy guard. (#156)

  • Performance (accepted experiments, each linked to its PR + experiment doc):

    Win Impact PR Experiment
    Writer-request pipelining (persistent reply port) −36% to −45% concurrent standalone writes #153 exp 159
    selectBytes native-view transfer −44% / ~1.8× on large (>256 KB) byte reads #169 exp 174
    Row.containsKey identity fast path −23% on the containsKey lane #173 exp 176
    RowSchema lookup fast path ~2× main-isolate map consumption at 10K rows #150 exp 158
    Six-parameter batch packing executeBatch p50 88 → 75 µs #141 exp 149
    Nullable batch packing nullable ASCII 10k×20 25.7 → 21.7 ms #145 exp 150

    See the benchmark dashboard for current cross-library numbers.

Versioning

  • resqlite 0.4.0 → 0.5.0 (pre-1.0 minor). README + workspace constraint pins moved ^0.4.0 → ^0.5.0.
  • Companion compatibility releases: resqlite_vector & resqlite_js 0.1.0 → 0.1.1 (now require resqlite: ^0.5.0) so extension users can upgrade alongside 0.5.0.

Verification

  • dart pub publish --dry-run clean
  • dart test303 passed (drift peer-benchmark codegen regenerated via build_runner)

After merge + green CI on main: publish resqlite 0.5.0 + companions 0.1.1 to pub.dev, then tag v0.5.0.

🤖 Generated with Claude Code

Performance and reliability release since 0.4.0. No breaking changes and no
public export-surface changes.

- New API: Diagnostics.unknownDependencyFallbackCount (#151)
- Bug fix: diagnostics() reader-isolate SEGV under load
- Perf: writer pipelining, selectBytes native-view transfer, Row/RowSchema
  lookup fast paths, six-param + nullable batch packing

Bump resqlite 0.4.0 -> 0.5.0 and move README + workspace pins to ^0.5.0.
Cut companion compatibility releases resqlite_vector/resqlite_js 0.1.0 -> 0.1.1
(require resqlite ^0.5.0) so extension users can upgrade alongside 0.5.0.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@danReynolds
danReynolds force-pushed the danreynolds/serene-perlman-9e9d44 branch from a13aa95 to 6dd5e1a Compare June 16, 2026 18:11
@danReynolds
danReynolds merged commit f1ea414 into main Jun 16, 2026
5 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant