Skip to content

Add modern .NET targets and remove C5 - #8

Open
cwithfourplus wants to merge 1 commit into
quantumtunneling:masterfrom
cwithfourplus:vikaush-microsoft-netstandard2-c5-enumeration-fix
Open

cwithfourplus wants to merge 1 commit into
quantumtunneling:masterfrom
cwithfourplus:vikaush-microsoft-netstandard2-c5-enumeration-fix

Conversation

@cwithfourplus

Copy link
Copy Markdown

What changed

  • Multi-target TDigest for .NET Framework 4.5 and 4.7.2, .NET Standard 2.0, .NET 8, and .NET 10 while preserving the existing public API and strong-name identity.
  • Replace C5 with a built-in ordered SortedSet implementation that materializes nearest-centroid candidates before mutation and keeps updates logarithmic.
  • Set the NuGet package version to 2.0.0 and add a test-gated workflow that publishes on relevant merges to master using the NUGET_API_KEY repository secret.
  • Modernize the MSTest project and add regression coverage for centroid reordering and malformed serialized duplicate centroids.

Why

C5 2.3.0.1 only targets .NET Framework and its live collection enumeration can throw when centroid updates mutate the digest. Removing it enables modern target frameworks and prevents collection-modified failures without changing the library's exported contract.

How it was validated

  • Built and packed TDigest.2.0.0.nupkg with net45, net472, netstandard2.0, net8.0, and net10.0 assemblies and no C5 dependency groups.
  • Ran all 10 tests successfully on .NET Framework 4.7.2 and .NET 10.
  • Reflection-compared the exported net45 API against the published TDigest 1.0.7 package; type, constructor, method, and property signatures match exactly.
  • Inspected the package metadata and contents, including version 2.0.0, MIT license, README, and all five target assets.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
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