ioxide.Kestrel
0.0.16
dotnet add package ioxide.Kestrel --version 0.0.16
NuGet\Install-Package ioxide.Kestrel -Version 0.0.16
<PackageReference Include="ioxide.Kestrel" Version="0.0.16" />
<PackageVersion Include="ioxide.Kestrel" Version="0.0.16" />
<PackageReference Include="ioxide.Kestrel" />
paket add ioxide.Kestrel --version 0.0.16
#r "nuget: ioxide.Kestrel, 0.0.16"
#:package ioxide.Kestrel@0.0.16
#addin nuget:?package=ioxide.Kestrel&version=0.0.16
#tool nuget:?package=ioxide.Kestrel&version=0.0.16
ioxide.Kestrel
An ASP.NET Core Kestrel transport backed by the ioxide io_uring runtime. One reactor (io_uring ring) per core, SO_REUSEPORT load-balanced, with Kestrel's entire request loop pinned to the reactor thread — no ThreadPool hop on the hot path.
Usage
var builder = WebApplication.CreateBuilder(args);
builder.WebHost.UseIoxide(); // replaces Kestrel's default sockets transport
var app = builder.Build();
app.MapGet("/", () => "Hello, World!");
app.Run();
Options:
builder.WebHost.UseIoxide(o =>
{
o.ReactorCount = Environment.ProcessorCount; // rings/threads (default: ProcessorCount)
o.ConfigureServer = cfg => cfg with { RingEntries = 8192 }; // tune the underlying ioxide ServerConfig
});
How it works
Each accepted connection is bridged to Kestrel through a System.IO.Pipelines duplex whose reader
schedulers route continuations onto the owning reactor thread. A recv pump copies received bytes into
the inbound pipe and a send pump drains Kestrel's response into the connection's send slab, so
recv → HTTP parse → handler → send all run on a single ring thread.
Requirements
- Linux with io_uring (kernel 6.x recommended).
- .NET 11.
Inline execution note: like any thread-per-core transport, application middleware runs on the reactor thread. Blocking work in a handler stalls every connection on that reactor — keep handlers async.
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net11.0 is compatible. |
-
net11.0
- ioxide (>= 0.0.16)
- ioxide.tls (>= 0.0.16)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.