Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
44 changes: 44 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,47 @@
## 0.5.0

Performance and reliability release. No breaking changes, and no changes to the
public export surface — 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` lookups and batch writes, a new
diagnostics counter for silent re-query fallbacks, and a reader-isolate crash fix
for `diagnostics()` under load.

- **New API:** `Diagnostics.unknownDependencyFallbackCount` — a cumulative counter
of writes that conservatively re-queried *every* registered stream because native
dependency tracking overflowed its caps (or hit OOM). Surfaces workloads silently
paying full re-query fan-out on every write, which was previously unobservable
([#151](https://github.com/danReynolds/resqlite/pull/151)).
- **Bug fix:** `Database.diagnostics()` could intermittently crash a reader isolate
(SEGV) 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, and diagnostics reports busy readers as a partial
snapshot ([#156](https://github.com/danReynolds/resqlite/pull/156)).
- **Performance.** Each accepted experiment below; see the [interactive benchmark dashboard](https://danreynolds.github.io/resqlite/benchmarks/)
for current cross-library numbers.
- **Writer-request pipelining** over a persistent reply port — −36% to −45% on
concurrent standalone writes ([#153](https://github.com/danReynolds/resqlite/pull/153),
[exp 159](https://github.com/danReynolds/resqlite/blob/main/experiments/159-writer-pipelining.md)).
- **`selectBytes` native-view transfer** — sends a view over the reader's native
`json_buf` instead of taking the sacrifice/respawn path; −44% (~1.8×) on large
(>256 KB) byte reads, at a bounded ~+15 MB RSS ([#169](https://github.com/danReynolds/resqlite/pull/169),
[exp 174](https://github.com/danReynolds/resqlite/blob/main/experiments/174-selectbytes-view-transfer.md)).
- **`Row.containsKey` identity fast path** — pointer-identity membership scan for
interned keys on schemas ≤ 32 columns; −23% on the `containsKey` lane
([#173](https://github.com/danReynolds/resqlite/pull/173),
[exp 176](https://github.com/danReynolds/resqlite/blob/main/experiments/176-row-containskey-identity-fastpath.md)).
- **`RowSchema` lookup fast path** — schema-name identity scan with `HashMap`
fallback; ~2× faster main-isolate map consumption at 10K rows
([#150](https://github.com/danReynolds/resqlite/pull/150),
[exp 158](https://github.com/danReynolds/resqlite/blob/main/experiments/158-row-schema-hash-index.md)).
- **Six-parameter batch packing** — extends guarded ASCII batch packing to the
six-parameter shape; `executeBatch` p50 88 → 75 µs ([#141](https://github.com/danReynolds/resqlite/pull/141),
[exp 149](https://github.com/danReynolds/resqlite/blob/main/experiments/149-six-param-batch-packing.md)).
- **Nullable batch packing** — nullable-aware packed batch encoder for first-row
`NULL` text columns; nullable ASCII 10k×20 25.7 → 21.7 ms ([#145](https://github.com/danReynolds/resqlite/pull/145),
[exp 150](https://github.com/danReynolds/resqlite/blob/main/experiments/150-nullable-batch-packing.md)).

## 0.4.0

- Added open-scoped SQLite extension loading via `Database.open(extensions: ...)`
Expand Down
4 changes: 2 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,7 @@ Visit the [project site](https://danreynolds.github.io/resqlite/) to browse inte

```yaml
dependencies:
resqlite: ^0.4.0
resqlite: ^0.5.0
```

Or via the CLI:
Expand Down Expand Up @@ -220,7 +220,7 @@ each extension on the writer and reader connections in that database pool.

```yaml
dependencies:
resqlite: ^0.4.0
resqlite: ^0.5.0
resqlite_vector: ^0.1.0
resqlite_js: ^0.1.0
```
Expand Down
2 changes: 1 addition & 1 deletion packages/resqlite_extension_test/pubspec.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ environment:
resolution: workspace

dependencies:
resqlite: ^0.4.0
resqlite: ^0.5.0
resqlite_js: ^0.1.0
resqlite_vector: ^0.1.0

Expand Down
5 changes: 5 additions & 0 deletions packages/resqlite_js/CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,8 @@
## 0.1.1

- Require `resqlite: ^0.5.0`. Compatibility release for the resqlite 0.5.0 bump;
no functional changes.

## 0.1.0

- Initial resqlite wrapper for SQLite JS native extension loading.
4 changes: 2 additions & 2 deletions packages/resqlite_js/pubspec.yaml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
name: resqlite_js
description: SQLite JavaScript extension support for resqlite.
version: 0.1.0
version: 0.1.1
repository: https://github.com/danReynolds/resqlite/tree/main/packages/resqlite_js

environment:
Expand All @@ -12,7 +12,7 @@ dependencies:
code_assets: ^1.0.0
hooks: ^1.0.0
path: ^1.9.0
resqlite: ^0.4.0
resqlite: ^0.5.0

dev_dependencies:
test: ^1.26.3
5 changes: 5 additions & 0 deletions packages/resqlite_vector/CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,8 @@
## 0.1.1

- Require `resqlite: ^0.5.0`. Compatibility release for the resqlite 0.5.0 bump;
no functional changes.

## 0.1.0

- Initial resqlite wrapper for SQLite Vector native extension loading.
4 changes: 2 additions & 2 deletions packages/resqlite_vector/pubspec.yaml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
name: resqlite_vector
description: SQLite vector extension support for resqlite.
version: 0.1.0
version: 0.1.1
repository: https://github.com/danReynolds/resqlite/tree/main/packages/resqlite_vector

environment:
Expand All @@ -12,7 +12,7 @@ dependencies:
code_assets: ^1.0.0
hooks: ^1.0.0
path: ^1.9.0
resqlite: ^0.4.0
resqlite: ^0.5.0

dev_dependencies:
test: ^1.26.3
2 changes: 1 addition & 1 deletion pubspec.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ description: >-
High-performance, reactive SQLite for Dart and Flutter.
Reads, writes, and reactive re-queries run on persistent worker isolates
with zero main-isolate jank.
version: 0.4.0
version: 0.5.0
repository: https://github.com/danReynolds/resqlite
topics:
- sqlite
Expand Down
Loading