Repository navigation
Epic: 10.0.0 #58
Description
Goal
10.0.0 is the LTS line (.NET 10, supported to 2028-11). It ships the defects that answer wrongly without throwing and the fixes that tighten behaviour (none of which can ship in a minor under the release rule), and, since 2026-10-18, two feature themes and the floating-point family, so the API the LTS line keeps for three years is settled in its major.
In scope
Fixes (done): issues labelled silent or breaking, new or old.
Features (rescoped 2026-10-18 by the maintainer, once every fix had merged):
- Scheduling toolkit: Gap between two ranges, and the gaps of a RangeSet (inner complement, within a window) #98 Gap / Gaps, Shift and Expand on ranges (move by a delta, buffer both sides) #101 Shift / Expand, Calendar factories for DateRange (month, quarter, year, week) #48 calendar factories (ISO 8601 weeks only), Split a range by a step or period, and Values(step) on the discrete types #100 Split(step)
- PostgreSQL parity: IComparable<TRange> in PostgreSQL's range order #39
IComparablein PostgreSQL's range order, Range-receiver overloads with a RangeSet operand, and RangeSet.IsContainedBy (the other half of the range × multirange operator matrix) #92 range × multirange matrix, RangeAgg and RangeIntersectAgg over a sequence of RangeSet (range_agg / range_intersect_agg on multiranges) #93 multirange aggregates, Document PostgreSQL 18 temporal keys over a range column: PRIMARY KEY … WITHOUT OVERLAPS and FOREIGN KEY … PERIOD #97 temporal-keys docs (10.x half) - Floating-point family: Float64Range/Float64Set and Float32Range/Float32Set over finite values only, mapped to custom float8range and float4range #153
Float64Range/Float64SetandFloat32Range/Float32Set, finite values only. NoFloat16(PostgreSQL has no two-byte float) - Stretch (not done): Translate enumeration of a multirange column: Count, Any, All, SelectMany over a RangeSet (unnest) #94
unnestover a multirange column went back to the backlog after its spike
Hardening and grammar: #118, #119 (test gaps that have hidden silent bugs before), #127, #128, #130, #131 (PostgreSQL input grammar the parsers refuse)
Validation (added 2026-10-18 after an independent review of the bundle): #146 (a retargeted stacked PR gets no .NET run), #55 (the seed prover can count a seeded failure as a known candidate; fixed before #179's seed proof), #43 (JSON columns through a compiled model), #200 (the clone sweep misses a divergence two new siblings share; the float pair is that case)
Docs found on the way: #108, #132, #201
Release: #178 (the 10.x additions window), #179 (pre-tag gate)
Additions are frozen as of 2026-10-18: nothing joins 10.0.0 beyond the issues above. The float family (#153) is a blocker, not slip-able (maintainer, 2026-10-18), so the tag waits for its coverage of the new members (range order, Gap, Shift/Expand, Split) and for #200.
Out of scope
- Translate element-wise predicates over a value set column: Any, All, SelectMany (unnest) #95, Aggregate a column into a value set in a GroupBy projection (array_agg) #96:
unnest/array_aggover value sets touchValueSetSqlGuardand add a second non-canonical producer next toarray_cat; too risky to rush into an LTS tag - RangeMap: an immutable range-keyed map with coalescing put (in-memory only) #99 RangeMap (no PostgreSQL counterpart), ISpanFormattable / TryFormat for ranges, range sets and value sets #41, Support compiled models generated with --nativeaot #42, Expose the full rejected input on parse errors without putting it in the message #44, CodoMetis.ValueRanges.Npgsql: a trimmable, Native-AOT-safe bridge for Npgsql without EF Core #47, Translate ExecuteUpdate to null for a value set inside a JSON column #72: additions that ship as 10.x minors
- Mark the range unions closed (C# 15) for compile-time exhaustiveness, on both lines #149 closed unions: needs C# 15; its 10.x half ships inside the window 10.x takes additions for six months after v11.0.0, not only until it #178 defines
10.x takes additions for six months after v11.0.0 (#178); everything lands on main first, and the 11 line starts on main after the tag (#280).
Done when
- every sub-issue is closed
- the root changelog opens 10.0.0 with a "what can break you" list, as 7.0.0, 8.0.0 and 9.0.0 did, and
docs/migration.mdhas a v9.x section - Pre-tag gate for 10.0.0: seeds, surface worklist, probe gate, value-semantics review #179's gate ran on the commit to be tagged
v10.0.0is tagged and the four packages are on NuGetrelease/10.xis cut at the tag. The retarget ofmainto .NET 11 follows under Epic: 11.0.0 #147 (11.0.0-preview.1: retarget main to net11.0 / EF Core 11 / Npgsql 11 after the v10.0.0 tag, with the four behaviour changes as named tests #103; no preview branch, Tag-time branch steps assume a net11 branch that was never created #280)
Activity
66 remaining items
CaffeinatedCoder commentedon Oct 19, 2026
10.0.0 is released (2026-10-19).
docs/migration.mdhas the v9.x section.v10.0.0is tagged, the four packages were pushed to nuget.org, the GitHub release is Latest, andrelease/10.xis cut from the tag.The 11 line continues under #147.