Repository navigation
Where BLite fits, and a reliability-first roadmap #287
Closed
CaffeinatedCoder
started this conversation in
General
Replies: 1 comment
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Over the past days I have filed 54 issues and sent 42 PRs, 22 of them merged. Since #247, most of the issues come from oracle test suites that check the engine against an exact reference instead of hand-written expected values (#250, #259, #263, #272, #277). Doing that work has given me a picture of where BLite is strong, where it could win users, and what currently stands in the way. I'd like to share that picture, explain the test work behind it, and hear what you think. The direction is yours to set; this is a proposal, not a request.
1. What makes BLite different
No other embedded database for .NET I know of offers all of this in one package:
BLite.Wasm). There are no RID-specific native assets to ship for iOS, Android, Unity, Blazor WASM or ARM boards.[PersonalData], subject export, CDC field masking, secure erase and retention policies. I don't know of another embedded engine that has these. For EU on-prem, healthcare and public-sector software, they save real work.DocumentDbContext, LINQ,OnModelCreating: EF Core users feel at home.2. Who BLite is for
The niches where these strengths count most, roughly in order:
And just as useful to say out loud, who it is not for: server OLTP at scale (SQLite, PostgreSQL), analytics (DuckDB), raw key-value throughput (RocksDB, FASTER). A short "When not to use BLite" section in the README would build trust rather than cost users.
A one-line pitch along these lines:
3. What stands in the way: trust
The features are there. What a team choosing an embedded database needs next is the confidence that the engine keeps its promises. The oracle suites found places where it currently doesn't. Most already have a fix PR:
WalSyncMode.Fulldefault,Normalopt-in)synchronous=FULL. With #280'sFullmode a commit costs ~4.5 ms on APFS instead of ~0.14 msNone of this is unusual for a young engine with this many features. But a user who hits one of these in production is unlikely to come back, and the comparisons are the first thing a sceptical reader will check.
4. How the gap gets closed: the documentation as the specification
The fixes in October up to #243 were mostly found one bug at a time through issues. The oracle suites change that: every claim in README.md and AOT_LIMITATIONS.md becomes a check against an exact, simpler reference, run over many generated cases, so one test finds a whole class of divergence. The goal is one oracle for every library section the documentation makes a promise about.
The method
Each suite follows the same rules, described in
docs/ORACLE_TESTS.md(#250):src/that reintroduces a real defect, usually by reverting a past fix, and that the test must catch. A test that passes with and without the defect is not a guard. CI checks that every oracle has a seed and that every seed still applies;tools/oracle-seeds.csproves locally that each one is caught.Found-By:andDefect-Class:in CONTRIBUTING.md, sogit logshows which finder found what, in which class.Coverage by library section
[PersonalData]field in a masked eventEach new feature then extends a catalogue rather than adding a test: a new LINQ operator is one more query shape, a new storage operation is one more step in the model and one more set of crash points, and a new public API is one more call in the AOT consumer.
What the suites don't see, and what stays with review: targets other than net10.0 (netstandard2.1, Unity IL2CPP, MAUI), real multi-process races beyond the interleavings the model drives, crashes in multi-process mode and inside Backup, torn page writes, performance, and anything without an exact reference, such as API design.
5. Proposal
Fullvs SQLite WAL +synchronous=FULL, and BLiteNormalvs SQLite WAL +NORMAL.docs/ORACLE_TESTS.mdand the coverage table above, would show users what is checked and how.6. Questions
Found-By:/Defect-Class:trailers?I'm happy to do the docs and benchmark work, and to keep working through the epic and the remaining sections.
All reactions