Skip to content

Latest commit

 

History

History
87 lines (58 loc) · 8.02 KB

File metadata and controls

87 lines (58 loc) · 8.02 KB

Changelog

All notable changes to PolyKit will be documented in this file.

The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.

Unreleased changes

New features

Changes to existing features

  • The polyfill for System.HashCode has been removed in favor of the official polyfill: the Microsoft.Bcl.HashCode package. Projects that need System.HashCode shall depend of Microsoft.Bcl.HashCode.
  • Since the polyfill for System.Range depends on System.HashCode, it will be included by PolyKit.Embedded only if the target platform provides System.HashCode natively (but then it would also provide System.Range) or the project has a dependency on Microsoft.Bcl.HashCode.

Bugs fixed in this release

  • When using PolyKit.Embedded in a static analyzer project, Roslyn analyzers would raise error RS1035 ("The symbol 'Random' is banned for use by analyzers: Analyzers must be deterministic"). This was caused by the polyfill for System.HashCode using System.Random (in a way that would not compromise the determinism of the project's analyzers, by the way). This annoyance has been removed as a side effect of the removal of the "offending" polyfill.

Known problems introduced by this release

3.0.9 (2023-11-26)

This release updates some dependencies to their post-.NET 8.0 versions. No other modifications were made.

3.0.4 (2023-11-20)

New features

  • .NET 8 was added as a target platform.
  • All polyfills were updated with modifications (if any) made to BCL types up to the release of .NET 8.0.0.
  • The polyfill for ExperimentalAttribute has been added; however, this attribute is only polyfilled by PolyKit.Embedded when compiling with .NET SDK 8.0. This avoids giving the user the false impression that the attribute is supported, when the compiler doesn't actually support it.
  • DateOnly and TimeOnly polyfills now support deconstruction.

Changes to existing features

  • BREAKING CHANGE: Extension classes that were previously in PolyKit.* namespaces have been moved to System.* namespaces, in order for their members to be more easily discoverable (e.g. by Intellisense) and usable without additional using statements.
    This change may seem to go against best practices, as it places PolyKit types in namespaces usually reserved for the BCL; however, it makes sense if you consider that one of the purposes of polyfills is to minimize the amount of code changes necessary to backport code.
    Affected extension classes include:
    • PolyKitEnumerable, moved from PolyKit.Linq to System.Linq;
    • PolyKitExceptionExtensions, moved from PolyKit.Diagnostics to System;
    • PolyKitStackTraceExtensions, moved from PolyKit.Diagnostics to System.Diagnostics.

2.0.30 (2022-11-24)

Bugs fixed in this release

  • The polyfill for DateOnly could generate a CS8602 warning (possible dereference of a null reference).
  • The polyfill for TimeOnly, when compiled without span support, generated two CS1503 errors because of a missing preprocessor conditional.

2.0.26 (2022-11-24)

Bugs fixed in this release

  • The polyfills for DateOnly and TimeOnly only worked when either the target platform supported spans, or the System.Memory package was referenced.

2.0.24 (2022-11-23)

New features

Changes to existing features

  • BREAKING CHANGE: Following .NET's Library support for older frameworks policy, support for .NET Core 3.1 has been removed.
  • All types provideed by PolyKit are now flagged with the necessary attributes to be ignored by code analyzers, debuggers, code coverage tools, code metrics, etc. See this blog post for more information about the attributes added to types and the rationale behind each of them.

1.0.16 (2022-11-01)

Initial release.