All notable changes to this project will be documented in this file. The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
- Added System.DateOnly and System.TimeOnly polyfills for .NET Framework 4.8 / 4.8.1.
- Added System.Index and System.Range polyfills with full compiler-required members.
- Added unified slicing helpers under
ModernBCL.Core.Slicing:- Array slicing (
T[]) IList<T>slicing- String slicing (via
char[])
- Array slicing (
- Added comprehensive SystemSample console examples:
- DateOnly / TimeOnly usage
- Index / Range semantics
- Date, string, list slicing scenarios
- Refactored slicing helpers into a single namespace and file for clarity and discoverability.
- Clarified separation between System polyfills and ModernBCL helpers.
- Updated README to document new polyfills and slicing capabilities.
- Fixed compiler errors related to missing
Indexconstructor and required members. - Fixed
DateOnlyparity issues (DayNumber / arithmetic behavior). - Resolved extension-method discoverability issues by unifying slicing namespaces.
- Multi-targeting support: net48, net481, and net8.0.
- Added HashAccumulator64 (64-bit hashing) with extremely low collision rates.
- Added full comparer suite:
ObjectHashComparerEnumerableHashComparerSequenceHashComparer
- Added complete Guard API with fluent syntax:
.Null().NullOrEmpty().NullOrWhiteSpace().OutOfRange()- Numeric validations
- Added fuzz test suites for:
- HashAccumulator (32-bit)
- HashAccumulator64
- Guard validation system
- Added benchmark project targeting net8.0, powered by BenchmarkDotNet.
- Rebuilt HashCode polyfill using
HashAccumulatorfor deterministic, order-sensitive hashing. - Improved folder organization for clearer separation of polyfills, guards, hashing, comparers, tests, and benchmarks.
- Standardized testing to xUnit across the entire project.
- Resolved
System.HashCodetype conflict on .NET 8 by isolating polyfill with conditional compilation. - Eliminated duplicate compile warnings by removing explicit rules.
- Ensured deterministic null-handling behavior in hashing APIs.
- Support both net48 and net481 target frameworks.
- Added
Guard.ThrowIfNullOrEmptyandGuard.ThrowIfNullOrWhiteSpace. - Introduced
ValueTuplepolyfills for .NET Framework.
- Updated XML comments and internal documentation.
- Resolved performance issue in
HashCode.Combineunder large input sets.
- Initial release of the ModernBCL.Core.HashCode polyfill.
- Added
System.HashCodestruct with dual-accumulator mixing. - Implemented alternating rotation hashing (5-bit and 17-bit).
- Included non-commutative
ToHashCode()algorithm. - Added
HashCode.Combineoverloads for 1–8 parameters.
- Resolved swapped-input collisions in hashing implementation.