ImTools Versions Save

Fast and memory-efficient immutable collections and helper data structures

v4.0.0

1 year ago

v4.0.0 Major feature release

Breaking changes:

ImMap<V> type is replaced by ImHashMap<int, V>. The implementations of ImMap and ImHashMap are combined into one, reducing the code size, and using all performance optimizations from the both. This change will simplify further performance improvements, testing and bug-fixes.

I have tried to keep the API as similar as possible, but you may expect that some types and methods were renamed, or new overloads were added.

Performance and memory improvements

  • Fewer allocations (~10%), see the benchmarks in project readme
  • Keeping the performance almost the same

Closed issues

  • #41 Add a builder-like capability to the ImHashMap via BuildFromDifferent methods
  • #47 Add output of the ImHashMap as mermaid diagram, e.g. ToMermaidString method
  • #48 Merge the ImMap and ImHashMap implementations
  • #50 Optimize Enumerable for the PartitionedHashMap
  • #51 Reduce ImHashMap memory allocations, keeping the speed
  • #52 Add AddSureNotPresent methods to compensate for GetSurePresent methods

v3.1.0

3 years ago

v3.1.0 Minor feature and bug-fix release

  • fixed: #44 the Im(Hash)Map.Entry methods should return the entry type but now return the map type
  • fixed: Excessive memory consumption and potential issue in ArrayTools.Match for 2 items
  • added: More efficient Im(Hash)Map ToArray() method
  • added: ImHashMap ForEach with the struct IHandler
  • added: ArrayTools.AppendNonEmpty and PrependToNonEmpty methods

v3.0.0

3 years ago

v3.0.0 Major feature release

  • Minimizing the target frameworks to the net45 and netstandard2.0
  • Added fast and more memory efficient ImMap and ImHashMap based on 2-3 tree (#32, #35)
  • Extended the map API with AddOrGetEntry, Count, ToArray and ToDictionary methods, and more

v2.1.0

3 years ago

v2.1.0 Feature release

  • Added fast and more memory efficient Experimental.ImMap234 implementing 2-3-4 tree (#32)

v2.0.0

4 years ago

v2.0.0 Major feature release

Highlights

  • Faster and less allocative ImMap and ImHashMap with more methods (plus bucketed ImMapSlots and ImHashMapSlots variants)
  • Algebraic sum-type aka descriminated union and one-liner records - Union<TUnion, T1..N>, Box<TBox, T>, Item<TItem, T>
  • GrowingList<T>, ImZipper<T>, StackPool<T>, Unit, Fun extensions with forward pipe operators
  • Ref.Swap now accepts state to use closure-less lambdas with less allocations

Details

https://github.com/dadhi/ImTools/milestone/2