FastEndpoints 1.7.0

FastEndpoints

An alternative for building RESTful Web APIs with ASP.Net 6 which encourages CQRS and Vertical Slice Architecture.

FastEndpoints offers a more elegant solution than the Minimal APIs and MVC Controllers.

Performance is on par with the Minimal APIs and is faster; uses less memory; and outperforms a traditional MVC Controller by about 34k requests per second on a Ryzen 3700X desktop.

Features

  • Define your endpoints in multiple class files (even in deeply nested folders)
  • Auto discovery and registration of endpoints
  • Attribute-free endpoint definitions (no attribute argument type restrictions)
  • Secure by default and supports most authentication/authorization providers
  • Built-in support for JWT Bearer auth scheme
  • Supports policy/permission/role/claim based security
  • Declarative security policy building (inside each endpoint)
  • Supports any IOC container (compatible with asp.net)
  • Dependencies are automatically property injected
  • Model binding support from route/json body/claims/forms
  • Model validation using FluentValidation rules
  • Convenient business logic validation and error responses
  • Easy access to environment and configuration settings
  • Supports pipeline behaviors like MediatR
  • Supports in-process pub/sub event notifications
  • Auto discovery of event notification handlers
  • Convenient integration testing (route-less and strongly-typed)
  • Plays well with the asp.net middleware pipeline
  • Supports swagger/serilog/etc.
  • Visual studio extension (vsix) for easy vertical slice feature scaffolding
  • Plus anything else the minimal apis can do...

Try it out...

install from nuget: Install-Package FastEndpoints

note: the minimum required sdk version is .net 6.0

Code Sample:

Program.cs

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

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

Request.cs

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; }
}

Validator.cs

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.cs

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

Endpoint.cs

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

    public MyEndpoint()
    {
        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);
        Claims(Claim.CustomerID);
    }

    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.

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

        var res = new MyResponse //typed response makes integration testing easy
        {
            Message = $"the route parameter value is: {req.Id}",
            Name = req.Name,
            Price = req.Price
        };

        await SendAsync(res);
    }
}

all of your Endpoint definitions are automatically discovered on app startup. no manual mapping is required like with minimal apis.

Documentation

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

Statistics        Avg      Stdev        Max
  Reqs/sec    134251.40   16085.58  190809.19
  Latency        3.68ms     1.35ms   371.64ms
  HTTP codes:
    1xx - 0, 2xx - 1357086, 3xx - 0, 4xx - 0, 5xx - 0
    others - 0
  Throughput:    68.05MB/s

AspNet Minimal Api

Statistics        Avg      Stdev        Max
  Reqs/sec    136898.40   13732.59  185851.32
  Latency        3.62ms   470.46us    94.99ms
  HTTP codes:
    1xx - 0, 2xx - 1379343, 3xx - 0, 4xx - 0, 5xx - 0
    others - 0
  Throughput:    69.19MB/s

AspNet MVC Controller

Statistics        Avg      Stdev        Max
  Reqs/sec    100479.98   13649.02  123388.00
  Latency        4.90ms     1.67ms   375.00ms
  HTTP codes:
    1xx - 0, 2xx - 1019171, 3xx - 0, 4xx - 0, 5xx - 0
    others - 0
  Throughput:    50.91MB/s

Carter Module

Statistics        Avg      Stdev        Max
  Reqs/sec      7592.05    3153.39   18037.17
  Latency       65.45ms    17.77ms   560.62ms
  HTTP codes:
    1xx - 0, 2xx - 76638, 3xx - 0, 4xx - 0, 5xx - 0
    others - 0
  Throughput:     3.82MB/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 Gen 1 Allocated
FastEndpointsEndpoint 83.03 μs 5.007 μs 3.312 μs 1.00 0.00 2.6000 0.1000 22 KB
MinimalApiEndpoint 83.51 μs 3.781 μs 2.501 μs 1.01 0.03 2.5000 - 21 KB
AspNetCoreMVC 114.20 μs 3.806 μs 2.518 μs 1.38 0.06 3.4000 0.2000 28 KB
CarterModule 607.48 μs 1.455 μs 0.962 μs 7.33 0.29 5.9000 2.9000 48 KB

Showing the top 20 packages that depend on FastEndpoints.

Packages Downloads
Elsa.Api.Common
Provides common features to modules that expose API endpoints.
7
Elsa.Api.Common
Provides common features to modules that expose API endpoints.
8
FastEndpoints.Security
Security library for FastEndpoints.
6
FastEndpoints.Security
Security library for FastEndpoints.
7
FastEndpoints.Swagger
Swagger support for FastEndpoints.
6
FastEndpoints.Swagger
Swagger support for FastEndpoints.
8

- add dependancy resolving support for validators - improve http client extensions - improve dependancy resolving methods

.NET 6.0

