btree-concurrent alternatives and similar packages
Based on the "Data Structures" category.
Alternatively, view btree-concurrent alternatives based on common mentions on social networks and blogs.
-
Agda
Agda is a dependently typed programming language / interactive theorem prover. -
vinyl
Extensible Records for Haskell. Pull requests welcome! Come visit us on #vinyl on freenode. -
repa-scalar
High performance, regular, shape polymorphic parallel arrays. -
repa-convert
High performance, regular, shape polymorphic parallel arrays. -
repa-eval
High performance, regular, shape polymorphic parallel arrays. -
repa-array
High performance, regular, shape polymorphic parallel arrays. -
psqueues
Priority Search Queues in three different flavors for Haskell -
parameterized-utils
A set of utilities for using indexed types including containers, equality, and comparison. -
ethereum-client-haskell
A Haskell version of an Ethereum client -
type-level-sets
Type-level sets for Haskell (with value-level counterparts and various operations) -
justified-containers
Standard containers, with keys that carry type-level proofs of their own presence. -
ixset-typed
More strongly typed variant of the ixset Haskell package -
bytestring-trie
An efficient finite map from (byte)strings to values. -
knit
Ties the knot on data structures that reference each other by unique keys -
nonempty-containers
Efficient non-empty variants of containers data types, with full API -
claferIG
Support for reasoning on Clafer models by instantiation and counter example generation. -
eliminators
Dependently typed elimination functions using singletons -
igraph
Incomplete Haskell bindings to the igraph library (which is written in C) -
selections
Haskell Package for operating with selections over an underlying functor -
map-syntax
Syntax sugar and explicit semantics for statically defined maps
Static code analysis for 29 languages.
Do you think we are missing an alternative of btree-concurrent or a related project?
README
btree-concurrent
A backend agnostic, concurrent BTree with relaxed balance[1] written in Haskell using a mix of IO operations and pure STM.
Although the code does work, it is neither production-ready nor complete.
Features include:
Caching: While nodes are periodically saved on persistent storage (e.g. disk) they are cached in-memory during operations.
Live flushing: It is possible to save the current version of the tree to disk and run modifying operations at the same time. The nodes are updated buttom-up to ensure a valid tree in the case of a crash.
Backend agnosticism: A simple API is used as an abstraction for the persistent storage.
Verification: The test-suite uses QuickCheck to compare the trees behaviour to that of Data.Map.
Deficients include:
Too much memory usage. Nodes are not stored in a compact fashion and are constantly being serialized/deserialized.
findMin and findMax are incomplete and may fail (see TODO for details).
The implementation does not parallelize well.
[1] B-trees with relaxed balance, K. S. Larsen & R. Fagerberg, Parallel Processing Symposium, 1995. Proceedings., 9th International