# Registros de alterações

Source: https://docs.sisk-framework.org/pt-br/docs/changelogs.html

Todas as alterações feitas no Sisk são registradas no changelog. Você pode ver os changelogs de todas as versões do Sisk [aqui](https://github.com/sisk-http/archive/tree/master/changelogs).

## Migrando da 1.6 para a 1.7

O Sisk 1.7.0 inclui `Sisk.HttpServer`, `Sisk.Cadente`, `Sisk.Cadente.CoreEngine` e `Sisk.IniConfiguration` 1.7.0. `Sisk.Documenting`, `Sisk.Documenting.Html` e `Sisk.Monitoring` são distribuídos como 1.7.0-rc3, e `Sisk.ModelContextProtocol` como 1.7.0-rc1. Leia o [full 1.7.0 changelog](https://github.com/sisk-http/archive/blob/master/changelogs/core/v1.7/v1.7.0.md) para cada alteração.

### Alterações críticas

- **`Route.UseRegex` não pode mais ser definido.** A propriedade está obsoleta e apenas indica se a rota é um `RegexRoute`. Crie um [RegexRoute](https://docs.sisk-framework.org/api/Sisk.Core.Routing.RegexRoute.md) em vez disso. Atributos de rota com `UseRegex = true` e o atributo `[RegexRoute]` continuam funcionando. Veja [regex routes](https://docs.sisk-framework.org/pt-br/docs/fundamentals/routing.md#regex-routes).

    ```cs
    // antes
    router.Map(new Route(RouteMethod.Get, @"^/items/(?<id>\d+)$", action) { UseRegex = true });

    // depois
    router.Map(new RegexRoute(RouteMethod.Get, @"^/items/(?<id>\d+)$", action));
    ```

- **Corpos de requisição são limitados a 100 MB por padrão.** O valor padrão de [HttpServerConfiguration.MaximumContentLength](https://docs.sisk-framework.org/api/Sisk.Core.Http.HttpServerConfiguration.MaximumContentLength.md) mudou de `0` (ilimitado) para 100 MB. O limite também se aplica a fluxos de requisição e a mensagens WebSocket. Defina como `0` para restaurar o comportamento anterior. Veja [getting the request body](https://docs.sisk-framework.org/pt-br/docs/fundamentals/requests.md#getting-the-request-body).

    ```cs
    using var app = HttpServer.CreateBuilder()
        .UseConfiguration(config => config.MaximumContentLength = 0)
        .Build();
    ```

- **Rotas estáticas são testadas antes das rotas dinâmicas.** Rotas regex, rotas de prefixo (incluindo servidores de arquivos) e rotas de correspondência personalizada são testadas após cada rota estática, independentemente da ordem de registro. Veja [matching precedence](https://docs.sisk-framework.org/pt-br/docs/fundamentals/routing.md#matching-precedence).

- **Nomes de rotas duplicados lançam exceção na inicialização.** Duas ou mais rotas com o mesmo `Name` provocam um `ArgumentException` quando o servidor inicia, enquanto [Router.CheckForRouteCollisions](https://docs.sisk-framework.org/api/Sisk.Core.Routing.Router.CheckForRouteCollisions.md) está habilitado (padrão).

- **Rotas de servidor de arquivos são rotas de prefixo.** `Router.MapFileSystem` e `HttpFileServer.CreateServingRoute` criam um [PrefixRoute](https://docs.sisk-framework.org/api/Sisk.Core.Routing.PrefixRoute.md) em vez de uma rota regex, e não são mais afetadas por `ForceTrailingSlash`.

- **`RouteMethod.Any` inclui `QUERY`.** Rotas mapeadas com `MapAny` também respondem a requisições `QUERY`. O valor numérico de `RouteMethod.Any` mudou, portanto recompile o código que o armazena ou compara.

- **Preflight CORS respeita `UseCors`.** A resposta automática `OPTIONS` não envia mais cabeçalhos CORS para rotas com `UseCors = false`, e rotas explicitamente mapeadas para `OPTIONS` tratam a requisição. Veja [preflight requests](https://docs.sisk-framework.org/pt-br/docs/features/cors.md#preflight-requests).

- **Cadente rejeita requisições malformadas.** Métodos e alvos de requisição inválidos, valores não suportados de `Transfer-Encoding` e cabeçalhos `Content-Length` conflitantes são rejeitados, e blocos de cabeçalho maiores que 8 KB recebem `431 Request Header Fields Too Large`. Veja [Cadente request validation](https://docs.sisk-framework.org/pt-br/docs/cadente.md#request-validation).

### Pacotes descontinuados

`Sisk.BasicAuth`, `Sisk.SslProxy` e `Sisk.ServiceProvider` não são mais mantidos e estão obsoletos no NuGet, sem pacote substituto. Remova-os dos seus projetos:

- Substitua `Sisk.BasicAuth` por seu próprio [request handler](https://docs.sisk-framework.org/pt-br/docs/fundamentals/request-handlers.md) que valida o cabeçalho `Authorization`.
- Substitua `Sisk.SslProxy` pelo suporte SSL nativo do [engine Cadente](https://docs.sisk-framework.org/pt-br/docs/cadente.md).
- Substitua `Sisk.ServiceProvider` pela [portable configuration](https://docs.sisk-framework.org/pt-br/docs/extensions/service-providers.md) incorporada ao `Sisk.HttpServer` via `UsePortableConfiguration`.

### Novos recursos

- [Correspondência de rotas personalizada](https://docs.sisk-framework.org/pt-br/docs/fundamentals/routing.md#custom-route-matching) através de `Route.Match`, `RouteMatch`, `Route.IsStatic` e `Route.AllowRewrites`, e as novas [rotas de prefixo](https://docs.sisk-framework.org/pt-br/docs/fundamentals/routing.md#prefix-routes).
- Suporte ao método HTTP [QUERY](https://docs.sisk-framework.org/pt-br/docs/fundamentals/routing.md#query-method-routes) com `MapQuery`, `Route.Query`, `[RouteQuery]` e o cabeçalho `Accept-Query`.
- [Valores de contexto atômicos](https://docs.sisk-framework.org/pt-br/docs/fundamentals/requests.md#atomic-context-values) através de `HttpContext.Interlocked`.
- O termo de log de acesso `%{$key}` [access log term](https://docs.sisk-framework.org/pt-br/docs/features/logging.md#access-log-formatting), que imprime valores do saco de requisição, e os [helpers seguros de gravação de arquivos](https://docs.sisk-framework.org/pt-br/docs/features/logging.md#writing-files-safely) `LogStream.SafeWriteToFile` e `LogStream.SafeAppendToFile`.
- No Cadente: requisições keep-alive em pipeline, `WriteInlineContent` e `WriteInlineContentAsync`, e um redirecionamento para HTTPS para requisições HTTP simples recebidas em uma porta SSL.
- Nas extensões: exemplos de parâmetros e `LlmsApiExporter.FooterText` em [Sisk.Documenting](https://docs.sisk-framework.org/pt-br/docs/extensions/api-documentation.md), habilidades e a revisão de protocolo `2026-07-28` em [Sisk.ModelContextProtocol](https://docs.sisk-framework.org/pt-br/docs/extensions/mcp.md), e telemetria de tráfego HTTP, latência, rotas e exceções no painel Sisk.Monitoring.

### Outras alterações de comportamento

- O motor `HttpListener` despacha cada requisição para o pool de threads, portanto uma requisição lenta não atrasa mais a próxima conexão aceita. Seu `ContextAbortedToken` retorna `CancellationToken.None` em vez de lançar exceção.
- Exceções lançadas pelos manipuladores do servidor ao final de uma requisição, e ao gravar logs, são escritas no log de erros em vez de escaparem para o motor HTTP. Veja [exceptions thrown by handlers](https://docs.sisk-framework.org/pt-br/docs/advanced/http-server-handlers.md#exceptions-thrown-by-handlers).
- Respostas CORS enviam `Vary: Origin` quando a origem permitida depende da requisição.
- O termo de log de acesso `%ri` usa o endereço do cliente resolvido no início da requisição.
- `Sisk.HttpServer` tem como alvo .NET 8, .NET 9 e .NET 10. `Sisk.Cadente` e `Sisk.Cadente.CoreEngine` têm como alvo .NET 9 e .NET 10 e publicam seus símbolos de depuração como pacotes `.snupkg`.
