SystemD.Crystal
1.0.0
dotnet add package SystemD.Crystal --version 1.0.0
NuGet\Install-Package SystemD.Crystal -Version 1.0.0
<PackageReference Include="SystemD.Crystal" Version="1.0.0" />
<PackageVersion Include="SystemD.Crystal" Version="1.0.0" />
<PackageReference Include="SystemD.Crystal" />
paket add SystemD.Crystal --version 1.0.0
#r "nuget: SystemD.Crystal, 1.0.0"
#:package SystemD.Crystal@1.0.0
#addin nuget:?package=SystemD.Crystal&version=1.0.0
#tool nuget:?package=SystemD.Crystal&version=1.0.0
SystemD.Crystal
An embeddable storage engine for .NET 10, built on a write-ahead log.
Crystal runs inside your process and stores data in databases, boxes and records:
- a database is the unit of isolation, replication, backup and drop, with its own write-ahead log;
- a box is a named, ordered key space inside a database, created, renamed, locked and dropped atomically;
- a record is a key and a value, both bytes. Crystal never parses a value.
using var store = CrystalStore.Open("/var/lib/myapp");
var shop = store.CreateDatabase("shop");
var orders = shop.Boxes.Create("orders");
using (var batch = shop.NewBatch()) // atomic across boxes
{
batch.Put(orders, "order-1001"u8, "{...}"u8);
batch.Commit(); // synced to the WAL before it returns
}
using var snapshot = shop.Snapshot();
foreach (var record in snapshot.Scan(orders, "order-"u8, "order."u8, limit: 100))
{
// record.Key, record.Value
}
Also in the box:
- Durability you choose: strict (synced per commit), interval-synced or buffered.
- Replication: a primary ships each database's WAL to standbys over Crystal's own authenticated protocol (TLS optional); promotion, fencing by epoch, planned handover. Failover policy stays with your product.
- Backup and restore: incremental online backups into a root you name, quick and deep verify, retention, and all-or-nothing restore into a new or running store.
- Observability: stable log event ids and
System.Diagnostics.Metricsinstruments; a status snapshot. - Format stamps: a directory this build cannot read is refused by name, with the way forward.
Status: 1.0.0. The public API follows semantic versioning. Tested on Windows and Linux.
Platform
- .NET 10.
- RocksDB through its .NET binding, pinned to one exact version.
- Native AOT and IL trimming are not supported (the RocksDB binding generates code at runtime).
Documentation, specs and source: https://github.com/System-D-AB/crystal. Licensed under the MIT License.
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net10.0 is compatible. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
-
net10.0
- Microsoft.Extensions.Logging.Abstractions (>= 10.0.0)
- RocksDB (= 11.8.1.5032)
NuGet packages (1)
Showing the top 1 NuGet packages that depend on SystemD.Crystal:
| Package | Downloads |
|---|---|
|
Highway.LocalServer
In-process Highway broker for integration tests and local development. Start a real broker inside your test host with HighwayTestServer — no Docker, no external infrastructure. Production deployments use the standalone highways distribution from GitHub Releases, not this package. |
GitHub repositories
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|---|---|
| 1.0.0 | 47 | 10/23/2026 |
| 1.0.0-rc.2 | 55 | 10/16/2026 |
1.0.0: 1.0.0-rc.3 with only the version changed, approved by Highway, a product running on it. The public API follows semantic versioning from here. New since rc.2: offline compaction, a database's latest position, promotion past an epoch floor, unfencing at the same epoch, a standby's link to its primary, and box handles from the catalogue listing. Source-breaking changes from rc.2 (Box, ReplicationStatus.Role, box locks, ApproximateBytes, exception constructors); see CHANGELOG.md in the repository. Tested on Windows and Linux.