Gapotchenko.FX 2024.1 (Release build 2024.1.3)
After undertaking a substantial development and formalization work for Gapotchenko.FX, we are pleased to release the new version 2024.1 which contains the following improvements, among many others:
- Added support for .NET 8.0 and .NET 9.0 target frameworks
- Introduced primitives for interval arithmetic represented by
Interval<T>
andValueInterval<T>
types provided byGapotchenko.FX.Math.Intervals
module - Introduced
Gapotchenko.FX.Collection.Generic.Deque<T>
primitive representing a linear collection that supports element insertion and removal at both ends with O(1) algorithmic complexity - Added ability to choose between lowercase or uppercase text output of a case-insensitive data encoding by using
DataEncodingOptions.Lowercase
andDataEncodingOptions.Uppercase
flags - Added ability to create streams over contiguous memory regions represented by
System.Memory
andSystem.ReadOnlyMemory
objects by usingToStream
extension method provided byGapotchenko.FX.Memory
module - Added
Gapotchenko.FX.Memory.SpanEqualityComparer
class that allows to compare read-only spans and calculate their hash codes AssemblyAutoLoader
now automatically handles probing paths defined by assembly binding redirects- Added new
InsertSubpath
andEntryExists
methods toFileSystem
class provided byGapotchenko.FX.IO
module - Added
ReifyCollection
LINQ extension method forIEnumerable<T>
which allows you to get a read-only view on a sequence of elements - Added ability to retrieve connected components of a graph by using
Graph<T>.ConnectedComponents
property - Added ability to supply an additional cancellation token to
Gapotchenko.FX.Threading.Tasks.TaskBridge.Execute
method - Added a functional facility that implements a pipe operator concept.
The facility is provided in the form ofPipeOperator
extension method that resides inGapotchenko.FX.Linq.Operators
namespace provided byGapotchenko.FX.Linq
module. It allows you to have a pipe operator functionality in .NET languages that do not natively provide pipe operators - Use hardware-accelerated CRC-32C checksum algorithm implementation when it is available
- Deprecated
Gapotchenko.FX.Math.Topology
module in favor of a formalizedGapotchenko.FX.Math.Graphs
module - Polyfills:
- Added polyfill for required properties introduced in C# 11.0
- Added polyfills for
System.Range
andSystem.Index
types. They are used by the C# compiler to support the range syntax - Added
ExceptBy
,IntersectBy
andUnionBy
LINQ polyfills forIEnumerable<T>
- Added
Order
andOrderDescending
LINQ polyfills forIEnumerable<T>
- Added
Chunk
LINQ polyfill forIEnumerable<T>
- Added
EndsWith
LINQ polyfill forIEnumerable<T>
- Added polyfill for
System.ArraySegment<T>.Slice
method - Added polyfill for
System.IO.Path.GetRelativePath
method - Added polyfill for
System.IO.Path.TrimEndingDirectorySeparator
method - Added polyfills for
ReadExactly
andReadAtLeast
methods ofSystem.IO.Stream
type - Added polyfill for
System.Char.Equals(System.Char, System.StringComparison)
method - Added polyfill for
System.String.Contains(System.Char, System.StringComparison)
method - Added polyfill for
System.String.GetHashCode(System.StringComparison)
method - Added polyfills for
Split
andSplitAny
methods ofSystem.ReadOnlySpan<char>
type - Added polyfill for
ReadSpan
method ofSystem.Runtime.InteropServices.SafeBuffer
type - Added polyfill for
System.Runtime.CompilerServices.CallerArgumentExpressionAttribute
type - Added polyfills for
System.Threading.Tasks.Task.WaitAsync
andSystem.Threading.Tasks.Task<TResult>.WaitAsync
methods - Added polyfill for
System.Diagnostics.StackTraceHiddenAttribute
type - Added polyfill for
System.Diagnostics.UnreachableException
type - Added polyfill for
System.Collections.Generic.Queue<T>.TryDeque
method - Added polyfill for
System.Collections.Generic.OrderedDictionary<TKey, TValue>
type - Added polyfill for
System.IO.Path.Join
method - Added polyfills for
System.Math.BitIncrement
andSystem.Math.BitDecrement
methods - Added polyfill for
System.Threading.Lock
type - Removed
System.HashCode
polyfill implementation in favor ofMicrosoft.Bcl.HashCode
package
- .NET Framework 4.6 support is retired. The minimal supported version of .NET Framework is 4.6.1
- Fixed issues:
- Fixed case-sensitivity of a text data encoding padding character. This is important for data encodings that use custom padding characters
- Fixed issue in
Gapotchenko.FX.Collections.Generic.AssociativeArray<TKey, TValue>
type with accessingIEnumerable<T>.Current
property without checking the result of a prior call toMoveNext
method - Fixed assembly name comparison bug in
Gapotchenko.FX.Reflection.Loader
module - Fixed a bug with the
null
key inIDictionary.Remove
method ofAssociativeArray<TKey, TValue>
type - Fixed a bug with the
null
key inIDictionary.Contains
method ofAssociativeArray<TKey, TValue>
type - Fixed a bug with the
null
key inIDictionary.this[TKey]
getter method ofAssociativeArray<TKey, TValue>
type - Fixed a bug with a non-existing key handling in
IDictionary.this[TKey]
getter method ofAssociativeArray<TKey, TValue>
type