Replace net7.0 with net8.0 and net10.0 - #811
Merged
Merged
Conversation
.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>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
.NET 7 left support in May 2024. The target list named it and no supported modern framework:
netstandard2.0stays, 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.0asset, and silently lost the generic-math surface with it. They now get a real target.Generic math
Core/Entity/GenericMathneedsINumber<T>, so it must still be excluded below net7.0. Its condition was a literal: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:
IClosedArithmeticsSumf(control)netstandard2.0net8.0net10.0What this breaks
Anything that pins the framework of its reference:
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 inBREAKING-CHANGES.md.UnitTestsis 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.0themselves, in which case they now resolvenetstandard2.0and 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 stoppedAngouriMath.CPP.Exportingfrom building against the source beside it instead of a1.4.0-preview.2package.Not fixed here — two further changes are needed, both measured and now known. I got a working 4.4 MB native
.solocally 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