diff --git a/BREAKING-CHANGES.md b/BREAKING-CHANGES.md index 5e0592596..8fbe0e24c 100644 --- a/BREAKING-CHANGES.md +++ b/BREAKING-CHANGES.md @@ -47,6 +47,44 @@ read first. | **silent** | two integrals | answered correctly | unevaluated — a deliberate loss | | **silent** | `k/(a x^2 + c)` and `k/sqrt(a x^2 + c)` for symbolic `a` | `NaN` | a piecewise on the sign of the discriminant | | loud | `Compile` over a missing variable | `KeyNotFoundException` | `UncompilableNodeException` | +| loud | the target frameworks | `net7.0;netstandard2.0` | `netstandard2.0;net8.0;net10.0` | + +--- + +## Target frameworks + +`net7.0` is replaced by `net8.0` and `net10.0`. `netstandard2.0` is unchanged, so consumers on +.NET Framework and the older runtimes are unaffected. + +| | was | is | +|---|---|---| +| `TargetFrameworks` | `net7.0;netstandard2.0` | `netstandard2.0;net8.0;net10.0` | + +.NET 7 left support in May 2024, so the old list named one framework nobody should still be +targeting and no supported modern one. A consumer on net8.0 or net10.0 previously resolved the +`netstandard2.0` asset and silently lost the generic-math surface with it; they now get a real +target. + +**What breaks.** Anything that pins the framework of its reference: + +```xml + + TargetFramework=net7.0 + +``` + +fails with `NETSDK1005: Assets file ... doesn't have a target for 'net7.0'`. Change it to `net10.0` +or `net8.0`. This is not hypothetical -- every one of the nine measurement harnesses in this +workspace pinned `net7.0` and had to be repointed. + +A consumer that references the NuGet package rather than the project picks its asset by its own +framework and needs no change, unless it targets `net7.0` itself, in which case it now resolves +`netstandard2.0` and loses the generic-math types. + +**Generic math is unchanged in reach.** `Core/Entity/GenericMath` needs `INumber` and so is +still compiled only into the net7.0-and-later targets -- now written as a compatibility test +rather than a literal `!= 'net7.0'`, so adding a framework does not silently drop it. Verified on +the built assemblies: present in `net8.0` and `net10.0`, absent from `netstandard2.0`. --- diff --git a/Sources/AngouriMath/AngouriMath.csproj b/Sources/AngouriMath/AngouriMath.csproj index 7b2d7e46e..5085a84b6 100644 --- a/Sources/AngouriMath/AngouriMath.csproj +++ b/Sources/AngouriMath/AngouriMath.csproj @@ -1,7 +1,7 @@  - net7.0;netstandard2.0 + netstandard2.0;net8.0;net10.0 AngouriMath AngouriMath @@ -88,6 +88,11 @@ - + + diff --git a/Sources/Tests/UnitTests/UnitTests.csproj b/Sources/Tests/UnitTests/UnitTests.csproj index 006a0c7db..3d3bb67e5 100644 --- a/Sources/Tests/UnitTests/UnitTests.csproj +++ b/Sources/Tests/UnitTests/UnitTests.csproj @@ -34,7 +34,7 @@ - TargetFramework=net7.0 + TargetFramework=net10.0