Version Downloads Last updated
5.32.0.15-beta 0 12/26/2024
5.32.0.14-beta 0 12/25/2024
5.32.0.13-beta 0 12/24/2024
5.32.0.12-beta 1 12/22/2024
5.32.0.11-beta 1 12/22/2024
5.32.0.10-beta 1 12/22/2024
5.32.0.9-beta 1 12/22/2024
5.32.0.8-beta 1 12/22/2024
5.32.0.7-beta 1 12/22/2024
5.32.0.6-beta 0 12/13/2024
5.32.0.5-beta 0 12/11/2024
5.32.0.4-beta 0 12/10/2024
5.32.0.3-beta 3 12/23/2024
5.32.0.2-beta 3 12/13/2024
5.32.0.1-beta 3 12/11/2024
5.32.0 3 12/13/2024
5.31.0.18-beta 3 12/12/2024
5.31.0.17-beta 3 12/02/2024
5.31.0.16-beta 4 12/02/2024
5.31.0.15-beta 3 12/02/2024
5.31.0.14-beta 3 12/11/2024
5.31.0.13-beta 3 12/11/2024
5.31.0.12-beta 3 12/01/2024
5.31.0.11-beta 5 12/07/2024
5.31.0.10-beta 1 12/07/2024
5.31.0.9-beta 7 12/02/2024
5.31.0.8-beta 5 12/02/2024
5.31.0.7-beta 5 12/02/2024
5.31.0.6-beta 0 11/12/2024
5.31.0.5-beta 3 12/14/2024
5.31.0.4-beta 5 12/02/2024
5.31.0.3-beta 2 12/02/2024
5.31.0.2-beta 3 12/09/2024
5.31.0.1-beta 5 12/02/2024
5.31.0 3 12/13/2024
5.30.0.23-beta 3 12/11/2024
5.30.0.22-beta 1 12/12/2024
5.30.0.21-beta 3 12/13/2024
5.30.0.20-beta 5 12/02/2024
5.30.0.19-beta 2 12/06/2024
5.30.0.18-beta 1 12/12/2024
5.30.0.17-beta 2 12/09/2024
5.30.0.16-beta 1 12/07/2024
5.30.0.15-beta 3 12/05/2024
5.30.0.14-beta 4 12/02/2024
5.30.0.13-beta 5 12/03/2024
5.30.0.12-beta 5 12/01/2024
5.30.0.11-beta 3 11/30/2024
5.30.0.10-beta 4 12/02/2024
5.30.0.9-beta 4 12/02/2024
5.30.0.8-beta 3 12/02/2024
5.30.0.7-beta 5 12/02/2024
5.30.0.6-beta 5 12/04/2024
5.30.0.5-beta 5 12/01/2024
5.30.0.4-beta 5 12/02/2024
5.30.0.3-beta 4 12/02/2024
5.30.0.2-beta 2 12/02/2024
5.30.0.1-beta 5 12/03/2024
5.30.0 2 12/09/2024
5.29.0.13-beta 3 12/12/2024
5.29.0.12-beta 3 12/04/2024
5.29.0.11-beta 3 12/14/2024
5.29.0.10-beta 4 12/03/2024
5.29.0.8-beta 2 12/09/2024
5.29.0.7-beta 3 12/10/2024
5.29.0.6-beta 4 12/02/2024
5.29.0.5-beta 3 12/13/2024
5.29.0.4-beta 5 12/04/2024
5.29.0.3-beta 4 12/06/2024
5.29.0.2-beta 3 12/01/2024
5.29.0.1-beta 1 12/12/2024
5.29.0 3 12/02/2024
5.28.0.7-beta 5 12/01/2024
5.28.0.6-beta 5 12/01/2024
5.28.0.5-beta 5 12/02/2024
5.28.0.4-beta 4 12/02/2024
5.28.0.3-beta 3 12/13/2024
5.28.0.2-beta 5 12/02/2024
5.28.0.1-beta 1 12/12/2024
5.28.0 4 12/07/2024
5.27.0.14-beta 5 12/10/2024
5.27.0.13-beta 5 12/01/2024
5.27.0.12-beta 2 12/09/2024
5.27.0.11-beta 5 12/04/2024
5.27.0.10-beta 5 12/02/2024
5.27.0.9-beta 3 12/13/2024
5.27.0.8-beta 3 11/30/2024
5.27.0.7-beta 3 12/13/2024
5.27.0.6-beta 5 12/01/2024
5.27.0.5-beta 3 12/13/2024
5.27.0.4-beta 2 12/08/2024
5.27.0.3-beta 3 12/13/2024
5.27.0.2-beta 5 12/02/2024
5.27.0.1-beta 4 12/02/2024
5.27.0 5 12/02/2024
5.26.0.27-beta 3 12/13/2024
5.26.0.26-beta 2 12/09/2024
5.26.0.25-beta 3 12/17/2024
5.26.0.24-beta 2 12/09/2024
5.26.0.23-beta 5 12/03/2024
5.26.0.22-beta 1 12/09/2024
5.26.0.21-beta 2 12/09/2024
5.26.0.20-beta 3 12/12/2024
5.26.0.19-beta 3 12/13/2024
5.26.0.18-beta 3 12/11/2024
5.26.0.17-beta 3 12/02/2024
5.26.0.16-beta 3 12/12/2024
5.26.0.15-beta 3 12/13/2024
5.26.0.14-beta 2 12/04/2024
5.26.0.13-beta 3 12/19/2024
5.26.0.12-beta 3 12/13/2024
5.26.0.11-beta 5 12/03/2024
5.26.0.10-beta 3 12/11/2024
5.26.0.9-beta 2 12/10/2024
5.26.0.8-beta 3 12/20/2024
5.26.0.7-beta 3 12/20/2024
5.26.0.6-beta 1 12/12/2024
5.26.0.5-beta 3 12/13/2024
5.26.0.4-beta 5 12/02/2024
5.26.0.3-beta 3 12/19/2024
5.26.0.2-beta 2 12/09/2024
5.26.0.1-beta 1 12/09/2024
5.26.0 2 12/06/2024
5.25.0.15-beta 5 12/02/2024
5.25.0.14-beta 3 12/01/2024
5.25.0.13-beta 2 12/02/2024
5.25.0.12-beta 5 12/02/2024
5.25.0.11-beta 2 12/10/2024
5.25.0.10-beta 4 12/02/2024
5.25.0.9-beta 1 12/09/2024
5.25.0.8-beta 1 12/12/2024
5.25.0.7-beta 3 12/13/2024
5.25.0.6-beta 5 12/01/2024
5.25.0.5-beta 3 12/05/2024
5.25.0.4-beta 5 12/01/2024
5.25.0.3-beta 3 11/30/2024
5.25.0.2-beta 4 12/02/2024
5.25.0.1-beta 5 12/02/2024
5.25.0 5 12/02/2024
5.24.0.12-beta 5 12/01/2024
5.24.0.11-beta 5 12/02/2024
5.24.0.9-beta 4 12/02/2024
5.24.0.8-beta 5 12/11/2024
5.24.0.7-beta 5 12/01/2024
5.24.0.6-beta 1 12/03/2024
5.24.0.5-beta 3 12/12/2024
5.24.0.4-beta 3 12/13/2024
5.24.0.3-beta 2 12/09/2024
5.24.0.2-beta 5 12/01/2024
5.24.0.1-beta 5 12/02/2024
5.24.0 3 12/13/2024
5.23.0.15-beta 5 12/02/2024
5.23.0.14-beta 3 12/13/2024
5.23.0.13-beta 2 12/09/2024
5.23.0.12-beta 3 12/02/2024
5.23.0.11-beta 3 12/11/2024
5.23.0.10-beta 5 12/02/2024
5.23.0.9-beta 4 12/02/2024
5.23.0.8-beta 5 12/11/2024
5.23.0.7-beta 5 12/02/2024
5.23.0.6-beta 5 12/03/2024
5.23.0.5-beta 3 12/11/2024
5.23.0.4-beta 2 12/09/2024
5.23.0.3-beta 4 12/03/2024
5.23.0.2-beta 3 12/13/2024
5.23.0.1-beta 3 12/13/2024
5.23.0 3 12/02/2024
5.22.0.18-beta 3 12/08/2024
5.22.0.17-beta 5 12/02/2024
5.22.0.16-beta 5 12/10/2024
5.22.0.15-beta 5 12/02/2024
5.22.0.14-beta 5 12/02/2024
5.22.0.13-beta 5 12/02/2024
5.22.0.12-beta 1 12/12/2024
5.22.0.11-beta 7 12/02/2024
5.22.0.10-beta 4 12/02/2024
5.22.0.9-beta 4 12/11/2024
5.22.0.8-beta 4 12/02/2024
5.22.0.7-beta 5 12/01/2024
5.22.0.6-beta 4 12/02/2024
5.22.0.5-beta 5 12/03/2024
5.22.0.4-beta 1 12/02/2024
5.22.0.3-beta 2 12/08/2024
5.22.0.2-beta 3 12/13/2024
5.22.0.1-beta 1 12/11/2024
5.22.0 5 12/02/2024
5.21.2.20-beta 5 12/02/2024
5.21.2.19-beta 4 12/03/2024
5.21.2.18-beta 4 12/02/2024
5.21.2.17-beta 4 12/04/2024
5.21.2.16-beta 2 12/08/2024
5.21.2.15-beta 2 12/09/2024
5.21.2.14-beta 4 12/02/2024
5.21.2.13-beta 5 12/02/2024
5.21.2.12-beta 5 12/01/2024
5.21.2.11-beta 3 12/13/2024
5.21.2.10-beta 5 12/02/2024
5.21.2.9-beta 4 12/03/2024
5.21.2.8-beta 1 12/02/2024
5.21.2.7-beta 5 12/02/2024
5.21.2.6-beta 1 12/12/2024
5.21.2.5-beta 3 12/20/2024
5.21.2.4-beta 3 12/08/2024
5.21.2.3-beta 5 12/02/2024
5.21.2.2-beta 4 12/02/2024
5.21.2.1-beta 5 12/02/2024
5.21.2 5 12/01/2024
5.21.1.1-beta 1 12/12/2024
5.21.1 3 12/13/2024
5.21.0 2 12/09/2024
5.20.1.12-beta 5 12/02/2024
5.20.1.11-beta 4 12/02/2024
5.20.1.10-beta 3 12/20/2024
5.20.1.9-beta 1 12/11/2024
5.20.1.8-beta 4 12/03/2024
5.20.1.7-beta 1 12/03/2024
5.20.1.6-beta 4 12/02/2024
5.20.1.5-beta 3 12/13/2024
5.20.1.4-beta 1 12/12/2024
5.20.1.3-beta 3 12/13/2024
5.20.1.2-beta 5 12/01/2024
5.20.1.1-beta 3 12/13/2024
5.20.1 3 12/19/2024
5.20.0.2-beta 2 12/06/2024
5.20.0.1-beta 5 12/02/2024
5.20.0 2 12/09/2024
5.20.0-rc2 2 12/09/2024
5.20.0-rc1 3 12/20/2024
5.19.2 3 12/12/2024
5.19.1 3 12/02/2024
5.19.0.13-beta 3 12/01/2024
5.19.0.12-beta 3 12/13/2024
5.19.0.11-beta 2 12/09/2024
5.19.0.10-beta 3 12/09/2024
5.19.0.9-beta 3 12/02/2024
5.19.0.8-beta 2 12/08/2024
5.19.0.7-beta 2 12/10/2024
5.19.0.6-beta 2 12/02/2024
5.19.0.5-beta 3 12/13/2024
5.19.0.4-beta 3 12/03/2024
5.19.0.3-beta 1 12/12/2024
5.19.0.2-beta 3 11/30/2024
5.19.0.1-beta 3 12/13/2024
5.19.0 3 12/13/2024
5.18.0.9-beta 3 11/30/2024
5.18.0.8-beta 5 12/01/2024
5.18.0.7-beta 3 12/13/2024
5.18.0.6-beta 5 12/02/2024
5.18.0.5-beta 5 12/02/2024
5.18.0.4-beta 3 12/01/2024
5.18.0.3-beta 5 12/02/2024
5.18.0.2-beta 5 12/01/2024
5.18.0.1-beta 5 12/02/2024
5.18.0 3 12/13/2024
5.17.1.32-beta 3 12/13/2024
5.17.1.31-beta 5 12/02/2024
5.17.1.30-beta 5 12/01/2024
5.17.1.29-beta 3 12/13/2024
5.17.1.28-beta 3 12/13/2024
5.17.1.27-beta 2 12/09/2024
5.17.1.26-beta 3 12/13/2024
5.17.1.25-beta 4 12/02/2024
5.17.1.24-beta 3 12/13/2024
5.17.1.23-beta 1 12/12/2024
5.17.1.22-beta 4 12/02/2024
5.17.1.21-beta 3 12/13/2024
5.17.1.20-beta 5 12/01/2024
5.17.1.19-beta 3 12/13/2024
5.17.1.18-beta 3 12/10/2024
5.17.1.17-beta 3 12/13/2024
5.17.1.16-beta 2 12/09/2024
5.17.1.15-beta 3 12/19/2024
5.17.1.14-beta 3 12/13/2024
5.17.1.13-beta 0 09/08/2023
5.17.1.12-beta 3 12/12/2024
5.17.1.11-beta 3 12/02/2024
5.17.1.10-beta 2 12/09/2024
5.17.1.9-beta 2 12/09/2024
5.17.1.8-beta 5 12/02/2024
5.17.1.7-beta 2 12/19/2024
5.17.1.6-beta 5 12/02/2024
5.17.1.5-beta 5 12/11/2024
5.17.1.4-beta 5 12/02/2024
5.17.1.3-beta 2 12/11/2024
5.17.1.2-beta 5 12/04/2024
5.17.1.1 3 12/09/2024
5.17.1 1 12/12/2024
5.17.0.2-beta 4 12/02/2024
5.17.0.1-beta 5 12/02/2024
5.17.0 3 12/02/2024
5.16.0.4-beta 1 12/12/2024
5.16.0.3-beta 1 12/12/2024
5.16.0.2-beta 1 12/11/2024
5.16.0.1-beta 3 12/13/2024
5.16.0 2 12/08/2024
5.15.0.22-beta 3 12/14/2024
5.15.0.21-beta 3 12/02/2024
5.15.0.20-beta 3 12/09/2024
5.15.0.19-beta 3 12/13/2024
5.15.0.18-beta 1 12/09/2024
5.15.0.17-beta 3 12/11/2024
5.15.0.16-beta 2 12/11/2024
5.15.0.15-beta 2 12/11/2024
5.15.0.14-beta 1 12/08/2024
5.15.0.12-beta 3 12/20/2024
5.15.0.11-beta 5 12/02/2024
5.15.0.9-beta 1 12/12/2024
5.15.0.8-beta 1 12/12/2024
5.15.0.7-beta 3 12/10/2024
5.15.0.6-beta 5 12/11/2024
5.15.0.5-beta 3 12/02/2024
5.15.0.4-beta 4 12/12/2024
5.15.0.3-beta 2 12/09/2024
5.15.0.2-beta 4 12/03/2024
5.15.0.1-beta 2 12/02/2024
5.15.0 5 12/02/2024
5.14.0.7-beta 5 12/02/2024
5.14.0.6-beta 5 12/01/2024
5.14.0.5-beta 2 12/09/2024
5.14.0.4-beta 5 12/02/2024
5.14.0.3-beta 5 12/02/2024
5.14.0.2-beta 3 11/30/2024
5.14.0.1-beta 3 12/13/2024
5.14.0 5 12/01/2024
5.13.0.9-beta 3 12/12/2024
5.13.0.8-beta 2 12/09/2024
5.13.0.7-beta 5 12/02/2024
5.13.0.6-beta 5 12/02/2024
5.13.0.5-beta 3 12/19/2024
5.13.0.4-beta 3 12/20/2024
5.13.0.3-beta 3 11/30/2024
5.13.0.2-beta 2 12/09/2024
5.13.0.1-beta 5 12/02/2024
5.13.0 3 12/13/2024
5.12.0.4-beta 5 12/11/2024
5.12.0.3-beta 5 12/02/2024
5.12.0.2-beta 3 12/02/2024
5.12.0.1-beta 1 12/12/2024
5.12.0 1 12/12/2024
5.11.0.6-beta 5 12/02/2024
5.11.0.5-beta 3 12/13/2024
5.11.0.4-beta 3 12/02/2024
5.11.0.3-beta 5 12/02/2024
5.11.0.2-beta 3 11/30/2024
5.11.0.1-beta 1 12/10/2024
5.11.0 3 12/12/2024
5.10.0.5-beta 3 12/19/2024
5.10.0.4-beta 5 12/02/2024
5.10.0.3-beta 5 12/01/2024
5.10.0.2-beta 3 12/13/2024
5.10.0.1-beta 3 12/22/2024
5.10.0 5 12/01/2024
5.9.0.4-beta 3 12/13/2024
5.9.0.3-beta 5 12/02/2024
5.9.0.2-beta 4 12/02/2024
5.9.0.1-beta 3 12/11/2024
5.9.0 3 12/08/2024
5.8.1.15-beta 4 12/02/2024
5.8.1.14-beta 2 12/03/2024
5.8.1.13-beta 3 12/02/2024
5.8.1.12-beta 5 12/02/2024
5.8.1.11-beta 3 12/02/2024
5.8.1.10-beta 4 12/02/2024
5.8.1.9-beta 5 12/01/2024
5.8.1.8-beta 3 11/30/2024
5.8.1.7-beta 4 12/02/2024
5.8.1.6-beta 3 12/13/2024
5.8.1.5-beta 0 04/08/2023
5.8.1.4-beta 5 12/02/2024
5.8.1.3-beta 5 12/02/2024
5.8.1.2-beta 5 12/02/2024
5.8.1.1-beta 2 12/09/2024
5.8.1 2 12/02/2024
5.8.0.8-beta 5 12/02/2024
5.8.0.7-beta 5 12/01/2024
5.8.0.6-beta 3 12/03/2024
5.8.0.5-beta 5 12/02/2024
5.8.0.4-beta 4 12/02/2024
5.8.0.3-beta 5 12/02/2024
5.8.0.2-beta 3 12/02/2024
5.8.0.1-beta 3 12/13/2024
5.8.0 1 12/07/2024
5.7.2.14-beta 3 11/30/2024
5.7.2.13-beta 2 12/08/2024
5.7.2.12-beta 3 12/13/2024
5.7.2.11-beta 3 12/13/2024
5.7.2.10-beta 5 12/02/2024
5.7.2.9-beta 2 12/10/2024
5.7.2.8-beta 1 12/12/2024
5.7.2.7-beta 5 12/11/2024
5.7.2.6-beta 5 12/01/2024
5.7.2.5-beta 5 12/10/2024
5.7.2.4-beta 1 12/12/2024
5.7.2.3-beta 4 12/07/2024
5.7.2.2-beta 5 12/02/2024
5.7.2.1-beta 3 12/12/2024
5.7.2 5 12/02/2024
5.7.1.1-beta 2 12/02/2024
5.7.1 5 12/02/2024
5.7.0.4-beta 1 12/11/2024
5.7.0.3-beta 4 12/02/2024
5.7.0.2-beta 5 12/02/2024
5.7.0.1-beta 3 12/13/2024
5.7.0 3 11/30/2024
5.6.0.6-beta 3 12/13/2024
5.6.0.5-beta 5 12/02/2024
5.6.0.4-beta 2 12/02/2024
5.6.0.3-beta 3 12/19/2024
5.6.0.2-beta 2 12/10/2024
5.6.0.1-beta 5 12/01/2024
5.6.0 1 12/08/2024
5.5.0.5-beta 2 12/10/2024
5.5.0.4-beta 3 12/08/2024
5.5.0.3-beta 2 12/09/2024
5.5.0.2-beta 3 12/13/2024
5.5.0.1-beta 2 12/03/2024
5.5.0 5 12/02/2024
5.4.1.7-beta 5 12/11/2024
5.4.1.6-beta 5 12/02/2024
5.4.1.5-beta 3 12/13/2024
5.4.1.4-beta 1 12/12/2024
5.4.1.3-beta 2 12/02/2024
5.4.1.2-beta 5 12/03/2024
5.4.1.1-beta 3 12/13/2024
5.4.1 5 12/02/2024
5.4.0.2-beta 5 12/02/2024
5.4.0.1-beta 5 12/10/2024
5.4.0 3 12/13/2024
5.3.2.13-beta 4 12/07/2024
5.3.2.12-beta 4 12/02/2024
5.3.2.11-beta 5 12/01/2024
5.3.2.10-beta 3 12/13/2024
5.3.2.9-beta 3 11/30/2024
5.3.2.8-beta 5 12/01/2024
5.3.2.7-beta 3 12/13/2024
5.3.2.6-beta 5 12/01/2024
5.3.2.5-beta 2 12/02/2024
5.3.2.4-beta 1 12/07/2024
5.3.2.3-beta 5 12/09/2024
5.3.2.2-beta 4 12/02/2024
5.3.2.1-beta 5 12/02/2024
5.3.2 4 12/02/2024
5.3.1.5-beta 3 12/19/2024
5.3.1.4-beta 1 12/12/2024
5.3.1.3-beta 2 12/02/2024
5.3.1.2-beta 5 12/02/2024
5.3.1.1-beta 3 12/13/2024
5.3.1 2 12/09/2024
5.3.0.1-beta 4 12/02/2024
5.3.0 1 12/02/2024
5.3.0-beta 2 12/09/2024
5.2.1.17-beta 1 12/03/2024
5.2.1.16-beta 5 12/02/2024
5.2.1.15-beta 3 11/30/2024
5.2.1.14-beta 5 12/10/2024
5.2.1.13-beta 3 12/20/2024
5.2.1.12-beta 2 12/10/2024
5.2.1.11-beta 1 12/12/2024
5.2.1.10-beta 4 12/03/2024
5.2.1.9-beta 5 12/02/2024
5.2.1.8-beta 5 12/02/2024
5.2.1.7-beta 4 12/02/2024
5.2.1.6-beta 5 12/02/2024
5.2.1.5-beta 3 12/05/2024
5.2.1.4-beta 4 12/02/2024
5.2.1.3-beta 5 12/02/2024
5.2.1.2-beta 5 12/02/2024
5.2.1.1-beta 3 12/02/2024
5.2.1 2 12/04/2024
5.2.0.2-beta 3 12/13/2024
5.2.0.1-beta 1 12/09/2024
5.2.0 5 12/02/2024
5.2.0-beta9 2 12/09/2024
5.2.0-beta8 3 12/12/2024
5.2.0-beta7 3 12/01/2024
5.2.0-beta6 5 12/02/2024
5.2.0-beta5 5 12/02/2024
5.2.0-beta4 5 12/01/2024
5.2.0-beta3 5 12/01/2024
5.2.0-beta28 5 12/02/2024
5.2.0-beta27 2 12/09/2024
5.2.0-beta26 2 12/02/2024
5.2.0-beta25 3 12/13/2024
5.2.0-beta24 4 12/07/2024
5.2.0-beta23 5 12/01/2024
5.2.0-beta22 5 12/02/2024
5.2.0-beta21 2 12/15/2024
5.2.0-beta20 5 12/02/2024
5.2.0-beta2 3 12/12/2024
5.2.0-beta19 5 12/10/2024
5.2.0-beta18 4 12/02/2024
5.2.0-beta17 3 12/13/2024
5.2.0-beta16 3 12/13/2024
5.2.0-beta15 5 12/02/2024
5.2.0-beta14 5 12/02/2024
5.2.0-beta13 5 12/02/2024
5.2.0-beta12 4 12/03/2024
5.2.0-beta11 3 12/13/2024
5.2.0-beta10 5 12/02/2024
5.2.0-beta1 3 12/13/2024
5.1.1-beta5 2 12/09/2024
5.1.1-beta4 5 12/02/2024
5.1.1-beta3 5 12/02/2024
5.1.1-beta2 3 12/13/2024
5.1.1-beta1 1 12/12/2024
5.1.0 2 12/09/2024
5.1.0-beta9 3 12/09/2024
5.1.0-beta8 5 12/02/2024
5.1.0-beta7 5 12/02/2024
5.1.0-beta6 5 12/01/2024
5.1.0-beta5 5 12/02/2024
5.1.0-beta4 2 12/10/2024
5.1.0-beta3 1 12/02/2024
5.1.0-beta2 5 12/02/2024
5.1.0-beta17 3 11/30/2024
5.1.0-beta16 5 12/02/2024
5.1.0-beta15 1 12/12/2024
5.1.0-beta14 4 12/02/2024
5.1.0-beta13 2 12/08/2024
5.1.0-beta12 4 12/02/2024
5.1.0-beta11 5 12/04/2024
5.1.0-beta10 1 12/08/2024
5.1.0-beta1 5 12/02/2024
5.0.0 3 12/08/2024
5.0.0-beta9 5 12/02/2024
5.0.0-beta8 2 12/09/2024
5.0.0-beta7 2 12/02/2024
5.0.0-beta6 5 12/02/2024
5.0.0-beta5 5 12/02/2024
5.0.0-beta4 5 12/02/2024
5.0.0-beta3 3 12/13/2024
5.0.0-beta2 2 12/08/2024
5.0.0-beta13 5 12/02/2024
5.0.0-beta12 5 12/02/2024
5.0.0-beta11 5 12/02/2024
5.0.0-beta10 5 12/02/2024
5.0.0-beta1 3 12/13/2024
4.5.0-beta9 5 12/01/2024
4.5.0-beta8 5 12/02/2024
4.5.0-beta7 5 12/02/2024
4.5.0-beta6 5 12/02/2024
4.5.0-beta5 4 12/02/2024
4.5.0-beta4 2 12/02/2024
4.5.0-beta3 5 12/02/2024
4.5.0-beta2 2 12/02/2024
4.5.0-beta15 3 12/13/2024
4.5.0-beta14 2 12/09/2024
4.5.0-beta13 4 12/02/2024
4.5.0-beta12 3 12/01/2024
4.5.0-beta11 5 12/02/2024
4.5.0-beta10 5 12/02/2024
4.5.0-beta1 5 12/02/2024
4.4.0 3 12/13/2024
4.4.0-beta9 5 12/01/2024
4.4.0-beta8 2 12/06/2024
4.4.0-beta7 2 12/02/2024
4.4.0-beta6 1 12/09/2024
4.4.0-beta5 3 11/30/2024
4.4.0-beta4 4 12/04/2024
4.4.0-beta3 5 12/02/2024
4.4.0-beta2 5 12/02/2024
4.4.0-beta1 5 12/02/2024
4.3.2-beta1 3 11/29/2024
4.3.1 5 11/30/2024
4.3.1-beta5 3 12/11/2024
4.3.1-beta4 3 12/02/2024
4.3.1-beta3 4 12/02/2024
4.3.1-beta2 5 11/30/2024
4.3.1-beta1 5 12/02/2024
4.3.0 5 12/02/2024
4.3.0-beta9 4 12/02/2024
4.3.0-beta8 3 11/29/2024
4.3.0-beta7 3 11/29/2024
4.3.0-beta6 2 11/30/2024
4.3.0-beta5 3 11/29/2024
4.3.0-beta4 3 12/04/2024
4.3.0-beta3 2 11/29/2024
4.3.0-beta2 3 12/04/2024
4.3.0-beta11 5 12/01/2024
4.3.0-beta10 5 12/02/2024
4.3.0-beta1 3 11/29/2024
4.2.1-beta2 3 12/20/2024
4.2.1-beta1 5 12/02/2024
4.2.0 5 12/02/2024
4.2.0-beta9 2 12/02/2024
4.2.0-beta8 5 11/30/2024
4.2.0-beta7 1 12/12/2024
4.2.0-beta6 5 12/02/2024
4.2.0-beta5 3 12/04/2024
4.2.0-beta4 3 12/11/2024
4.2.0-beta3 5 12/02/2024
4.2.0-beta2 1 12/12/2024
4.2.0-beta10 5 12/02/2024
4.2.0-beta1 5 12/01/2024
4.1.0 3 12/13/2024
4.1.0-beta8 3 12/13/2024
4.1.0-beta7 5 12/02/2024
4.1.0-beta6 2 12/02/2024
4.1.0-beta5 5 12/02/2024
4.1.0-beta4 4 12/03/2024
4.1.0-beta3 5 12/02/2024
4.1.0-beta2 4 12/02/2024
4.1.0-beta1 5 12/02/2024
4.0.0 3 12/13/2024
4.0.0-beta6 2 12/09/2024
4.0.0-beta5 5 12/02/2024
4.0.0-beta4 5 12/02/2024
4.0.0-beta3 5 12/02/2024
4.0.0-beta2 5 12/02/2024
4.0.0-beta1 5 12/02/2024
3.12.1-beta2 3 11/30/2024
3.12.1-beta1 3 12/11/2024
3.11.0 5 12/02/2024
3.11.0-beta9 1 12/11/2024
3.11.0-beta8 3 12/09/2024
3.11.0-beta7 4 12/02/2024
3.11.0-beta6 5 12/02/2024
3.11.0-beta5 3 11/29/2024
3.11.0-beta4 5 12/02/2024
3.11.0-beta3 2 12/09/2024
3.11.0-beta2 3 12/13/2024
3.11.0-beta12 5 12/02/2024
3.11.0-beta11 2 12/03/2024
3.11.0-beta10 4 12/03/2024
3.11.0-beta1 5 12/01/2024
3.10.0 5 12/02/2024
3.10.0-beta7 5 12/01/2024
3.10.0-beta6 2 12/02/2024
3.10.0-beta5 3 12/13/2024
3.10.0-beta4 3 12/13/2024
3.10.0-beta3 3 12/12/2024
3.10.0-beta2 5 12/02/2024
3.10.0-beta1 2 12/02/2024
3.9.1 2 12/02/2024
3.9.0-beta9 3 11/30/2024
3.9.0-beta8 4 12/02/2024
3.9.0-beta7 5 12/02/2024
3.9.0-beta6 4 12/02/2024
3.9.0-beta5 3 11/29/2024
3.9.0-beta4 2 12/09/2024
3.9.0-beta3 5 12/02/2024
3.9.0-beta2 2 12/02/2024
3.9.0-beta13 5 12/02/2024
3.9.0-beta12 5 12/02/2024
3.9.0-beta11 5 12/01/2024
3.9.0-beta10 4 12/02/2024
3.9.0-beta1 3 12/02/2024
3.8.1 5 12/02/2024
3.8.0 2 12/09/2024
3.7.1-beta2 4 12/03/2024
3.7.1-beta1 4 12/02/2024
3.7.0 2 12/02/2024
3.6.0 5 11/30/2024
3.6.0-beta8 2 12/09/2024
3.6.0-beta7 0 02/23/2022
3.6.0-beta6 5 12/02/2024
3.6.0-beta5 3 11/30/2024
3.6.0-beta4 5 12/02/2024
3.6.0-beta3 5 12/02/2024
3.6.0-beta2 3 12/13/2024
3.6.0-beta1 5 12/02/2024
3.5.1 3 12/19/2024
3.5.1-beta4 5 12/02/2024
3.5.1-beta3 5 12/02/2024
3.5.1-beta2 2 12/09/2024
3.5.1-beta1 2 12/02/2024
3.5.0 4 12/02/2024
3.5.0-beta9 3 12/13/2024
3.5.0-beta8 3 12/05/2024
3.5.0-beta7 5 12/02/2024
3.5.0-beta6 4 12/02/2024
3.5.0-beta5 4 12/03/2024
3.5.0-beta4 5 12/09/2024
3.5.0-beta3 5 12/02/2024
3.5.0-beta2 5 12/02/2024
3.5.0-beta10 1 12/12/2024
3.5.0-beta1 4 12/02/2024
3.4.1 4 12/03/2024
3.4.0 3 12/13/2024
3.4.0-beta2 5 12/02/2024
3.4.0-beta1 3 11/30/2024
3.3.0 3 12/13/2024
3.3.0-beta4 5 12/02/2024
3.3.0-beta3 5 12/01/2024
3.3.0-beta2 5 12/02/2024
3.3.0-beta1 5 12/02/2024
3.2.2 5 12/02/2024
3.2.1 5 12/02/2024
3.2.1-beta1 5 12/02/2024
3.2.0 5 12/01/2024
3.2.0-beta6 3 12/02/2024
3.2.0-beta5 5 12/01/2024
3.2.0-beta4 3 11/29/2024
3.2.0-beta3 5 12/02/2024
3.2.0-beta2 5 12/02/2024
3.2.0-beta1 4 12/02/2024
3.1.4 5 12/01/2024
3.1.3 4 12/02/2024
3.1.3-beta1 5 12/01/2024
3.1.2 5 12/02/2024
3.1.1 3 11/30/2024
3.1.0 5 12/02/2024
3.0.0 2 12/02/2024
3.0.0-beta1 3 12/13/2024
2.21.0-beta9 2 12/09/2024
2.21.0-beta8 3 12/13/2024
2.21.0-beta7 5 12/02/2024
2.21.0-beta6 4 12/02/2024
2.21.0-beta5 5 12/01/2024
2.21.0-beta4 3 11/29/2024
2.21.0-beta3 3 12/13/2024
2.21.0-beta2 3 12/13/2024
2.21.0-beta15 4 12/02/2024
2.21.0-beta14 5 12/01/2024
2.21.0-beta13 5 12/02/2024
2.21.0-beta12 4 12/02/2024
2.21.0-beta11 3 12/20/2024
2.21.0-beta10 3 12/19/2024
2.21.0-beta1 3 12/21/2024
2.20.0 5 12/02/2024
2.20.0-beta3 5 12/02/2024
2.20.0-beta2 3 12/01/2024
2.20.0-beta1 3 12/19/2024
2.19.2 3 12/13/2024
2.19.1 3 11/30/2024
2.19.0 2 12/02/2024
2.19.0-beta2 3 12/13/2024
2.19.0-beta1 3 12/02/2024
2.18.1 2 12/09/2024
2.18.0 2 12/02/2024
2.18.0-beta2 5 12/02/2024
2.18.0-beta1 5 12/02/2024
2.17.0 4 12/02/2024
2.17.0-beta2 2 12/09/2024
2.17.0-beta1 5 12/02/2024
2.16.0 3 12/15/2024
2.15.0 3 12/13/2024
2.15.0-beta2 5 12/02/2024
2.15.0-beta1 5 12/02/2024
2.14.0 4 12/02/2024
2.14.0-beta1 5 12/10/2024
2.13.1 4 12/02/2024
2.13.0 2 12/09/2024
2.12.0 2 12/09/2024
2.12.0-beta2 5 12/01/2024
2.12.0-beta1 1 12/12/2024
2.11.0 3 12/13/2024
2.10.1-beta1 5 12/02/2024
2.10.0 5 12/04/2024
2.10.0-beta2 4 12/02/2024
2.10.0-beta1 5 12/02/2024
2.9.1 4 12/02/2024
2.9.0 5 12/01/2024
2.9.0-beta3 1 12/12/2024
2.9.0-beta2 5 12/02/2024
2.9.0-beta1 5 12/02/2024
2.8.1 5 12/02/2024
2.8.0 2 12/08/2024
2.8.0-beta1 5 12/01/2024
2.7.1 5 12/02/2024
2.7.0 2 12/02/2024
2.6.0 2 12/01/2024
2.5.1 4 12/02/2024
2.5.0 4 12/02/2024
2.5.0-beta1 4 12/02/2024
2.4.0 5 12/02/2024
2.3.0 5 12/10/2024
2.3.0-beta2 5 12/02/2024
2.2.1 3 12/01/2024
2.2.0 3 12/13/2024
2.1.1 2 12/04/2024
2.1.0 2 12/09/2024
2.1.0-beta5 5 12/02/2024
2.1.0-beta4 3 12/13/2024
2.1.0-beta3 5 12/01/2024
2.1.0-beta2 5 12/02/2024
2.1.0-beta1 3 12/13/2024
2.0.0 4 12/11/2024
1.9.0 4 12/01/2024
1.8.0 4 12/13/2024
1.8.0-beta1 4 12/07/2024
1.7.0 2 12/08/2024
1.6.0 4 12/01/2024
1.6.0-beta5 4 12/02/2024
1.6.0-beta4 5 12/02/2024
1.6.0-beta3 3 11/30/2024
1.6.0-beta2 2 12/16/2024
1.6.0-beta1 5 12/02/2024
1.5.0 4 12/06/2024
1.4.0 4 12/13/2024
1.3.0 6 12/04/2024
1.2.0 6 12/02/2024
1.1.0 2 12/12/2024
1.0.0 3 12/04/2024
1.0.0-rc6 3 12/14/2024
1.0.0-rc5 5 12/01/2024
1.0.0-rc4 3 12/13/2024
1.0.0-rc3 3 12/13/2024
1.0.0-rc2 3 12/19/2024
1.0.0-rc1 5 12/01/2024
1.0.0-beta6 5 12/02/2024
1.0.0-beta5 2 12/02/2024
1.0.0-beta4 5 12/02/2024
1.0.0-beta3 5 12/03/2024
1.0.0-beta2 5 12/02/2024