Suave 3.6.0
dotnet add package Suave --version 3.6.0
NuGet\Install-Package Suave -Version 3.6.0
<PackageReference Include="Suave" Version="3.6.0" />
<PackageVersion Include="Suave" Version="3.6.0" />
<PackageReference Include="Suave" />
paket add Suave --version 3.6.0
#r "nuget: Suave, 3.6.0"
#:package Suave@3.6.0
#addin nuget:?package=Suave&version=3.6.0
#tool nuget:?package=Suave&version=3.6.0
Suave is a simple web development F# library providing a lightweight web server and a set of combinators to manipulate route flow and task composition.
| 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. |
-
net10.0
- FSharp.Core (>= 10.0.102)
NuGet packages (64)
Showing the top 5 NuGet packages that depend on Suave:
| Package | Downloads |
|---|---|
|
Aardvark.Service
Aardvark is an open-source platform for visual computing, real-time graphics and visualization. |
|
|
FsLab
FsLab is a combination package that supports doing data science with F#. FsLab includes literate scripting converted to HTML and PDF, and by default references Deedle (a data frame library), FSharp.Data (for data access) and XPlot (for visualization). You can optionally add any other nuget packages. |
|
|
Suave.DotLiquid
Suave.DotLiquid provides Liquid templates for Suave web server. |
|
|
SuaveServerWrapper
A wrapper for suave.io APIs to call from C# |
|
|
Logary.Services.SuaveReporter
Logary is a high performance, multi-target logging, metric and health-check library for mono and .Net. |
GitHub repositories (2)
Showing the top 2 popular GitHub repositories that depend on Suave:
| Repository | Stars |
|---|---|
|
msarilar/EDEngineer
An overlay to track Elite Dangerous blueprints progress in real time
|
|
|
rogeralsing/Microphone
|
| Version | Downloads | Last Updated |
|---|---|---|
| 3.6.0 | 88 | 10/5/2026 |
| 3.5.0 | 711 | 9/9/2026 |
| 3.4.6 | 5,048 | 8/29/2026 |
| 3.4.5 | 180 | 8/26/2026 |
| 3.4.4 | 3,435 | 7/13/2026 |
| 3.4.3 | 10,283 | 6/1/2026 |
| 3.4.2 | 576 | 5/31/2026 |
| 3.4.1 | 269 | 5/30/2026 |
| 3.4.0 | 501 | 5/18/2026 |
| 3.4.0-beta | 140 | 5/14/2026 |
| 3.3.1 | 385 | 5/11/2026 |
| 3.3.1-beta3 | 134 | 5/6/2026 |
| 3.3.1-beta2 | 131 | 5/5/2026 |
| 3.3.1-beta1 | 123 | 5/5/2026 |
| 3.3.1-beta | 131 | 5/4/2026 |
| 3.3.0 | 359 | 5/2/2026 |
| 3.2.3 | 1,863 | 1/16/2026 |
| 3.2.2 | 404 | 1/13/2026 |
| 3.2.1 | 490 | 1/4/2026 |
| 3.2.0 | 1,086 | 12/11/2025 |
Keep-alive performance: allocations per request fall from ≈5.7 KB to ≈1.24 KB for a routed empty response. In a same-host Linux comparison against ASP.NET Core Minimal API, Suave is now ahead at 256 connections and within ≈5% at 64 (#862, #864):
the connection's request loop waits for a complete request head, then parses the request line and headers synchronously; fragmented, oversized (beyond the 8 KiB line buffer), non-HTTP/1.x and body-carrying requests continue on the streaming parser
a request whose parsing, web part and response complete synchronously allocates no `Task`; `processRequest` and `run` keep their `Task` signatures
TCP and HTTPS reads and web part executions complete through reusable per-connection completion sources instead of a `task { }` wrapper and `Async.StartImmediateAsTask` per request; web part errors are recovered there with the same semantics as `async.TryWith`
reads no longer register on the server's cancellation token individually: each connection registers once and is shut down when the server stops, which also ends a pending read
no error message allocations for absent request headers, h2c checks only for `Upgrade: h2c` requests, allocation-free `Content-Length` formatting, status line and ASCII response headers written without task state or `ToLowerInvariant`, no URL decoding of paths without escapes, and a single exact-route lookup in `Router`
New `HttpReader` members (`requestHeadReady`, `receive`, `commitReceived`, `tryReadRequestLineBuffered`, `tryReadHeadersBuffered`) used by the request loop (#862)
Request header names are matched with ordinal case-insensitive comparison; names with invalid Unicode no longer match through linguistic equivalence (#862)
Add `Globals.messageWriter` to redirect or silence Suave's own console messages (startup banner, "Stopping TCP server", websocket disconnects); the test suite uses it to avoid a Console lock deadlock with Expecto that caused intermittent hangs (#863)
Evict obsolete compressed artifacts: a recompressed resource's superseded copy is now deleted as part of the atomic cache swap, and the `_temporary_compressed_files` folder is swept - age- and count-bounded, see `Compression.cleanupFolder` - on server startup and shutdown (#655)
Cached compressed copies that have gone missing from disk are treated as a cache miss instead of failing the request
Benchmarks: a Minimal API comparison server, balanced comparison and profiling scripts, and an exact per-request allocation probe; see `benchmarks/HTTP_COMPARISON.md` (#862)