Skip to content

Releases: dfinity/stable-structures

v0.6.0-beta.0

11 Sep 12:44
6d683ba
Compare
Choose a tag to compare
v0.6.0-beta.0 Pre-release
Pre-release

This is a beta release that features an early preview of BTreeMap V2, a btree that supports unbounded keys and values. An example showcasing the BTreeMap V2 functionality can be found here.

What's Changed

  • chore: update CHANGELOG.md by @ielashi in #102
  • test: Node::load and Node::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 into Storable 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

Full Changelog: v0.5.6...v0.6.0-beta.0

v0.5.6

06 Jul 12:17
aa716c0
Compare
Choose a tag to compare

What's Changed

Full Changelog: v0.5.5...v0.5.6

v0.5.5

06 Jul 05:59
bfa73a3
Compare
Choose a tag to compare

What's Changed

Full Changelog: v0.5.4...v0.5.5

v0.5.4

26 May 08:36
afa39e4
Compare
Choose a tag to compare

This release contains a number of performance improvements to BTreeMap, making it substantially more efficient.

  • perf: remove redundant node load from BTreeMap::remove by @ielashi in #78
  • perf: lazy loading of BTreeMap values by @ielashi in #79
  • perf: do not makes Bytes packed. by @ielashi in #80

Improvements have also been made to the README docs.

Full Changelog: v0.5.3...v0.5.4

Benchmark results showing the performance improvements between this version and the previous one:

btreemap_insert_blob_4_1024
                        time:   [902.82 M Instructions 902.82 M Instructions 902.82 M Instructions]
                        change: [-36.121% -36.121% -36.121%] (p = 0.00 < 0.05)
                        Performance has improved.

btreemap_insert_blob_8_1024
                        time:   [1040.8 M Instructions 1040.8 M Instructions 1040.8 M Instructions]
                        change: [-35.725% -35.725% -35.725%] (p = 0.00 < 0.05)
                        Performance has improved.

btreemap_insert_blob_16_1024
                        time:   [1136.5 M Instructions 1136.5 M Instructions 1136.5 M Instructions]
                        change: [-33.131% -33.131% -33.131%] (p = 0.00 < 0.05)
                        Performance has improved.

btreemap_insert_blob_32_1024
                        time:   [1180.3 M Instructions 1180.3 M Instructions 1180.3 M Instructions]
                        change: [-32.265% -32.265% -32.265%] (p = 0.00 < 0.05)
                        Performance has improved.

btreemap_insert_blob_64_1024
                        time:   [1420.0 M Instructions 1420.0 M Instructions 1420.0 M Instructions]
                        change: [-30.241% -30.241% -30.241%] (p = 0.00 < 0.05)
                        Performance has improved.

btreemap_insert_blob_128_1024
                        time:   [1679.8 M Instructions 1679.8 M Instructions 1679.8 M Instructions]
                        change: [-27.667% -27.667% -27.667%] (p = 0.00 < 0.05)
                        Performance has improved.

btreemap_insert_blob_256_1024
                        time:   [2196.8 M Instructions 2196.8 M Instructions 2196.8 M Instructions]
                        change: [-23.846% -23.846% -23.846%] (p = 0.00 < 0.05)
                        Performance has improved.

btreemap_insert_blob_512_1024
                        time:   [3257.9 M Instructions 3257.9 M Instructions 3257.9 M Instructions]
                        change: [-18.772% -18.772% -18.772%] (p = 0.00 < 0.05)
                        Performance has improved.

btreemap_insert_u64_u64 time:   [756.97 M Instructions 756.97 M Instructions 756.97 M Instructions]
                        change: [-19.881% -19.881% -19.881%] (p = 0.00 < 0.05)
                        Performance has improved.

btreemap_insert_u64_blob_8
                        time:   [729.82 M Instructions 729.82 M Instructions 729.82 M Instructions]
                        change: [-16.986% -16.986% -16.986%] (p = 0.00 < 0.05)
                        Performance has improved.

btreemap_insert_blob_8_u64
                        time:   [642.09 M Instructions 642.09 M Instructions 642.09 M Instructions]
                        change: [-26.375% -26.375% -26.375%] (p = 0.00 < 0.05)
                        Performance has improved.

btreemap_get_blob_4_1024
                        time:   [396.58 M Instructions 396.58 M Instructions 396.58 M Instructions]
                        change: [-69.977% -69.977% -69.977%] (p = 0.00 < 0.05)
                        Performance has improved.

btreemap_get_blob_8_1024
                        time:   [462.52 M Instructions 462.52 M Instructions 462.52 M Instructions]
                        change: [-64.833% -64.833% -64.833%] (p = 0.00 < 0.05)
                        Performance has improved.

btreemap_get_blob_16_1024
                        time:   [545.06 M Instructions 545.06 M Instructions 545.06 M Instructions]
                        change: [-60.784% -60.784% -60.784%] (p = 0.00 < 0.05)
                        Performance has improved.

btreemap_get_blob_32_1024
                        time:   [575.75 M Instructions 575.75 M Instructions 575.75 M Instructions]
                        change: [-60.758% -60.758% -60.758%] (p = 0.00 < 0.05)
                        Performance has improved.

btreemap_get_blob_64_1024
                        time:   [799.59 M Instructions 799.59 M Instructions 799.59 M Instructions]
                        change: [-53.474% -53.474% -53.474%] (p = 0.00 < 0.05)
                        Performance has improved.

btreemap_get_blob_128_1024
                        time:   [1021.2 M Instructions 1021.2 M Instructions 1021.2 M Instructions]
                        change: [-47.658% -47.658% -47.658%] (p = 0.00 < 0.05)
                        Performance has improved.

