Repository navigation
Description
Goal
2.4.0 is the next minor release after 2.3.0, and it moves the Generators package to Metalama 2027.0 for both targets (#173, decision 129, 2026-10-31): it must build for every .NET 11 consumer, also one with only SDK 11 installed, which Metalama 2026.1 cannot (#275). 2.4.0 is tagged only on a stable Metalama 2027.0, so its date is Metalama's; a fix needed before then is a 2.3.x patch. Its scope is the sub-issues attached here. The roadmap's "Gaps, in any 2.x" lists the candidates.
Previews until Metalama 2027.0 is stable (decided 2026-11-11, #284)
.NET 11 has been generally available since 2026-11-10, and Metalama 2027.0 is still a preview (2027.0.5-preview on 2026-11-11; the stable is planned for 2027-01-01). So 2.4.0 is published first as 2.4.0-preview.N from release/2.4.0, on the Metalama 2027 preview it was tested with. The rule above for the stable tag is unchanged. 2.4.0-preview.1 is also the first publish with two targets (#208).
Sequence:
- The rest of Spike: build and weave under the .NET 11 SDK before any net11.0 target (decision 120) #170 on the GA SDK: the repository on SDK 11, the woven
net10.0assets compared, and the licence-free CI job on the Metalama preview. That job decides whether a preview may be published at all (Decision record: 2.4.0 ships as 2.4.0-preview.N on a Metalama 2027 preview until 2027.0 is stable (amends decision 129) #284). - CI and the smoke test: a lane with only SDK 11 installed, with a web consumer (decision 129) #281: the lane with only SDK 11 installed, with a web consumer.
- Move the Generators package to Metalama 2027.0 in 2.4.0 (decisions 120 and 129) #173 on the Metalama preview, then A net11.0 target beside net10.0 (decision 120) #208, then the checks the
net11.0target owes (net11.0: Option/Result refusal and value-object JSON under System.Text.Json's union support #213, net11.0: OpenAPI transformers under OpenAPI 3.2, server-sent events and union return types #214, net11.0: the EF Core satellite on EF Core 11 (nested complex keys, CAST stripping, primitive collections) #215). - Release: publish the packages CI packed instead of building them again, and check the tag before CI #247: the release publishes the packages CI packed, with a prerelease path.
2.4.0-preview.1. Later previews take thenet11.0-only features (Testing: assert a union error's case without matching on it (net11.0) #210, Compile the base package's net11.0 build with runtime async, if a benchmark shows a gain #211, Value objects over Decimal32, Decimal64, Decimal128 and BFloat16 (net11.0) #212) and Constraint attributes for C# 15 unions and closed classes #209, Define what the generators do with a union or a closed class, through IsUnion and IsClosed #223, net11.0: a union over value objects, in a woven project, keeps its JSON and OpenAPI schema (Metalama 2027) #272.v2.4.0on a stable Metalama 2027.0.
In scope and out of scope
In: additions, gaps from the roadmap, and fixes for defects in 2.4.0's own new work. Out: a fix for a bug that shipped in 2.3.0, which is 2.3.1 (#198) and reaches release/2.4.0 by merging main once v2.3.1 is tagged; anything breaking, which waits for 3.0.0, the rest of what Metalama 2027.0 offers (AspectTesting, the aspect-author analyzers, type facets, union awareness in the code model), which is 2.5.0 (#219), and the dropped WS3 to WS6 work.
Done when
Every sub-issue is closed, the suite passes (it holds the oracle catalogue), the SDK-11-only lane builds a web consumer (#281), oracles seeds shows every seed caught (decision 112), v2.4.0 is tagged on the merge of release/2.4.0 into main, and the packages are on nuget.org. The release PR into main closes this epic.
Activity
30 remaining items