FastEndpoints 1.0.0-beta3

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-beta3
NuGet\Install-Package FastEndpoints -Version 1.0.0-beta3
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-beta3" />
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add FastEndpoints --version 1.0.0-beta3
#r "nuget: FastEndpoints, 1.0.0-beta3"
#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-beta3&prerelease

// Install FastEndpoints as a Cake Tool
#tool nuget:?package=FastEndpoints&version=1.0.0-beta3&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 : IRequest
{
    [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; }
}

Response DTO

public class Response : IResponse
{
    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 authentication
    }

    protected override async Task ExecuteAsync(MyRequest req, CancellationToken ct)
    {
        //can do further validation here in addition to FluentValidations 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. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages (31)

Showing the top 5 NuGet packages that depend on FastEndpoints:

Package Downloads
FastEndpoints.Swagger

Swagger support for FastEndpoints.

FastEndpoints.Security

Security library for FastEndpoints.

FastEndpoints.ApiExplorer

Package Description

FastEndpoints.Reflection

Package Description

FastEndpoints.Swagger.Swashbuckle

Package Description

GitHub repositories (7)

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

Repository Stars
ardalis/CleanArchitecture
Clean Architecture Solution Template: A starting point for Clean Architecture with ASP.NET Core
elsa-workflows/elsa-core
A .NET workflows library
Elfocrash/clean-minimal-api
A project showcasing how you can build a clean Minimal API using FastEndpoints
CircumSpector/DS4Windows
A reimagination of DS4Windows.
Elfocrash/aws-videos
Version Downloads Last updated
5.24.0.3-beta 0 4/18/2024
5.24.0.2-beta 0 4/18/2024
5.24.0.1-beta 176 4/9/2024
5.24.0 3,599 4/1/2024
5.23.0.15-beta 139 3/28/2024
5.23.0.14-beta 151 3/26/2024
5.23.0.13-beta 174 3/24/2024
5.23.0.12-beta 186 3/22/2024
5.23.0.11-beta 136 3/21/2024
5.23.0.10-beta 225 3/19/2024
5.23.0.9-beta 203 3/15/2024
5.23.0.8-beta 202 3/14/2024
5.23.0.7-beta 125 3/14/2024
5.23.0.6-beta 133 3/13/2024
5.23.0.5-beta 451 3/11/2024
5.23.0.4-beta 368 3/8/2024
5.23.0.3-beta 366 3/5/2024
5.23.0.2-beta 317 3/3/2024
5.23.0.1-beta 480 2/29/2024
5.23.0 42,547 2/29/2024
5.22.0.18-beta 237 2/28/2024
5.22.0.17-beta 254 2/27/2024
5.22.0.16-beta 226 2/27/2024
5.22.0.15-beta 273 2/26/2024
5.22.0.14-beta 253 2/26/2024
5.22.0.13-beta 265 2/23/2024
5.22.0.12-beta 315 2/21/2024
5.22.0.11-beta 276 2/21/2024
5.22.0.10-beta 261 2/21/2024
5.22.0.9-beta 267 2/20/2024
5.22.0.8-beta 377 2/18/2024
5.22.0.7-beta 425 2/15/2024
5.22.0.6-beta 291 2/14/2024
5.22.0.5-beta 354 2/12/2024
5.22.0.4-beta 321 2/12/2024
5.22.0.3-beta 290 2/12/2024
5.22.0.2-beta 340 2/8/2024
5.22.0.1-beta 303 2/8/2024
5.22.0 62,716 2/1/2024
5.21.2.20-beta 314 1/31/2024
5.21.2.19-beta 345 1/30/2024
5.21.2.18-beta 361 1/27/2024
5.21.2.17-beta 373 1/26/2024
5.21.2.16-beta 884 1/21/2024
5.21.2.15-beta 384 1/18/2024
5.21.2.14-beta 454 1/17/2024
5.21.2.13-beta 379 1/16/2024
5.21.2.12-beta 369 1/15/2024
5.21.2.11-beta 347 1/13/2024
5.21.2.10-beta 380 1/12/2024
5.21.2.9-beta 390 1/11/2024
5.21.2.8-beta 369 1/10/2024
5.21.2.7-beta 370 1/10/2024
5.21.2.6-beta 405 1/9/2024
5.21.2.5-beta 450 1/9/2024
5.21.2.4-beta 455 1/7/2024
5.21.2.3-beta 399 1/6/2024
5.21.2.2-beta 405 1/4/2024
5.21.2.1-beta 403 1/4/2024
5.21.2 90,104 1/2/2024
5.21.1.1-beta 390 1/2/2024
5.21.1 588 1/2/2024
5.21.0 846 1/2/2024
5.20.1.12-beta 410 12/30/2023
5.20.1.11-beta 368 12/30/2023
5.20.1.10-beta 395 12/29/2023
5.20.1.9-beta 418 12/29/2023
5.20.1.8-beta 440 12/27/2023
5.20.1.7-beta 2,296 12/18/2023
5.20.1.6-beta 484 12/15/2023
5.20.1.5-beta 526 12/13/2023
5.20.1.4-beta 342 12/12/2023
5.20.1.3-beta 437 12/9/2023
5.20.1.2-beta 426 12/8/2023
5.20.1.1-beta 687 12/7/2023
5.20.1 50,190 12/1/2023
5.20.0.2-beta 458 11/30/2023
5.20.0.1-beta 392 11/30/2023
5.20.0 15,597 11/28/2023
5.20.0-rc2 1,250 11/26/2023
5.20.0-rc1 1,841 11/18/2023
5.19.2 44,222 11/7/2023
5.19.1 8,034 11/4/2023
5.19.0.13-beta 469 11/15/2023
5.19.0.12-beta 386 11/15/2023
5.19.0.11-beta 394 11/15/2023
5.19.0.10-beta 444 11/9/2023
5.19.0.9-beta 401 11/7/2023
5.19.0.8-beta 370 11/6/2023
5.19.0.7-beta 435 11/4/2023
5.19.0.6-beta 400 11/3/2023
5.19.0.5-beta 404 11/2/2023
5.19.0.4-beta 408 11/2/2023
5.19.0.3-beta 423 11/1/2023
5.19.0.2-beta 412 10/31/2023
5.19.0.1-beta 394 10/29/2023
5.19.0 11,098 10/29/2023
5.18.0.9-beta 408 10/27/2023
5.18.0.8-beta 493 10/25/2023
5.18.0.7-beta 442 10/24/2023
5.18.0.6-beta 464 10/19/2023
5.18.0.5-beta 891 10/14/2023
5.18.0.4-beta 429 10/12/2023
5.18.0.3-beta 379 10/12/2023
5.18.0.2-beta 414 10/11/2023
5.18.0.1-beta 508 10/5/2023
5.18.0 46,759 10/1/2023
5.17.1.32-beta 415 10/1/2023
5.17.1.31-beta 450 9/29/2023
5.17.1.30-beta 400 9/29/2023
5.17.1.29-beta 644 9/28/2023
5.17.1.28-beta 406 9/27/2023
5.17.1.27-beta 429 9/27/2023
5.17.1.26-beta 398 9/27/2023
5.17.1.25-beta 459 9/26/2023
5.17.1.24-beta 413 9/24/2023
5.17.1.23-beta 402 9/23/2023
5.17.1.22-beta 377 9/23/2023
5.17.1.21-beta 380 9/22/2023
5.17.1.20-beta 393 9/21/2023
5.17.1.19-beta 959 9/13/2023
5.17.1.18-beta 425 9/12/2023
5.17.1.17-beta 440 9/12/2023
5.17.1.16-beta 409 9/11/2023
5.17.1.15-beta 422 9/10/2023
5.17.1.14-beta 399 9/9/2023
5.17.1.13-beta 425 9/8/2023
5.17.1.12-beta 386 9/8/2023
5.17.1.11-beta 443 9/8/2023
5.17.1.10-beta 354 9/8/2023
5.17.1.9-beta 386 9/8/2023
5.17.1.8-beta 440 9/7/2023
5.17.1.7-beta 426 9/7/2023
5.17.1.6-beta 930 9/7/2023
5.17.1.5-beta 447 9/6/2023
5.17.1.4-beta 374 9/6/2023
5.17.1.3-beta 404 9/6/2023
5.17.1.2-beta 445 9/5/2023
5.17.1.1 35,249 9/5/2023
5.17.1 1,730 9/4/2023
5.17.0.2-beta 385 9/4/2023
5.17.0.1-beta 407 9/4/2023
5.17.0 1,327 9/3/2023
5.16.0.4-beta 414 9/3/2023
5.16.0.3-beta 430 9/2/2023
5.16.0.2-beta 408 8/31/2023
5.16.0.1-beta 432 8/30/2023
5.16.0 12,356 8/30/2023
5.15.0.22-beta 577 8/26/2023
5.15.0.21-beta 467 8/24/2023
5.15.0.20-beta 615 8/23/2023
5.15.0.19-beta 402 8/23/2023
5.15.0.18-beta 449 8/18/2023
5.15.0.17-beta 458 8/16/2023
5.15.0.16-beta 489 8/14/2023
5.15.0.15-beta 405 8/14/2023
5.15.0.14-beta 426 8/13/2023
5.15.0.12-beta 405 8/11/2023
5.15.0.11-beta 512 8/10/2023
5.15.0.9-beta 401 8/10/2023
5.15.0.8-beta 415 8/10/2023
5.15.0.7-beta 393 8/10/2023
5.15.0.6-beta 421 8/10/2023
5.15.0.5-beta 413 8/9/2023
5.15.0.4-beta 434 8/9/2023
5.15.0.3-beta 413 8/8/2023
5.15.0.2-beta 1,804 8/4/2023
5.15.0.1-beta 524 8/4/2023
5.15.0 74,586 8/1/2023
5.14.0.7-beta 468 7/31/2023
5.14.0.6-beta 429 7/30/2023
5.14.0.5-beta 445 7/29/2023
5.14.0.4-beta 405 7/28/2023
5.14.0.3-beta 436 7/28/2023
5.14.0.2-beta 483 7/26/2023
5.14.0.1-beta 711 7/20/2023
5.14.0 29,011 7/16/2023
5.13.0.9-beta 415 7/14/2023
5.13.0.8-beta 423 7/12/2023
5.13.0.7-beta 445 7/11/2023
5.13.0.6-beta 385 7/11/2023
5.13.0.5-beta 399 7/10/2023
5.13.0.4-beta 431 7/8/2023
5.13.0.3-beta 448 7/7/2023
5.13.0.2-beta 461 7/6/2023
5.13.0.1-beta 422 6/27/2023
5.13.0 49,864 6/24/2023
5.12.0.4-beta 410 6/23/2023
5.12.0.3-beta 486 6/19/2023
5.12.0.2-beta 424 6/18/2023
5.12.0.1-beta 565 6/14/2023
5.12.0 27,061 6/11/2023
5.11.0.6-beta 428 6/10/2023
5.11.0.5-beta 425 6/9/2023
5.11.0.4-beta 478 6/8/2023
5.11.0.3-beta 465 6/6/2023
5.11.0.2-beta 489 5/31/2023
5.11.0.1-beta 428 5/30/2023
5.11.0 32,795 5/27/2023
5.10.0.5-beta 432 5/24/2023
5.10.0.4-beta 447 5/22/2023
5.10.0.3-beta 761 5/7/2023
5.10.0.2-beta 391 5/6/2023
5.10.0.1-beta 475 5/3/2023
5.10.0 83,573 4/30/2023
5.9.0.4-beta 429 4/29/2023
5.9.0.3-beta 431 4/29/2023
5.9.0.2-beta 976 4/25/2023
5.9.0.1-beta 463 4/24/2023
5.9.0 52,897 4/22/2023
5.8.1.15-beta 415 4/21/2023
5.8.1.14-beta 437 4/21/2023
5.8.1.13-beta 469 4/20/2023
5.8.1.12-beta 390 4/20/2023
5.8.1.11-beta 440 4/20/2023
5.8.1.10-beta 412 4/19/2023
5.8.1.9-beta 464 4/18/2023
5.8.1.8-beta 677 4/16/2023
5.8.1.7-beta 515 4/10/2023
5.8.1.6-beta 416 4/8/2023
5.8.1.5-beta 422 4/8/2023
5.8.1.4-beta 375 4/7/2023
5.8.1.3-beta 526 3/30/2023
5.8.1.2-beta 589 3/30/2023
5.8.1.1-beta 585 3/29/2023
5.8.1 54,923 3/24/2023
5.8.0.8-beta 427 3/23/2023
5.8.0.7-beta 424 3/23/2023
5.8.0.6-beta 467 3/20/2023
5.8.0.5-beta 451 3/17/2023
5.8.0.4-beta 437 3/17/2023
5.8.0.3-beta 499 3/13/2023
5.8.0.2-beta 590 3/8/2023
5.8.0.1-beta 432 3/6/2023
5.8.0 37,948 3/5/2023
5.7.2.14-beta 450 3/4/2023
5.7.2.13-beta 503 3/2/2023
5.7.2.12-beta 1,386 3/2/2023
5.7.2.11-beta 410 3/2/2023
5.7.2.10-beta 488 3/1/2023
5.7.2.9-beta 483 2/28/2023
5.7.2.8-beta 457 2/28/2023
5.7.2.7-beta 408 2/28/2023
5.7.2.6-beta 422 2/27/2023
5.7.2.5-beta 441 2/26/2023
5.7.2.4-beta 531 2/24/2023
5.7.2.3-beta 446 2/23/2023
5.7.2.2-beta 454 2/22/2023
5.7.2.1-beta 489 2/19/2023
5.7.2 63,509 2/14/2023
5.7.1.1-beta 432 2/13/2023
5.7.1 14,974 2/9/2023
5.7.0.4-beta 543 2/6/2023
5.7.0.3-beta 431 2/6/2023
5.7.0.2-beta 620 2/3/2023
5.7.0.1-beta 483 1/31/2023
5.7.0 22,619 1/29/2023
5.6.0.6-beta 477 1/28/2023
5.6.0.5-beta 565 1/26/2023
5.6.0.4-beta 477 1/25/2023
5.6.0.3-beta 698 1/18/2023
5.6.0.2-beta 410 1/18/2023
5.6.0.1-beta 497 1/17/2023
5.6.0 85,370 1/2/2023
5.5.0.5-beta 1,183 12/19/2022
5.5.0.4-beta 469 12/17/2022
5.5.0.3-beta 758 12/12/2022
5.5.0.2-beta 413 12/12/2022
5.5.0.1-beta 424 12/10/2022
5.5.0 39,300 12/9/2022
5.4.1.7-beta 463 12/7/2022
5.4.1.6-beta 822 11/26/2022
5.4.1.5-beta 440 11/25/2022
5.4.1.4-beta 523 11/21/2022
5.4.1.3-beta 442 11/19/2022
5.4.1.2-beta 438 11/19/2022
5.4.1.1-beta 464 11/18/2022
5.4.1 60,394 11/18/2022
5.4.0.2-beta 425 11/17/2022
5.4.0.1-beta 954 11/10/2022
5.4.0 12,165 11/9/2022
5.3.2.13-beta 415 11/9/2022
5.3.2.12-beta 445 11/8/2022
5.3.2.11-beta 533 11/8/2022
5.3.2.10-beta 414 11/8/2022
5.3.2.9-beta 459 11/7/2022
5.3.2.8-beta 399 11/7/2022
5.3.2.7-beta 420 11/7/2022
5.3.2.6-beta 407 11/7/2022
5.3.2.5-beta 444 11/7/2022
5.3.2.4-beta 441 11/6/2022
5.3.2.3-beta 412 11/6/2022
5.3.2.2-beta 424 11/5/2022
5.3.2.1-beta 432 11/4/2022
5.3.2 29,332 11/4/2022
5.3.1.5-beta 404 11/3/2022
5.3.1.4-beta 441 11/3/2022
5.3.1.3-beta 440 11/2/2022
5.3.1.2-beta 424 11/2/2022
5.3.1.1-beta 407 11/2/2022
5.3.1 9,540 10/31/2022
5.3.0.1-beta 447 10/30/2022
5.3.0 1,165 10/29/2022
5.3.0-beta 442 10/28/2022
5.2.1.17-beta 443 10/28/2022
5.2.1.16-beta 523 10/26/2022
5.2.1.15-beta 399 10/26/2022
5.2.1.14-beta 446 10/26/2022
5.2.1.13-beta 473 10/25/2022
5.2.1.12-beta 459 10/25/2022
5.2.1.11-beta 410 10/25/2022
5.2.1.10-beta 441 10/24/2022
5.2.1.9-beta 514 10/21/2022
5.2.1.8-beta 468 10/20/2022
5.2.1.7-beta 1,460 10/19/2022
5.2.1.6-beta 503 10/19/2022
5.2.1.5-beta 708 10/18/2022
5.2.1.4-beta 438 10/17/2022
5.2.1.3-beta 406 10/17/2022
5.2.1.2-beta 405 10/16/2022
5.2.1.1-beta 439 10/15/2022
5.2.1 22,600 10/15/2022
5.2.0.2-beta 388 10/15/2022
5.2.0.1-beta 446 10/14/2022
5.2.0 2,385 10/13/2022
5.2.0-beta9 904 9/16/2022
5.2.0-beta8 501 9/16/2022
5.2.0-beta7 530 9/14/2022
5.2.0-beta6 505 9/14/2022
5.2.0-beta5 484 9/14/2022
5.2.0-beta4 457 9/13/2022
5.2.0-beta3 449 9/12/2022
5.2.0-beta28 504 10/13/2022
5.2.0-beta27 472 10/12/2022
5.2.0-beta26 414 10/9/2022
5.2.0-beta25 409 10/6/2022
5.2.0-beta24 413 10/6/2022
5.2.0-beta23 415 10/5/2022
5.2.0-beta22 433 9/30/2022
5.2.0-beta21 466 9/27/2022
5.2.0-beta20 467 9/26/2022
5.2.0-beta2 546 9/10/2022
5.2.0-beta19 462 9/25/2022
5.2.0-beta18 441 9/25/2022
5.2.0-beta17 442 9/23/2022
5.2.0-beta16 425 9/22/2022
5.2.0-beta15 548 9/20/2022
5.2.0-beta14 427 9/20/2022
5.2.0-beta13 470 9/19/2022
5.2.0-beta12 482 9/19/2022
5.2.0-beta11 466 9/17/2022
5.2.0-beta10 454 9/16/2022
5.2.0-beta1 418 9/10/2022
5.1.1-beta5 502 9/10/2022
5.1.1-beta4 429 9/9/2022
5.1.1-beta3 430 9/9/2022
5.1.1-beta2 422 9/9/2022
5.1.1-beta1 426 9/8/2022
5.1.0 32,026 9/8/2022
5.1.0-beta9 654 8/31/2022
5.1.0-beta8 432 8/29/2022
5.1.0-beta7 440 8/29/2022
5.1.0-beta6 453 8/28/2022
5.1.0-beta5 401 8/27/2022
5.1.0-beta4 420 8/27/2022
5.1.0-beta3 498 8/26/2022
5.1.0-beta2 442 8/25/2022
5.1.0-beta17 423 9/7/2022
5.1.0-beta16 405 9/7/2022
5.1.0-beta15 982 9/5/2022
5.1.0-beta14 413 9/4/2022
5.1.0-beta13 447 9/2/2022
5.1.0-beta12 426 9/1/2022
5.1.0-beta11 447 9/1/2022
5.1.0-beta10 382 8/31/2022
5.1.0-beta1 418 8/25/2022
5.0.0 21,190 8/24/2022
5.0.0-beta9 489 8/21/2022
5.0.0-beta8 427 8/20/2022
5.0.0-beta7 426 8/20/2022
5.0.0-beta6 525 8/18/2022
5.0.0-beta5 579 8/17/2022
5.0.0-beta4 409 8/17/2022
5.0.0-beta3 419 8/16/2022
5.0.0-beta2 462 8/15/2022
5.0.0-beta13 390 8/23/2022
5.0.0-beta12 513 8/23/2022
5.0.0-beta11 529 8/22/2022
5.0.0-beta10 412 8/22/2022
5.0.0-beta1 432 8/15/2022
4.5.0-beta9 951 8/13/2022
4.5.0-beta8 500 8/12/2022
4.5.0-beta7 557 8/11/2022
4.5.0-beta6 623 8/9/2022
4.5.0-beta5 406 8/8/2022
4.5.0-beta4 512 8/8/2022
4.5.0-beta3 432 8/8/2022
4.5.0-beta2 453 8/8/2022
4.5.0-beta15 457 8/15/2022
4.5.0-beta14 457 8/14/2022
4.5.0-beta13 452 8/14/2022
4.5.0-beta12 444 8/14/2022
4.5.0-beta11 429 8/14/2022
4.5.0-beta10 416 8/13/2022
4.5.0-beta1 468 8/4/2022
4.4.0 26,761 8/3/2022
4.4.0-beta9 421 8/2/2022
4.4.0-beta8 430 7/31/2022
4.4.0-beta7 432 7/28/2022
4.4.0-beta6 504 7/24/2022
4.4.0-beta5 459 7/24/2022
4.4.0-beta4 437 7/23/2022
4.4.0-beta3 469 7/22/2022
4.4.0-beta2 437 7/22/2022
4.4.0-beta1 436 7/20/2022
4.3.2-beta1 549 7/13/2022
4.3.1 21,568 7/13/2022
4.3.1-beta5 646 7/10/2022
4.3.1-beta4 600 7/3/2022
4.3.1-beta3 439 7/2/2022
4.3.1-beta2 1,366 7/2/2022
4.3.1-beta1 478 6/30/2022
4.3.0 53,540 6/17/2022
4.3.0-beta9 1,016 5/30/2022
4.3.0-beta8 449 5/29/2022
4.3.0-beta7 553 5/27/2022
4.3.0-beta6 532 5/25/2022
4.3.0-beta5 506 5/24/2022
4.3.0-beta4 458 5/24/2022
4.3.0-beta3 428 5/23/2022
4.3.0-beta2 487 5/21/2022
4.3.0-beta11 421 6/3/2022
4.3.0-beta10 418 5/31/2022
4.3.0-beta1 469 5/20/2022
4.2.1-beta2 433 5/19/2022
4.2.1-beta1 417 5/19/2022
4.2.0 13,347 5/19/2022
4.2.0-beta9 666 5/13/2022
4.2.0-beta8 449 5/13/2022
4.2.0-beta7 476 5/11/2022
4.2.0-beta6 459 5/11/2022
4.2.0-beta5 456 5/10/2022
4.2.0-beta4 460 5/9/2022
4.2.0-beta3 481 5/7/2022
4.2.0-beta2 454 5/6/2022
4.2.0-beta10 438 5/18/2022
4.2.0-beta1 562 4/28/2022
4.1.0 12,383 4/26/2022
4.1.0-beta8 7,533 4/26/2022
4.1.0-beta7 449 4/26/2022
4.1.0-beta6 430 4/24/2022
4.1.0-beta5 430 4/23/2022
4.1.0-beta4 539 4/10/2022
4.1.0-beta3 467 4/6/2022
4.1.0-beta2 638 4/2/2022
4.1.0-beta1 487 3/31/2022
4.0.0 41,214 3/30/2022
4.0.0-beta6 529 3/26/2022
4.0.0-beta5 486 3/24/2022
4.0.0-beta4 453 3/23/2022
4.0.0-beta3 482 3/22/2022
4.0.0-beta2 465 3/22/2022
4.0.0-beta1 417 3/22/2022
3.12.1-beta2 453 3/22/2022
3.12.1-beta1 436 3/21/2022
3.11.0 7,823 3/21/2022
3.11.0-beta9 473 3/17/2022
3.11.0-beta8 434 3/16/2022
3.11.0-beta7 463 3/15/2022
3.11.0-beta6 465 3/14/2022
3.11.0-beta5 438 3/14/2022
3.11.0-beta4 451 3/14/2022
3.11.0-beta3 438 3/13/2022
3.11.0-beta2 432 3/13/2022
3.11.0-beta12 446 3/18/2022
3.11.0-beta11 599 3/17/2022
3.11.0-beta10 420 3/17/2022
3.11.0-beta1 453 3/10/2022
3.10.0 4,095 3/10/2022
3.10.0-beta7 410 3/9/2022
3.10.0-beta6 439 3/9/2022
3.10.0-beta5 471 3/8/2022
3.10.0-beta4 444 3/8/2022
3.10.0-beta3 418 3/8/2022
3.10.0-beta2 481 3/5/2022
3.10.0-beta1 437 3/5/2022
3.9.1 1,609 3/4/2022
3.9.0-beta9 470 3/2/2022
3.9.0-beta8 463 3/1/2022
3.9.0-beta7 423 3/1/2022
3.9.0-beta6 423 3/1/2022
3.9.0-beta5 430 3/1/2022
3.9.0-beta4 436 3/1/2022
3.9.0-beta3 450 2/28/2022
3.9.0-beta2 441 2/28/2022
3.9.0-beta13 437 3/4/2022
3.9.0-beta12 480 3/4/2022
3.9.0-beta11 466 3/3/2022
3.9.0-beta10 418 3/2/2022
3.9.0-beta1 462 2/27/2022
3.8.1 3,197 2/27/2022
3.8.0 1,318 2/26/2022
3.7.1-beta2 473 2/25/2022
3.7.1-beta1 411 2/25/2022
3.7.0 1,197 2/25/2022
3.6.0 1,354 2/23/2022
3.6.0-beta8 443 2/23/2022
3.6.0-beta7 436 2/23/2022
3.6.0-beta6 450 2/23/2022
3.6.0-beta5 455 2/22/2022
3.6.0-beta4 464 2/22/2022
3.6.0-beta3 448 2/21/2022
3.6.0-beta2 441 2/21/2022
3.6.0-beta1 438 2/19/2022
3.5.1 1,187 2/19/2022
3.5.1-beta4 450 2/18/2022
3.5.1-beta3 461 2/18/2022
3.5.1-beta2 464 2/18/2022
3.5.1-beta1 464 2/18/2022
3.5.0 1,256 2/16/2022
3.5.0-beta9 449 2/15/2022
3.5.0-beta8 463 2/15/2022
3.5.0-beta7 424 2/14/2022
3.5.0-beta6 485 2/14/2022
3.5.0-beta5 475 2/14/2022
3.5.0-beta4 426 2/14/2022
3.5.0-beta3 445 2/10/2022
3.5.0-beta2 482 2/9/2022
3.5.0-beta10 432 2/16/2022
3.5.0-beta1 452 2/9/2022
3.4.1 1,223 2/13/2022
3.4.0 1,648 2/7/2022
3.4.0-beta2 457 2/6/2022
3.4.0-beta1 445 2/6/2022
3.3.0 1,095 2/5/2022
3.3.0-beta4 501 2/4/2022
3.3.0-beta3 570 2/3/2022
3.3.0-beta2 436 2/3/2022
3.3.0-beta1 482 2/3/2022
3.2.2 1,203 2/2/2022
3.2.1 1,217 2/1/2022
3.2.1-beta1 424 1/30/2022
3.2.0 2,258 1/30/2022
3.2.0-beta6 467 1/30/2022
3.2.0-beta5 418 1/29/2022
3.2.0-beta4 456 1/29/2022
3.2.0-beta3 461 1/28/2022
3.2.0-beta2 473 1/28/2022
3.2.0-beta1 453 1/25/2022
3.1.4 2,509 1/27/2022
3.1.3 1,304 1/26/2022
3.1.3-beta1 484 1/26/2022
3.1.2 1,179 1/25/2022
3.1.1 1,148 1/24/2022
3.1.0 1,092 1/24/2022
3.0.0 1,099 1/22/2022
3.0.0-beta1 446 1/22/2022
2.21.0-beta9 1,289 1/19/2022
2.21.0-beta8 428 1/19/2022
2.21.0-beta7 438 1/18/2022
2.21.0-beta6 428 1/18/2022
2.21.0-beta5 431 1/18/2022
2.21.0-beta4 418 1/18/2022
2.21.0-beta3 456 1/18/2022
2.21.0-beta2 404 1/17/2022
2.21.0-beta15 410 1/21/2022
2.21.0-beta14 431 1/21/2022
2.21.0-beta13 422 1/20/2022
2.21.0-beta12 450 1/20/2022
2.21.0-beta11 414 1/19/2022
2.21.0-beta10 469 1/19/2022
2.21.0-beta1 435 1/16/2022
2.20.0 888 1/16/2022
2.20.0-beta3 423 1/16/2022
2.20.0-beta2 451 1/15/2022
2.20.0-beta1 464 1/15/2022
2.19.2 1,047 1/14/2022
2.19.1 951 1/10/2022
2.19.0 889 1/10/2022
2.19.0-beta2 446 1/9/2022
2.19.0-beta1 463 1/6/2022
2.18.1 929 1/2/2022
2.18.0 895 12/31/2021
2.18.0-beta2 473 12/30/2021
2.18.0-beta1 428 12/30/2021
2.17.0 903 12/29/2021
2.17.0-beta2 442 12/28/2021
2.17.0-beta1 449 12/27/2021
2.16.0 945 12/25/2021
2.15.0 900 12/23/2021
2.15.0-beta2 453 12/22/2021
2.15.0-beta1 446 12/22/2021
2.14.0 879 12/21/2021
2.14.0-beta1 443 12/20/2021
2.13.1 892 12/20/2021
2.13.0 859 12/19/2021
2.12.0 682 12/17/2021
2.12.0-beta2 410 12/16/2021
2.12.0-beta1 450 12/16/2021
2.11.0 712 12/15/2021
2.10.1-beta1 443 12/15/2021
2.10.0 6,289 11/24/2021
2.10.0-beta2 5,352 11/24/2021
2.10.0-beta1 502 11/18/2021
2.9.1 768 11/9/2021
2.9.0 783 11/4/2021
2.9.0-beta3 516 11/1/2021
2.9.0-beta2 549 10/25/2021
2.9.0-beta1 589 10/24/2021
2.8.1 887 10/24/2021
2.8.0 752 10/24/2021
2.8.0-beta1 474 10/23/2021
2.7.1 822 10/23/2021
2.7.0 759 10/23/2021
2.6.0 839 10/21/2021
2.5.1 718 10/20/2021
2.5.0 743 10/20/2021
2.5.0-beta1 524 10/19/2021
2.4.0 741 10/19/2021
2.3.0 720 10/18/2021
2.3.0-beta2 513 10/18/2021
2.2.1 757 10/17/2021
2.2.0 763 10/17/2021
2.1.1 799 10/16/2021
2.1.0 785 10/16/2021
2.1.0-beta5 546 10/16/2021
2.1.0-beta4 565 10/16/2021
2.1.0-beta3 560 10/16/2021
2.1.0-beta2 473 10/15/2021
2.1.0-beta1 469 10/15/2021
2.0.0 761 10/14/2021
1.9.0 775 10/13/2021
1.8.0 736 10/12/2021
1.8.0-beta1 472 10/11/2021
1.7.0 818 10/10/2021
1.6.0 817 10/7/2021
1.6.0-beta5 481 10/6/2021
1.6.0-beta4 463 10/6/2021
1.6.0-beta3 468 10/5/2021
1.6.0-beta2 479 10/5/2021
1.6.0-beta1 458 10/5/2021
1.5.0 750 10/4/2021
1.4.0 768 10/3/2021
1.3.0 736 10/1/2021
1.2.0 751 9/29/2021
1.1.0 776 9/29/2021
1.0.0 2,701 9/28/2021
1.0.0-rc6 487 9/28/2021
1.0.0-rc5 511 9/27/2021
1.0.0-rc4 494 9/27/2021
1.0.0-rc3 550 9/27/2021
1.0.0-rc2 511 9/27/2021
1.0.0-rc1 508 9/27/2021
1.0.0-beta6 505 9/26/2021
1.0.0-beta5 465 9/26/2021
1.0.0-beta4 511 9/26/2021
1.0.0-beta3 515 9/25/2021
1.0.0-beta2 564 9/25/2021

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