Files
Charlie CheeverandClaude Fable 5.2 2099b23460 Native apps link SQLite only when their grants name it
Every native app linked bundled SQLite, about 1.5 MB, because every JS
engine load installed the SQLite storage provider. A production build
now selects it from `sqlite.open` in the app's grants (TypeScript or
Rust) or `link: ["sqlite"]` in the manifest; development builds and a
build whose grant ceiling is unknown keep it. The shop benchmark's app,
which grants only `net.fetch`, goes from 23,970,931 to 22,355,807 bytes
built for speed.

The generated `Default` constructor registers the provider before it
constructs the data, on Apple, Linux, Windows and Android. Without it
both storage executors refuse an open as `Unlinked("sqlite")`. The
provider stays a crate of its own: no core crate gains a feature.

Native shells declare `ibex2-sqlite`, and `exact update` adds it to an
existing app's manifests beside each native host and follows a moved
SDK. It parses its result before writing; where it cannot edit a
manifest correctly (dependencies written as an inline table) it leaves
the file as it was and names the line to add.

Adding `sqlite.open` to an installed app is a new compatibility
identity, so a new binary, whether or not `link` named `sqlite`.

Co-Authored-By: Claude Fable 5.2 <[email protected]>
2026-11-11 14:48:22 -08:00
..
2026-11-01 23:26:15 -08:00