Skip to content

v0.7.0

Latest

Choose a tag to compare

@danReynolds danReynolds released this 30 Jun 13:17
80c9362

Performance and correctness release, with one small breaking change to selectBytes.

Breaking

  • Database.selectBytes now returns a BytesResult ({Uint8List bytes, int rowCount}) instead of a bare Uint8List. Read .bytes at call sites.

Fixed

  • Windows: local databases now open. resqlite.dll exported no FFI symbols (MSVC default), so every call failed with runtime error 127. The build hook now emits /export: directives for the full FFI surface; the export set is scanned from the @Native bindings and shared with the Linux version script, which also closes a parallel gap where the resqlite_reader_* helpers (used on every read) were hidden on Linux (#216).

New

  • selectBytes reports rowCount — counted in C during the same serialization pass (free for has_more-style paging).

Performance — selectBytes JSON serialization

Per-experiment order-flipped A/B deltas; output byte-identical.

  • Integer-valued REAL fast path — −72% to −81% integral-REAL lanes (#200)
  • Integer column formatting (two-digit itoa + direct-to-buffer + row-level reserve) — −8% to −26% (#198, #206, #208)
  • Column-name token pre-encoding — −4% to −11% wide cols (#196, #201)
  • Per-cell sqlite3_column_value reuse — −1% to −6% (#213, #215)
  • Large single-row text bind encoder — −15% to −39% at 16 KB–1 MB (#190, #193)

Companions

  • resqlite_vector and resqlite_js0.1.3 (compatibility release for resqlite: ^0.7.0; no functional changes).

Also explored (rejected — no runtime code shipped)

exp 189 (savepoint name compression), 193 (Row.values list-view), 196 (inter-row framing), 197 (true group commit moonshot), 200 (stable-type selectBytes moonshot), 201 (base64 quote reservation), 202 (TEXT string reservation), 204 (UTF-8 over-reserve bind sizing).