ioxide.Kestrel
0.3.100
See the version list below for details.
dotnet add package ioxide.Kestrel --version 0.3.100
NuGet\Install-Package ioxide.Kestrel -Version 0.3.100
<PackageReference Include="ioxide.Kestrel" Version="0.3.100" />
<PackageVersion Include="ioxide.Kestrel" Version="0.3.100" />
<PackageReference Include="ioxide.Kestrel" />
paket add ioxide.Kestrel --version 0.3.100
#r "nuget: ioxide.Kestrel, 0.3.100"
#:package ioxide.Kestrel@0.3.100
#addin nuget:?package=ioxide.Kestrel&version=0.3.100
#tool nuget:?package=ioxide.Kestrel&version=0.3.100
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 | 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. net11.0 is compatible. |
-
net10.0
- ioxide (>= 0.3.100)
- ioxide.tls (>= 0.3.100)
-
net11.0
- ioxide (>= 0.3.100)
- ioxide.tls (>= 0.3.100)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|---|---|
| 0.3.149 | 3 | 8/7/2026 |
| 0.3.145 | 67 | 8/5/2026 |
| 0.3.100 | 76 | 8/5/2026 |
| 0.2.6 | 82 | 8/4/2026 |
| 0.2.5 | 76 | 8/4/2026 |
| 0.2.4 | 97 | 8/3/2026 |
| 0.2.3 | 91 | 7/24/2026 |
| 0.2.2 | 96 | 7/23/2026 |
| 0.2.1 | 95 | 7/23/2026 |
| 0.1.1 | 101 | 7/20/2026 |
| 0.0.17 | 121 | 6/23/2026 |
| 0.0.16 | 121 | 6/21/2026 |
| 0.0.15 | 111 | 6/21/2026 |
| 0.0.14 | 118 | 6/21/2026 |
| 0.0.13 | 123 | 6/21/2026 |