Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
83 commits
Select commit Hold shift + click to select a range
aed2419
docs: add IServer pipeline redesign spec and implementation plan
st0o0 May 27, 2026
b5e300a
build!: replace FrameworkReference with targeted NuGet packages
st0o0 May 27, 2026
81d1cdf
refactor!: remove ITurbo*Feature interfaces, use IHttp*Feature only
st0o0 May 27, 2026
43a0acd
feat!: implement TurboServer as IServer replacement
st0o0 May 27, 2026
66c5396
refactor!: delete app-framework layer
st0o0 May 27, 2026
b776ce4
fix: update tests for RequestContext pipeline type
st0o0 May 27, 2026
dd7513a
docs: accept API surface changes from app-framework layer deletion
st0o0 May 27, 2026
809b590
refactor: make lifetime and identifier features self-contained
st0o0 May 27, 2026
2702ee5
feat: add FeatureCollectionFactory returning IFeatureCollection
st0o0 May 27, 2026
2a9b2a3
refactor: update protocol encoders to accept IFeatureCollection
st0o0 May 27, 2026
9e04e63
refactor: update all state machines and session managers to IFeatureC…
st0o0 May 27, 2026
62ec834
refactor: update stage logic, connection stages, and engines to IFeat…
st0o0 May 27, 2026
2f862c1
refactor!: rewrite ApplicationBridgeStage as generic with IHttpApplic…
st0o0 May 27, 2026
57c1ec5
refactor!: wire IHttpApplication through actors to ApplicationBridgeS…
st0o0 May 27, 2026
e86f078
refactor!: delete RequestContext, TurboHttpContext, RoutingStage, and…
st0o0 May 27, 2026
46461fa
fix: resolve HTTP/2 and HTTP/3 response body encoding logic
st0o0 May 27, 2026
bcc1a50
refactor: exclude integration server tests pending IServer rewrite
st0o0 May 27, 2026
2851ec0
docs: update CLAUDE.md for IServer pipeline architecture
st0o0 May 27, 2026
207be7a
feat: add IHttpMaxRequestBodySizeFeature and IHttpBodyControlFeature …
st0o0 May 27, 2026
da1c10c
feat: add fast-path slots for IHttpMaxRequestBodySizeFeature and IHtt…
st0o0 May 27, 2026
2ff5a24
feat: register body size and body control features in FeatureCollecti…
st0o0 May 27, 2026
3c951e0
fix: populate IServerAddressesFeature with resolved endpoint URLs
st0o0 May 27, 2026
73c18ef
test: add unit tests for body size and body control features
st0o0 May 27, 2026
4ff6d8d
feat: add Servus.Akka.AspNetCore with AkkaResults and MapEntity
st0o0 May 27, 2026
d9bb18d
test: add Servus.Akka.AspNetCore.Tests with 36 tests
st0o0 May 27, 2026
7fd750e
docs: restructure server documentation for IServer architecture
st0o0 May 27, 2026
69054e9
docs: fix table rendering in installation and aspnet-core pages
st0o0 May 27, 2026
2fcacd4
docs: escape angle brackets in generic types to fix Vue parser
st0o0 May 27, 2026
e6f3b39
docs: update landing page and scenarios for IServer architecture
st0o0 May 27, 2026
e8e9968
feat: add TurboServer vs Kestrel server benchmarks
st0o0 May 27, 2026
9d76100
feat: add OTel-standard server metric instruments
st0o0 May 27, 2026
b34701b
feat: add server-side Activity lifecycle (connection + request tracing)
st0o0 May 27, 2026
27e7c5b
feat: add turbo.server.* differenzierung metric instruments
st0o0 May 27, 2026
c114b99
feat: add AddTurboServerInstrumentation registration methods
st0o0 May 27, 2026
6a7e70f
feat: add RequestTimestamp and RequestActivity to TurboFeatureCollection
st0o0 May 27, 2026
140e156
feat: add connection metrics and tracing to ListenerActor
st0o0 May 27, 2026
1f5f907
feat: add protocol negotiation metrics to ConnectionActor
st0o0 May 27, 2026
f2ad6b2
feat: add request metrics and tracing to HttpConnectionServerStageLogic
st0o0 May 27, 2026
23b468c
feat: add pipeline metrics and backpressure events to ApplicationBrid…
st0o0 May 27, 2026
56995de
feat: scaffold TurboHTTP.StressBenchmarks project with data records
st0o0 May 27, 2026
6fb9c97
feat: add ServerHarness for Turbo/Kestrel lifecycle
st0o0 May 27, 2026
d26d217
feat: add MetricsCollector with per-second time-series aggregation
st0o0 May 27, 2026
a307584
feat: add LoadGenerator with concurrent worker loops
st0o0 May 27, 2026
ecc7be8
feat: add StressReport and JsonExporter for benchmark output
st0o0 May 27, 2026
94f9340
feat: add four stress scenarios (slow-handler, connection-storm, body…
st0o0 May 27, 2026
f978427
feat: add CLI orchestration for stress benchmarks
st0o0 May 27, 2026
8b9a45c
feat: add ResponsePipeWriter for writer-side header commit
st0o0 May 27, 2026
fb71e9a
fix: guard _headerCommit in CommitAndFlushAsync with try-finally
st0o0 May 27, 2026
155798c
fix: add missing PipeWriter overrides and leaveOpen to ResponsePipeWr…
st0o0 May 27, 2026
4a2a13a
perf: batch QPACK encoder instruction flushes in HTTP/3 client
st0o0 May 27, 2026
a96eb89
perf: batch HTTP/3 frame serialization into single TransportBuffer pe…
st0o0 May 27, 2026
fd9c569
perf: increase H3 StreamState pool 16→256, reduce encoder buffer 8K→4K
st0o0 May 27, 2026
c9371eb
perf: direct-push bypass and pre-sized queues in HttpConnectionStageL…
st0o0 May 27, 2026
33f8329
perf: reuse HeaderCollection in H1.1 encoder, increase benchmark pipe…
st0o0 May 27, 2026
ec1c0a7
perf: coalesce queued outbound TransportData writes into single buffer
st0o0 May 27, 2026
4d45044
feat: Add server instrumentation methods
st0o0 May 27, 2026
0086041
Revert "perf: batch QPACK encoder instruction flushes in HTTP/3 client"
st0o0 May 27, 2026
e302ca9
feat(e2e): add End2EndSpecBase infrastructure for TurboHTTP client-se…
st0o0 May 28, 2026
26d38c7
feat(e2e): add RoundtripSpecs for H1.0, H1.1, H2, H3
st0o0 May 28, 2026
1faaa94
feat(e2e): add LargePayloadSpecs for all protocols
st0o0 May 28, 2026
7ea0277
feat(e2e): add H1.1 StreamingSpec and PipeliningSpec
st0o0 May 28, 2026
b1c6b54
feat(e2e): add H2 MultiplexingSpec, FlowControlSpec, UpgradeSpec
st0o0 May 28, 2026
3cf60fa
feat(e2e): add H3 MultiplexingSpec
st0o0 May 28, 2026
b712620
feat(e2e): add ResilienceSpecs for all protocols
st0o0 May 28, 2026
51c38af
fix(e2e): add missing using directives and fix empty-echo response fo…
st0o0 May 28, 2026
bf0911e
refactor(e2e): add protocol collections for partial runs, skip timeou…
st0o0 May 28, 2026
99ce555
chore: cleanup
st0o0 May 28, 2026
67b7661
fix: skip H2 connection preface in server FrameDecoder + fix client A…
st0o0 May 28, 2026
b6a5a51
fix(h2): sync HPACK decoder table size with announced SETTINGS + skip…
st0o0 May 28, 2026
4b3187d
fix(h2): detect response body via HasStarted for H2 responses without…
st0o0 May 28, 2026
03b3c54
fix(h2): detect response body via HasStarted when no Content-Length
st0o0 May 28, 2026
f9b9160
fix(e2e): use Results.Text for plain string assertions in ResilienceS…
st0o0 May 28, 2026
6540b8f
fix: duplicate Content-Length in H1.1 server encoder + test fixes
st0o0 May 28, 2026
714e0d6
fix(e2e): skip H3 tests properly, reduce H11 pipelining concurrency
st0o0 May 28, 2026
8d1cffb
test(e2e): skip H2 large POST body and multiplexing starvation tests
st0o0 May 28, 2026
76899e4
test(e2e): skip H1.1 concurrent pipelining test
st0o0 May 28, 2026
59c2e1a
feat(server): support unordered response emission in ApplicationBridg…
st0o0 May 28, 2026
43651a6
feat(server): auto-detect response ordering from HTTP version
st0o0 May 28, 2026
50bcab1
feat(client): round-robin connection routing in GroupByRequestEndpoin…
st0o0 May 28, 2026
ccec52c
feat(http3): Stream 3 is unidirectional by default
st0o0 May 28, 2026
62208dd
chore: Update package versions
st0o0 May 28, 2026
5f6895c
chore: code cleanup
st0o0 May 28, 2026
e8f7a5e
refactor: Use lowercase property names in ProtocolVariant
st0o0 May 28, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -344,6 +344,7 @@ docs/superpowers/*
COMMIT.md
.tools/
coverage-results/
results/
.maggus/runs
.maggus/MEMORY.md
.maggus/RELEASE_NOTES.md
Expand Down
7 changes: 3 additions & 4 deletions CLAUDE.md
Original file line number Diff line number Diff line change
Expand Up @@ -35,10 +35,9 @@ cd ../docs && npm install && npm run docs:dev

```
Client Surface (TurboHTTP/Client/) - ITurboHttpClient, factory, builder, DI, options
Server Surface (TurboHTTP/Server/) - TurboServerOptions, TurboHttpContext, Hosting, Middleware
Context (TurboHTTP/Context/) - TurboHttpRequest, TurboHttpResponse, Adapters, Features
Routing (TurboHTTP/Routing/) - RouteTable, dispatchers, Binding/
Streams Layer (TurboHTTP/Streams/) - Engines, Stages/{Client,Server,Features,Routing}, Lifecycle, Pooling
Server Surface (TurboHTTP/Server/) - TurboServer (IServer), TurboServerOptions, Hosting, FeatureCollectionFactory
Context (TurboHTTP/Context/) - Features/ (IHttp*Feature implementations), Adapters/
Streams Layer (TurboHTTP/Streams/) - Engines, Stages/{Client,Server,Features}, Lifecycle, Pooling
Protocol Layer (TurboHTTP/Protocol/) - Http10/, Http11/, Http2/, Http3/, Semantics/
Features (TurboHTTP/Features/) - Cookies/, Caching/, AltSvc/
Diagnostics (TurboHTTP/Diagnostics/) - Metrics, tracing, logging
Expand Down
10 changes: 5 additions & 5 deletions docs/.vitepress/components/HomePage.vue
Original file line number Diff line number Diff line change
Expand Up @@ -13,8 +13,8 @@ const features = [
description: 'Idempotency-aware retries + in-memory LRU cache with ETag support. Built in, not bolted on.',
},
{
title: 'Middleware & Routing',
description: 'ASP.NET Core-style pipeline with Use/Run/Map. Entity gateway routes requests to Akka.NET actors.',
title: 'IServer Drop-In',
description: 'Replaces Kestrel as IServer — use standard ASP.NET Core middleware, routing, and DI unchanged.',
},
{
title: 'Connection Pooling',
Expand Down Expand Up @@ -49,13 +49,13 @@ const clientCode = `builder.Services.AddTurboHttpClient("api", options =>
var client = factory.CreateClient("api");
var response = await client.SendAsync(request, ct);`

const serverCode = `builder.Services.AddTurboKestrel(options =>
const serverCode = `builder.Host.UseTurboHttp(options =>
{
options.ListenLocalhost(5100);
});

app.MapTurboGet("/health", () => new { status = "ok" });
app.MapTurboGet("/users/{id}", (int id) =>
app.MapGet("/health", () => new { status = "ok" });
app.MapGet("/users/{id}", (int id) =>
new { id, name = "User " + id });

await app.RunAsync();`
Expand Down
9 changes: 2 additions & 7 deletions docs/.vitepress/config.ts
Original file line number Diff line number Diff line change
Expand Up @@ -76,13 +76,9 @@ export default defineConfig({
{ text: 'Overview', link: '/server/' },
{ text: 'Installation & Setup', link: '/server/installation' },
{ text: 'Configuration', link: '/server/configuration' },
{ text: 'Using with ASP.NET Core', link: '/server/aspnet-core' },
{ text: 'Hosting & Lifecycle', link: '/server/hosting' },
{ text: 'Middleware Pipeline', link: '/server/middleware' },
{ text: 'Routing', link: '/server/routing' },
{ text: 'Parameter Binding', link: '/server/binding' },
{ text: 'Validation', link: '/server/validation' },
{ text: 'Entity Gateway', link: '/server/entity-gateway' },
{ text: 'Real-World Scenarios', link: '/server/scenarios' },
{ text: 'Performance Tuning', link: '/server/performance' },
{ text: 'Troubleshooting', link: '/server/troubleshooting' },
],
},
Expand All @@ -96,7 +92,6 @@ export default defineConfig({
{ text: 'Client Options', link: '/api/client-options' },
{ text: 'Feature Options', link: '/api/feature-options' },
{ text: 'Server API', link: '/api/server' },
{ text: 'Entity Gateway API', link: '/api/entity-gateway' },
],
},
],
Expand Down
322 changes: 0 additions & 322 deletions docs/api/entity-gateway.md

This file was deleted.

Loading
Loading