BLite v4.0.2 released — Async-Only API, Server Mode, OLAP boost & storage overhaul #26
mrdevrobot
announced in
Announcements
Replies: 1 comment
-
|
Hi, first of all, great work on BLite — the design (especially zero-allocation and source generators) looks very promising. I have a question regarding runtime usage: Is there currently any support (or planned support) for an in-memory database mode? For example, something similar to:
My use case is:
From the documentation and examples (e.g. So I’m wondering:
Thanks in advance! |
Beta Was this translation helpful? Give feedback.
0 replies
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.
-
Hey everyone! 👋
We're excited to announce the release of BLite v4.0.2 — a major update that reflects nearly three weeks of intensive work, from analytical query optimizations to a deep storage layer rewrite, a new server mode, and a fully async CRUD API.
If you've been on any 3.6.x release, here's everything you missed. ☕
🚀 Biggest Change: Async-Only CRUD API (v4.0.0)
The most significant breaking change in this cycle: all CRUD methods are now exclusively async. Synchronous overloads have been removed. If you're upgrading, add
awaitto your calls:This allowed us to massively simplify the internal engine, eliminate potential deadlocks, and pave the way for more advanced concurrency features going forward.
🏗️ Server Mode & Session API (v3.8.0)
One of the most requested features: BLite now has a server mode with per-connection isolated transaction contexts.
BLiteSession— each connection gets its own independent transactional context, ideal for multi-user and networked scenariosServer()config — new fluent entry point for configuring BLite in server modeBLiteMigration— built-in utility to migrate databases between single-file and multi-file formatsKvGetWithExpiry— key-value retrieval with native TTL supportImportDictionary— bulk import fromIDictionarysources⚡ Much Faster OLAP Queries (v3.7.0)
Analytical queries — aggregations,
GroupBy, full collection scans — have been significantly optimized. If you use BLite for reporting or OLAP workloads, you should see a noticeable performance jump with zero code changes on your end.🔧 Storage Layer Overhaul (v3.8.0)
The storage engine received a series of critical fixes and structural improvements:
SemaphoreSlimwithReaderWriterLockSliminPageFile— eliminates concurrent read/write race conditionsLazy<PageFile>for collection files — avoids unnecessary file handle allocations at startupPageFile:volatile _disposed,ThrowIfDisposed, field nulling on closenetstandard2.1'sReadPageAsyncto prevent races withEnsureCapacityCore🛡️ Source Generator Hardening (v3.6.6–3.6.9)
The source generator — responsible for auto-generating entity mappers — received several important fixes:
BLITE001: compile-time error when a type is skipped due to exceeding nesting depth (max raised to 20 levels) — no more silent skipsBLITE003: compile-time error when two entity types in the sameDocumentDbContextresolve to the same collection name — prevents silent data corruption at runtime.ToCollection(name)parsing inOnModelCreatingfluent chains, includingconst stringreferences🐛 Other Notable Fixes
ObjectIdfields now works correctlyExecutecallsAddStringUTF-8 (v3.6.6) —EnsureCapacitynow uses the actual UTF-8 byte count instead of character count — critical fix for strings containing multi-byte characters📦 NuGet Packages
All packages are available on NuGet at version 4.0.2:
BLiteBLite.BsonBLite.CachingBLite.CoreBLite.SourceGeneratorsAs always, the full CHANGELOG has every detail. Questions, feedback, or issues? Open a thread here or file an issue — we're happy to help. 🙌
Beta Was this translation helpful? Give feedback.
All reactions