FastEndpoints 1.0.0-beta6

Prefix Reserved
This is a prerelease version of FastEndpoints.
There is a newer version of this package available.
See the version list below for details.
dotnet add package FastEndpoints --version 1.0.0-beta6                
NuGet\Install-Package FastEndpoints -Version 1.0.0-beta6                
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="FastEndpoints" Version="1.0.0-beta6" />                
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add FastEndpoints --version 1.0.0-beta6                
#r "nuget: FastEndpoints, 1.0.0-beta6"                
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
// Install FastEndpoints as a Cake Addin
#addin nuget:?package=FastEndpoints&version=1.0.0-beta6&prerelease

// Install FastEndpoints as a Cake Tool
#tool nuget:?package=FastEndpoints&version=1.0.0-beta6&prerelease                

FastEndpoints

An easy to use Web-Api framework (which encourages CQRS and Vertical Slice Architecture) built as an extension to the Asp.Net pipeline. Performance is on par with .net 6 minimal apis and is 2X faster; uses only half the memory; and outperforms a traditional MVC controller by about 73k requests per second on a Ryzen 3700X desktop.

Try it out...

install from nuget: Install-Package FastEndpoints (currently beta)

note: the minimum required sdk version is .net 6.0 (preview atm)

Code Sample:

Program.cs

using FastEndpoints;

var builder = WebApplication.CreateBuilder();
builder.Services.AddFastEndpoints();
builder.Services.AddAuthenticationJWTBearer("SecretKey");

var app = builder.Build();
app.UseAuthentication();
app.UseAuthorization();
app.UseFastEndpoints();
app.Run();

Request DTO

public class MyRequest
{
    [From(Claim.UserName)]
    public string UserName { get; set; }  //this value will be auto populated from the user claim

    public int Id { get; set; }
    public string Name { get; set; }
    public int Price { get; set; }
}

Request Validator

public class MyValidator : Validator<MyRequest>
{
    public MyValidator()
    {
        RuleFor(x => x.Id).NotEmpty().WithMessage("Id is required!");
        RuleFor(x => x.Name).NotEmpty().WithMessage("Name is required!");
        RuleFor(x => x.Price).GreaterThan(0).WithMessage("Price is required!");
    }
}

Response DTO

public class MyResponse
{
    public string Name { get; internal set; }
    public int Price { get; set; }
    public string? Message { get; set; }
}

Endpoint Definition

public class MyEndpoint : Endpoint<MyRequest>
{
    public ILogger<MyEndpoint>? Logger { get; set; } //automatically injected from services

    public MyEndpoint()
    {
        //no longer hindered by attribute limitations
        Routes("/api/test/{id}");
        Verbs(Http.POST, Http.PATCH);
        Roles("Admin", "Manager");
        Policies("ManagementTeamCanAccess", "AuditorsCanAccess");
        Permissions(
            Allow.Inventory_Create_Item,
            Allow.Inventory_Retrieve_Item,
            Allow.Inventory_Update_Item); //declarative permission based authorization
    }

    protected override async Task HandleAsync(MyRequest req, CancellationToken ct)
    {
        //can do further validation here in addition to FluentValidation rules
        if (req.Price < 100)
            AddError(r => r.Price, "Price is too low!");

        AddError("This is a general error!");

        ThrowIfAnyErrors(); //breaks the flow and sends a 400 error response containing error details.

        Logger.LogInformation("this is your first endpoint!"); //dependency injected logger

        var isProduction = Env.IsProduction(); //read environment
        var smtpServer = Config["SMTP:HostName"]; //read configuration

        var res = new MyResponse //typed response to make integration tests convenient
        {
            Message = $"the route parameter value is: {req.Id}",
            Name = req.Name,
            Price = req.Price
        };

        await SendAsync(res);
    }
}

that's mostly it. all of your Endpoint definitions are automatically discovered on app startup and routes automatically mapped.

Documentation

proper documentation will be available within a few weeks once v1.0 is released. in the meantime have a browse through the Web, Test and Benchmark projects to see more examples.

Benchmark results

Bombardier load test

FastEndpoints (72,920 more requests per second than mvc controller)

Statistics        Avg      Stdev        Max
  Reqs/sec    144989.43   13594.10  199851.96
  Latency        3.41ms   378.95us    65.00ms
  HTTP codes:
    1xx - 0, 2xx - 1462226, 3xx - 0, 4xx - 0, 5xx - 0
    others - 0
  Throughput:    73.34MB/s

AspNet Minimal Api

Statistics        Avg      Stdev        Max
  Reqs/sec    144416.77   14313.21  171576.65
  Latency        3.43ms     1.37ms   347.00ms
  HTTP codes:
    1xx - 0, 2xx - 1456040, 3xx - 0, 4xx - 0, 5xx - 0
    others - 0
  Throughput:    73.02MB/s

AspNet MapControllers

Statistics        Avg      Stdev        Max
  Reqs/sec     74056.92   19197.47  372446.94
  Latency        6.71ms     1.89ms   416.00ms
  HTTP codes:
    1xx - 0, 2xx - 745069, 3xx - 0, 4xx - 0, 5xx - 0
    others - 0
  Throughput:    37.37MB/s

AspNet MVC Controller

Statistics        Avg      Stdev        Max
  Reqs/sec     72069.51   14094.86   96234.73
  Latency        6.83ms   712.49us    89.01ms
  HTTP codes:
    1xx - 0, 2xx - 731659, 3xx - 0, 4xx - 0, 5xx - 0
    others - 0
  Throughput:    36.56MB/s

parameters used: -c 500 -m POST -f "body.json" -H "Content-Type:application/json" -d 10s http://localhost:5000/

BenchmarkDotNet head-to-head results

