# 変更履歴

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

Sisk に加えられたすべての変更は変更履歴に記録されています。すべての Sisk バージョンの変更履歴は[こちら](https://github.com/sisk-http/archive/tree/master/changelogs)で確認できます。

## 1.6 から 1.7 への移行

Sisk 1.7.0 では `Sisk.HttpServer`、`Sisk.Cadente`、`Sisk.Cadente.CoreEngine`、`Sisk.IniConfiguration` が 1.7.0 として提供されます。`Sisk.Documenting`、`Sisk.Documenting.Html`、`Sisk.Monitoring` は 1.7.0-rc3、`Sisk.ModelContextProtocol` は 1.7.0-rc1 として提供されます。すべての変更については [完全な 1.7.0 変更履歴](https://github.com/sisk-http/archive/blob/master/changelogs/core/v1.7/v1.7.0.md) を参照してください。

### 破壊的変更

- **`Route.UseRegex` は設定できなくなりました。** このプロパティは廃止予定で、ルートが `RegexRoute` かどうかを示すだけです。代わりに [RegexRoute](https://docs.sisk-framework.org/api/Sisk.Core.Routing.RegexRoute.md) を作成してください。`UseRegex = true` のルート属性や `[RegexRoute]` 属性は引き続き機能します。[regex routes](https://docs.sisk-framework.org/ja/docs/fundamentals/routing.md#regex-routes) を参照してください。

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

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

- **リクエストボディのデフォルト上限が 100 MB に変更されました。** [HttpServerConfiguration.MaximumContentLength](https://docs.sisk-framework.org/api/Sisk.Core.Http.HttpServerConfiguration.MaximumContentLength.md) のデフォルト値は `0`（無制限）から 100 MB に変更されました。この上限はリクエストストリームや WebSocket メッセージにも適用されます。以前の動作に戻すには `0` を設定してください。[getting the request body](https://docs.sisk-framework.org/ja/docs/fundamentals/requests.md#getting-the-request-body) を参照してください。

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

- **静的ルートが動的ルートより先に評価されます。** 正規表現ルート、プレフィックスルート（ファイルサーバーを含む）およびカスタムマッチングルートは、登録順に関係なく、すべての静的ルートの後に評価されます。[matching precedence](https://docs.sisk-framework.org/ja/docs/fundamentals/routing.md#matching-precedence) を参照してください。

- **重複したルート名は起動時に例外をスローします。** 同じ `Name` を持つルートが 2 つ以上あると、サーバー起動時に `ArgumentException` が発生します（デフォルトで有効な [Router.CheckForRouteCollisions](https://docs.sisk-framework.org/api/Sisk.Core.Routing.Router.CheckForRouteCollisions.md) が有効な場合）。

- **ファイルサーバールートはプレフィックスルートです。** `Router.MapFileSystem` と `HttpFileServer.CreateServingRoute` は正規表現ルートではなく [PrefixRoute](https://docs.sisk-framework.org/api/Sisk.Core.Routing.PrefixRoute.md) を作成し、`ForceTrailingSlash` の影響を受けなくなります。

- **`RouteMethod.Any` に `QUERY` が含まれます。** `MapAny` でマッピングされたルートは `QUERY` リクエストにも応答します。`RouteMethod.Any` の数値が変更されたため、これを保存または比較しているコードは再コンパイルしてください。

- **CORS プリフライトが `UseCors` を尊重します。** `UseCors = false` のルートに対して自動的に生成される `OPTIONS` 応答は CORS ヘッダーを送信しなくなり、`OPTIONS` 用に明示的にマッピングされたルートがリクエストを処理します。[preflight requests](https://docs.sisk-framework.org/ja/docs/features/cors.md#preflight-requests) を参照してください。

- **Cadente が不正なリクエストを拒否します。** 無効なリクエストメソッドやターゲット、サポートされていない `Transfer-Encoding` の値、矛盾する `Content-Length` ヘッダーは拒否され、8 KB を超えるヘッダーブロックには `431 Request Header Fields Too Large` が返されます。[Cadente request validation](https://docs.sisk-framework.org/ja/docs/cadente.md#request-validation) を参照してください。

### 廃止されたパッケージ

`Sisk.BasicAuth`、`Sisk.SslProxy`、`Sisk.ServiceProvider` はもはやメンテナンスされず、NuGet でも非推奨となっており、代替パッケージはありません。プロジェクトから削除してください。

- `Sisk.BasicAuth` を、`Authorization` ヘッダーを検証する独自の [request handler](https://docs.sisk-framework.org/ja/docs/fundamentals/request-handlers.md) に置き換えてください。
- `Sisk.SslProxy` を、[Cadente engine](https://docs.sisk-framework.org/ja/docs/cadente.md) のネイティブ SSL サポートに置き換えてください。
- `Sisk.ServiceProvider` を、`UsePortableConfiguration` を介して `Sisk.HttpServer` に組み込まれている [portable configuration](https://docs.sisk-framework.org/ja/docs/extensions/service-providers.md) に置き換えてください。

### 新機能

- `Route.Match`、`RouteMatch`、`Route.IsStatic`、`Route.AllowRewrites` を使用した [Custom route matching](https://docs.sisk-framework.org/ja/docs/fundamentals/routing.md#custom-route-matching) と新しい [prefix routes](https://docs.sisk-framework.org/ja/docs/fundamentals/routing.md#prefix-routes)。
- `MapQuery`、`Route.Query`、`[RouteQuery]`、`Accept-Query` ヘッダーを使用した HTTP の [QUERY method](https://docs.sisk-framework.org/ja/docs/fundamentals/routing.md#query-method-routes) のサポート。
- `HttpContext.Interlocked` を介した [Atomic context values](https://docs.sisk-framework.org/ja/docs/fundamentals/requests.md#atomic-context-values)。
- リクエストバッグの値を出力する `%{$key}` [access log term](https://docs.sisk-framework.org/ja/docs/features/logging.md#access-log-formatting) と、[safe file writing helpers](https://docs.sisk-framework.org/ja/docs/features/logging.md#writing-files-safely) の `LogStream.SafeWriteToFile` と `LogStream.SafeAppendToFile`。
- Cadente において: パイプライン化されたキープアライブリクエスト、`WriteInlineContent` と `WriteInlineContentAsync`、および SSL ポートで受信したプレーン HTTP リクエストを HTTPS にリダイレクトする機能。
- 拡張機能において: [Sisk.Documenting](https://docs.sisk-framework.org/ja/docs/extensions/api-documentation.md) のパラメータ例と `LlmsApiExporter.FooterText`、[Sisk.ModelContextProtocol](https://docs.sisk-framework.org/ja/docs/extensions/mcp.md) のスキルと `2026-07-28` プロトコルリビジョン、そして Sisk.Monitoring ダッシュボードの HTTP トラフィック、レイテンシ、ルート、例外テレメトリ。

### その他の動作変更

- `HttpListener` エンジンは各リクエストをスレッドプールにディスパッチするため、遅いリクエストが次の受け入れ接続を遅延させなくなりました。その `ContextAbortedToken` は例外をスローする代わりに `CancellationToken.None` を返します。
- リクエストの終了時やログ書き込み中にサーバーハンドラからスローされた例外は、HTTP エンジンにエスケープするのではなくエラーログに記録されます。[exceptions thrown by handlers](https://docs.sisk-framework.org/ja/docs/advanced/http-server-handlers.md#exceptions-thrown-by-handlers) を参照してください。
- 許可されたオリジンがリクエストに依存する場合、CORS 応答は `Vary: Origin` を送信します。
- `%ri` アクセスログ項目は、リクエスト開始時に解決されたクライアントアドレスを使用します。
- `Sisk.HttpServer` は .NET 8、.NET 9、.NET 10 を対象とします。`Sisk.Cadente` と `Sisk.Cadente.CoreEngine` は .NET 9 と .NET 10 を対象とし、デバッグシンボルを `.snupkg` パッケージとして公開します。
