.NET client for yo, an embedded multi-model database that lives in one .yo file. Records are the schema and there is no query language to learn.
Nothing to use yet, and the package on NuGet says so out loud.
Yodb is published at 0.0.1. It restores, it compiles and it throws:
Yodb.Yo.Open("app.yo");
// System.NotSupportedException: yo is not usable yet. This is a reserved placeholder
// at 0.0.1; see https://github.com/tamnd/yoThe version is held so the id is held.
The engine is at M0. The record plane and the file format are M1 and in progress, so there is nothing for this binding to sit on top of yet. Watch the milestones.
.NET is tier 2, which means it rides the same release train as the tier-1 bindings and its API is allowed to lag by one minor. It is not a community port and it is not an afterthought; it is one minor behind, and when it is behind the documentation says which minor.
dotnet add package YodbSource-generated P/Invoke through LibraryImport rather than hand-written DllImport, so the marshalling is compiler output and not something a human gets subtly wrong once per signature. SuppressGCTransition on the short calls, where the transition costs more than the call.
IAsyncEnumerable<T> for every iteration surface, so await foreach is the way you read, and NativeAOT-clean throughout: no reflection on the hot path, no trimming warnings, and a published AOT sample that is built in CI so the claim stays true.
The engine's memory stays off the managed heap, which is the same property the JVM binding is built for and the same reason.
The full .NET specification, shared with the JVM because the two runtimes have the same shape of problem, is dx/08 in the project specification.
Apache 2.0 or MIT, at your option.