Method Mean Error StdDev Ratio RatioSD Gen 0 Allocated
FastEndpointsEndpoint 78.47 μs 1.522 μs 1.753 μs 1.00 0.00 2.4414 21 KB
MinimalApiEndpoint 77.05 μs 1.519 μs 2.496 μs 0.97 0.04 2.4414 21 KB
AspNetMapControllers 148.36 μs 2.922 μs 5.270 μs 1.88 0.07 5.3711 44 KB
AspNetCoreMVC 150.66 μs 2.984 μs 6.550 μs 1.90 0.09 5.3711 45 KB
Product Compatible and additional computed target framework versions.
.NET net6.0 is compatible.  net6.0-android was computed.  net6.0-ios was computed.  net6.0-maccatalyst was computed.  net6.0-macos was computed.  net6.0-tvos was computed.  net6.0-windows was computed.  net7.0 was computed.  net7.0-android was computed.  net7.0-ios was computed.  net7.0-maccatalyst was computed.  net7.0-macos was computed.  net7.0-tvos was computed.  net7.0-windows was computed.  net8.0 was computed.  net8.0-android was computed.  net8.0-browser was computed.  net8.0-ios was computed.  net8.0-maccatalyst was computed.  net8.0-macos was computed.  net8.0-tvos was computed.  net8.0-windows was computed.  net9.0 was computed.  net9.0-android was computed.  net9.0-browser was computed.  net9.0-ios was computed.  net9.0-maccatalyst was computed.  net9.0-macos was computed.  net9.0-tvos was computed.  net9.0-windows was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages (130)

Showing the top 5 NuGet packages that depend on FastEndpoints:

Package Downloads
FastEndpoints.Swagger

Swagger support for FastEndpoints.

Elsa

Bundles the most commonly-used packages when building an Elsa workflows application.

FastEndpoints.Security

Security library for FastEndpoints.

Elsa.Workflows.Management

Provides workflow management functionality.

Elsa.Api.Common

Provides common features to modules that expose API endpoints.

GitHub repositories (17)

Showing the top 5 popular GitHub repositories that depend on FastEndpoints:

