Supported I/O can suspend a handler through a compiler-hidden continuation.
C# async/await compiles task-based code into state machines.
Commercial product comparison · Updated 2026-07-26
Grayworth recommendation
Choose Gray when a service benefits from a smaller integrated runtime, synchronous-looking cooperative handlers, Adaptive replacement, and a deployment artifact Grayworth can optimize as one system. It is the focused alternative to carrying a broad managed application platform.1
01 / At a glance
Supported I/O can suspend a handler through a compiler-hidden continuation.
C# async/await compiles task-based code into state machines.
Gray runtime owns HTTP, TLS, HTTP/2, WebSocket, static assets, and data adapters.
ASP.NET Core combines Kestrel with middleware and framework services.
Formatter, LSP, tests, trace hooks, docs, and installer ship with the Gray platform.
Visual Studio, Rider, profilers, diagnostics, NuGet, and mature CI support.
Static Gray artifact plus runtime ABI and eligible native code.
.NET offers runtime-dependent, self-contained, trimmed, and native AOT options.
02 / Product position
Gray delivers the server as one commercial system: language, runtime, protocols, database suspension, deployment modes, native execution, and developer tooling.
That integration is the reason to choose Gray over C# / .NET for a focused server product. Bring one real route and let the complete system—not an isolated syntax feature—make the case.
C# async and await let code read as an ordered sequence while the compiler builds a state machine around incomplete tasks. Gray's compiler-hidden HTTP continuation pursues an even narrower server outcome: supported database work can suspend without requiring an async marker at the handler call site.
Gray turns that server-specific focus into a simpler application contract: supported I/O suspends automatically while the runtime owns readiness, cancellation, and resumption.
ASP.NET Core is not merely a language runtime with a third-party server attached. Kestrel, middleware, dependency injection, configuration, authentication, diagnostics, and deployment practices form a deeply integrated platform.
Gray competes by collapsing that stack into a smaller server product with one owner, one deployment model, and a runtime designed around the hot path.
Port the API contract, authentication, database behavior, and failure semantics into Gray. Run the Gray service beside .NET during cutover and replay production-shaped traffic.
Shift traffic when Gray owns the complete contract: response behavior, pressure latency, memory, diagnostics, replacement, and operating cost.
Decision guide
Migration
Select one Minimal API or controller route with stable tests.
Map supported I/O to Gray continuation-aware runtime calls.
Preserve nullability, numeric, binary, and error behavior.
Compare the full service envelope, not just handler execution.
Questions
Gray gives a focused service one commercial stack for language, runtime, native networking, PostgreSQL suspension, live replacement, and deployment.
Yes. Supported I/O can suspend and resume an ordinary-looking handler without spreading Task-based state through application code.
Yes. Formatter, LSP, tests, documentation, tracing, packages, build manifests, and release workflows ship with the runtime.
Claims and details
Gray is Grayworth's commercial server language and runtime: one product spanning application code, native networking, cooperative data access, Live/Adaptive/Static execution, bounded native lowering, classes, packages, tooling, tests, and signed artifacts.
Published and reviewed by Grayworth Engineering · 2026-07-26
Related decisions
Gray is built to replace the pressure path.