All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog.
- rewrite (copy): instead of serializing and then deserializing, traverse the input map
and create return value as we go.
- serialization optimizations
- ~serialize: rewrite to improve performance
- ~merge: cleanup
- Improve performance of serialization functions by duduplicating the set of references of the input structure.
- Reduce size of structures where there is no internal structure sharing: avoid copying entire structure into
dag_unify.serialization/serialized.
- (defn serialization/merge-skeleton): used during serialization to reduce size of serialized representation
and number of atoms in unserialized representation.
- unify! now includes merge-with-keys's loop within it.
- simple-unify
- fail?
- failr?
- fail-path-between
- isomorphic?
- merge
- merge-with-keys (contents folded into unify!)
- vec-contains?: contains? implementation that only works on vectors. Intention is
that if v is small, it's less expensive just to search it than create a set and then
(presumably) binary-search the tree behind that set.
- unify! throws an exception if the references of val2 contain val1, or
the references of val1 contain val2.
- unify! calls vec-contains? rather than (contains?): the latter requires constructing
a set and does an efficient search on it. vec-contains? takes a vector and does an
inefficient (linear) search on it, but seems to be faster in practice if the input vector
is small.