You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Spike: build and weave under the .NET 11 SDK before any net11.0 target (decision 120) #170
Prerequisite of the net11.0 target in decision 120, a spike with no release attached. Today global.json pins SDK 10.0.4xx because a different Roslyn band can change what Metalama and the analyzers emit.
Measure, on an SDK 11 compiler (RC now, the general-availability SDK once it ships in November 2026):
the repository builds and its tests pass, with global.json moved to the SDK 11 band;
the packed net10.0 assets are unchanged by the new compiler (woven output compared);
a consumer on SDK 11 that references the existing 2.x packages builds, weaves and runs, and its generated code raises no new warning under the C# 15 default;
the consumer smoke test gains an SDK 11 lane, with a net11.0 consumer that holds the lower satellite versions (the NU1605 case).
a CI job that builds the repository and its tests against Metalama 2027.0.4-preview (then the stable 2027.0) with no Metalama license on the machine, as dotnet.yml runs every job on 2026.1. Local runs are no evidence: this machine holds a license entry for 2027.0 and has compiler servers running;
the consumer matrix on SDK 11 and SDK 10: a direct Metalama.Framework 2026.1 reference beside the new packages (the NU1605 the changelog will describe), a direct 2027 reference beside the 2.x packages (measured to weave on 2026-10-29), and the same on rc.3 packages and the general-availability SDK;
the NU1605 measurement of the decision repeated on SDK 11 rc.3 or later.
Done when the answer is a record: what moved, what broke, and whether Metalama 2026.1 holds.
Done (2026-10-31): the RC3 rows. Decision 120's Metalama measurement repeated on SDK 11.0.100-rc.3.26522.148 with the 2.3.1 packages: every RC1 result holds, Metalama 2026.1 still runs projects at C# 14 (comment, #276, PR #277, KB-060). Found there: a web project on 2026.1 fails with LAMA0625 when SDK 11 is the only SDK installed (#275), which moved the Metalama 2027.0 move into 2.4.0 (decision 129, #280). Everything else above stays open.
The RC3 rows: Metalama 2026.1 holds. Measured 2026-10-31 on SDK 11.0.100-rc.3.26522.148 (macOS arm64) with the published 2.3.1 packages (Metalama.Framework 2026.1.30, compiler 2026.1.20), UseSharedCompilation=false, compiler servers shut down before each build, restored from nuget.org into an empty package folder. Spike spikes/Sdk11Rc3Metalama, fact KB-060, PR #277 (closes the sub-issue #276).
CS8304: compiler 2026.1.20, language version 14.0 (2026.1.31: compiler 2026.1.21, 14.0)
2026.1.20 at 14.0
3. union declared in the project
CS0106, CS1001, CS8803
the same
4. union from a net11.0-only library
holding it builds; a switch gives CS8652 "unions ... in Preview"
the same
5. warnings, console project
none
—
5. warnings, web project
see below
LAMA0617
6. direct Metalama.Framework 2027.0.5-preview
compiler 2027.0.5-preview at 15.0; rows 1, 3 and 4 build and run
2027.0.4-preview at 15.0
| 7. one project on net10.0;net11.0, Metalama.Framework 2027.0.5-preview, no LangVersion: #error version | compiler 2027.0.5-preview at 14.0 on net10.0, at 15.0 on net11.0 | not measured (2027 only on net11.0) |
| 7. the same: value object | generated on both targets; both run From, Parse, JSON | not measured |
| 7. the same: a union and switch inside #if NET11_0_OR_GREATER | builds on both targets, runs on net11.0 | not measured |
| 7. the same: a union in a file under <Compile Remove="Net11Only/**" Condition="'$(TargetFramework)' == 'net10.0'" /> | builds on both targets, runs on net11.0 | not measured |
| 7. contrast, the same project on 2026.1 | both targets at 14.0; either union fails on net11.0 with CS0106, CS1001, CS8803 | not measured |
Control: the same union declaration and match compile and run with no TypeKit and no Metalama.
No RC1 result changed. One thing the RC1 runs could not show, filed as #275: a web project (Microsoft.NET.Sdk.Web) on 2026.1 fails with LAMA0625 (the SDK 11 Razor compiler needs Roslyn 5.11 on RC1, 5.12 on RC3; Metalama 2026.1 bundles 5.9) when SDK 11 is the only SDK in its .NET installation:
Web project
2026.1
2027.0.5-preview
RC3 alone, net11.0
fails, LAMA0625 (2026.1.31 too)
builds
RC3 alone, net10.0
fails, LAMA0625
builds
RC1 alone
fails, LAMA0625
builds
RC3 with SDK 10.0.403 beside it
builds, LAMA0617 twice
builds
SDK 10.0.403, net10.0
builds
builds
Decision 120's RC1 runs had SDK 10.0.403 installed beside RC1, which is the "builds with LAMA0617" row. Its consequence line ("a warning, falling back to the SDK 10 Razor compiler") holds only with an SDK 10 in the same installation. The decision is not edited; #275 asks whether that needs a new record or only the 2.4.0 documents.
Limits: this machine has a Metalama licensing entry for 2027.0, so the 2027 cells say nothing about a license-free build; no IDE, Linux, Windows or general availability SDK.
Decision 129 (#280): because of #275, Metalama 2027.0 moves into 2.4.0, which is tagged only on a stable 2027.0. The license-free CI job and the consumer matrix above are now 2.4.0 conditions, and #281 adds a lane with only SDK 11 installed and a web consumer.
Activity
docs: decision 120 moves Metalama to 2027.0 in 2.5.0 for both targets
CaffeinatedCoder commentedon Oct 31, 2026
The RC3 rows: Metalama 2026.1 holds. Measured 2026-10-31 on SDK 11.0.100-rc.3.26522.148 (macOS arm64) with the published 2.3.1 packages (
Metalama.Framework2026.1.30, compiler 2026.1.20),UseSharedCompilation=false, compiler servers shut down before each build, restored from nuget.org into an empty package folder. Spikespikes/Sdk11Rc3Metalama, fact KB-060, PR #277 (closes the sub-issue #276).net11.0value object, no unionFrom,Parse, JSON round trip#error versionCS8304: compiler 2026.1.20, language version 14.0 (2026.1.31: compiler 2026.1.21, 14.0)uniondeclared in the projectCS0106,CS1001,CS8803net11.0-only libraryswitchgivesCS8652"unions ... in Preview"LAMA0617Metalama.Framework2027.0.5-preview| 7. one project on
net10.0;net11.0,Metalama.Framework2027.0.5-preview, noLangVersion:#error version| compiler 2027.0.5-preview at 14.0 onnet10.0, at 15.0 onnet11.0| not measured (2027 only onnet11.0) || 7. the same: value object | generated on both targets; both run
From,Parse, JSON | not measured || 7. the same: a union and
switchinside#if NET11_0_OR_GREATER| builds on both targets, runs onnet11.0| not measured || 7. the same: a union in a file under
<Compile Remove="Net11Only/**" Condition="'$(TargetFramework)' == 'net10.0'" />| builds on both targets, runs onnet11.0| not measured || 7. contrast, the same project on 2026.1 | both targets at 14.0; either union fails on
net11.0withCS0106,CS1001,CS8803| not measured |Control: the same union declaration and match compile and run with no TypeKit and no Metalama.
No RC1 result changed. One thing the RC1 runs could not show, filed as #275: a web project (
Microsoft.NET.Sdk.Web) on 2026.1 fails withLAMA0625(the SDK 11 Razor compiler needs Roslyn 5.11 on RC1, 5.12 on RC3; Metalama 2026.1 bundles 5.9) when SDK 11 is the only SDK in its .NET installation:net11.0LAMA0625(2026.1.31 too)net10.0LAMA0625LAMA0625LAMA0617twicenet10.0Decision 120's RC1 runs had SDK 10.0.403 installed beside RC1, which is the "builds with
LAMA0617" row. Its consequence line ("a warning, falling back to the SDK 10 Razor compiler") holds only with an SDK 10 in the same installation. The decision is not edited; #275 asks whether that needs a new record or only the 2.4.0 documents.Limits: this machine has a Metalama licensing entry for 2027.0, so the 2027 cells say nothing about a license-free build; no IDE, Linux, Windows or general availability SDK.
spike: one project on net10.0 and net11.0 with Metalama 2027
CaffeinatedCoder commentedon Oct 31, 2026
Decision 129 (#280): because of #275, Metalama 2027.0 moves into 2.4.0, which is tagged only on a stable 2027.0. The license-free CI job and the consumer matrix above are now 2.4.0 conditions, and #281 adds a lane with only SDK 11 installed and a web consumer.