Repository navigation
Closed
Labels
area/releaseVersioning, changelogs, release wiringVersioning, changelogs, release wiringchoreBuild, CI, packaging, refactoring with no behaviour changeBuild, CI, packaging, refactoring with no behaviour changepackage/coreAffects CodoMetis.ValueRangesAffects CodoMetis.ValueRangespackage/efcoreAffects CodoMetis.ValueRanges.EFCore.PostgreSQLAffects CodoMetis.ValueRanges.EFCore.PostgreSQLpackage/efcore-nodatimeAffects CodoMetis.ValueRanges.EFCore.PostgreSQL.NodaTimeAffects CodoMetis.ValueRanges.EFCore.PostgreSQL.NodaTimepackage/nodatimeAffects CodoMetis.ValueRanges.NodaTimeAffects CodoMetis.ValueRanges.NodaTime
Milestone
Description
Problem
.NET 11 has been generally available since 2026-11-10, and main is still on the RC2 toolchain:
global.jsonpins SDK11.0.100-rc.2.26504.105.- The test projects reference ASP.NET Core and Microsoft.Extensions packages at rc.2. Dependabot's Bump the test-dependencies group with 5 updates #531 offers rc.3, which GA has overtaken.
- Every measurement of the retarget (build: retarget main to .NET 11 for 11.0.0-preview.1 #292, Publish 11.0.0-preview.1 on the .NET 11 GA SDK and Npgsql's provider rc.3 #332) was taken on RC2. None has been repeated on the GA runtime.
Npgsql.EntityFrameworkCore.PostgreSQL is at 11.0.0-rc.3 and pins EF Core to exactly 11.0.0-rc.3.26522.148. So EF Core can't move to 11.0.0 here yet (NU1107). That move is #533.
Change
global.jsonto SDK11.0.100, andactions/setup-dotnetwithout the prerelease flag.- The test packages that don't depend on EF Core to 11.0.0: Microsoft.AspNetCore.OpenApi, Microsoft.AspNetCore.TestHost, Microsoft.Extensions.Configuration and its Binder. MSTest to the newest. Close Bump the test-dependencies group with 5 updates #531.
- Npgsql's provider, its NodaTime plugin and Microsoft.EntityFrameworkCore.Design to rc.3, in one change.
- Remove
DOTNET_ROLL_FORWARD_TO_PRERELEASEand the "RC" wording wherever the build or the docs still carry them.
Measure, with the output in the PR
- Each of the four behaviour changes of build: retarget main to .NET 11 for 11.0.0-preview.1 #292 with its fix stripped alone, as Publish 11.0.0-preview.1 on the .NET 11 GA SDK and Npgsql's provider rc.3 #332's comment did on rc.2: hour 24 (.NET 11 reads an hour of 24:
24:00:00parses as00:00:00andT24:00:00as the next day #286),RangeSet.Contains(EF Core 11 rewritesRangeSet.ContainsintoQueryable.Containsover the range type and throwsArgumentException#287),jsonb_set_lax(Npgsql 11 writes JSON setters throughjsonb_set_lax: the value set refusal names the column instead of the path, and a reason that no longer applies #289), the empty captured collection (EF Core 11 reads an empty captured collection as a bare NULL that PostgreSQL types astext:operator does not exist: text && int4range#290). - The Native AOT smoke leg. Then again with the
NoInliningworkaround of main: keep the default IFormattable.ToString of IValueSetFactory out of ILCompiler's inlining (port of #315, dotnet/runtime#136073) #317 removed: NativeAOT (.NET 11 RC2, osx-arm64): SIGTRAP in the instantiating stub of a default interface IFormattable.ToString on a shared-generic interface dotnet/runtime#136073 was closed on 2026-10-20, after RC2. If the trap is gone on GA, remove the workaround; if not, say so on Native AOT on .NET 11 RC2: every value setToStringtraps (SIGTRAP) in the defaultIFormattable.ToStringofIValueSetFactory<TSet, T>#291. - The Compile probe: C# 15 closed hierarchies and union types for the five variants, on net10.0 and net11.0 #148 compile probe with no
LangVersionset: doesclosedcompile as stable C# 15 on the GA compiler? Mark the range unions closed (C# 15) for compile-time exhaustiveness, on both lines #149 depends on the answer, on both lines.
Done when
main builds and passes on SDK 11.0.100 in CI, and the three measurements are recorded here.
Metadata
Metadata
Assignees
Labels
area/releaseVersioning, changelogs, release wiringVersioning, changelogs, release wiringchoreBuild, CI, packaging, refactoring with no behaviour changeBuild, CI, packaging, refactoring with no behaviour changepackage/coreAffects CodoMetis.ValueRangesAffects CodoMetis.ValueRangespackage/efcoreAffects CodoMetis.ValueRanges.EFCore.PostgreSQLAffects CodoMetis.ValueRanges.EFCore.PostgreSQLpackage/efcore-nodatimeAffects CodoMetis.ValueRanges.EFCore.PostgreSQL.NodaTimeAffects CodoMetis.ValueRanges.EFCore.PostgreSQL.NodaTimepackage/nodatimeAffects CodoMetis.ValueRanges.NodaTimeAffects CodoMetis.ValueRanges.NodaTime
Activity
CaffeinatedCoder commentedon Nov 11, 2026
Measured 2026-11-11 on
build/532-net11-ga-sdkat cbfa4b1 (macOS arm64): SDK11.0.100, runtime11.0.0,Npgsql.EntityFrameworkCore.PostgreSQLand.NodaTime11.0.0-rc.3, EF Core11.0.0-rc.3.26522.148(the build still resolvesNpgsql10.0.3). Docker,CI=true.Every suite passes
The core suite passes only with #535's change: on SDK 11.0.100 its run did not end before.
The four fixes of #292 are still needed
Each fix was stripped alone, its tests were run, then it was restored.
StartsWithHour24returnsfalseTemporalLiteralGrammarTests: 7 of 115 fail, "Expected exception of exact type FormatException but no exception was thrown". The 11.0.0 runtime reads hour 24.RangeSet.ContainsRangeSetContainsRewriterout of the interceptorRangeSet_Contains_Set,_Value,_RangeColumnfail with theArgumentExceptionfrom EF Core'sQueryable.Containsrewrite.jsonb_set_laxValueSetSqlGuard's matchExecuteUpdateGuardTests6 of 7 fail,ExecuteUpdateJsonTests(PostgreSQL 16) 7 of 13 fail: the refusal names the column, not the path.EmptyCollectionRewriter.Rewritereturns its inputAnEmptyCollection*tests fail:42883: operator does not exist: text && int4range.Native AOT
test/consumer-smoke-test.shpasses on the GA SDK: 99oklines, noFAIL, the AOT consumer published and run as a native binary, the ComplexIndexes consumer skipped as before.The trap of #291 is still in .NET 11.0.0, so the workaround stays. The minimal repro from dotnet/runtime#136073, published with Native AOT on SDK 11.0.100 (ILCompiler 11.0.0):
IFormattable.ToStringAggressiveInlining, as in the upstream reproSIGTRAP, exit 133NoInliningObject,String,done, exit 0The fix is in dotnet/runtime's
main(dotnet/runtime#136128). Its backport torelease/11.0, dotnet/runtime#136148, is labelledServicing-approvedand is still open, so it should arrive in an 11.0.x servicing release. The comment inIValueSetFactory.cssays so now.closedis stable C# 15On the GA compiler (
5.12.0-1.26529.118), with a library of oneclosed recordand five nested sealed records, built fornet10.0andnet11.0:net11.0is 15.0,net10.0is 14.0LangVersionnet11.0builds.net10.0:CS9327: Feature 'closed classes' is not available in C# 14.0. Please use language version 15.0 or greater.LangVersion15IsClosedTypeAttributepolyfill under#if !NET11_0_OR_GREATERnet11.0consumer, either assetCS8509namingProbe.IntRange.Infinite; a kept_ => throwarm raises nothingnet10.0consumer on SDK 11,LangVersion15net11.0net10.0consumer on SDK 11, default language (14)CS8509, "the pattern '_' is not covered"net10.0consumer on SDK 10.0.303CS8509; builds and runsCS9382So no
LangVersionpreview is needed, and #149 can go into a stable package. One thing the RC2 probe did not show: anet10.0consumer gets the check only withLangVersion15, becausenet10.0defaults to C# 14 even on SDK 11. Nothing breaks for a consumer who doesn't set it. #534 and #149 carry that.