FastEndpoints 1.0.0-rc5

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

// Install FastEndpoints as a Cake Tool
#tool nuget:?package=FastEndpoints&version=1.0.0-rc5&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 ~1.5X faster; uses less memory; and outperforms a traditional MVC controller by about 39k requests per second on a Ryzen 3700X desktop.

Try it out...

install from nuget: Install-Package FastEndpoints (currently release candidate)

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 (39,377 more requests per second than mvc controller)

Statistics       Avg        Stdev     Max
  Reqs/sec    140494.96   13112.46  174985.42
  Latency        3.51ms     1.10ms   361.00ms
  HTTP codes:
    1xx - 0, 2xx - 1417846, 3xx - 0, 4xx - 0, 5xx - 0
    others - 0
  Throughput:    71.12MB/s

AspNet Minimal Api

Statistics       Avg        Stdev     Max
  Reqs/sec    140644.35   14557.75  171137.84
  Latency        3.51ms     2.43ms   398.00ms
  HTTP codes:
    1xx - 0, 2xx - 1419449, 3xx - 0, 4xx - 0, 5xx - 0
    others - 0
  Throughput:    71.19MB/s

AspNet MapControllers

Statistics       Avg       Stdev      Max
  Reqs/sec    104587.47   11267.99  129709.65
  Latency        4.74ms     2.09ms   416.00ms
  HTTP codes:
    1xx - 0, 2xx - 1054018, 3xx - 0, 4xx - 0, 5xx - 0
    others - 0
  Throughput:    52.86MB/s

AspNet MVC Controller

Statistics       Avg       Stdev      Max
  Reqs/sec    101117.36   12152.01  135669.68
  Latency        4.90ms     2.47ms   385.00ms
  HTTP codes:
    1xx - 0, 2xx - 1018455, 3xx - 0, 4xx - 0, 5xx - 0
    others - 0
  Throughput:    50.88MB/s

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

BenchmarkDotNet head-to-head results