btreemap_get_u64_u64    time:   [393.51 M Instructions 393.51 M Instructions 393.51 M Instructions]
                        change: [-48.484% -48.484% -48.484%] (p = 0.00 < 0.05)
                        Performance has improved.

btreemap_get_u64_blob_8 time:   [389.66 M Instructions 389.66 M Instructions 389.66 M Instructions]
                        change: [-44.346% -44.346% -44.346%] (p = 0.00 < 0.05)
                        Performance has improved.

btreemap_get_blob_8_u64 time:   [407.98 M Instructions 407.98 M Instructions 407.98 M Instructions]
                        change: [-45.976% -45.976% -45.976%] (p = 0.00 < 0.05)
                        Performance has improved.

btreemap_get_blob_256_1024
                        time:   [1511.0 M Instructions 1511.0 M Instructions 1511.0 M Instructions]
                        change: [-38.501% -38.501% -38.501%] (p = 0.00 < 0.05)
                        Performance has improved.

btreemap_get_blob_512_1024
                        time:   [2476.6 M Instructions 2476.6 M Instructions 2476.6 M Instructions]
                        change: [-27.960% -27.960% -27.960%] (p = 0.00 < 0.05)
                        Performance has improved.

btreemap_remove_blob_4_1024
                        time:   [984.03 M Instructions 984.03 M Instructions 984.03 M Instructions]
                        change: [-57.642% -57.642% -57.642%] (p = 0.00 < 0.05)
                        Performance has improved.

btreemap_remove_blob_8_1024
                        time:   [1261.0 M Instructions 1261.0 M Instructions 1261.0 M Instructions]
                        change: [-52.544% -52.544% -52.544%] (p = 0.00 < 0.05)
                        Performance has improved.

btreemap_remove_blob_16_1024
                        time:   [1504.9 M Instructions 1504.9 M Instructions 1504.9 M Instructions]
                        change: [-49.345% -49.345% -49.345%] (p = 0.00 < 0.05)
                        Performance has improved.

btreemap_remove_blob_32_1024
                        time:   [1579.8 M Instructions 1579.8 M Instructions 1579.8 M Instructions]
                        change: [-48.328% -48.328% -48.328%] (p = 0.00 < 0.05)
                        Performance has improved.

btreemap_remove_blob_64_1024
                        time:   [1874.1 M Instructions 1874.1 M Instructions 1874.1 M Instructions]
                        change: [-46.512% -46.512% -46.512%] (p = 0.00 < 0.05)
                        Performance has improved.

btreemap_remove_blob_128_1024
                        time:   [2196.8 M Instructions 2196.8 M Instructions 2196.8 M Instructions]
                        change: [-45.162% -45.162% -45.162%] (p = 0.00 < 0.05)
                        Performance has improved.

btreemap_remove_blob_256_1024
                        time:   [2806.5 M Instructions 2806.5 M Instructions 2806.5 M Instructions]
                        change: [-44.361% -44.361% -44.361%] (p = 0.00 < 0.05)
                        Performance has improved.

btreemap_remove_u64_u64 time:   [1087.0 M Instructions 1087.0 M Instructions 1087.0 M Instructions]
                        change: [-36.420% -36.420% -36.420%] (p = 0.00 < 0.05)
                        Performance has improved.

btreemap_remove_u64_blob_8
                        time:   [1045.4 M Instructions 1045.4 M Instructions 1045.4 M Instructions]
                        change: [-34.480% -34.480% -34.480%] (p = 0.00 < 0.05)
                        Performance has improved.

btreemap_remove_blob_8_u64
                        time:   [858.01 M Instructions 858.01 M Instructions 858.01 M Instructions]
                        change: [-45.248% -45.248% -45.248%] (p = 0.00 < 0.05)
                        Performance has improved.

v0.5.3

25 Apr 11:40
d471873
Compare
Choose a tag to compare

Changed

Full Changelog: v0.5.2...v0.5.3

v0.5.2

13 Mar 10:58
eb83958
Compare
Choose a tag to compare

Added

  • Storable implementation for floats.
  • iter_upper_bound API for BTreeMap.

v0.5.1

10 Feb 13:20
a2da933
Compare
Choose a tag to compare

Fixed

  • Fixed a bug when serializing tuples of u16

v0.5.0

27 Jan 14:03
e77c409
Compare
Choose a tag to compare

Changed

  • Indices and lengths in Vec and Log have been changed from usize to u64. On the Wasm32 architecture, usize is 32 bit, making it impossible for Log/Vec in previous releases to report correct sizes on data sets larger than 4 billion elements.

v0.4.1

23 Jan 07:19
Compare
Choose a tag to compare

Fixed

Removed unnecessary assertion in MemoryManager that failed when upgrading from previous versions.

v0.4.0

19 Jan 14:40
49df819
Compare
Choose a tag to compare

Optimized

  • Eliminated unnecessary buffer clones when loading a BTreeMap node, resulting in a performance improvement of ~30% in inserts and removals.

Added

  • An implementation of a stable Vec.
  • More BoundedStorable types, notably Blob.
  • A sound implementation of BTreeMap::range
  • Iterators for StableVec and StableLog.

Changed

  • The default bucket size in MemoryManager from 64MiB to 8MiB.
  • The argument order in BTreeMap::init and BTreeMap::new.
  • Syntax changes to BoundedStorable, in addition to specifying whether or not a type is fixed or variable in length.
  • BTreeMap::insert no longer returns a Result.
  • StableLog has a type parameter now.

Removed

  • BTreeMap::init_with_sizes in favor of using the BoundedStorable trait.