Releases: jamarino/IntervalTree
Releases · jamarino/IntervalTree
v1.2.2
- Fixed issue with QuickIntervalTree where querying with a range - Query(low, high) - would cause an IndexOutOfRangeException for some lobsided trees. Thanks to @superoctave2 for reporting this issue!
v1.2.1
- Added validation to ensure intervals
from
is smaller or equal to to
. Kudos to @felix-b!
v1.2.0
Update to make licensing more clear.
v1.1.0
- Added
LinearIntervalTree
- Added true parameterless constructors to all tree types
LightIntervalTree
reworked for more efficient removes
v1.0.0
Remove()
methods implemented
- XmlDocs hoisted to IIntervalTree interface
- Query performance of
LightIntervalTree
improved by ~2-5% by rearranging and removing unnecessary key comparisons
- Test and benchmark projects updated to net8, published package remains netstandard2.0
v0.9.0
- Fixed potential integer overflow issue when querying trees with more than 1 billion intervals
- Added recursion limits to prevent stack overflows when trees are misused without proper thread safety in concurrent scenarios
- Added build locks to protect consumers who forget to RTFM thread safety section
- Added Clear() method to allow reuse of allocated trees
v0.8.0
Build-methods made public
DocXml added for classes and most important methods
Added constructors with capacity hint for reduced allocations when approximate number of intervals is known ahead of time
Added methods for querying ranges
v0.7.0
Query performance of LightIntervalTree improved by a further 15% in dense benchmarks, by switching to a naive linear scan of intervals when subtree size falls to just a handful of intervals.
v0.6.0
Query performance improved by 10-35% by replacing recursive query methods with allocation-free depth-first-search iterative implementation.
Note: netstandard2.0 now requires System.Memory for Span<>
v0.5.0
This release adds a type constraint on TKey, requiring TKey to implement IComparable. Adding this constraint has improved query performance by 20-30%, and seems reasonable as all your usual suspects: int, float, double, decimal etc all implement this interface.