190 lines
5.7 KiB
Plaintext
190 lines
5.7 KiB
Plaintext
2.1.2
|
|
|
|
* fix unsoundness pooling tree nodes, now reenabled
|
|
|
|
2.1.1
|
|
|
|
* stop pooling tree nodes, because of notch analysis they can never meet the
|
|
safety requirements of IsoPoolable.
|
|
|
|
2.1.0
|
|
|
|
* add an optional feature "pool". If enabled memory allocation is greatly
|
|
reduced by reusing tree components instead of freeing them. The performance
|
|
improvement depends on key type and tree size but can be as high as %30 for
|
|
plain insert/remove on very large maps. Memory fragmentation will also be
|
|
greatly reduced, but this is much harder to measure.
|
|
|
|
* pool is not compatible with no_std
|
|
|
|
* fix a number of test bugs (actual bugs in the TEST code, not the tree) that
|
|
cropped up when running model checking for multiple days continuously
|
|
|
|
2.0.6
|
|
|
|
* merge #10, no_std support (alloc required)
|
|
|
|
2.0.5
|
|
|
|
* merge #8 hand coded packing of height/size to remove the dependency
|
|
on packed struct
|
|
|
|
* fix a few bugs in the model checking COW tests
|
|
|
|
2.0.4
|
|
|
|
* remove redundant type parameter from iter_mut_cow
|
|
|
|
2.0.3
|
|
|
|
* implement iter_mut_cow, range_mut_cow, for copy on write iterators
|
|
|
|
2.0.2
|
|
|
|
* implement get_or_insert_cow and get_or_default_cow
|
|
|
|
2.0.1
|
|
|
|
* implement get_mut_cow to improve the ergonomics of using nested
|
|
maps with COW operations
|
|
|
|
2.0.0
|
|
|
|
* fix the range api to match the standard library. Sorry about the
|
|
previous two releases, it's actually quite a subtle api and I
|
|
consistently got it wrong. I also got semantic versioning wrong, and
|
|
I'm really sorry about that, I hope nothing broke annoyingly for
|
|
anyone (aside from for me :))
|
|
|
|
1.1.1
|
|
* fix ?Sized on range
|
|
|
|
1.1.0
|
|
* fix the arguments to range to have the correct borrow type
|
|
|
|
1.0.5
|
|
* add remove_many, a small wrapper around update_many
|
|
* fix a bug in update_many where trying to remove elements that don't
|
|
exist in the map could cause a panic. Add a test for this case.
|
|
|
|
1.0.4
|
|
* add optional rayon support for map and set
|
|
|
|
1.0.3
|
|
* add optional serde support for map and set
|
|
|
|
1.0.2
|
|
* stop depending on serde by default
|
|
|
|
1.0.1
|
|
* replace vec chunks with arrayvec chunks to eliminate an indirection
|
|
* implement tree compaction to keep inner chunks from getting too sparse
|
|
|
|
1.0.0 "the cake is not a lie"
|
|
* Add copy on write mutable operations. They are 10x faster than plain
|
|
insert/remove, and bring update performance within an 2-3x of
|
|
BTreeMap (with ArcStr keys).
|
|
|
|
* Chunk size is now configurable with a const generic parameter. Three
|
|
different sizes are exposed as default type aliases.
|
|
|
|
* bump dependencies, update readme, and refresh the benchmarks
|
|
|
|
* feels like 1.0 to me!
|
|
|
|
0.5.9
|
|
* add weak references to maps and sets as well as methods to get the
|
|
strong and weak count of map/set references.
|
|
|
|
0.5.8
|
|
* further 20% performance improvement on batch update operations.
|
|
|
|
0.5.7
|
|
* improve performance of batch update operations on unsorted data by a
|
|
large amount (7x on trees of size 10million and chunks of size 100k).
|
|
0.5.6
|
|
|
|
* packed the height and length together, which reduced the size of
|
|
nodes by 1 word. That reduction gets us a 1-2% improvement in
|
|
lookup times (more benefit for larger trees). Tree length is now
|
|
limited to 2^56 elements instead of usize::MAX elements.
|
|
|
|
* made the tests run faster by wrapping strings in Arcs, which is
|
|
closer to how you'd use them in a real program anyway.
|
|
|
|
0.5.5
|
|
* small performance optimizations update operations
|
|
|
|
0.5.4
|
|
* Edition 2018
|
|
|
|
0.5.3
|
|
* implement Set::diff, and Map::diff, O(log(N) + M) where M is the
|
|
number of intersecting chunks. Now all the fundamental set
|
|
operations are implemented.
|
|
* rename Map::merge to Map::union. Sorry for the tiny break in
|
|
semantic versioning, but given it was just released I don't
|
|
think it's a huge problem to change it now.
|
|
|
|
0.5.2
|
|
* implement Set::intersect, and Map::intersect, O(log(N) + M)
|
|
where M is the number of intersecting chunks.
|
|
|
|
0.5.1
|
|
* implement Set::union, and Map::merge, O(log(N) + M) where M is the
|
|
number of intersecting chunks and N is the size of the largest
|
|
tree. Should always be as fast as update_many from the other map's
|
|
iterator, a lot faster in the case of a small intersection.
|
|
* remove my silly &mut F requirement for closure arguments to
|
|
functions in the public interface. Sorry I'm still learning rust, I
|
|
didn't know FnMut was also implemented by a &mut.
|
|
|
|
0.5.0
|
|
* implement map get_key, get_full
|
|
* implement set update_many
|
|
* fix some incorrect documentation
|
|
* BREAKING change map and set update functions so they are able to
|
|
work with borrowed forms of the key
|
|
|
|
0.4.1
|
|
* implement get in the set module
|
|
* properly implement Ord, PartialOrd, Eq, PartialEq, Hash, and Debug
|
|
|
|
0.4.0
|
|
* add a set module
|
|
* remove the rc and arc modules. There is no observable performance
|
|
difference between rc and arc, so just use arc everywhere. This is
|
|
especially relevant because all the practical applications of this
|
|
library than I know about require using Arc.
|
|
* BREAKING: fix return type of insert and remove to match BTreeMap
|
|
|
|
0.3.2
|
|
* fix a small performance regression in update_many caused by my last
|
|
change
|
|
|
|
0.3.1
|
|
* fix a bug in update_many that could rarely cause a removed item not
|
|
to be removed
|
|
|
|
0.3.0(yanked)
|
|
* BREAKING: change the name of insert_sorted to insert_many
|
|
* add update, and update_many
|
|
* insert 14% performance improvement
|
|
* insert_many 42% performance improvement on unsorted data, now faster
|
|
than insert on random data
|
|
|
|
0.2.1
|
|
* BREAKING: change signature of insert to match BTreeMap as closely as
|
|
possible. Sorry I was new to rust when I first wrote this module :-(
|
|
|
|
0.2.0
|
|
* iteration runs in constant space
|
|
* Implement collection range api
|
|
* Implement DoubleEndedIterator
|
|
* insert_sorted performance improved on degenerate cases
|
|
* BREAKING: insert_sorted now takes IntoIterator instead of an explicit slice
|
|
* BREAKING: change the name of length to len, like BTreeMap
|
|
|
|
0.1.2
|
|
* Initial public release
|