Releases: dfinity/stable-structures
v0.6.7
Overview
This release brings in significant performance improvements in various stable structures. There are also some small features included, like the addition of keys
and values
on StableBTreeMap
as well as fix for StableVec
.
What's Changed
- feat: implement
keys
andvalues
onStableBTreeMap
by @hpeebles in #241 - perf: Optimize how values are stored and handled by @frankdavid in #237
- test: Add two new benchmarks for benchmarking situations where not every value is read by @frankdavid in #243
- perf: Refactor the internal Value data structure and make some performance improvements by @frankdavid in #245
- perf: Add inline hint to Ic0StableMemory methods by @frankdavid in #247
- perf: Add new efficient APIs read_unsafe and read_to_vec by @frankdavid in #248
- fix: Fix Vec Iter::count() after next_back() by @frankdavid in #250
- chore: bump version to 0.6.7 by @dsarlis in #252
Full Changelog: v0.6.6...v0.6.7
v0.6.6
Overview
This release adds the ability to iterate backwards in a StableBTreeMap. Additionally includes some other small changes, like bumping some dependency versions and fixing a problem with posting the comment about benchmarks on PRs.
What's Changed
- chore(deps): bump dawidd6/action-download-artifact from 3.1.4 to 6 by @dependabot in #225
- chore: upgrade canbench from 0.1.1 to 0.1.7 by @ielashi in #232
- chore(deps): bump thollander/actions-comment-pull-request from 2 to 3 by @dependabot in #230
- feat: move initialization of
StableBTreeMap
cursors intoIter
by @hpeebles in #231 - fix: Fix arg names in post-comment action by @frankdavid in #238
- feat: implement
DoubleEndedIterator
forStableBTreeMap
by @hpeebles in #235 - chore: bump version to 0.6.6 by @dsarlis in #239
New Contributors
- @frankdavid made their first contribution in #238
Full Changelog: v0.6.5...v0.6.6
v0.6.5
v0.6.4
Overview
This new release addresses a minor memory issue in BTreeMap
and expands its support for tuples.
What's Changed
- feat: Implement Storable for three elements tuples by @dragoljub-duric in #202
- feat: Implement into_memory for memory manager by @bitdivine in #188
- fix: BTreeMap memory issue when deallocating nodes with overflows by @ielashi in #212
Full Changelog: v0.6.3...v0.6.4
v0.6.3
What's Changed
- docs: remove outdated precondition by @ielashi in #184
- feat: implement
storable
forbool
by @linnefromice in #186 - chore: Upgrade Rust version by @dragoljub-duric in #193
- perf: Add benchmarks for BtreeMap::Iterator::count() by @dragoljub-duric in #191
- feat: use canbench for benchmarks by @ielashi in #194
- perf: BTreeMap: make
range().count()
more efficient by @dragoljub-duric in #190 - chore: Reimplement BTreeMap::clear() to not consume self by @dragoljub-duric in #198
New Contributors
- @linnefromice made their first contribution in #186
Full Changelog: v0.6.2...v0.6.3
v0.6.2
v0.6.1
v0.6.0
Summary
This release includes a major upgrade to BTreeMap
to allow it to store unbounded types.
An example showcasing the new BTreeMap functionality can be found here.
What's Changed
- chore: update CHANGELOG.md by @ielashi in #102
- test:
Node::load
andNode::save
by @ielashi in #107 - chore: fix minor error in docs by @ielashi in #112
- test: improve test coverage of
BTreeMap::Node
by @ielashi in #113 - chore: merge
BoundedStorable
intoStorable
by @ielashi in #94 - feat: v2 of
BTreeMap::Node
to support unbounded types. by @ielashi in #114 - feat: BTreeMap V2 (beta) by @ielashi in #115
- feat: add basic profiling to benchmarks by @ielashi in #116
- perf: make BTreeMap V2 2-4x more officient by @ielashi in #118
- fix: memory leak in BTreeMap V2 by @ielashi in #119
- perf: set page size when keys and values are bounded by @ielashi in #120
- feat: introduce new benchmarking script by @ielashi in #121
- perf: do not store key size in BTreeMap if size is fixed. by @ielashi in #122
- perf: update BTreeMap v2 default page size from 500 bytes to 1024 bytes by @ielashi in #123
- feat: prepare beta release + add example for BTreeMap v2 by @ielashi in #124
- perf: reduce storage requirements for bounded btreemaps by ~25%. by @ielashi in #130
- feat(log): add an iterator over thread-local log by @roman-kashitsyn in #132
- perf: [BTreeMap V2] avoid allocating large buffer on save. by @ielashi in #131
- refactor: determine node version automatically on load by @ielashi in #133
- feat: add additional assertions to the
Storable
trait. by @ielashi in #136 - feat: make BTreeMap V2 the default and automatically migrate V1 maps. by @ielashi in #135
- feat: expose helper methods for extracting bounds by @ielashi in #138
- refactor: rewrite BTreeMap proptests using
test_strategy
. by @ielashi in #139 - chore: new beta release by @ielashi in #137
- feat: Improve Error Handling by Adding Display Implementations by @b3hr4d in #140
- feat: Enhance Bound Enum with Utility Methods and Refactor Storable Trait by @b3hr4d in #142
- chore: remove unused error struct by @ielashi in #141
- feat: impl Storable for Option<T: Storable> by @witter-deland in #127
- feat: comprehensive fuzzing for BTreeMap by @ielashi in #143
- chore: remove redundant utility methods by @ielashi in #144
- docs: add docs on how to upgrade the schema of stable structures by @ielashi in #146
- fix: support for migrating from bounded type to unbounded type. by @ielashi in #148
- test: add 'range' operation to btree comprehensive test by @ielashi in #149
- feat: impl pop_last() & pop_first() for BTreeMap by @witter-deland in #150
- chore: bump beta release version by @ielashi in #147
- chore: release 0.6.0 by @ielashi in #152
New Contributors
- @b3hr4d made their first contribution in #140
- @witter-deland made their first contribution in #127
Full Changelog: v0.5.6...v0.6.0
v0.6.0-beta.2
What's Changed
- feat: Improve Error Handling by Adding Display Implementations by @b3hr4d in #140
- feat: Enhance Bound Enum with Utility Methods and Refactor Storable Trait by @b3hr4d in #142
- chore: remove unused error struct by @ielashi in #141
- feat: impl Storable for Option<T: Storable> by @witter-deland in #127
- feat: comprehensive fuzzing for BTreeMap by @ielashi in #143
- chore: remove redundant utility methods by @ielashi in #144
- docs: add docs on how to upgrade the schema of stable structures by @ielashi in #146
- fix: support for migrating from bounded type to unbounded type. by @ielashi in #148
- test: add 'range' operation to btree comprehensive test by @ielashi in #149
- feat: impl pop_last() & pop_first() for BTreeMap by @witter-deland in #150
- chore: bump beta release version by @ielashi in #147
New Contributors
- @b3hr4d made their first contribution in #140
- @witter-deland made their first contribution in #127
Full Changelog: v0.6.0-beta.1...v0.6.0-beta.2
v0.6.0-beta.1
Summary
This beta release contains performance enhancements to BTreeMap V2. It also makes BTreeMap V2 the default implementation, automatically migrating V1 BTreeMaps to V2.
Change Log
- perf: reduce storage requirements for bounded btreemaps by ~25%. by @ielashi in #130
- feat(log): add an iterator over thread-local log by @roman-kashitsyn in #132
- perf: [BTreeMap V2] avoid allocating large buffer on save. by @ielashi in #131
- refactor: determine node version automatically on load by @ielashi in #133
- feat: add additional assertions to the
Storable
trait. by @ielashi in #136 - feat: make BTreeMap V2 the default and automatically migrate V1 maps. by @ielashi in #135
- feat: expose helper methods for extracting bounds by @ielashi in #138
- refactor: rewrite BTreeMap proptests using
test_strategy
. by @ielashi in #139 - chore: new beta release by @ielashi in #137
Full Changelog: v0.6.0-beta.0...v0.6.0-beta.1