build: multi-target net8.0 + net10.0, lock API surface — 1.0.0 prep#9
Merged
Conversation
The library was net10.0-only, which excluded the large base of consumers on .NET 8 LTS (and .NET 9). Multi-target net8.0;net10.0 so the package is broadly installable; .NET 9 apps resolve the net8.0 assembly automatically. - Directory.Build.props: TargetFramework -> TargetFrameworks net8.0;net10.0 (applies to the library and test project; tests now run on both runtimes). - Benchmarks stay net10.0-only (dev tool). - Replace the one net10-only test API (System.Linq.AsyncEnumerable.Empty) with the existing TFM-agnostic CreateDiffsAsync(0, 0) helper. - CI/publish: install both 8.0.x and 10.0.x so both targets build and test. All 767 tests pass on net8.0 and net10.0.
Turn on EnablePackageValidation so pack validates that the net8.0 and net10.0 targets expose a compatible API surface, and (once the baseline is set after 1.0.0 ships) flags accidental breaking changes against the prior release.
No 1.0.0 was ever published (latest on NuGet is 0.3.0) and the [1.0.0] entry was aspirational/stale. Consolidate everything since 0.3.0 into a single dated 1.0.0 entry: target frameworks + packaging, the extensibility/filters/DX work from this cycle, and the folded-in modernization. Note net8.0/net10.0 support in the README.
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.
Summary
Prep for the first stable 1.0.0 release. This addresses the net10-only lock and the pre-1.0.0 checklist. It does not release anything — publishing still happens via a tagged GitHub Release, which is a separate, deliberate step.
What's in here
Multi-target
net8.0(LTS) +net10.0The library was net10.0-only, which excluded most consumers (net8 LTS is the bulk of production; net9 is STS). Now multi-targets
net8.0;net10.0:Directory.Build.props:TargetFramework→TargetFrameworks net8.0;net10.0(library + tests; tests run on both runtimes).System.Linq.AsyncEnumerable.Empty) swapped for the existing TFM-agnostic helper — the library itself had zero net10-only APIs.8.0.xand10.0.x.lib/net8.0+lib/net10.0.Lock the API surface —
EnablePackageValidationPack now validates the net8.0/net10.0 surfaces are compatible, and (once
PackageValidationBaselineVersionis set after 1.0.0 ships) will flag accidental breaking changes vs the baseline. Lower-maintenance and multi-target-aware vs hand-maintained PublicAPI.txt files.Reconcile the changelog + version
No 1.0.0 was ever published (latest on NuGet is 0.3.0); the
[1.0.0] - 2026-02-12entry was aspirational. Consolidated everything since 0.3.0 into one honest, dated1.0.0entry (target frameworks/packaging + this cycle's extensibility/filters/DX + the folded-in modernization). README notes net8/net10 support.