Skip to content

Performance, Ordered Collections release#16

Merged
dco-lentz merged 287 commits into
masterfrom
020-mutable-transient
Apr 8, 2026
Merged

Performance, Ordered Collections release#16
dco-lentz merged 287 commits into
masterfrom
020-mutable-transient

Conversation

@danlentz
Copy link
Copy Markdown
Collaborator

@danlentz danlentz commented Feb 7, 2026

This branch turns the original interval-tree codebase into a broader ordered-collections library with a more complete API, stronger semantics, significantly expanded documentation, and much deeper testing/benchmarking. It adds several new collection types, rounds out the ordered-set/map interfaces, hardens performance-sensitive internals, and raises the standard of correctness around equality, serialization, EDN, interop, and benchmarks.

  • Rebrand/reorganize the library from interval-tree to ordered-collections
  • Add a public core API, shared protocols, readers, util/parallel namespaces, and cleaner constructor/re-export structure
  • Expand the collection lineup with range-map, segment-tree, priority-queue, ordered-multiset, fuzzy-set, and fuzzy-map
  • Strengthen ordered-set / ordered-map with richer ordered-collection operations and better Java/Clojure interface support
  • Add specialized constructors and comparator infrastructure for long, double, string, and custom comparator variants
  • Add EDN tagged literals / reader support for the collection types
  • Add Java serialization support and test coverage across supported collection types
    • Rework parallel set/map execution:
    • explicit-argument hot paths to avoid dynamic binding dependence in forked work
    • lower-overhead RecursiveTask tasking
    • per-operation threshold tuning
    • better benchmark methodology for parallel decisions
  • Improve fold support and measurement:
    • node-chunked-fold benchmarking at multiple cardinalities
    • nontrivial fold workload benchmarks
    • comparisons against sorted-set, data.avl, and hash-set
  • Greatly expand test coverage:
    • equality / hashing
    • cross-type equivalence / interop
    • coverage tests
    • cookbook and example tests
    • memory tests
    • range-map equivalence tests
    • segment-tree tests
    • priority-queue tests
  • Build out benchmark infrastructure:
    • full Criterium runner
    • simple bench runner
    • parallel-threshold bench
    • memory bench
    • range-map bench
  • Harden segment-tree:
    • restore generic ordered-key support
    • add broader ordered-collection/API parity
    • add stronger generic-key regression tests
  • Harden priority-queue:
    • clarify comparator-relative queue-order semantics
    • strengthen duplicate-priority ordering behavior/tests
    • replace lazy seq wrappers with direct seq adapters
    • re-enable real serialization coverage
  • Expand and refresh docs:
    • README overhaul
    • algorithms / performance / benchmarks / competitive analysis docs
    • cookbook and example docs
    • “when to use” and comparison docs
    • research/reference material under doc/papers
  • Remove generated doc/api artifacts from the repo and ignore them going forward
  • Update changelog and benchmark-sensitive docs to match current behavior

@danlentz danlentz added the enhancement New feature or request label Feb 12, 2026
@dco-lentz dco-lentz merged commit c3c9c82 into master Apr 8, 2026
2 checks passed
@dco-lentz dco-lentz deleted the 020-mutable-transient branch April 8, 2026 19:51
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancement New feature or request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants