New Features
-
more efficient distribution of tasks to threads during pack resolution.
This clearly is a peak-performance optimization as it will now
efficiently distribut tree-root nodes to threads one at a time by
means of shared memory, which is accessed mutably yet safely.This change can also further reduce peak memory usage as it will not
keep buffers of more resolved deltas then necessary, as it only handles
one at a time per thread.
Bug Fixes
-
reduce memory usage for pack resolution by 18%…
…compared to where it started out before.This is the result of using u32 intead of usize where possible,
leveraging the object limit of u32 in packs.This change makes the biggest difference by not keeping the decompressed
memory of leaf nodes alive for longer than needed, at the cost of
some code duplication which could be extracted into a function if one
was inclined to deal with the boilerplate and lots of generics. -
Allow verification of empty packs and indices.
Empty packs are fine, even though the implementation should probably
assure to not write them, or remove them after having been written. -
increase pack-receive performance using a BufWriter
Previously the NamedTempFile would receive every little write request
for millions of objects, consuming considerable amounts of time.Now a buf writer alleviates this issue entirely.
-
bundle::write::Error
is now publicly available
Bug Fixes (BREAKING)
- Reading and writing empty packs is explicitly allowed.
This can happen when sending packs that don't actually contain changes,
but need to be sent to conform to the protocol.
Other (BREAKING)
-
index::write::Outcome::index_kind
->::index_version
. -
bundle::write::Options::index_kind
->::index_version
.
Commit Statistics
- 32 commits contributed to the release over the course of 20 calendar days.
- 20 days passed between releases.
- 8 commits were understood as conventional.
- 1 unique issue was worked on: #450
Thanks Clippy
Clippy helped 2 times to make code idiomatic.
Commit Details
view details
- #450
- prefix created pack files with
pack-
(e489b10) - increase pack-receive performance using a BufWriter (a745512)
index::write::Outcome::index_kind
->::index_version
. (b46347f)- add test to show that empty packs won't be written as expected behaviour. (72ce7fd)
bundle::write::Error
is now publicly available (0b6ed60)bundle::write::Options::index_kind
->::index_version
. (591afd5)
- prefix created pack files with
- Uncategorized
- prepare changelogs for release (d232567)
- Merge branch 'fix-smart-release' (aa80b60)
- make fmt (7b9c065)
- Merge branch 'main' into new-http-impl (702a161)
- Merge branch 'main' into clone (acb0738)
- Merge branch 'delta-tree-parallelization' (cca2ad5)
- Don't enforce Send bounds in serial version of
in_parallel_with_slice()
(dda661e) - thanks clippy (583f2ca)
- more efficient distribution of tasks to threads during pack resolution. (6836cb1)
- refactor (0e2ca47)
- Try to use counters directly in delta-tree resolution (c6ded26)
- reduce memory usage for pack resolution by 18%… (ec58bef)
- Merge branch 'reduce-pack-resolve-mem-consumption' (a8ced57)
- minor refactor after trying more memory foot-print related changes (5852334)
- simplify size-related tests (fb2b2a8)
- cut the size of bytes needed to store children in half for a lower footprint (38c96f2)
- Merge branch 'crates-index-diff-fixes' (b09bad7)
- thanks clippy (851bc79)
- Allow verification of empty packs and indices. (49d168a)
- refactor (38a7452)
- Reading and writing empty packs is explicitly allowed. (5a75afe)
- make fmt (53acf25)
- Merge branch 'fetch-pack' (f47c891)
- Merge branch 'fetch-pack' (3c49400)
- Merge branch 'fix-git-features' (82fd251)
- Merge branch 'diff' (25a7726)