Releases: laforge49/aatree
Db-chan, Null-db-cache and LRU-db-cache
Ultralight Components
Calf and Version are now implemented using component bags with a minimal close function stack.
The API has been reworked and the implementation no longer depends on dynamic variables.
Transcription makes using aatree easy
With so many different implementations of sorted-map, sorted-set and vector, things could get messy. But the function (aatree.core.transcribe val opts) can be used to convert trees using one implementation to trees that use a different implementation. Even nicer, transcription is invoked transparently when adding structures to an aa structure with a different implementation.
Another potential complication occurs when moving data between aatree databases, as virtual aa structures are tied to the database that contains them. But this is handled transparently through transcription when an aa database is updated with data from a different database.
bug fixes
Memory Constrained for Queries
Queries can endlessly deserialize a large database, potentially causing an out-of-memory exception. To prevent this and maintain a minimal memory footprint, weak references are used except during an update.
Virtual DataStructures
Virtual Data Structures now work with the Yearling Database. Data structures can now be larger than memory. And when accessing a data structure, only the parts of interest are loaded. All data structures remain fully compatible with the standard Clojure data structures.
Yearling, a small COW database with disk management.
Yearling is an extension of the Calf database, but with the addition of a disk management facility. Think of it as being b-tree ready.
Calf, A Small C.O.W. Database
Lazy map is used to create a database.
Durable Applications, Further Decoupling
Includes sample application code for file save/load. But the main thrust of this release is a new API for decoupling application code from the implementation of its data structures. (The old API has been deprecated.)