From fe1d170cec3359e2499e6b0febfc8384250dbcb7 Mon Sep 17 00:00:00 2001 From: Yander Santiesteban Rojas Date: Sun, 21 Jun 2026 20:17:45 -0300 Subject: [PATCH] docs(changelog): note the open-generic build fix and the dead-code removal under 1.3.0 - Fixed: open-generic Send/Publish/CreateStream call sites no longer emit CS0246. - Removed: vestigial PipelineBuilder + RequestDispatch<>.Pipeline/TryInitialize. --- CHANGELOG.md | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index a2bd00d..c36df67 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -22,6 +22,14 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - **DSOFT006 location widened** to the full type header so the IDE offers the ConvertToCqrs lightbulb when hovering the offending `IRequest` base type, not just the type name (Info severity unchanged). - **Dependency bumps** — `Microsoft.Extensions.DependencyInjection.Abstractions` → 10.0.9 and `Microsoft.Bcl.AsyncInterfaces` → 10.0.9 (core/abstractions, .NET 10 servicing band); companion `OpenTelemetry` → 1.16.0; companion `Microsoft.Extensions.Caching.Hybrid` → 10.7.0. `Microsoft.CodeAnalysis.CSharp` is intentionally kept at 4.12.0 — the generator's referenced Roslyn version is the minimum compiler-host a consumer needs, so raising it would break consumers on older SDK/VS. +### Removed + +- **`PipelineBuilder` and `RequestDispatch<,>.Pipeline` / `TryInitialize`** — vestigial dead dispatch state. The generator populated a per-request-type pipeline delegate that nothing ever invoked: `Send`, the interceptors and `Send(object)` all dispatch through `RequestDispatch.HasPipelineChain` + the ThreadStatic `PipelineChainCache` / `HandlerCache` (the stream side still uses `StreamDispatch.Pipeline`; the request side left it vestigial). `RequestDispatch<,>` is `[EditorBrowsable(Never)]` infrastructure, and `PipelineBuilder` was public but only ever intended for generated code that no longer uses it. Removal saves one delegate allocation per request type at startup with no behavior or hot-path change. (If you referenced `PipelineBuilder.Build<,>()` directly — unsupported — resolve `PipelineChainHandler<,>` from DI instead.) + +### Fixed + +- **Open-generic dispatch call sites no longer break the build** — the `Send` / `Publish` / `CreateStream` interceptor generators attempted to intercept call sites whose type arguments are open type parameters (e.g. a generic dispatch wrapper `Dispatch(req) => sender.Send(req)`) and emitted code referencing the unbound parameters → `CS0246`. A single `[InterceptsLocation]` cannot stand in for a call site instantiated across many type arguments, so such sites are now skipped and dispatch through the runtime `Mediator.Send` / `Publish` / `CreateStream`. + ### Security - **Scriban 7.0.3 → 7.2.4** in the benchmarks project (dev-only, not shipped) — resolves [GHSA-24c8-4792-22hx](https://github.com/advisories/GHSA-24c8-4792-22hx) (high severity).