Method Mean Error StdDev Ratio RatioSD Gen 0 Allocated
MinimalApiEndpoint 72.54 μs 0.156 μs 0.121 μs 0.97 0.01 2.4414 21 KB
FastEndpointsEndpoint 74.64 μs 0.493 μs 0.461 μs 1.00 0.00 2.4414 21 KB
AspNetMapControllers 110.96 μs 2.209 μs 5.377 μs 1.46 0.05 3.1738 28 KB
AspNetCoreMVC 115.44 μs 2.282 μs 3.686 μs 1.53 0.06 3.4180 28 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 39 4/18/2024
5.24.0.2-beta 37 4/18/2024
5.24.0.1-beta 207 4/9/2024
5.24.0 21,547 4/1/2024
5.23.0.15-beta 193 3/28/2024
5.23.0.14-beta 202 3/26/2024
5.23.0.13-beta 256 3/24/2024
5.23.0.12-beta 361 3/22/2024
5.23.0.11-beta 180 3/21/2024
5.23.0.10-beta 278 3/19/2024
5.23.0.9-beta 246 3/15/2024
5.23.0.8-beta 244 3/14/2024
5.23.0.7-beta 173 3/14/2024
5.23.0.6-beta 186 3/13/2024
5.23.0.5-beta 624 3/11/2024
5.23.0.4-beta 446 3/8/2024
5.23.0.3-beta 413 3/5/2024
5.23.0.2-beta 362 3/3/2024
5.23.0.1-beta 543 2/29/2024
5.23.0 61,778 2/29/2024
5.22.0.18-beta 282 2/28/2024
5.22.0.17-beta 301 2/27/2024
5.22.0.16-beta 271 2/27/2024
5.22.0.15-beta 320 2/26/2024
5.22.0.14-beta 299 2/26/2024
5.22.0.13-beta 305 2/23/2024
5.22.0.12-beta 433 2/21/2024
5.22.0.11-beta 322 2/21/2024
5.22.0.10-beta 301 2/21/2024
5.22.0.9-beta 311 2/20/2024
5.22.0.8-beta 422 2/18/2024
5.22.0.7-beta 474 2/15/2024
5.22.0.6-beta 336 2/14/2024
5.22.0.5-beta 395 2/12/2024
5.22.0.4-beta 362 2/12/2024
5.22.0.3-beta 334 2/12/2024
5.22.0.2-beta 383 2/8/2024
5.22.0.1-beta 349 2/8/2024
5.22.0 71,528 2/1/2024
5.21.2.20-beta 355 1/31/2024
5.21.2.19-beta 386 1/30/2024
5.21.2.18-beta 414 1/27/2024
5.21.2.17-beta 423 1/26/2024
5.21.2.16-beta 1,077 1/21/2024
5.21.2.15-beta 430 1/18/2024
5.21.2.14-beta 504 1/17/2024
5.21.2.13-beta 414 1/16/2024
5.21.2.12-beta 410 1/15/2024
5.21.2.11-beta 394 1/13/2024
5.21.2.10-beta 426 1/12/2024
5.21.2.9-beta 433 1/11/2024
5.21.2.8-beta 411 1/10/2024
5.21.2.7-beta 417 1/10/2024
5.21.2.6-beta 466 1/9/2024
5.21.2.5-beta 498 1/9/2024
5.21.2.4-beta 500 1/7/2024
5.21.2.3-beta 448 1/6/2024
5.21.2.2-beta 452 1/4/2024
5.21.2.1-beta 446 1/4/2024
5.21.2 101,060 1/2/2024
5.21.1.1-beta 428 1/2/2024
5.21.1 645 1/2/2024
5.21.0 977 1/2/2024
5.20.1.12-beta 463 12/30/2023
5.20.1.11-beta 404 12/30/2023
5.20.1.10-beta 434 12/29/2023
5.20.1.9-beta 460 12/29/2023
5.20.1.8-beta 486 12/27/2023
5.20.1.7-beta 2,480 12/18/2023
5.20.1.6-beta 530 12/15/2023
5.20.1.5-beta 579 12/13/2023
5.20.1.4-beta 386 12/12/2023
5.20.1.3-beta 484 12/9/2023
5.20.1.2-beta 468 12/8/2023
5.20.1.1-beta 727 12/7/2023
5.20.1 53,363 12/1/2023
5.20.0.2-beta 494 11/30/2023
5.20.0.1-beta 435 11/30/2023
5.20.0 16,369 11/28/2023
5.20.0-rc2 1,339 11/26/2023
5.20.0-rc1 1,914 11/18/2023
5.19.2 45,551 11/7/2023
5.19.1 8,426 11/4/2023
5.19.0.13-beta 514 11/15/2023
5.19.0.12-beta 429 11/15/2023
5.19.0.11-beta 439 11/15/2023
5.19.0.10-beta 481 11/9/2023
5.19.0.9-beta 445 11/7/2023
5.19.0.8-beta 414 11/6/2023
5.19.0.7-beta 478 11/4/2023
5.19.0.6-beta 442 11/3/2023
5.19.0.5-beta 452 11/2/2023
5.19.0.4-beta 455 11/2/2023
5.19.0.3-beta 468 11/1/2023
5.19.0.2-beta 447 10/31/2023
5.19.0.1-beta 435 10/29/2023
5.19.0 11,412 10/29/2023
5.18.0.9-beta 443 10/27/2023
5.18.0.8-beta 550 10/25/2023
5.18.0.7-beta 491 10/24/2023
5.18.0.6-beta 509 10/19/2023
5.18.0.5-beta 937 10/14/2023
5.18.0.4-beta 468 10/12/2023
5.18.0.3-beta 420 10/12/2023
5.18.0.2-beta 463 10/11/2023
5.18.0.1-beta 549 10/5/2023
5.18.0 49,325 10/1/2023
5.17.1.32-beta 450 10/1/2023
5.17.1.31-beta 488 9/29/2023
5.17.1.30-beta 438 9/29/2023
5.17.1.29-beta 687 9/28/2023
5.17.1.28-beta 448 9/27/2023
5.17.1.27-beta 474 9/27/2023
5.17.1.26-beta 442 9/27/2023
5.17.1.25-beta 495 9/26/2023
5.17.1.24-beta 460 9/24/2023
5.17.1.23-beta 443 9/23/2023
5.17.1.22-beta 414 9/23/2023
5.17.1.21-beta 419 9/22/2023
5.17.1.20-beta 444 9/21/2023
5.17.1.19-beta 1,002 9/13/2023
5.17.1.18-beta 468 9/12/2023
5.17.1.17-beta 475 9/12/2023
5.17.1.16-beta 444 9/11/2023
5.17.1.15-beta 457 9/10/2023
5.17.1.14-beta 445 9/9/2023
5.17.1.13-beta 460 9/8/2023
5.17.1.12-beta 432 9/8/2023
5.17.1.11-beta 478 9/8/2023
5.17.1.10-beta 405 9/8/2023
5.17.1.9-beta 431 9/8/2023
5.17.1.8-beta 479 9/7/2023
5.17.1.7-beta 474 9/7/2023
5.17.1.6-beta 969 9/7/2023
5.17.1.5-beta 495 9/6/2023
5.17.1.4-beta 421 9/6/2023
5.17.1.3-beta 449 9/6/2023
5.17.1.2-beta 486 9/5/2023
5.17.1.1 35,677 9/5/2023
5.17.1 1,803 9/4/2023
5.17.0.2-beta 428 9/4/2023
5.17.0.1-beta 453 9/4/2023
5.17.0 1,384 9/3/2023
5.16.0.4-beta 454 9/3/2023
5.16.0.3-beta 475 9/2/2023
5.16.0.2-beta 455 8/31/2023
5.16.0.1-beta 479 8/30/2023
5.16.0 12,980 8/30/2023
5.15.0.22-beta 619 8/26/2023
5.15.0.21-beta 510 8/24/2023
5.15.0.20-beta 669 8/23/2023
5.15.0.19-beta 449 8/23/2023
5.15.0.18-beta 493 8/18/2023
5.15.0.17-beta 518 8/16/2023
5.15.0.16-beta 535 8/14/2023
5.15.0.15-beta 445 8/14/2023
5.15.0.14-beta 475 8/13/2023
5.15.0.12-beta 448 8/11/2023
5.15.0.11-beta 558 8/10/2023
5.15.0.9-beta 442 8/10/2023
5.15.0.8-beta 455 8/10/2023
5.15.0.7-beta 440 8/10/2023
5.15.0.6-beta 466 8/10/2023
5.15.0.5-beta 453 8/9/2023
5.15.0.4-beta 484 8/9/2023
5.15.0.3-beta 459 8/8/2023
5.15.0.2-beta 2,017 8/4/2023
5.15.0.1-beta 569 8/4/2023
5.15.0 76,366 8/1/2023
5.14.0.7-beta 509 7/31/2023
5.14.0.6-beta 482 7/30/2023
5.14.0.5-beta 491 7/29/2023
5.14.0.4-beta 446 7/28/2023
5.14.0.3-beta 482 7/28/2023
5.14.0.2-beta 529 7/26/2023
5.14.0.1-beta 761 7/20/2023
5.14.0 29,527 7/16/2023
5.13.0.9-beta 464 7/14/2023
5.13.0.8-beta 462 7/12/2023
5.13.0.7-beta 486 7/11/2023
5.13.0.6-beta 428 7/11/2023
5.13.0.5-beta 447 7/10/2023
5.13.0.4-beta 471 7/8/2023
5.13.0.3-beta 498 7/7/2023
5.13.0.2-beta 501 7/6/2023
5.13.0.1-beta 468 6/27/2023
5.13.0 50,681 6/24/2023
5.12.0.4-beta 452 6/23/2023
5.12.0.3-beta 536 6/19/2023
5.12.0.2-beta 473 6/18/2023
5.12.0.1-beta 664 6/14/2023
5.12.0 27,346 6/11/2023
5.11.0.6-beta 463 6/10/2023
5.11.0.5-beta 464 6/9/2023
5.11.0.4-beta 517 6/8/2023
5.11.0.3-beta 516 6/6/2023
5.11.0.2-beta 531 5/31/2023
5.11.0.1-beta 474 5/30/2023
5.11.0 33,430 5/27/2023
5.10.0.5-beta 477 5/24/2023
5.10.0.4-beta 488 5/22/2023
5.10.0.3-beta 802 5/7/2023
5.10.0.2-beta 435 5/6/2023
5.10.0.1-beta 519 5/3/2023
5.10.0 84,850 4/30/2023
5.9.0.4-beta 474 4/29/2023
5.9.0.3-beta 472 4/29/2023
5.9.0.2-beta 1,032 4/25/2023
5.9.0.1-beta 513 4/24/2023
5.9.0 54,161 4/22/2023
5.8.1.15-beta 453 4/21/2023
5.8.1.14-beta 481 4/21/2023
5.8.1.13-beta 510 4/20/2023
5.8.1.12-beta 432 4/20/2023
5.8.1.11-beta 480 4/20/2023
5.8.1.10-beta 448 4/19/2023
5.8.1.9-beta 509 4/18/2023
5.8.1.8-beta 713 4/16/2023
5.8.1.7-beta 553 4/10/2023
5.8.1.6-beta 458 4/8/2023
5.8.1.5-beta 465 4/8/2023
5.8.1.4-beta 424 4/7/2023
5.8.1.3-beta 569 3/30/2023
5.8.1.2-beta 628 3/30/2023
5.8.1.1-beta 632 3/29/2023
5.8.1 55,840 3/24/2023
5.8.0.8-beta 473 3/23/2023
5.8.0.7-beta 469 3/23/2023
5.8.0.6-beta 505 3/20/2023
5.8.0.5-beta 492 3/17/2023
5.8.0.4-beta 477 3/17/2023
5.8.0.3-beta 545 3/13/2023
5.8.0.2-beta 634 3/8/2023
5.8.0.1-beta 481 3/6/2023
5.8.0 38,161 3/5/2023
5.7.2.14-beta 496 3/4/2023
5.7.2.13-beta 542 3/2/2023
5.7.2.12-beta 1,433 3/2/2023
5.7.2.11-beta 455 3/2/2023
5.7.2.10-beta 531 3/1/2023
5.7.2.9-beta 531 2/28/2023
5.7.2.8-beta 496 2/28/2023
5.7.2.7-beta 455 2/28/2023
5.7.2.6-beta 466 2/27/2023
5.7.2.5-beta 479 2/26/2023
5.7.2.4-beta 574 2/24/2023
5.7.2.3-beta 490 2/23/2023
5.7.2.2-beta 486 2/22/2023
5.7.2.1-beta 532 2/19/2023
5.7.2 64,652 2/14/2023
5.7.1.1-beta 476 2/13/2023
5.7.1 15,049 2/9/2023
5.7.0.4-beta 590 2/6/2023
5.7.0.3-beta 477 2/6/2023
5.7.0.2-beta 671 2/3/2023
5.7.0.1-beta 523 1/31/2023
5.7.0 23,033 1/29/2023
5.6.0.6-beta 524 1/28/2023
5.6.0.5-beta 606 1/26/2023
5.6.0.4-beta 523 1/25/2023
5.6.0.3-beta 739 1/18/2023
5.6.0.2-beta 454 1/18/2023
5.6.0.1-beta 542 1/17/2023
5.6.0 86,630 1/2/2023
5.5.0.5-beta 1,231 12/19/2022
5.5.0.4-beta 513 12/17/2022
5.5.0.3-beta 806 12/12/2022
5.5.0.2-beta 452 12/12/2022
5.5.0.1-beta 468 12/10/2022
5.5.0 39,941 12/9/2022
5.4.1.7-beta 504 12/7/2022
5.4.1.6-beta 881 11/26/2022
5.4.1.5-beta 482 11/25/2022
5.4.1.4-beta 563 11/21/2022
5.4.1.3-beta 480 11/19/2022
5.4.1.2-beta 484 11/19/2022
5.4.1.1-beta 506 11/18/2022
5.4.1 62,000 11/18/2022
5.4.0.2-beta 466 11/17/2022
5.4.0.1-beta 999 11/10/2022
5.4.0 12,326 11/9/2022
5.3.2.13-beta 460 11/9/2022
5.3.2.12-beta 483 11/8/2022
5.3.2.11-beta 569 11/8/2022
5.3.2.10-beta 460 11/8/2022
5.3.2.9-beta 494 11/7/2022
5.3.2.8-beta 445 11/7/2022
5.3.2.7-beta 468 11/7/2022
5.3.2.6-beta 452 11/7/2022
5.3.2.5-beta 480 11/7/2022
5.3.2.4-beta 482 11/6/2022
5.3.2.3-beta 460 11/6/2022
5.3.2.2-beta 464 11/5/2022
5.3.2.1-beta 473 11/4/2022
5.3.2 29,701 11/4/2022
5.3.1.5-beta 444 11/3/2022
5.3.1.4-beta 476 11/3/2022
5.3.1.3-beta 484 11/2/2022
5.3.1.2-beta 470 11/2/2022
5.3.1.1-beta 442 11/2/2022
5.3.1 9,688 10/31/2022
5.3.0.1-beta 486 10/30/2022
5.3.0 1,207 10/29/2022
5.3.0-beta 482 10/28/2022
5.2.1.17-beta 482 10/28/2022
5.2.1.16-beta 566 10/26/2022
5.2.1.15-beta 440 10/26/2022
5.2.1.14-beta 492 10/26/2022
5.2.1.13-beta 523 10/25/2022
5.2.1.12-beta 503 10/25/2022
5.2.1.11-beta 450 10/25/2022
5.2.1.10-beta 482 10/24/2022
5.2.1.9-beta 567 10/21/2022
5.2.1.8-beta 518 10/20/2022
5.2.1.7-beta 1,509 10/19/2022
5.2.1.6-beta 543 10/19/2022
5.2.1.5-beta 752 10/18/2022
5.2.1.4-beta 480 10/17/2022
5.2.1.3-beta 451 10/17/2022
5.2.1.2-beta 462 10/16/2022
5.2.1.1-beta 483 10/15/2022
5.2.1 22,666 10/15/2022
5.2.0.2-beta 434 10/15/2022
5.2.0.1-beta 498 10/14/2022
5.2.0 2,427 10/13/2022
5.2.0-beta9 946 9/16/2022
5.2.0-beta8 548 9/16/2022
5.2.0-beta7 570 9/14/2022
5.2.0-beta6 545 9/14/2022
5.2.0-beta5 525 9/14/2022
5.2.0-beta4 494 9/13/2022
5.2.0-beta3 493 9/12/2022
5.2.0-beta28 544 10/13/2022
5.2.0-beta27 512 10/12/2022
5.2.0-beta26 453 10/9/2022
5.2.0-beta25 456 10/6/2022
5.2.0-beta24 458 10/6/2022
5.2.0-beta23 456 10/5/2022
5.2.0-beta22 474 9/30/2022
5.2.0-beta21 506 9/27/2022
5.2.0-beta20 507 9/26/2022
5.2.0-beta2 590 9/10/2022
5.2.0-beta19 509 9/25/2022
5.2.0-beta18 491 9/25/2022
5.2.0-beta17 482 9/23/2022
5.2.0-beta16 473 9/22/2022
5.2.0-beta15 578 9/20/2022
5.2.0-beta14 470 9/20/2022
5.2.0-beta13 511 9/19/2022
5.2.0-beta12 531 9/19/2022
5.2.0-beta11 510 9/17/2022
5.2.0-beta10 496 9/16/2022
5.2.0-beta1 467 9/10/2022
5.1.1-beta5 545 9/10/2022
5.1.1-beta4 475 9/9/2022
5.1.1-beta3 479 9/9/2022
5.1.1-beta2 461 9/9/2022
5.1.1-beta1 452 9/8/2022
5.1.0 32,269 9/8/2022
5.1.0-beta9 696 8/31/2022
5.1.0-beta8 467 8/29/2022
5.1.0-beta7 480 8/29/2022
5.1.0-beta6 492 8/28/2022
5.1.0-beta5 446 8/27/2022
5.1.0-beta4 468 8/27/2022
5.1.0-beta3 539 8/26/2022
5.1.0-beta2 477 8/25/2022
5.1.0-beta17 469 9/7/2022
5.1.0-beta16 448 9/7/2022
5.1.0-beta15 1,020 9/5/2022
5.1.0-beta14 454 9/4/2022
5.1.0-beta13 492 9/2/2022
5.1.0-beta12 465 9/1/2022
5.1.0-beta11 485 9/1/2022
5.1.0-beta10 420 8/31/2022
5.1.0-beta1 458 8/25/2022
5.0.0 21,325 8/24/2022
5.0.0-beta9 535 8/21/2022
5.0.0-beta8 473 8/20/2022
5.0.0-beta7 469 8/20/2022
5.0.0-beta6 562 8/18/2022
5.0.0-beta5 622 8/17/2022
5.0.0-beta4 450 8/17/2022
5.0.0-beta3 469 8/16/2022
5.0.0-beta2 502 8/15/2022
5.0.0-beta13 422 8/23/2022
5.0.0-beta12 554 8/23/2022
5.0.0-beta11 580 8/22/2022
5.0.0-beta10 447 8/22/2022
5.0.0-beta1 474 8/15/2022
4.5.0-beta9 998 8/13/2022
4.5.0-beta8 536 8/12/2022
4.5.0-beta7 594 8/11/2022
4.5.0-beta6 663 8/9/2022
4.5.0-beta5 451 8/8/2022
4.5.0-beta4 550 8/8/2022
4.5.0-beta3 473 8/8/2022
4.5.0-beta2 497 8/8/2022
4.5.0-beta15 492 8/15/2022
4.5.0-beta14 494 8/14/2022
4.5.0-beta13 493 8/14/2022
4.5.0-beta12 470 8/14/2022
4.5.0-beta11 469 8/14/2022
4.5.0-beta10 457 8/13/2022
4.5.0-beta1 513 8/4/2022
4.4.0 26,888 8/3/2022
4.4.0-beta9 467 8/2/2022
4.4.0-beta8 475 7/31/2022
4.4.0-beta7 472 7/28/2022
4.4.0-beta6 549 7/24/2022
4.4.0-beta5 501 7/24/2022
4.4.0-beta4 485 7/23/2022
4.4.0-beta3 495 7/22/2022
4.4.0-beta2 478 7/22/2022
4.4.0-beta1 486 7/20/2022
4.3.2-beta1 587 7/13/2022
4.3.1 21,731 7/13/2022
4.3.1-beta5 687 7/10/2022
4.3.1-beta4 639 7/3/2022
4.3.1-beta3 483 7/2/2022
4.3.1-beta2 1,401 7/2/2022
4.3.1-beta1 517 6/30/2022
4.3.0 54,589 6/17/2022
4.3.0-beta9 1,047 5/30/2022
4.3.0-beta8 491 5/29/2022
4.3.0-beta7 596 5/27/2022
4.3.0-beta6 571 5/25/2022
4.3.0-beta5 547 5/24/2022
4.3.0-beta4 494 5/24/2022
4.3.0-beta3 464 5/23/2022
4.3.0-beta2 532 5/21/2022
4.3.0-beta11 466 6/3/2022
4.3.0-beta10 453 5/31/2022
4.3.0-beta1 507 5/20/2022
4.2.1-beta2 471 5/19/2022
4.2.1-beta1 461 5/19/2022
4.2.0 13,442 5/19/2022
4.2.0-beta9 699 5/13/2022
4.2.0-beta8 476 5/13/2022
4.2.0-beta7 524 5/11/2022
4.2.0-beta6 510 5/11/2022
4.2.0-beta5 504 5/10/2022
4.2.0-beta4 495 5/9/2022
4.2.0-beta3 510 5/7/2022
4.2.0-beta2 488 5/6/2022
4.2.0-beta10 477 5/18/2022
4.2.0-beta1 603 4/28/2022
4.1.0 12,511 4/26/2022
4.1.0-beta8 7,635 4/26/2022
4.1.0-beta7 489 4/26/2022
4.1.0-beta6 467 4/24/2022
4.1.0-beta5 448 4/23/2022
4.1.0-beta4 581 4/10/2022
4.1.0-beta3 508 4/6/2022
4.1.0-beta2 686 4/2/2022
4.1.0-beta1 534 3/31/2022
4.0.0 41,303 3/30/2022
4.0.0-beta6 558 3/26/2022
4.0.0-beta5 526 3/24/2022
4.0.0-beta4 498 3/23/2022
4.0.0-beta3 522 3/22/2022
4.0.0-beta2 505 3/22/2022
4.0.0-beta1 458 3/22/2022
3.12.1-beta2 493 3/22/2022
3.12.1-beta1 473 3/21/2022
3.11.0 7,868 3/21/2022
3.11.0-beta9 512 3/17/2022
3.11.0-beta8 470 3/16/2022
3.11.0-beta7 498 3/15/2022
3.11.0-beta6 509 3/14/2022
3.11.0-beta5 477 3/14/2022
3.11.0-beta4 493 3/14/2022
3.11.0-beta3 473 3/13/2022
3.11.0-beta2 471 3/13/2022
3.11.0-beta12 490 3/18/2022
3.11.0-beta11 637 3/17/2022
3.11.0-beta10 465 3/17/2022
3.11.0-beta1 494 3/10/2022
3.10.0 4,152 3/10/2022
3.10.0-beta7 450 3/9/2022
3.10.0-beta6 484 3/9/2022
3.10.0-beta5 519 3/8/2022
3.10.0-beta4 489 3/8/2022
3.10.0-beta3 459 3/8/2022
3.10.0-beta2 525 3/5/2022
3.10.0-beta1 482 3/5/2022
3.9.1 1,644 3/4/2022
3.9.0-beta9 496 3/2/2022
3.9.0-beta8 495 3/1/2022
3.9.0-beta7 468 3/1/2022
3.9.0-beta6 449 3/1/2022
3.9.0-beta5 471 3/1/2022
3.9.0-beta4 477 3/1/2022
3.9.0-beta3 489 2/28/2022
3.9.0-beta2 471 2/28/2022
3.9.0-beta13 478 3/4/2022
3.9.0-beta12 510 3/4/2022
3.9.0-beta11 512 3/3/2022
3.9.0-beta10 463 3/2/2022
3.9.0-beta1 488 2/27/2022
3.8.1 3,236 2/27/2022
3.8.0 1,365 2/26/2022
3.7.1-beta2 524 2/25/2022
3.7.1-beta1 437 2/25/2022
3.7.0 1,239 2/25/2022
3.6.0 1,400 2/23/2022
3.6.0-beta8 489 2/23/2022
3.6.0-beta7 477 2/23/2022
3.6.0-beta6 494 2/23/2022
3.6.0-beta5 484 2/22/2022
3.6.0-beta4 513 2/22/2022
3.6.0-beta3 483 2/21/2022
3.6.0-beta2 479 2/21/2022
3.6.0-beta1 481 2/19/2022
3.5.1 1,231 2/19/2022
3.5.1-beta4 493 2/18/2022
3.5.1-beta3 501 2/18/2022
3.5.1-beta2 514 2/18/2022
3.5.1-beta1 505 2/18/2022
3.5.0 1,285 2/16/2022
3.5.0-beta9 480 2/15/2022
3.5.0-beta8 508 2/15/2022
3.5.0-beta7 459 2/14/2022
3.5.0-beta6 525 2/14/2022
3.5.0-beta5 514 2/14/2022
3.5.0-beta4 477 2/14/2022
3.5.0-beta3 493 2/10/2022
3.5.0-beta2 531 2/9/2022
3.5.0-beta10 476 2/16/2022
3.5.0-beta1 482 2/9/2022
3.4.1 1,266 2/13/2022
3.4.0 1,678 2/7/2022
3.4.0-beta2 496 2/6/2022
3.4.0-beta1 476 2/6/2022
3.3.0 1,144 2/5/2022
3.3.0-beta4 527 2/4/2022
3.3.0-beta3 616 2/3/2022
3.3.0-beta2 474 2/3/2022
3.3.0-beta1 523 2/3/2022
3.2.2 1,233 2/2/2022
3.2.1 1,253 2/1/2022
3.2.1-beta1 469 1/30/2022
3.2.0 2,304 1/30/2022
3.2.0-beta6 504 1/30/2022
3.2.0-beta5 450 1/29/2022
3.2.0-beta4 482 1/29/2022
3.2.0-beta3 491 1/28/2022
3.2.0-beta2 521 1/28/2022
3.2.0-beta1 486 1/25/2022
3.1.4 2,558 1/27/2022
3.1.3 1,351 1/26/2022
3.1.3-beta1 515 1/26/2022
3.1.2 1,214 1/25/2022
3.1.1 1,187 1/24/2022
3.1.0 1,130 1/24/2022
3.0.0 1,137 1/22/2022
3.0.0-beta1 490 1/22/2022
2.21.0-beta9 1,348 1/19/2022
2.21.0-beta8 479 1/19/2022
2.21.0-beta7 473 1/18/2022
2.21.0-beta6 458 1/18/2022
2.21.0-beta5 472 1/18/2022
2.21.0-beta4 449 1/18/2022
2.21.0-beta3 499 1/18/2022
2.21.0-beta2 443 1/17/2022
2.21.0-beta15 445 1/21/2022
2.21.0-beta14 467 1/21/2022
2.21.0-beta13 461 1/20/2022
2.21.0-beta12 502 1/20/2022
2.21.0-beta11 444 1/19/2022
2.21.0-beta10 512 1/19/2022
2.21.0-beta1 484 1/16/2022
2.20.0 923 1/16/2022
2.20.0-beta3 461 1/16/2022
2.20.0-beta2 477 1/15/2022
2.20.0-beta1 510 1/15/2022
2.19.2 1,093 1/14/2022
2.19.1 997 1/10/2022
2.19.0 926 1/10/2022
2.19.0-beta2 489 1/9/2022
2.19.0-beta1 507 1/6/2022
2.18.1 975 1/2/2022
2.18.0 939 12/31/2021
2.18.0-beta2 523 12/30/2021
2.18.0-beta1 461 12/30/2021
2.17.0 944 12/29/2021
2.17.0-beta2 474 12/28/2021
2.17.0-beta1 493 12/27/2021
2.16.0 985 12/25/2021
2.15.0 947 12/23/2021
2.15.0-beta2 483 12/22/2021
2.15.0-beta1 477 12/22/2021
2.14.0 910 12/21/2021
2.14.0-beta1 481 12/20/2021
2.13.1 937 12/20/2021
2.13.0 905 12/19/2021
2.12.0 712 12/17/2021
2.12.0-beta2 441 12/16/2021
2.12.0-beta1 495 12/16/2021
2.11.0 755 12/15/2021
2.10.1-beta1 480 12/15/2021
2.10.0 6,319 11/24/2021
2.10.0-beta2 5,398 11/24/2021
2.10.0-beta1 538 11/18/2021
2.9.1 810 11/9/2021
2.9.0 814 11/4/2021
2.9.0-beta3 555 11/1/2021
2.9.0-beta2 584 10/25/2021
2.9.0-beta1 635 10/24/2021
2.8.1 924 10/24/2021
2.8.0 788 10/24/2021
2.8.0-beta1 523 10/23/2021
2.7.1 869 10/23/2021
2.7.0 789 10/23/2021
2.6.0 872 10/21/2021
2.5.1 749 10/20/2021
2.5.0 780 10/20/2021
2.5.0-beta1 569 10/19/2021
2.4.0 772 10/19/2021
2.3.0 752 10/18/2021
2.3.0-beta2 548 10/18/2021
2.2.1 788 10/17/2021
2.2.0 803 10/17/2021
2.1.1 831 10/16/2021
2.1.0 824 10/16/2021
2.1.0-beta5 572 10/16/2021
2.1.0-beta4 597 10/16/2021
2.1.0-beta3 595 10/16/2021
2.1.0-beta2 503 10/15/2021
2.1.0-beta1 514 10/15/2021
2.0.0 808 10/14/2021
1.9.0 827 10/13/2021
1.8.0 770 10/12/2021
1.8.0-beta1 498 10/11/2021
1.7.0 866 10/10/2021
1.6.0 867 10/7/2021
1.6.0-beta5 531 10/6/2021
1.6.0-beta4 514 10/6/2021
1.6.0-beta3 514 10/5/2021
1.6.0-beta2 510 10/5/2021
1.6.0-beta1 497 10/5/2021
1.5.0 781 10/4/2021
1.4.0 812 10/3/2021
1.3.0 783 10/1/2021
1.2.0 780 9/29/2021
1.1.0 807 9/29/2021
1.0.0 2,858 9/28/2021
1.0.0-rc6 518 9/28/2021
1.0.0-rc5 530 9/27/2021
1.0.0-rc4 524 9/27/2021
1.0.0-rc3 591 9/27/2021
1.0.0-rc2 542 9/27/2021
1.0.0-rc1 554 9/27/2021
1.0.0-beta6 536 9/26/2021
1.0.0-beta5 493 9/26/2021
1.0.0-beta4 555 9/26/2021
1.0.0-beta3 541 9/25/2021
1.0.0-beta2 596 9/25/2021

WARNING: this is a release candidate. it is stable and feature complete but do not use in production yet!