The current release line was published on 20 October 2026.
| Component | Version | Distribution |
|---|---|---|
| Abstractions | 0.7.1 | NuGet |
| HostingShim | v0.5.1 | lip, four carrier variants |
| C# Provider | v0.2.1 | lip |
| F# Provider | v0.1.2 | lip |
| RPC Provider | v0.2.1 | lip |
| Plugin template | 0.1.2 | dotnet new |
Abstractions 0.7.1
Section titled “Abstractions 0.7.1”IPluginContext.TryRegisterProviderreports a duplicate provider registration instead of hiding it.dependenciesandextraInfobecome empty collections when the manifest containsnull.- The contract documents failed unloads, exact event-type matching, and hooks during self-initiated shutdown.
- This version is MIT on NuGet; 0.7.0 remains LGPL-3.0-or-later.
HostingShim v0.5.1
Section titled “HostingShim v0.5.1”- Carrier reload keeps the managed core and loaded providers; only child plugins unload and reload (ADR-0037).
- Endstone reload recycles the managed core before the native module unloads, and the log bridge waits for in-flight lines before the old logger is destroyed.
- hostfxr is loaded once per process; repeated reloads no longer accumulate library references.
- The packer understands
#:packageand recursive#:includewith*,**, and?. - Manifest and load-path hardening covers
nulland self dependencies, path-like names, loading-window rollback, and report delivery outside the load lock. - A manifest that cannot be read is isolated to its package. Explicitly unloading a provider package is refused; changing providers requires restarting the server.
- Smoke tests record the server’s real exit code; Linux links the carrier with
-z nodelete.
C# Provider v0.2.1
Section titled “C# Provider v0.2.1”- Source files can use
#:package Id@Versionand#:includewith globs. - Cache validation covers both the assembly and its PDB; compilation uses the same source snapshot as the cache key.
- Cache cleanup is safe across processes: old directories need an expired retention window and no active lease; staging and freshly published artifacts are left alone.
- A failed load releases its ALC, and a package must expose exactly one
IPlugintype. - A second provider package for the same plugin type now fails to load instead of remaining idle.
F# Provider v0.1.2
Section titled “F# Provider v0.1.2”- Compile-time references use the same package-first order as runtime resolution.
- FSharp.Compiler.Service compilation is limited to 30 seconds.
- PDB checksums, the source snapshot, and a unique staging directory protect the cache.
- Entries containing
#compile into a new-run-<nonce>directory on every load, so two processes never replace the same cache in place. - Cross-process cleanup uses retention windows and load leases; a second provider package for the same type fails to load.
RPC Provider v0.2.1
Section titled “RPC Provider v0.2.1”- Parent exit is detected through the process
Exitedevent, so an orphaned plugin shuts down. - Queues are bounded: 4096 incoming messages, 1024 replies, and 4 MiB per line; overflow reports a fault and stops the child.
- Lines are read in chunks with the 4 MiB limit enforced during reading, before a full line is allocated.
- Notifications are processed in order; during synchronous delivery only requests with an
idmay reenter, so notifications keep their wire order. - String request IDs are preserved, structured payloads keep their raw JSON, and a duplicate subscription can upgrade a topic to synchronous delivery.
- A second provider package for the same type fails to load.
Plugin template 0.1.2
Section titled “Plugin template 0.1.2”- The generated project references Abstractions 0.7.1 with
ExcludeAssets="runtime". - The scaffolding is MIT-0; the contract it references is MIT.
Install
Section titled “Install”dotnet add package Hosihikari.Abstractions --version 0.7.1dotnet new install Hosihikari.Plugin.Template::0.1.2
lip install github.com/HosihikariFramework/Shimlip install github.com/HosihikariFramework/CSharpProviderlip install github.com/HosihikariFramework/FSharpProviderlip install github.com/HosihikariFramework/RpcProviderShim variants for LeviLamina and Endstone are selected with #levilamina, #endstone, and
#endstone_linux; the package without a suffix installs the Linux self-hosted carrier.
Compatibility
Section titled “Compatibility”Plugins built against Abstractions 0.7.1 use contract api 2 and manifest format_version 1.
The previous release line was Abstractions 0.7.0, Shim v0.5.0, Provider v0.2.0 / v0.1.1, and template 0.1.2.
