Skip to content

Replace net7.0 with net8.0 and net10.0 - #811

Merged
Rafael-SOWNet merged 1 commit into
masterfrom
chore/retarget-supported-frameworks
Aug 8, 2026
Merged

Replace net7.0 with net8.0 and net10.0#811
Rafael-SOWNet merged 1 commit into
masterfrom
chore/retarget-supported-frameworks

Conversation

@Rafael-SOWNet

Copy link
Copy Markdown
Collaborator

.NET 7 left support in May 2024. The target list named it and no supported modern framework:

was   net7.0;netstandard2.0
is    netstandard2.0;net8.0;net10.0

netstandard2.0 stays, so .NET Framework and the older runtimes are unaffected. Both replacements are LTS.

There is a quiet second effect worth stating: 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.

Generic math

Core/Entity/GenericMath needs INumber<T>, so it must still be excluded below net7.0. Its condition was a literal:

Condition="'$(TargetFramework)' != 'net7.0'"

which would have dropped it from every new framework silently. It is now a compatibility test, so adding a target keeps it.

Verified on the built assemblies rather than assumed:

IClosedArithmetics Sumf (control)
netstandard2.0 absent ✅ present
net8.0 present ✅ present
net10.0 present ✅ present

What this breaks

Anything that pins the framework of its reference:

<ProjectReference Include="...\AngouriMath.csproj">
  <SetTargetFramework>TargetFramework=net7.0</SetTargetFramework>
</ProjectReference>

now fails with NETSDK1005: Assets file ... doesn't have a target for 'net7.0' — an unhelpful message for the actual cause, which is why it is written up in BREAKING-CHANGES.md. UnitTests is repointed here; all nine measurement harnesses outside this repository hit it too, so it is not hypothetical.

Consumers using the NuGet package pick their asset by their own framework and need no change — unless they target net7.0 themselves, in which case they now resolve netstandard2.0 and lose the generic-math types.

Side effect: #808 is no longer blocked

This removes NETSDK1204"ahead-of-time compilation is not supported on the current platform 'osx-arm64'" — which is what stopped AngouriMath.CPP.Exporting from building against the source beside it instead of a 1.4.0-preview.2 package.

Not fixed here — two further changes are needed, both measured and now known. I got a working 4.4 MB native .so locally with them applied on top of this branch; details on #808.

Verification

5551 unit tests, 130 F# tests. All four packable projects build. casbench 113/117 with 0 wrong, propcheck 0 failures, rootcheck 596/596, simpsweep 10463/10463.

🤖 Generated with Claude Code

.NET 7 left support in May 2024. The target list named it and no supported
modern framework, so a consumer on net8.0 or net10.0 resolved the
netstandard2.0 asset and silently lost the generic-math surface with it.

    was   net7.0;netstandard2.0
    is    netstandard2.0;net8.0;net10.0

netstandard2.0 stays, so .NET Framework and the older runtimes are
unaffected. Both replacements are LTS.

The generic-math folder needs INumber<T> and so must still be excluded below
net7.0. Its condition was a literal `!= 'net7.0'`, which would have dropped
it from every new framework silently; it is now a compatibility test, so
adding a target keeps it. Verified on the built assemblies rather than
assumed: IClosedArithmetics is present in net8.0 and net10.0 and absent from
netstandard2.0, with Sumf present in all three as the control.

Dropping a framework breaks anything that pins one. UnitTests pinned
net7.0 on its project reference and is repointed to net10.0; so did all nine
measurement harnesses outside this repository, which is what the
BREAKING-CHANGES entry warns about, since the failure is an unhelpful
NETSDK1005 about a missing assets target.

This also removes NETSDK1204 -- "ahead-of-time compilation is not supported
on the current platform 'osx-arm64'" -- which was what stopped
AngouriMath.CPP.Exporting from being built against the source next to it
rather than against a 1.4.0-preview.2 package. That is not fixed here, since
two further changes are needed for it, but it is no longer blocked. See #808.

5551 unit tests and 130 F# tests pass; all four packable projects build;
casbench 113/117 with 0 wrong, propcheck 0 failures, rootcheck 596/596,
simpsweep 10463/10463.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@Rafael-SOWNet
Rafael-SOWNet merged commit 249a51f into master Aug 8, 2026
25 checks passed
@Rafael-SOWNet
Rafael-SOWNet deleted the chore/retarget-supported-frameworks branch August 8, 2026 12:27
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant