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 (35)

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.26.0.1-beta 41 6/1/2024
5.26.0 703 5/31/2024
5.25.0.15-beta 442 5/29/2024
5.25.0.14-beta 175 5/27/2024
5.25.0.13-beta 139 5/24/2024
5.25.0.12-beta 233 5/22/2024
5.25.0.11-beta 98 5/22/2024
5.25.0.10-beta 120 5/18/2024
5.25.0.9-beta 123 5/17/2024
5.25.0.8-beta 78 5/17/2024
5.25.0.7-beta 128 5/15/2024
5.25.0.6-beta 74 5/15/2024
5.25.0.5-beta 255 5/11/2024
5.25.0.4-beta 234 5/7/2024
5.25.0.3-beta 196 5/6/2024
5.25.0.2-beta 119 5/5/2024
5.25.0.1-beta 102 5/3/2024
5.25.0 31,228 5/2/2024
5.24.0.12-beta 78 5/2/2024
5.24.0.11-beta 84 5/1/2024
5.24.0.9-beta 146 4/28/2024
5.24.0.8-beta 260 4/25/2024
5.24.0.7-beta 96 4/24/2024
5.24.0.6-beta 94 4/24/2024
5.24.0.5-beta 92 4/23/2024
5.24.0.4-beta 299 4/21/2024
5.24.0.3-beta 113 4/18/2024
5.24.0.2-beta 90 4/18/2024
5.24.0.1-beta 301 4/9/2024
5.24.0 75,618 4/1/2024
5.23.0.15-beta 229 3/28/2024
5.23.0.14-beta 206 3/26/2024
5.23.0.13-beta 303 3/24/2024
5.23.0.12-beta 518 3/22/2024
5.23.0.11-beta 182 3/21/2024
5.23.0.10-beta 305 3/19/2024
5.23.0.9-beta 247 3/15/2024
5.23.0.8-beta 245 3/14/2024
5.23.0.7-beta 175 3/14/2024
5.23.0.6-beta 187 3/13/2024
5.23.0.5-beta 805 3/11/2024
5.23.0.4-beta 493 3/8/2024
5.23.0.3-beta 421 3/5/2024
5.23.0.2-beta 364 3/3/2024
5.23.0.1-beta 609 2/29/2024
5.23.0 112,578 2/29/2024
5.22.0.18-beta 285 2/28/2024
5.22.0.17-beta 303 2/27/2024
5.22.0.16-beta 273 2/27/2024
5.22.0.15-beta 324 2/26/2024
5.22.0.14-beta 301 2/26/2024
5.22.0.13-beta 306 2/23/2024
5.22.0.12-beta 493 2/21/2024
5.22.0.11-beta 323 2/21/2024
5.22.0.10-beta 317 2/21/2024
5.22.0.9-beta 327 2/20/2024
5.22.0.8-beta 422 2/18/2024
5.22.0.7-beta 476 2/15/2024
5.22.0.6-beta 341 2/14/2024
5.22.0.5-beta 398 2/12/2024
5.22.0.4-beta 362 2/12/2024
5.22.0.3-beta 335 2/12/2024
5.22.0.2-beta 383 2/8/2024
5.22.0.1-beta 351 2/8/2024
5.22.0 91,208 2/1/2024
5.21.2.20-beta 357 1/31/2024
5.21.2.19-beta 387 1/30/2024
5.21.2.18-beta 418 1/27/2024
5.21.2.17-beta 431 1/26/2024
5.21.2.16-beta 1,647 1/21/2024
5.21.2.15-beta 431 1/18/2024
5.21.2.14-beta 506 1/17/2024
5.21.2.13-beta 416 1/16/2024
5.21.2.12-beta 418 1/15/2024
5.21.2.11-beta 398 1/13/2024
5.21.2.10-beta 428 1/12/2024
5.21.2.9-beta 434 1/11/2024
5.21.2.8-beta 414 1/10/2024
5.21.2.7-beta 418 1/10/2024
5.21.2.6-beta 467 1/9/2024
5.21.2.5-beta 498 1/9/2024
5.21.2.4-beta 502 1/7/2024
5.21.2.3-beta 448 1/6/2024
5.21.2.2-beta 467 1/4/2024
5.21.2.1-beta 446 1/4/2024
5.21.2 122,795 1/2/2024
5.21.1.1-beta 428 1/2/2024
5.21.1 649 1/2/2024
5.21.0 1,153 1/2/2024
5.20.1.12-beta 485 12/30/2023
5.20.1.11-beta 405 12/30/2023
5.20.1.10-beta 435 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,849 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 728 12/7/2023
5.20.1 61,294 12/1/2023
5.20.0.2-beta 495 11/30/2023
5.20.0.1-beta 435 11/30/2023
5.20.0 19,296 11/28/2023
5.20.0-rc2 1,498 11/26/2023
5.20.0-rc1 1,952 11/18/2023
5.19.2 49,190 11/7/2023
5.19.1 9,312 11/4/2023
5.19.0.13-beta 516 11/15/2023
5.19.0.12-beta 430 11/15/2023
5.19.0.11-beta 439 11/15/2023
5.19.0.10-beta 482 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 448 10/31/2023
5.19.0.1-beta 435 10/29/2023
5.19.0 12,024 10/29/2023
5.18.0.9-beta 444 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 942 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 55,720 10/1/2023
5.17.1.32-beta 452 10/1/2023
5.17.1.31-beta 490 9/29/2023
5.17.1.30-beta 439 9/29/2023
5.17.1.29-beta 770 9/28/2023
5.17.1.28-beta 449 9/27/2023
5.17.1.27-beta 475 9/27/2023
5.17.1.26-beta 443 9/27/2023
5.17.1.25-beta 496 9/26/2023
5.17.1.24-beta 461 9/24/2023
5.17.1.23-beta 444 9/23/2023
5.17.1.22-beta 415 9/23/2023
5.17.1.21-beta 420 9/22/2023
5.17.1.20-beta 445 9/21/2023
5.17.1.19-beta 1,003 9/13/2023
5.17.1.18-beta 469 9/12/2023
5.17.1.17-beta 476 9/12/2023
5.17.1.16-beta 445 9/11/2023
5.17.1.15-beta 458 9/10/2023
5.17.1.14-beta 446 9/9/2023
5.17.1.13-beta 461 9/8/2023
5.17.1.12-beta 433 9/8/2023
5.17.1.11-beta 481 9/8/2023
5.17.1.10-beta 406 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 37,124 9/5/2023
5.17.1 1,888 9/4/2023
5.17.0.2-beta 428 9/4/2023
5.17.0.1-beta 454 9/4/2023
5.17.0 1,386 9/3/2023
5.16.0.4-beta 455 9/3/2023
5.16.0.3-beta 476 9/2/2023
5.16.0.2-beta 463 8/31/2023
5.16.0.1-beta 480 8/30/2023
5.16.0 14,279 8/30/2023
5.15.0.22-beta 623 8/26/2023
5.15.0.21-beta 511 8/24/2023
5.15.0.20-beta 679 8/23/2023
5.15.0.19-beta 450 8/23/2023
5.15.0.18-beta 496 8/18/2023
5.15.0.17-beta 576 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 476 8/13/2023
5.15.0.12-beta 449 8/11/2023
5.15.0.11-beta 558 8/10/2023
5.15.0.9-beta 443 8/10/2023
5.15.0.8-beta 456 8/10/2023
5.15.0.7-beta 440 8/10/2023
5.15.0.6-beta 467 8/10/2023
5.15.0.5-beta 454 8/9/2023
5.15.0.4-beta 485 8/9/2023
5.15.0.3-beta 460 8/8/2023
5.15.0.2-beta 2,287 8/4/2023
5.15.0.1-beta 570 8/4/2023
5.15.0 80,975 8/1/2023
5.14.0.7-beta 510 7/31/2023
5.14.0.6-beta 484 7/30/2023
5.14.0.5-beta 498 7/29/2023
5.14.0.4-beta 447 7/28/2023
5.14.0.3-beta 483 7/28/2023
5.14.0.2-beta 530 7/26/2023
5.14.0.1-beta 763 7/20/2023
5.14.0 31,105 7/16/2023
5.13.0.9-beta 466 7/14/2023
5.13.0.8-beta 462 7/12/2023
5.13.0.7-beta 487 7/11/2023
5.13.0.6-beta 429 7/11/2023
5.13.0.5-beta 447 7/10/2023
5.13.0.4-beta 472 7/8/2023
5.13.0.3-beta 499 7/7/2023
5.13.0.2-beta 502 7/6/2023
5.13.0.1-beta 469 6/27/2023
5.13.0 52,140 6/24/2023
5.12.0.4-beta 453 6/23/2023
5.12.0.3-beta 537 6/19/2023
5.12.0.2-beta 474 6/18/2023
5.12.0.1-beta 696 6/14/2023
5.12.0 27,773 6/11/2023
5.11.0.6-beta 465 6/10/2023
5.11.0.5-beta 465 6/9/2023
5.11.0.4-beta 518 6/8/2023
5.11.0.3-beta 522 6/6/2023
5.11.0.2-beta 548 5/31/2023
5.11.0.1-beta 475 5/30/2023
5.11.0 34,501 5/27/2023
5.10.0.5-beta 479 5/24/2023
5.10.0.4-beta 489 5/22/2023
5.10.0.3-beta 804 5/7/2023
5.10.0.2-beta 437 5/6/2023
5.10.0.1-beta 520 5/3/2023
5.10.0 87,485 4/30/2023
5.9.0.4-beta 475 4/29/2023
5.9.0.3-beta 472 4/29/2023
5.9.0.2-beta 1,041 4/25/2023
5.9.0.1-beta 513 4/24/2023
5.9.0 60,291 4/22/2023
5.8.1.15-beta 454 4/21/2023
5.8.1.14-beta 500 4/21/2023
5.8.1.13-beta 510 4/20/2023
5.8.1.12-beta 433 4/20/2023
5.8.1.11-beta 482 4/20/2023
5.8.1.10-beta 449 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 570 3/30/2023
5.8.1.2-beta 628 3/30/2023
5.8.1.1-beta 632 3/29/2023
5.8.1 57,718 3/24/2023
5.8.0.8-beta 479 3/23/2023
5.8.0.7-beta 470 3/23/2023
5.8.0.6-beta 506 3/20/2023
5.8.0.5-beta 494 3/17/2023
5.8.0.4-beta 478 3/17/2023
5.8.0.3-beta 546 3/13/2023
5.8.0.2-beta 635 3/8/2023
5.8.0.1-beta 482 3/6/2023
5.8.0 38,467 3/5/2023
5.7.2.14-beta 499 3/4/2023
5.7.2.13-beta 543 3/2/2023
5.7.2.12-beta 1,435 3/2/2023
5.7.2.11-beta 457 3/2/2023
5.7.2.10-beta 533 3/1/2023
5.7.2.9-beta 533 2/28/2023
5.7.2.8-beta 497 2/28/2023
5.7.2.7-beta 456 2/28/2023
5.7.2.6-beta 473 2/27/2023
5.7.2.5-beta 480 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 66,921 2/14/2023
5.7.1.1-beta 476 2/13/2023
5.7.1 15,179 2/9/2023
5.7.0.4-beta 591 2/6/2023
5.7.0.3-beta 477 2/6/2023
5.7.0.2-beta 676 2/3/2023
5.7.0.1-beta 524 1/31/2023
5.7.0 23,570 1/29/2023
5.6.0.6-beta 527 1/28/2023
5.6.0.5-beta 608 1/26/2023
5.6.0.4-beta 525 1/25/2023
5.6.0.3-beta 742 1/18/2023
5.6.0.2-beta 454 1/18/2023
5.6.0.1-beta 544 1/17/2023
5.6.0 88,102 1/2/2023
5.5.0.5-beta 1,232 12/19/2022
5.5.0.4-beta 513 12/17/2022
5.5.0.3-beta 814 12/12/2022
5.5.0.2-beta 452 12/12/2022
5.5.0.1-beta 468 12/10/2022
5.5.0 41,456 12/9/2022
5.4.1.7-beta 505 12/7/2022
5.4.1.6-beta 952 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,463 11/18/2022
5.4.0.2-beta 466 11/17/2022
5.4.0.1-beta 1,001 11/10/2022
5.4.0 12,472 11/9/2022
5.3.2.13-beta 462 11/9/2022
5.3.2.12-beta 484 11/8/2022
5.3.2.11-beta 570 11/8/2022
5.3.2.10-beta 461 11/8/2022
5.3.2.9-beta 495 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 30,630 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 489 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,955 10/31/2022
5.3.0.1-beta 487 10/30/2022
5.3.0 1,212 10/29/2022
5.3.0-beta 489 10/28/2022
5.2.1.17-beta 484 10/28/2022
5.2.1.16-beta 567 10/26/2022
5.2.1.15-beta 441 10/26/2022
5.2.1.14-beta 493 10/26/2022
5.2.1.13-beta 524 10/25/2022
5.2.1.12-beta 504 10/25/2022
5.2.1.11-beta 451 10/25/2022
5.2.1.10-beta 483 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,757 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,433 10/13/2022
5.2.0-beta9 948 9/16/2022
5.2.0-beta8 548 9/16/2022
5.2.0-beta7 571 9/14/2022
5.2.0-beta6 548 9/14/2022
5.2.0-beta5 528 9/14/2022
5.2.0-beta4 495 9/13/2022
5.2.0-beta3 494 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 509 9/26/2022
5.2.0-beta2 591 9/10/2022
5.2.0-beta19 511 9/25/2022
5.2.0-beta18 493 9/25/2022
5.2.0-beta17 484 9/23/2022
5.2.0-beta16 475 9/22/2022
5.2.0-beta15 578 9/20/2022
5.2.0-beta14 470 9/20/2022
5.2.0-beta13 513 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 470 9/10/2022
5.1.1-beta5 547 9/10/2022
5.1.1-beta4 477 9/9/2022
5.1.1-beta3 480 9/9/2022
5.1.1-beta2 462 9/9/2022
5.1.1-beta1 453 9/8/2022
5.1.0 32,710 9/8/2022
5.1.0-beta9 698 8/31/2022
5.1.0-beta8 467 8/29/2022
5.1.0-beta7 481 8/29/2022
5.1.0-beta6 493 8/28/2022
5.1.0-beta5 447 8/27/2022
5.1.0-beta4 473 8/27/2022
5.1.0-beta3 540 8/26/2022
5.1.0-beta2 478 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 459 8/25/2022
5.0.0 21,499 8/24/2022
5.0.0-beta9 546 8/21/2022
5.0.0-beta8 474 8/20/2022
5.0.0-beta7 470 8/20/2022
5.0.0-beta6 563 8/18/2022
5.0.0-beta5 623 8/17/2022
5.0.0-beta4 451 8/17/2022
5.0.0-beta3 470 8/16/2022
5.0.0-beta2 503 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 475 8/15/2022
4.5.0-beta9 1,000 8/13/2022
4.5.0-beta8 537 8/12/2022
4.5.0-beta7 595 8/11/2022
4.5.0-beta6 664 8/9/2022
4.5.0-beta5 452 8/8/2022
4.5.0-beta4 551 8/8/2022
4.5.0-beta3 474 8/8/2022
4.5.0-beta2 498 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 514 8/4/2022
4.4.0 27,121 8/3/2022
4.4.0-beta9 469 8/2/2022
4.4.0-beta8 477 7/31/2022
4.4.0-beta7 473 7/28/2022
4.4.0-beta6 550 7/24/2022
4.4.0-beta5 502 7/24/2022
4.4.0-beta4 486 7/23/2022
4.4.0-beta3 496 7/22/2022
4.4.0-beta2 479 7/22/2022
4.4.0-beta1 487 7/20/2022
4.3.2-beta1 589 7/13/2022
4.3.1 22,009 7/13/2022
4.3.1-beta5 688 7/10/2022
4.3.1-beta4 640 7/3/2022
4.3.1-beta3 485 7/2/2022
4.3.1-beta2 1,402 7/2/2022
4.3.1-beta1 535 6/30/2022
4.3.0 57,786 6/17/2022
4.3.0-beta9 1,049 5/30/2022
4.3.0-beta8 492 5/29/2022
4.3.0-beta7 597 5/27/2022
4.3.0-beta6 578 5/25/2022
4.3.0-beta5 547 5/24/2022
4.3.0-beta4 495 5/24/2022
4.3.0-beta3 465 5/23/2022
4.3.0-beta2 533 5/21/2022
4.3.0-beta11 466 6/3/2022
4.3.0-beta10 453 5/31/2022
4.3.0-beta1 508 5/20/2022
4.2.1-beta2 473 5/19/2022
4.2.1-beta1 462 5/19/2022
4.2.0 13,546 5/19/2022
4.2.0-beta9 700 5/13/2022
4.2.0-beta8 477 5/13/2022
4.2.0-beta7 525 5/11/2022
4.2.0-beta6 511 5/11/2022
4.2.0-beta5 505 5/10/2022
4.2.0-beta4 496 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,900 4/26/2022
4.1.0-beta8 7,779 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 687 4/2/2022
4.1.0-beta1 534 3/31/2022
4.0.0 41,429 3/30/2022
4.0.0-beta6 561 3/26/2022
4.0.0-beta5 526 3/24/2022
4.0.0-beta4 504 3/23/2022
4.0.0-beta3 524 3/22/2022
4.0.0-beta2 507 3/22/2022
4.0.0-beta1 460 3/22/2022
3.12.1-beta2 496 3/22/2022
3.12.1-beta1 475 3/21/2022
3.11.0 7,875 3/21/2022
3.11.0-beta9 516 3/17/2022
3.11.0-beta8 473 3/16/2022
3.11.0-beta7 501 3/15/2022
3.11.0-beta6 512 3/14/2022
3.11.0-beta5 480 3/14/2022
3.11.0-beta4 496 3/14/2022
3.11.0-beta3 476 3/13/2022
3.11.0-beta2 474 3/13/2022
3.11.0-beta12 494 3/18/2022
3.11.0-beta11 640 3/17/2022
3.11.0-beta10 468 3/17/2022
3.11.0-beta1 497 3/10/2022
3.10.0 4,343 3/10/2022
3.10.0-beta7 454 3/9/2022
3.10.0-beta6 487 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,647 3/4/2022
3.9.0-beta9 497 3/2/2022
3.9.0-beta8 495 3/1/2022
3.9.0-beta7 472 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 492 2/28/2022
3.9.0-beta2 474 2/28/2022
3.9.0-beta13 483 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 491 2/27/2022
3.8.1 3,240 2/27/2022
3.8.0 1,368 2/26/2022
3.7.1-beta2 528 2/25/2022
3.7.1-beta1 440 2/25/2022
3.7.0 1,241 2/25/2022
3.6.0 1,401 2/23/2022
3.6.0-beta8 490 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,233 2/19/2022
3.5.1-beta4 494 2/18/2022
3.5.1-beta3 502 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,267 2/13/2022
3.4.0 1,679 2/7/2022
3.4.0-beta2 502 2/6/2022
3.4.0-beta1 476 2/6/2022
3.3.0 1,145 2/5/2022
3.3.0-beta4 528 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,235 2/2/2022
3.2.1 1,259 2/1/2022
3.2.1-beta1 470 1/30/2022
3.2.0 2,308 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 497 1/28/2022
3.2.0-beta2 521 1/28/2022
3.2.0-beta1 486 1/25/2022
3.1.4 2,579 1/27/2022
3.1.3 1,351 1/26/2022
3.1.3-beta1 516 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,138 1/22/2022
3.0.0-beta1 491 1/22/2022
2.21.0-beta9 1,359 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 458 1/17/2022
2.21.0-beta15 446 1/21/2022
2.21.0-beta14 468 1/21/2022
2.21.0-beta13 462 1/20/2022
2.21.0-beta12 503 1/20/2022
2.21.0-beta11 445 1/19/2022
2.21.0-beta10 513 1/19/2022
2.21.0-beta1 484 1/16/2022
2.20.0 924 1/16/2022
2.20.0-beta3 462 1/16/2022
2.20.0-beta2 491 1/15/2022
2.20.0-beta1 510 1/15/2022
2.19.2 1,094 1/14/2022
2.19.1 999 1/10/2022
2.19.0 926 1/10/2022
2.19.0-beta2 490 1/9/2022
2.19.0-beta1 507 1/6/2022
2.18.1 976 1/2/2022
2.18.0 941 12/31/2021
2.18.0-beta2 524 12/30/2021
2.18.0-beta1 461 12/30/2021
2.17.0 945 12/29/2021
2.17.0-beta2 475 12/28/2021
2.17.0-beta1 493 12/27/2021
2.16.0 986 12/25/2021
2.15.0 948 12/23/2021
2.15.0-beta2 484 12/22/2021
2.15.0-beta1 477 12/22/2021
2.14.0 911 12/21/2021
2.14.0-beta1 482 12/20/2021
2.13.1 938 12/20/2021
2.13.0 905 12/19/2021
2.12.0 713 12/17/2021
2.12.0-beta2 442 12/16/2021
2.12.0-beta1 495 12/16/2021
2.11.0 756 12/15/2021
2.10.1-beta1 481 12/15/2021
2.10.0 6,320 11/24/2021
2.10.0-beta2 5,398 11/24/2021
2.10.0-beta1 538 11/18/2021
2.9.1 811 11/9/2021
2.9.0 814 11/4/2021
2.9.0-beta3 556 11/1/2021
2.9.0-beta2 584 10/25/2021
2.9.0-beta1 635 10/24/2021
2.8.1 925 10/24/2021
2.8.0 788 10/24/2021
2.8.0-beta1 530 10/23/2021
2.7.1 870 10/23/2021
2.7.0 789 10/23/2021
2.6.0 884 10/21/2021
2.5.1 750 10/20/2021
2.5.0 780 10/20/2021
2.5.0-beta1 570 10/19/2021
2.4.0 773 10/19/2021
2.3.0 753 10/18/2021
2.3.0-beta2 549 10/18/2021
2.2.1 790 10/17/2021
2.2.0 803 10/17/2021
2.1.1 832 10/16/2021
2.1.0 824 10/16/2021
2.1.0-beta5 573 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 809 10/14/2021
1.9.0 828 10/13/2021
1.8.0 772 10/12/2021
1.8.0-beta1 499 10/11/2021
1.7.0 867 10/10/2021
1.6.0 869 10/7/2021
1.6.0-beta5 532 10/6/2021
1.6.0-beta4 530 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 782 10/4/2021
1.4.0 813 10/3/2021
1.3.0 784 10/1/2021
1.2.0 781 9/29/2021
1.1.0 808 9/29/2021
1.0.0 3,342 9/28/2021
1.0.0-rc6 519 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 499 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 beta release. do not use in production!