Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Added net8.0 target and tests (Fixes #94) #110

Merged
merged 20 commits into from
Sep 17, 2024
Merged

Added net8.0 target and tests (Fixes #94) #110

merged 20 commits into from
Sep 17, 2024

Conversation

NightOwl888
Copy link
Owner

Fixes #94, Fixes #107, Fixes #108

This adds .NET 8 support and tests. This was a lot more work than previous SDK updates because of several issues:

  1. The collection behavior changed in .NET 8, so much work was needed to normalize the behavior between .NET 8 and older .NET versions. SortedSet<T> and SortedDictionary<T> were updated to match the .NET 8 implementations, while other collections were patched but will still need to be reviewed.
  2. The .NET 8 SDK no longer runs installs the bits to run the x86 tests and we needed custom scripts to manually install them because the Azure Pipelines task does not allow you to specify.
  3. We had to change the testing targets for older platforms from net461 > net471 and net451 > net47 because they are no longer supported by the test adapter (which needed upgrading because .NET 8 doesn't support any of the older test adapters).
  4. .NET 8 runs too slow to test net40 (which is now run with net47) and it takes more than an hour to complete most of the time, which is longer than a job can run on Azure DevOps. So, the script was changed so that .NET 6 is installed instead of .NET 8 when running .NET Framework tests.
  5. Test projects were changed to run in parallel to cut down on testing time.

…s-on-os.yml: Use pipeline artifacts for NuGet and binary artifacts to improve performance
…r specific characters, since some tests depend on them not being defined and need to change for versions of Unicode that define them. Eliminated FEATURE_ICU.
…latile.Read() where supported rather than using a sentinel Comparand that is created using FormatterServices.GetUninitializedObject(), which is now obsolete.
…rialization.EnableUnsafeBinaryFormatterSerialization to true so we can run the binary serialization tests. This has no impact on how binary serialization is handled in production.
…d visibility from the IDE. Binary serialization is disabled by default in .NET 8, so we are preparing users for the eventual removal of these features. They still exist and are fully functional, though.
…d tests to test our HashSet<T> implementation instead of the one in the .NET runtime
…sts: Fixed tests to use our SortedDictionary<TKey, TValue> implementation instead of the one in the .NET runtime
…e .NET 8.0 implementation (fixes #107, fixes #108). Upgraded collection test framework and tests to account for new or differing behaviors in .NET 8.0 (excluding IList features). Added IReadOnlySet<T> to all set types.
…ause the new test adapter (the only thing compatible with .NET 8) doesn't seem to support anything lower than net462. Updated test target vs target under test documentation.
@NightOwl888 NightOwl888 added this to the 2.1 milestone Sep 16, 2024
@NightOwl888 NightOwl888 merged commit e69f117 into main Sep 17, 2024
22 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
1 participant