WACS.WASI.NN.DependencyInjection
0.2.2
See the version list below for details.
dotnet add package WACS.WASI.NN.DependencyInjection --version 0.2.2
NuGet\Install-Package WACS.WASI.NN.DependencyInjection -Version 0.2.2
<PackageReference Include="WACS.WASI.NN.DependencyInjection" Version="0.2.2" />
<PackageVersion Include="WACS.WASI.NN.DependencyInjection" Version="0.2.2" />
<PackageReference Include="WACS.WASI.NN.DependencyInjection" />
paket add WACS.WASI.NN.DependencyInjection --version 0.2.2
#r "nuget: WACS.WASI.NN.DependencyInjection, 0.2.2"
#:package WACS.WASI.NN.DependencyInjection@0.2.2
#addin nuget:?package=WACS.WASI.NN.DependencyInjection&version=0.2.2
#tool nuget:?package=WACS.WASI.NN.DependencyInjection&version=0.2.2
WACS.WASI.NN.DependencyInjection
DI bundle + concrete resource impls for
WACS.WASI.NN. This is the package the
transpiler-direct-link path needs at scope-construction time — without it,
[constructor]X for wasi-nn resources falls back to delegate dispatch and returns handle
0 to the guest.
Install
dotnet add package WACS.WASI.NN.DependencyInjection
For most wasi-nn workflows, install this package alongside
WACS.WASI.Preview2.DependencyInjection
- a backend (
WACS.WASI.NN.OnnxRuntime/WACS.WASI.NN.LlamaSharp/WACS.WASI.NN.MLNet).
What's inside
WasiNNBundle— exposes WASI.NN's[WitSource]interfaces (IGraphFuncs,IInferenceFuncs,IErrorFuncs) as properties that direct-link emit binds toWasiPreview2NNBundle— composite bundle that forwards BOTH Preview 2 and WASI.NN interfaces through one CLR object. Required when a component importswasi:cli/*+wasi:nn/*(the typical SLM / inference-CLI shape)- Concrete resource impls —
Tensor,Graph,GraphExecutionContext,Error— parameterless ctor + SourceGen-shapevoid Create(args)thatActivator.CreateInstance(impl)instantiates AddWasiNN+AddWasiPreview2NNBundleservice-collection extensions
Quick start — DI
using Microsoft.Extensions.DependencyInjection;
using Wacs.WASI.Preview2.DependencyInjection;
using Wacs.WASI.NN.DependencyInjection;
using Wacs.WASI.NN.OnnxRuntime;
using Wacs.WASI.NN.Types;
var services = new ServiceCollection();
services
.AddWasiPreview2()
.AddWasiNN(opts =>
{
opts.AddBackend(GraphEncoding.ONNX, new OnnxBackend());
// or:
// opts.Configuration.LoadByNameBackend = new LlamaSharpBackend(...);
})
.AddWasiPreview2NNBundle(); // composite for the single hostBundle slot
using var sp = services.BuildServiceProvider();
using var scope = sp.CreateScope();
var linker = scope.ServiceProvider.GetRequiredService<Linker>();
// linker.Runtime is the WasmRuntime ready for component instantiation
Quick start — WasiPreview2RuntimeScope (one-shot)
For most embedders the simpler path is WasiPreview2RuntimeScope from
WACS.WASI.Preview2.DependencyInjection,
which auto-detects this package on the load path and registers the composite bundle
without manual configuration:
using var wasi = new WasiPreview2RuntimeScope(runtime,
preopens: new[] { ("./models", "/models") });
// wasi.Bundle is automatically the composite when this DI sibling is loaded
Auto-wires OnnxBackend if WACS.WASI.NN.OnnxRuntime is loadable; auto-wires LlamaSharp
into both Backends[GGML] and LoadByNameBackend if WACS.WASI.NN.LlamaSharp is
loadable.
Why this is a separate package
The typed resource interfaces (ITensor, IGraph, IGraphExecutionContext, IError)
live in WACS.WASI.NN — they're what
direct-link emit references at the import call site. The concrete impl classes here
(Tensor, Graph, etc.) are what the transpiler instantiates via
Activator.CreateInstance(impl) + Create(args) for [constructor]X. Both halves are
needed; splitting them keeps the typed surface light when an embedder doesn't need the
default impls.
Documentation
docs/COMPONENT_CHAINING.md— runtime requirements, host-package composition, end-to-end examples- Top-level WACS README — Component Model & WASI Preview 2
License
Apache-2.0
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net5.0 was computed. net5.0-windows was computed. net6.0 was computed. net6.0-android was computed. net6.0-ios was computed. net6.0-maccatalyst was computed. net6.0-macos was computed. net6.0-tvos was computed. net6.0-windows was computed. net7.0 was computed. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. net8.0 is compatible. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. net9.0 was computed. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. net10.0 was computed. 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. |
| .NET Core | netcoreapp3.0 was computed. netcoreapp3.1 was computed. |
| .NET Standard | netstandard2.1 is compatible. |
| MonoAndroid | monoandroid was computed. |
| MonoMac | monomac was computed. |
| MonoTouch | monotouch was computed. |
| Tizen | tizen60 was computed. |
| Xamarin.iOS | xamarinios was computed. |
| Xamarin.Mac | xamarinmac was computed. |
| Xamarin.TVOS | xamarintvos was computed. |
| Xamarin.WatchOS | xamarinwatchos was computed. |
-
.NETStandard 2.1
- Microsoft.Extensions.DependencyInjection.Abstractions (>= 8.0.0)
- WACS (>= 0.13.7)
- WACS.ComponentModel (>= 0.3.5)
- WACS.WASI.NN (>= 0.3.1)
- WACS.WASI.Preview2.DependencyInjection (>= 0.1.5)
-
net8.0
- Microsoft.Extensions.DependencyInjection.Abstractions (>= 8.0.0)
- WACS (>= 0.13.7)
- WACS.ComponentModel (>= 0.3.5)
- WACS.WASI.NN (>= 0.3.1)
- WACS.WASI.Preview2.DependencyInjection (>= 0.1.5)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.