Version: 2.0.0
Status: ✅ Production Ready (core .NET packages) · ✅ Performance-first release shipped
Last Updated: August 28, 2026
SharpCoreDB core .NET packages are release-labeled on 2.0.0 and build successfully, including:
SharpCoreDB(embedded engine — v2.0 performance release)SharpCoreDB.Server/SharpCoreDB.ClientSharpCoreDB.Data.Provider/SharpCoreDB.EntityFrameworkCoreSharpCoreDB.Extensions(including FluentMigrator integration)SharpCoreDB.Analytics,SharpCoreDB.VectorSearch,SharpCoreDB.Graph,SharpCoreDB.Graph.Advanced- Optional Event Sourcing, Projections, CQRS, Distributed, Functional family packages
- ✅ Performance-first release shipped — benchmark gap vs SQLite closed (16–52x → parity/win)
- ✅ 2,412 tests / 0 failures across all 15 test projects
- ✅ Native AOT smoke publishes + runs (exit 0)
- ✅ 100% backward compatible with v1.9.x
| Measured (two-run range) | v2.0 | SQLite | LiteDB |
|---|---|---|---|
| READ — Direct / StructRow | 70–126K ops/s | 87–97K | 14–16K |
| READ — SQL | 51–59K ops/s | 87–97K | 14–16K |
| INSERT (batch) | 91–133K ops/s | 145–150K | 66–77K |
| UPDATE (batch) | 41–59K ops/s | 241–296K | 10–11K |
| DELETE (batch) | 30–142K ops/s | 320–367K | 13–14K |
Full analysis:
docs/manual/performance.md· plan:docs/performance/V2_PERFORMANCE_PLAN.md
- Embedded mode integration: available
- gRPC migration mode integration: available
- See
docs/migration/FLUENTMIGRATOR_EMBEDDED_MODE_v1.7.0.mdanddocs/migration/FLUENTMIGRATOR_SERVER_MODE_v1.7.0.md
- Canonical docs entry points:
README.md,docs/INDEX.md,docs/README.md,docs/manual/README.md - Obsolete/superseded phase-planning artifacts are removed during documentation maintenance.
- ✅
#125Enforce database grants in Connect and session creation — completed and closed. - ✅
#124Per-database grants model for tenant isolation — completed and closed. - ✅
#123DatabaseRegistry runtime attach/detach APIs — completed and closed. - ✅
#122Runtime tenant database provisioning APIs (gRPC + REST) — completed and closed. - ✅
#121Tenant catalog in master database for SaaS lifecycle metadata — completed and closed.
- Close UPDATE/DELETE gap vs SQLite (in progress — details in
docs/performance/V2_PERFORMANCE_PLAN.md§3.4 / §3.5):- ✅ In-place UPDATE for columnar/append-only (Issue #6) — fixed-width / unchanged-length
records overwrite their existing slot (
TryUpdateInPlace); no new version, no file growth. - ✅ Single-pass SQL DELETE/UPDATE (Issue #7/#8) —
DeleteAffectedRows/UpdateAffectedCountreturn the affected rows/count from the table operation itself, so the SQL paths no longer materialize matching rows twice for RETURNING / change-tracking. - ✅ PK fast path in
Delete/DeleteMultiple/UpdateMultiple— a simplepk = valueWHERE resolves via the primary-key B-tree directly (single search + one read) instead of full-row materialization + per-row re-search. - Fixed-width record layout for hot tables (SQLite-style C record format)
- Storage-level DELETE reuse (free-slot reuse / compaction on PageBased deletes)
- ✅ In-place UPDATE for columnar/append-only (Issue #6) — fixed-width / unchanged-length
records overwrite their existing slot (
- .NET 11 / C# 15 migration (after Nov 2026 GA) — Runtime Async, AVX-VNNI-512/SVE2 behind
SIMD_ENABLED, optional Zstandard compression. - Native AOT warning cleanup — interface-based B-tree factory (replace
GetMethod/Activator.CreateInstance), source-gen.scdb/ParseVectorValueJSON. - Single-file metadata parity: make
SingleFileDatabaseexplicitly implementIMetadataProviderto align metadata discovery with directory-modeDatabase.- Why: some consumers probe metadata with
db is IMetadataProvider; explicit implementation improves compatibility and predictability. - Acceptance: probing via
IMetadataProviderworks consistently for both directory and single-file databases.
- Why: some consumers probe metadata with