Releases: ZacharyPatten/Towel
v1.0.30
This release includes a lot of XML documentation updates. Also, due to dotnet/roslyn#49568, I am forced to make the XML documentation members
public
instead ofinternal
for the time being.
This release includes a lot of nullable reference syntax updates.
New Features:
TryToRomanNumeral
Bag
data structure (work in progress... likely to change in near future)
Bug Fixes:
- added more exception checks to JSON and XML delegate serialization/deserialization
Changes:
ToCompareResult
converted to an extension method onint
ArrayJagged<T>
removed This was a legacy type that I wanted to remove for a while and just got around to it. If I add it back in Towel in the future, it will have a different design with more modularity.TryParse
methods on measurement types changed frombool TryParse(string, out MEASUREMENT)
to(bool, MEASUREMENT?) TryParse(string)
- added more exception checks to
Towel.Mathematics.Symbolics
- added more exception checks to
Towel.Measurements.Measurement
v1.0.29
Bug Fixes:
Towel.Mathematics.Symbolics.Parse<T>(...)
bug fix while parsing operations such as"squareroot(5)"
RedBlackTreeLinked<T, TCompare>.GetEnumerator()
fixed bug when tree is empty
Changes:
- renamed
Compare<TSift>(...)
toCompareSift<TSift>(...)
on bothISortedBinaryTree<T>
to avoid naming collisions - renamed
Contains<TSift>(...)
toContainsSift<TSift>(...)
on bothISortedBinaryTree<T>
to avoid naming collisions - renamed
TryRemove<TSift>(...)
toTryRemoveSift<TSift>(...)
on bothISortedBinaryTree<T>
to avoid naming collisions - changed
IAddable<T>
methodbool TryAdd(T, out Exception)
to(bool, Exception?) TryAdd(T)
- extension methods also adjusted
- changed
IRemovable<T>
methodbool TryRemove(T, out Exception)
to(bool, Exception?) TryRemove(T)
- extension methods also adjusted
- removed
StepperRef
andStepperRefBreak
methods- this is better handled by
IFunc<T, (T, StepStatus)>
than a custom method signature withref
parameters. I will likely add new methods calledMutate
as a replacement in the future, but for now I just removed them. Here is a benchmark that influenced this descision: https://github.com/asc-community/dotnet-benchmarks/tree/master/Benchmarks/IterationRefParametersVsReturns.
- this is better handled by
- added
T[] ToArray()
toIDataStructure<T>
(mainly forinheritdoc
) - added
ICloneable<T>
(mainly forinheritdoc
)- there appears to be a bug in roslyn regarding this: dotnet/roslyn#54069
- exposed
Bound<T>
Exists
andValue
getters
v1.0.28
v1.0.27
Note This is the first non-preview release of the Towel package on nuget.org.
New Features:
GetEnumerator
extension methods forTuple<...>
,ValueTyple<...>
, andITuple
Changes:
TryParseRomanNumeral
parameterstring
->ReadOnlySpan<char>
Extensions.IsDefined
generic contraintswhere T : Enum
=>where TEnum : struct, Enum
- renamed
ActionRuntime<...>
toSAction<...>
- renamed
.Do(...)
to.Invoke(...)
- renamed
- renamed
FuncRuntime<...>
toSFunc<...>
- renamed
.Do(...)
to.Invoke(...)
- renamed
- removed unnecessary mathematics delegates
v1.0.26-alpha
New Features:
HeapArray<T, TCompare>
->MinimumCapacity
[property] added setter
Bug Fixes:
Console.IntMenu
fixed bug where a hard coded value was used instead of theinvalidMessage
parameterHeapArray<T, TCompare>
added exception checks for invalid minimum capacity values
Changes:
- many
Towel.DataStructures
namespace interfaces, types, and methods were redesignedIDataStructure<T>
->void Stepper(Action<T> step)
[method] removed handled via extension methodsIDataStructure<T>
->StepStatus Stepper(Func<T, StepStatus> step)
[method] removed handled via extension methodsIDataStructure<T>
->StepStatus StepperBreak<TStep>(TStep step = default)
[method] addedISortedBinaryTree<T>
[interface] addedIAvlTree<T>
[interface] addedAvlTreeLinked<T>
[class] removed converted to static factory methodsIRedBlackTree<T>
[interface] addedRedBlackTreeLinked<T>
[class] removed converted to static factory methodsTreeMap<T>
->TreeMap<T, TEquate, THash>
[class] generic arguments changedHeapArray<T>
[class] removed converted to static factory methodsSetHashLinked<T>
[class] removed converted to static factory methodsGraphMap<T>
->GraphMap<T, TEquate, THash>
[class] generic arguments changedMapHashLinked<T, K>
[class] removed converted to static factory methodsDataStructure.IEquating<K>
removed frominterface IMap<T, K>
[interface]IEquating<T>
->IEquating<T, TEquate>
[interface] generic arguments changedIHashing<T>
->IHashing<T, THash>
[interface] generic arguments changedGraphSetOmnitree<T>
->GraphSetOmnitree<T, TEquate, THash>
[class] generic arguments changed- Note: a
TCompare
generic argument will be added in a future version when the Omnitree rewrite is complete
- Note: a
GraphWeightedMap<V, W>
->GraphWeightedMap<V, W, TEquate, THash>
[class] generic arguments changed
In place of types with reduced generic parameters, "New" static factory methods were added for data structures with functional generic parameters. For example, instead of
var tree = new AvlTreeLinked<T>();
you now dovar tree = AvlTreeLinked.New<T>();
. Static factory methods are more modular that creating custom types for purposes of defaulting generic parameters.
Multiple methods not listed above were converted to "TryXxx" patterns for better versatility and exception handling.
v1.0.25-alpha
New Features:
CombineRanges
simplifies sequences of ranges by combining ranges without gapsGraphWeightedMap
data structure that includes weights on the edges- Added several members to
Map
IEnumerable<K> GetKeys()
IEnumerable<(T Value, K Key)> GetPairs()
- more overloads to
Stepper
,Keys
andPairs
to support struct generic parameters
Bug Fixes:
OmnitreeBoundsLinked<T, Axis1...>
->Stepper(step + subspace)
bug fix
Changes:
- The
T Minimum
method was split into three methods like the maximum method was changed previously.(int Index, T Value) Minimum
T MinimumValue
int MinimumIndex
Map
->void Stepper(Action<(T Value, K Key)> step)
renamed toPairs
Map
->StepStatus Stepper(Func<(T Value, K Key), StepStatus> step)
renamed toPairsBreak
Map
->void Stepper(Action<K> step)
renamed toKeys
Map
->StepStatus Stepper(Func<K, StepStatus> step)
renamed toKeysBreak
Graph
->void Stepper(Action<(T?, T?)> step)
renamed toEdges
Graph
->StepStatus Stepper(Func<(T, T), StepStatus> step)
renamed toEdgesBreak
- several stepper methods were altered to use value tuples rather that multiple parameters
v1.0.24-alpha
New Features:
GetXmlName
(was coupled withGetDocumentation
, but now it is exposed on it's own)FieldInfo
PropertyInfo
EventInfo
ConstructorInfo
MethodInfo
Type
GetLeast
GetGreatest
Bug Fixes:
CommandLine.HandleArguments
: fixed minor bug where it was allowing parameters with single-
characters rather than twoQueueArray<T>.Newest
: needed a- 1
on the indexQueueArray<T>[int index]
: logic operators were wrong on min/max indices
v1.0.23-alpha
v1.0.22-alpha
v1.0.21-alpha
New Features:
Combinations
IsReorderOf
MapHashLinked<...>.AddOrUpdate
MapHashLinked<...>.TryUpdate
Bug Fixes:
QueueArray.MinimumCapacity
bug fix
Changes:
- The data structure interfaces have been modified to include the
_Compare
generic parameter on some appropriate data structures (ex Heap, AVL Tree, and Red Black Tree) - Added
implicit
casting operators fromUniversalQuantification
toSpan
/Memory
types - Stack/Queue minimum capacity properties made nullable and slight tweaks to the logic
Note: there will be similar changes to other data structure interfaces in future releasese