Repository Stars
ardalis/CleanArchitecture
Clean Architecture Solution Template: A proven Clean Architecture Template for ASP.NET Core 9
elsa-workflows/elsa-core
A .NET workflows library
RRQM/TouchSocket
TouchSocket is an integrated .NET networking framework that includes modules for socket, TCP, UDP, SSL, named pipes, HTTP, WebSocket, RPC, and more. It offers a one-stop solution for TCP packet issues and enables quick implementation of custom data message parsing using protocol templates.
CodeMazeBlog/CodeMazeGuides
The main repository for all the Code Maze guides
Elfocrash/clean-minimal-api
A project showcasing how you can build a clean Minimal API using FastEndpoints
Version Downloads Last updated
6.0.0-beta.3 0 15 hours ago
6.0.0-beta.2 398 9 days ago
6.0.0-beta.1 91 11 days ago
5.35.0.603-beta 308 14 days ago
5.35.0.602-beta 189 15 days ago
5.35.0.601-beta 159 15 days ago
5.35.0.600-beta 246 16 days ago
5.35.0.3-beta 276 18 days ago
5.35.0.2-beta 225 18 days ago
5.35.0.1-beta 269 20 days ago
5.35.0 32,141 21 days ago
5.34.0.19-beta 380 22 days ago
5.34.0.18-beta 201 24 days ago
5.34.0.17-beta 125 25 days ago
5.34.0.16-beta 129 25 days ago
5.34.0.15-beta 137 a month ago
5.34.0.14-beta 140 a month ago
5.34.0.13-beta 158 a month ago
5.34.0.12-beta 182 a month ago
5.34.0.11-beta 117 a month ago
5.34.0.10-beta 183 a month ago
5.34.0.9-beta 123 a month ago
5.34.0.8-beta 131 a month ago
5.34.0.7-beta 246 a month ago
5.34.0.6-beta 197 a month ago
5.34.0.5-beta 119 a month ago
5.34.0.4-beta 116 a month ago
5.34.0.3-beta 780 a month ago
5.34.0.2-beta 205 a month ago
5.34.0.1-beta 132 a month ago
5.34.0 109,926 2 months ago
5.33.0.13-beta 536 2 months ago
5.33.0.12-beta 1,002 2 months ago
5.33.0.11-beta 379 2 months ago
5.33.0.10-beta 138 2 months ago
5.33.0.9-beta 1,092 2 months ago
5.33.0.8-beta 600 2 months ago
5.33.0.7-beta 126 2 months ago
5.33.0.6-beta 992 3 months ago
5.33.0.5-beta 758 3 months ago
5.33.0.3-beta 156 3 months ago
5.33.0.2-beta 224 3 months ago
5.33.0.1-beta 261 3 months ago
5.33.0 153,171 3 months ago
5.32.0.16-beta 254 3 months ago
5.32.0.15-beta 180 3 months ago
5.32.0.14-beta 195 3 months ago
5.32.0.13-beta 322 3 months ago
5.32.0.12-beta 238 3 months ago
5.32.0.11-beta 149 3 months ago
5.32.0.10-beta 259 3 months ago
5.32.0.9-beta 149 3 months ago
5.32.0.8-beta 141 3 months ago
5.32.0.7-beta 562 3 months ago
5.32.0.6-beta 221 3 months ago
5.32.0.5-beta 254 3 months ago
5.32.0.4-beta 144 4 months ago
5.32.0.3-beta 395 4 months ago
5.32.0.2-beta 170 4 months ago
5.32.0.1-beta 258 4 months ago
5.32.0 158,616 4 months ago
5.31.0.18-beta 388 4 months ago
5.31.0.17-beta 1,652 4 months ago
5.31.0.16-beta 126 4 months ago
5.31.0.15-beta 930 4 months ago
5.31.0.14-beta 211 4 months ago
5.31.0.13-beta 154 4 months ago
5.31.0.12-beta 189 4 months ago
5.31.0.11-beta 124 4 months ago
5.31.0.10-beta 175 4 months ago
5.31.0.9-beta 588 4 months ago
5.31.0.8-beta 351 4 months ago
5.31.0.7-beta 228 4 months ago
5.31.0.6-beta 691 4 months ago
5.31.0.5-beta 553 5 months ago
5.31.0.4-beta 166 5 months ago
5.31.0.3-beta 522 5 months ago
5.31.0.2-beta 141 5 months ago
5.31.0.1-beta 281 5 months ago
5.31.0 237,124 5 months ago
5.30.0.23-beta 239 5 months ago
5.30.0.22-beta 141 5 months ago
5.30.0.21-beta 154 5 months ago
5.30.0.20-beta 124 5 months ago
5.30.0.19-beta 611 5 months ago
5.30.0.18-beta 193 5 months ago
5.30.0.17-beta 130 5 months ago
5.30.0.16-beta 161 5 months ago
5.30.0.15-beta 290 5 months ago
5.30.0.14-beta 534 5 months ago
5.30.0.13-beta 613 5 months ago
5.30.0.12-beta 118 5 months ago
5.30.0.11-beta 301 5 months ago
5.30.0.10-beta 2,263 5 months ago
5.30.0.9-beta 223 5 months ago
5.30.0.8-beta 135 5 months ago
5.30.0.7-beta 119 5 months ago
5.30.0.6-beta 834 6 months ago
5.30.0.5-beta 129 6 months ago
5.30.0.4-beta 133 6 months ago
5.30.0.3-beta 134 6 months ago
5.30.0.2-beta 115 6 months ago
5.30.0.1-beta 122 6 months ago
5.30.0 209,197 6 months ago
5.29.0.13-beta 112 6 months ago
5.29.0.12-beta 583 6 months ago
5.29.0.11-beta 974 6 months ago
5.29.0.10-beta 126 6 months ago
5.29.0.8-beta 242 6 months ago
5.29.0.7-beta 186 6 months ago
5.29.0.6-beta 166 6 months ago
5.29.0.5-beta 140 6 months ago
5.29.0.4-beta 161 6 months ago
5.29.0.3-beta 231 6 months ago
5.29.0.2-beta 161 6 months ago
5.29.0.1-beta 829 6 months ago
5.29.0 156,794 7 months ago
5.28.0.7-beta 161 7 months ago
5.28.0.6-beta 2,491 7 months ago
5.28.0.5-beta 441 7 months ago
5.28.0.4-beta 173 8 months ago
5.28.0.3-beta 379 8 months ago
5.28.0.2-beta 922 8 months ago
5.28.0.1-beta 143 8 months ago
5.28.0 189,045 8 months ago
5.27.0.14-beta 145 8 months ago
5.27.0.13-beta 640 8 months ago
5.27.0.12-beta 400 8 months ago
5.27.0.11-beta 227 8 months ago
5.27.0.10-beta 198 8 months ago
5.27.0.9-beta 167 8 months ago
5.27.0.8-beta 155 8 months ago
5.27.0.7-beta 164 8 months ago
5.27.0.6-beta 478 9 months ago
5.27.0.5-beta 403 9 months ago
5.27.0.4-beta 194 9 months ago
5.27.0.3-beta 1,897 9 months ago
5.27.0.2-beta 175 9 months ago
5.27.0.1-beta 615 9 months ago
5.27.0 282,224 9 months ago
5.26.0.27-beta 170 9 months ago
5.26.0.26-beta 172 9 months ago
5.26.0.25-beta 174 9 months ago
5.26.0.24-beta 1,092 9 months ago
5.26.0.23-beta 157 9 months ago
5.26.0.22-beta 200 9 months ago
5.26.0.21-beta 158 9 months ago
5.26.0.20-beta 236 9 months ago
5.26.0.19-beta 177 9 months ago
5.26.0.18-beta 174 9 months ago
5.26.0.17-beta 175 9 months ago
5.26.0.16-beta 174 9 months ago
5.26.0.15-beta 239 9 months ago
5.26.0.14-beta 316 9 months ago
5.26.0.13-beta 181 9 months ago
5.26.0.12-beta 200 9 months ago
5.26.0.11-beta 247 9 months ago
5.26.0.10-beta 198 9 months ago
5.26.0.9-beta 325 9 months ago
5.26.0.8-beta 162 9 months ago
5.26.0.7-beta 664 10 months ago
5.26.0.6-beta 163 10 months ago
5.26.0.5-beta 200 10 months ago
5.26.0.4-beta 180 10 months ago
5.26.0.3-beta 376 10 months ago
5.26.0.2-beta 177 10 months ago
5.26.0.1-beta 198 10 months ago
5.26.0 203,114 10 months ago
5.25.0.15-beta 1,158 10 months ago
5.25.0.14-beta 267 10 months ago
5.25.0.13-beta 224 5/24/2024
5.25.0.12-beta 339 5/22/2024
5.25.0.11-beta 173 5/22/2024
5.25.0.10-beta 2,829 5/18/2024
5.25.0.9-beta 585 5/17/2024
5.25.0.8-beta 160 5/17/2024
5.25.0.7-beta 313 5/15/2024
5.25.0.6-beta 140 5/15/2024
5.25.0.5-beta 358 5/11/2024
5.25.0.4-beta 366 5/7/2024
5.25.0.3-beta 910 5/6/2024
5.25.0.2-beta 196 5/5/2024
5.25.0.1-beta 184 5/3/2024
5.25.0 171,044 5/2/2024
5.24.0.12-beta 165 5/2/2024
5.24.0.11-beta 197 5/1/2024
5.24.0.9-beta 222 4/28/2024
5.24.0.8-beta 982 4/25/2024
5.24.0.7-beta 188 4/24/2024
5.24.0.6-beta 168 4/24/2024
5.24.0.5-beta 166 4/23/2024
5.24.0.4-beta 980 4/21/2024
5.24.0.3-beta 210 4/18/2024
5.24.0.2-beta 168 4/18/2024
5.24.0.1-beta 395 4/9/2024
5.24.0 258,569 4/1/2024
5.23.0.15-beta 312 3/28/2024
5.23.0.14-beta 299 3/26/2024
5.23.0.13-beta 393 3/24/2024
5.23.0.12-beta 610 3/22/2024
5.23.0.11-beta 290 3/21/2024
5.23.0.10-beta 404 3/19/2024
5.23.0.9-beta 338 3/15/2024
5.23.0.8-beta 378 3/14/2024
5.23.0.7-beta 266 3/14/2024
5.23.0.6-beta 285 3/13/2024
5.23.0.5-beta 917 3/11/2024
5.23.0.4-beta 1,688 3/8/2024
5.23.0.3-beta 562 3/5/2024
5.23.0.2-beta 446 3/3/2024
5.23.0.1-beta 714 2/29/2024
5.23.0 264,462 2/29/2024
5.22.0.18-beta 371 2/28/2024
5.22.0.17-beta 372 2/27/2024
5.22.0.16-beta 370 2/27/2024
5.22.0.15-beta 420 2/26/2024
5.22.0.14-beta 393 2/26/2024
5.22.0.13-beta 395 2/23/2024
5.22.0.12-beta 1,049 2/21/2024
5.22.0.11-beta 413 2/21/2024
5.22.0.10-beta 418 2/21/2024
5.22.0.9-beta 418 2/20/2024
5.22.0.8-beta 529 2/18/2024
5.22.0.7-beta 579 2/15/2024
5.22.0.6-beta 458 2/14/2024
5.22.0.5-beta 504 2/12/2024
5.22.0.4-beta 464 2/12/2024
5.22.0.3-beta 427 2/12/2024
5.22.0.2-beta 489 2/8/2024
5.22.0.1-beta 490 2/8/2024
5.22.0 159,352 2/1/2024
5.21.2.20-beta 423 1/31/2024
5.21.2.19-beta 473 1/30/2024
5.21.2.18-beta 535 1/27/2024
5.21.2.17-beta 530 1/26/2024
5.21.2.16-beta 2,324 1/21/2024
5.21.2.15-beta 523 1/18/2024
5.21.2.14-beta 600 1/17/2024
5.21.2.13-beta 502 1/16/2024
5.21.2.12-beta 515 1/15/2024
5.21.2.11-beta 487 1/13/2024
5.21.2.10-beta 535 1/12/2024
5.21.2.9-beta 543 1/11/2024
5.21.2.8-beta 523 1/10/2024
5.21.2.7-beta 519 1/10/2024
5.21.2.6-beta 565 1/9/2024
5.21.2.5-beta 605 1/9/2024
5.21.2.4-beta 588 1/7/2024
5.21.2.3-beta 532 1/6/2024
5.21.2.2-beta 561 1/4/2024
5.21.2.1-beta 510 1/4/2024
5.21.2 211,554 1/2/2024
5.21.1.1-beta 510 1/2/2024
5.21.1 904 1/2/2024
5.21.0 6,527 1/2/2024
5.20.1.12-beta 597 12/30/2023
5.20.1.11-beta 517 12/30/2023
5.20.1.10-beta 531 12/29/2023
5.20.1.9-beta 554 12/29/2023
5.20.1.8-beta 598 12/27/2023
5.20.1.7-beta 4,371 12/18/2023
5.20.1.6-beta 629 12/15/2023
5.20.1.5-beta 689 12/13/2023
5.20.1.4-beta 485 12/12/2023
5.20.1.3-beta 583 12/9/2023
5.20.1.2-beta 561 12/8/2023
5.20.1.1-beta 833 12/7/2023
5.20.1 92,496 12/1/2023
5.20.0.2-beta 575 11/30/2023
5.20.0.1-beta 519 11/30/2023
5.20.0 50,965 11/28/2023
5.20.0-rc2 2,570 11/26/2023
5.20.0-rc1 2,079 11/18/2023
5.19.2 68,198 11/7/2023
5.19.1 15,151 11/4/2023
5.19.0.13-beta 597 11/15/2023
5.19.0.12-beta 530 11/15/2023
5.19.0.11-beta 533 11/15/2023
5.19.0.10-beta 566 11/9/2023
5.19.0.9-beta 513 11/7/2023
5.19.0.8-beta 487 11/6/2023
5.19.0.7-beta 547 11/4/2023
5.19.0.6-beta 518 11/3/2023
5.19.0.5-beta 530 11/2/2023
5.19.0.4-beta 531 11/2/2023
5.19.0.3-beta 552 11/1/2023
5.19.0.2-beta 517 10/31/2023
5.19.0.1-beta 514 10/29/2023
5.19.0 16,481 10/29/2023
5.18.0.9-beta 549 10/27/2023
5.18.0.8-beta 643 10/25/2023
5.18.0.7-beta 576 10/24/2023
5.18.0.6-beta 601 10/19/2023
5.18.0.5-beta 1,102 10/14/2023
5.18.0.4-beta 552 10/12/2023
5.18.0.3-beta 527 10/12/2023
5.18.0.2-beta 591 10/11/2023
5.18.0.1-beta 646 10/5/2023
5.18.0 115,826 10/1/2023
5.17.1.32-beta 533 10/1/2023
5.17.1.31-beta 563 9/29/2023
5.17.1.30-beta 515 9/29/2023
5.17.1.29-beta 974 9/28/2023
5.17.1.28-beta 530 9/27/2023
5.17.1.27-beta 545 9/27/2023
5.17.1.26-beta 519 9/27/2023
5.17.1.25-beta 575 9/26/2023
5.17.1.24-beta 539 9/24/2023
5.17.1.23-beta 508 9/23/2023
5.17.1.22-beta 507 9/23/2023
5.17.1.21-beta 508 9/22/2023
5.17.1.20-beta 519 9/21/2023
5.17.1.19-beta 1,072 9/13/2023
5.17.1.18-beta 550 9/12/2023
5.17.1.17-beta 552 9/12/2023
5.17.1.16-beta 528 9/11/2023
5.17.1.15-beta 555 9/10/2023
5.17.1.14-beta 543 9/9/2023
5.17.1.13-beta 541 9/8/2023
5.17.1.12-beta 502 9/8/2023
5.17.1.11-beta 559 9/8/2023
5.17.1.10-beta 497 9/8/2023
5.17.1.9-beta 506 9/8/2023
5.17.1.8-beta 570 9/7/2023
5.17.1.7-beta 549 9/7/2023
5.17.1.6-beta 1,053 9/7/2023
5.17.1.5-beta 593 9/6/2023
5.17.1.4-beta 484 9/6/2023
5.17.1.3-beta 578 9/6/2023
5.17.1.2-beta 555 9/5/2023
5.17.1.1 41,767 9/5/2023
5.17.1 2,791 9/4/2023
5.17.0.2-beta 499 9/4/2023
5.17.0.1-beta 541 9/4/2023
5.17.0 1,513 9/3/2023
5.16.0.4-beta 530 9/3/2023
5.16.0.3-beta 572 9/2/2023
5.16.0.2-beta 533 8/31/2023
5.16.0.1-beta 557 8/30/2023
5.16.0 25,942 8/30/2023
5.15.0.22-beta 704 8/26/2023
5.15.0.21-beta 595 8/24/2023
5.15.0.20-beta 1,177 8/23/2023
5.15.0.19-beta 534 8/23/2023
5.15.0.18-beta 569 8/18/2023
5.15.0.17-beta 1,113 8/16/2023
5.15.0.16-beta 610 8/14/2023
5.15.0.15-beta 508 8/14/2023
5.15.0.14-beta 549 8/13/2023
5.15.0.12-beta 515 8/11/2023
5.15.0.11-beta 645 8/10/2023
5.15.0.9-beta 532 8/10/2023
5.15.0.8-beta 525 8/10/2023
5.15.0.7-beta 512 8/10/2023
5.15.0.6-beta 544 8/10/2023
5.15.0.5-beta 520 8/9/2023
5.15.0.4-beta 577 8/9/2023
5.15.0.3-beta 535 8/8/2023
5.15.0.2-beta 4,008 8/4/2023
5.15.0.1-beta 682 8/4/2023
5.15.0 99,711 8/1/2023
5.14.0.7-beta 579 7/31/2023
5.14.0.6-beta 549 7/30/2023
5.14.0.5-beta 577 7/29/2023
5.14.0.4-beta 514 7/28/2023
5.14.0.3-beta 590 7/28/2023
5.14.0.2-beta 592 7/26/2023
5.14.0.1-beta 850 7/20/2023
5.14.0 43,718 7/16/2023
5.13.0.9-beta 532 7/14/2023
5.13.0.8-beta 561 7/12/2023
5.13.0.7-beta 563 7/11/2023
5.13.0.6-beta 499 7/11/2023
5.13.0.5-beta 524 7/10/2023
5.13.0.4-beta 553 7/8/2023
5.13.0.3-beta 569 7/7/2023
5.13.0.2-beta 568 7/6/2023
5.13.0.1-beta 559 6/27/2023
5.13.0 59,085 6/24/2023
5.12.0.4-beta 528 6/23/2023
5.12.0.3-beta 615 6/19/2023
5.12.0.2-beta 552 6/18/2023
5.12.0.1-beta 774 6/14/2023
5.12.0 30,096 6/11/2023
5.11.0.6-beta 544 6/10/2023
5.11.0.5-beta 557 6/9/2023
5.11.0.4-beta 601 6/8/2023
5.11.0.3-beta 662 6/6/2023
5.11.0.2-beta 633 5/31/2023
5.11.0.1-beta 549 5/30/2023
5.11.0 38,478 5/27/2023
5.10.0.5-beta 568 5/24/2023
5.10.0.4-beta 571 5/22/2023
5.10.0.3-beta 891 5/7/2023
5.10.0.2-beta 543 5/6/2023
5.10.0.1-beta 611 5/3/2023
5.10.0 101,147 4/30/2023
5.9.0.4-beta 580 4/29/2023
5.9.0.3-beta 554 4/29/2023
5.9.0.2-beta 1,292 4/25/2023
5.9.0.1-beta 588 4/24/2023
5.9.0 63,489 4/22/2023
5.8.1.15-beta 550 4/21/2023
5.8.1.14-beta 590 4/21/2023
5.8.1.13-beta 610 4/20/2023
5.8.1.12-beta 511 4/20/2023
5.8.1.11-beta 552 4/20/2023
5.8.1.10-beta 540 4/19/2023
5.8.1.9-beta 594 4/18/2023
5.8.1.8-beta 790 4/16/2023
5.8.1.7-beta 642 4/10/2023
5.8.1.6-beta 528 4/8/2023
5.8.1.5-beta 535 4/8/2023
5.8.1.4-beta 514 4/7/2023
5.8.1.3-beta 654 3/30/2023
5.8.1.2-beta 716 3/30/2023
5.8.1.1-beta 711 3/29/2023
5.8.1 67,071 3/24/2023
5.8.0.8-beta 557 3/23/2023
5.8.0.7-beta 543 3/23/2023
5.8.0.6-beta 568 3/20/2023
5.8.0.5-beta 568 3/17/2023
5.8.0.4-beta 556 3/17/2023
5.8.0.3-beta 626 3/13/2023
5.8.0.2-beta 740 3/8/2023
5.8.0.1-beta 560 3/6/2023
5.8.0 40,911 3/5/2023
5.7.2.14-beta 578 3/4/2023
5.7.2.13-beta 630 3/2/2023
5.7.2.12-beta 1,515 3/2/2023
5.7.2.11-beta 525 3/2/2023
5.7.2.10-beta 617 3/1/2023
5.7.2.9-beta 608 2/28/2023
5.7.2.8-beta 580 2/28/2023
5.7.2.7-beta 537 2/28/2023
5.7.2.6-beta 542 2/27/2023
5.7.2.5-beta 558 2/26/2023
5.7.2.4-beta 651 2/24/2023
5.7.2.3-beta 569 2/23/2023
5.7.2.2-beta 566 2/22/2023
5.7.2.1-beta 617 2/19/2023
5.7.2 86,815 2/14/2023
5.7.1.1-beta 569 2/13/2023
5.7.1 15,518 2/9/2023
5.7.0.4-beta 831 2/6/2023
5.7.0.3-beta 556 2/6/2023
5.7.0.2-beta 755 2/3/2023
5.7.0.1-beta 594 1/31/2023
5.7.0 28,146 1/29/2023
5.6.0.6-beta 597 1/28/2023
5.6.0.5-beta 691 1/26/2023
5.6.0.4-beta 617 1/25/2023
5.6.0.3-beta 836 1/18/2023
5.6.0.2-beta 540 1/18/2023
5.6.0.1-beta 619 1/17/2023
5.6.0 98,499 1/2/2023
5.5.0.5-beta 1,300 12/19/2022
5.5.0.4-beta 589 12/17/2022
5.5.0.3-beta 915 12/12/2022
5.5.0.2-beta 556 12/12/2022
5.5.0.1-beta 556 12/10/2022
5.5.0 52,944 12/9/2022
5.4.1.7-beta 582 12/7/2022
5.4.1.6-beta 1,044 11/26/2022
5.4.1.5-beta 559 11/25/2022
5.4.1.4-beta 662 11/21/2022
5.4.1.3-beta 570 11/19/2022
5.4.1.2-beta 571 11/19/2022
5.4.1.1-beta 597 11/18/2022
5.4.1 65,146 11/18/2022
5.4.0.2-beta 538 11/17/2022
5.4.0.1-beta 1,071 11/10/2022
5.4.0 13,225 11/9/2022
5.3.2.13-beta 546 11/9/2022
5.3.2.12-beta 548 11/8/2022
5.3.2.11-beta 640 11/8/2022
5.3.2.10-beta 529 11/8/2022
5.3.2.9-beta 561 11/7/2022
5.3.2.8-beta 525 11/7/2022
5.3.2.7-beta 547 11/7/2022
5.3.2.6-beta 520 11/7/2022
5.3.2.5-beta 557 11/7/2022
5.3.2.4-beta 563 11/6/2022
5.3.2.3-beta 521 11/6/2022
5.3.2.2-beta 539 11/5/2022
5.3.2.1-beta 542 11/4/2022
5.3.2 36,518 11/4/2022
5.3.1.5-beta 521 11/3/2022
5.3.1.4-beta 557 11/3/2022
5.3.1.3-beta 555 11/2/2022
5.3.1.2-beta 537 11/2/2022
5.3.1.1-beta 502 11/2/2022
5.3.1 11,132 10/31/2022
5.3.0.1-beta 565 10/30/2022
5.3.0 1,310 10/29/2022
5.3.0-beta 560 10/28/2022
5.2.1.17-beta 555 10/28/2022
5.2.1.16-beta 644 10/26/2022
5.2.1.15-beta 518 10/26/2022
5.2.1.14-beta 568 10/26/2022
5.2.1.13-beta 601 10/25/2022
5.2.1.12-beta 578 10/25/2022
5.2.1.11-beta 532 10/25/2022
5.2.1.10-beta 561 10/24/2022
5.2.1.9-beta 632 10/21/2022
5.2.1.8-beta 579 10/20/2022
5.2.1.7-beta 1,581 10/19/2022
5.2.1.6-beta 611 10/19/2022
5.2.1.5-beta 853 10/18/2022
5.2.1.4-beta 553 10/17/2022
5.2.1.3-beta 527 10/17/2022
5.2.1.2-beta 556 10/16/2022
5.2.1.1-beta 579 10/15/2022
5.2.1 23,109 10/15/2022
5.2.0.2-beta 501 10/15/2022
5.2.0.1-beta 568 10/14/2022
5.2.0 2,558 10/13/2022
5.2.0-beta9 1,017 9/16/2022
5.2.0-beta8 612 9/16/2022
5.2.0-beta7 639 9/14/2022
5.2.0-beta6 629 9/14/2022
5.2.0-beta5 599 9/14/2022
5.2.0-beta4 577 9/13/2022
5.2.0-beta3 571 9/12/2022
5.2.0-beta28 612 10/13/2022
5.2.0-beta27 596 10/12/2022
5.2.0-beta26 526 10/9/2022
5.2.0-beta25 525 10/6/2022
5.2.0-beta24 558 10/6/2022
5.2.0-beta23 528 10/5/2022
5.2.0-beta22 534 9/30/2022
5.2.0-beta21 578 9/27/2022
5.2.0-beta20 584 9/26/2022
5.2.0-beta2 658 9/10/2022
5.2.0-beta19 574 9/25/2022
5.2.0-beta18 587 9/25/2022
5.2.0-beta17 550 9/23/2022
5.2.0-beta16 538 9/22/2022
5.2.0-beta15 641 9/20/2022
5.2.0-beta14 542 9/20/2022
5.2.0-beta13 589 9/19/2022
5.2.0-beta12 599 9/19/2022
5.2.0-beta11 578 9/17/2022
5.2.0-beta10 571 9/16/2022
5.2.0-beta1 555 9/10/2022
5.1.1-beta5 626 9/10/2022
5.1.1-beta4 576 9/9/2022
5.1.1-beta3 550 9/9/2022
5.1.1-beta2 528 9/9/2022
5.1.1-beta1 526 9/8/2022
5.1.0 35,205 9/8/2022
5.1.0-beta9 765 8/31/2022
5.1.0-beta8 542 8/29/2022
5.1.0-beta7 549 8/29/2022
5.1.0-beta6 593 8/28/2022
5.1.0-beta5 517 8/27/2022
5.1.0-beta4 534 8/27/2022
5.1.0-beta3 614 8/26/2022
5.1.0-beta2 546 8/25/2022
5.1.0-beta17 556 9/7/2022
5.1.0-beta16 526 9/7/2022
5.1.0-beta15 1,094 9/5/2022
5.1.0-beta14 563 9/4/2022
5.1.0-beta13 564 9/2/2022
5.1.0-beta12 534 9/1/2022
5.1.0-beta11 574 9/1/2022
5.1.0-beta10 505 8/31/2022
5.1.0-beta1 539 8/25/2022
5.0.0 22,884 8/24/2022
5.0.0-beta9 639 8/21/2022
5.0.0-beta8 544 8/20/2022
5.0.0-beta7 539 8/20/2022
5.0.0-beta6 635 8/18/2022
5.0.0-beta5 717 8/17/2022
5.0.0-beta4 526 8/17/2022
5.0.0-beta3 552 8/16/2022
5.0.0-beta2 602 8/15/2022
5.0.0-beta13 491 8/23/2022
5.0.0-beta12 624 8/23/2022
5.0.0-beta11 650 8/22/2022
5.0.0-beta10 523 8/22/2022
5.0.0-beta1 545 8/15/2022
4.5.0-beta9 1,073 8/13/2022
4.5.0-beta8 614 8/12/2022
4.5.0-beta7 674 8/11/2022
4.5.0-beta6 734 8/9/2022
4.5.0-beta5 520 8/8/2022
4.5.0-beta4 626 8/8/2022
4.5.0-beta3 541 8/8/2022
4.5.0-beta2 570 8/8/2022
4.5.0-beta15 562 8/15/2022
4.5.0-beta14 570 8/14/2022
4.5.0-beta13 564 8/14/2022
4.5.0-beta12 541 8/14/2022
4.5.0-beta11 558 8/14/2022
4.5.0-beta10 526 8/13/2022
4.5.0-beta1 582 8/4/2022
4.4.0 30,718 8/3/2022
4.4.0-beta9 549 8/2/2022
4.4.0-beta8 550 7/31/2022
4.4.0-beta7 542 7/28/2022
4.4.0-beta6 617 7/24/2022
4.4.0-beta5 575 7/24/2022
4.4.0-beta4 561 7/23/2022
4.4.0-beta3 573 7/22/2022
4.4.0-beta2 563 7/22/2022
4.4.0-beta1 582 7/20/2022
4.3.2-beta1 662 7/13/2022
4.3.1 24,304 7/13/2022
4.3.1-beta5 760 7/10/2022
4.3.1-beta4 722 7/3/2022
4.3.1-beta3 556 7/2/2022
4.3.1-beta2 1,492 7/2/2022
4.3.1-beta1 616 6/30/2022
4.3.0 74,328 6/17/2022
4.3.0-beta9 1,138 5/30/2022
4.3.0-beta8 566 5/29/2022
4.3.0-beta7 678 5/27/2022
4.3.0-beta6 662 5/25/2022
4.3.0-beta5 630 5/24/2022
4.3.0-beta4 566 5/24/2022
4.3.0-beta3 536 5/23/2022
4.3.0-beta2 626 5/21/2022
4.3.0-beta11 542 6/3/2022
4.3.0-beta10 522 5/31/2022
4.3.0-beta1 586 5/20/2022
4.2.1-beta2 549 5/19/2022
4.2.1-beta1 542 5/19/2022
4.2.0 14,001 5/19/2022
4.2.0-beta9 769 5/13/2022
4.2.0-beta8 553 5/13/2022
4.2.0-beta7 598 5/11/2022
4.2.0-beta6 580 5/11/2022
4.2.0-beta5 571 5/10/2022
4.2.0-beta4 568 5/9/2022
4.2.0-beta3 599 5/7/2022
4.2.0-beta2 563 5/6/2022
4.2.0-beta10 550 5/18/2022
4.2.0-beta1 690 4/28/2022
4.1.0 14,473 4/26/2022
4.1.0-beta8 8,421 4/26/2022
4.1.0-beta7 581 4/26/2022
4.1.0-beta6 544 4/24/2022
4.1.0-beta5 520 4/23/2022
4.1.0-beta4 660 4/10/2022
4.1.0-beta3 581 4/6/2022
4.1.0-beta2 820 4/2/2022
4.1.0-beta1 611 3/31/2022
4.0.0 42,523 3/30/2022
4.0.0-beta6 641 3/26/2022
4.0.0-beta5 609 3/24/2022
4.0.0-beta4 575 3/23/2022
4.0.0-beta3 596 3/22/2022
4.0.0-beta2 580 3/22/2022
4.0.0-beta1 538 3/22/2022
3.12.1-beta2 574 3/22/2022
3.12.1-beta1 553 3/21/2022
3.11.0 7,997 3/21/2022
3.11.0-beta9 604 3/17/2022
3.11.0-beta8 533 3/16/2022
3.11.0-beta7 579 3/15/2022
3.11.0-beta6 579 3/14/2022
3.11.0-beta5 551 3/14/2022
3.11.0-beta4 572 3/14/2022
3.11.0-beta3 556 3/13/2022
3.11.0-beta2 566 3/13/2022
3.11.0-beta12 578 3/18/2022
3.11.0-beta11 725 3/17/2022
3.11.0-beta10 538 3/17/2022
3.11.0-beta1 575 3/10/2022
3.10.0 5,251 3/10/2022
3.10.0-beta7 574 3/9/2022
3.10.0-beta6 567 3/9/2022
3.10.0-beta5 598 3/8/2022
3.10.0-beta4 571 3/8/2022
3.10.0-beta3 537 3/8/2022
3.10.0-beta2 621 3/5/2022
3.10.0-beta1 556 3/5/2022
3.9.1 1,752 3/4/2022
3.9.0-beta9 575 3/2/2022
3.9.0-beta8 576 3/1/2022
3.9.0-beta7 550 3/1/2022
3.9.0-beta6 561 3/1/2022
3.9.0-beta5 551 3/1/2022
3.9.0-beta4 546 3/1/2022
3.9.0-beta3 560 2/28/2022
3.9.0-beta2 545 2/28/2022
3.9.0-beta13 555 3/4/2022
3.9.0-beta12 585 3/4/2022
3.9.0-beta11 589 3/3/2022
3.9.0-beta10 541 3/2/2022
3.9.0-beta1 567 2/27/2022
3.8.1 3,330 2/27/2022
3.8.0 1,463 2/26/2022
3.7.1-beta2 598 2/25/2022
3.7.1-beta1 514 2/25/2022
3.7.0 1,355 2/25/2022
3.6.0 1,505 2/23/2022
3.6.0-beta8 574 2/23/2022
3.6.0-beta7 550 2/23/2022
3.6.0-beta6 572 2/23/2022
3.6.0-beta5 558 2/22/2022
3.6.0-beta4 580 2/22/2022
3.6.0-beta3 569 2/21/2022
3.6.0-beta2 557 2/21/2022
3.6.0-beta1 576 2/19/2022
3.5.1 1,321 2/19/2022
3.5.1-beta4 586 2/18/2022
3.5.1-beta3 566 2/18/2022
3.5.1-beta2 587 2/18/2022
3.5.1-beta1 576 2/18/2022
3.5.0 1,388 2/16/2022
3.5.0-beta9 548 2/15/2022
3.5.0-beta8 585 2/15/2022
3.5.0-beta7 534 2/14/2022
3.5.0-beta6 604 2/14/2022
3.5.0-beta5 585 2/14/2022
3.5.0-beta4 571 2/14/2022
3.5.0-beta3 566 2/10/2022
3.5.0-beta2 606 2/9/2022
3.5.0-beta10 556 2/16/2022
3.5.0-beta1 562 2/9/2022
3.4.1 1,353 2/13/2022
3.4.0 1,757 2/7/2022
3.4.0-beta2 582 2/6/2022
3.4.0-beta1 559 2/6/2022
3.3.0 1,227 2/5/2022
3.3.0-beta4 606 2/4/2022
3.3.0-beta3 693 2/3/2022
3.3.0-beta2 549 2/3/2022
3.3.0-beta1 608 2/3/2022
3.2.2 1,317 2/2/2022
3.2.1 1,336 2/1/2022
3.2.1-beta1 542 1/30/2022
3.2.0 2,556 1/30/2022
3.2.0-beta6 579 1/30/2022
3.2.0-beta5 518 1/29/2022
3.2.0-beta4 568 1/29/2022
3.2.0-beta3 574 1/28/2022
3.2.0-beta2 598 1/28/2022
3.2.0-beta1 580 1/25/2022
3.1.4 2,895 1/27/2022
3.1.3 1,440 1/26/2022
3.1.3-beta1 598 1/26/2022
3.1.2 1,301 1/25/2022
3.1.1 1,271 1/24/2022
3.1.0 1,216 1/24/2022
3.0.0 1,228 1/22/2022
3.0.0-beta1 569 1/22/2022
2.21.0-beta9 1,470 1/19/2022
2.21.0-beta8 547 1/19/2022
2.21.0-beta7 541 1/18/2022
2.21.0-beta6 524 1/18/2022
2.21.0-beta5 563 1/18/2022
2.21.0-beta4 514 1/18/2022
2.21.0-beta3 569 1/18/2022
2.21.0-beta2 534 1/17/2022
2.21.0-beta15 557 1/21/2022
2.21.0-beta14 549 1/21/2022
2.21.0-beta13 527 1/20/2022
2.21.0-beta12 573 1/20/2022
2.21.0-beta11 515 1/19/2022
2.21.0-beta10 581 1/19/2022
2.21.0-beta1 554 1/16/2022
2.20.0 998 1/16/2022
2.20.0-beta3 534 1/16/2022
2.20.0-beta2 566 1/15/2022
2.20.0-beta1 576 1/15/2022
2.19.2 1,183 1/14/2022
2.19.1 1,085 1/10/2022
2.19.0 1,011 1/10/2022
2.19.0-beta2 569 1/9/2022
2.19.0-beta1 592 1/6/2022
2.18.1 1,086 1/2/2022
2.18.0 1,032 12/31/2021
2.18.0-beta2 599 12/30/2021
2.18.0-beta1 530 12/30/2021
2.17.0 1,034 12/29/2021
2.17.0-beta2 564 12/28/2021
2.17.0-beta1 572 12/27/2021
2.16.0 1,072 12/25/2021
2.15.0 1,033 12/23/2021
2.15.0-beta2 559 12/22/2021
2.15.0-beta1 559 12/22/2021
2.14.0 996 12/21/2021
2.14.0-beta1 561 12/20/2021
2.13.1 1,025 12/20/2021
2.13.0 987 12/19/2021
2.12.0 817 12/17/2021
2.12.0-beta2 507 12/16/2021
2.12.0-beta1 567 12/16/2021
2.11.0 853 12/15/2021
2.10.1-beta1 570 12/15/2021
2.10.0 6,399 11/24/2021
2.10.0-beta2 5,462 11/24/2021
2.10.0-beta1 601 11/18/2021
2.9.1 890 11/9/2021
2.9.0 898 11/4/2021
2.9.0-beta3 618 11/1/2021
2.9.0-beta2 661 10/25/2021
2.9.0-beta1 717 10/24/2021
2.8.1 1,001 10/24/2021
2.8.0 859 10/24/2021
2.8.0-beta1 598 10/23/2021
2.7.1 950 10/23/2021
2.7.0 860 10/23/2021
2.6.0 991 10/21/2021
2.5.1 842 10/20/2021
2.5.0 856 10/20/2021
2.5.0-beta1 635 10/19/2021
2.4.0 850 10/19/2021
2.3.0 835 10/18/2021
2.3.0-beta2 623 10/18/2021
2.2.1 860 10/17/2021
2.2.0 896 10/17/2021
2.1.1 911 10/16/2021
2.1.0 903 10/16/2021
2.1.0-beta5 638 10/16/2021
2.1.0-beta4 667 10/16/2021
2.1.0-beta3 670 10/16/2021
2.1.0-beta2 581 10/15/2021
2.1.0-beta1 599 10/15/2021
2.0.0 893 10/14/2021
1.9.0 918 10/13/2021
1.8.0 843 10/12/2021
1.8.0-beta1 567 10/11/2021
1.7.0 951 10/10/2021
1.6.0 939 10/7/2021
1.6.0-beta5 601 10/6/2021
1.6.0-beta4 608 10/6/2021
1.6.0-beta3 580 10/5/2021
1.6.0-beta2 580 10/5/2021
1.6.0-beta1 598 10/5/2021
1.5.0 860 10/4/2021
1.4.0 898 10/3/2021
1.3.0 872 10/1/2021
1.2.0 874 9/29/2021
1.1.0 884 9/29/2021
1.0.0 9,676 9/28/2021
1.0.0-rc6 586 9/28/2021
1.0.0-rc5 598 9/27/2021
1.0.0-rc4 594 9/27/2021
1.0.0-rc3 664 9/27/2021
1.0.0-rc2 632 9/27/2021
1.0.0-rc1 623 9/27/2021
1.0.0-beta6 605 9/26/2021
1.0.0-beta5 560 9/26/2021
1.0.0-beta4 650 9/26/2021
1.0.0-beta3 618 9/25/2021
1.0.0-beta2 673 9/25/2021

WARNING: this is a beta release. do not use in production!