Skip to content

v14.0.0

Compare
Choose a tag to compare
@Byron Byron released this 21 Nov 19:57
· 71 commits to main since this release
dfaf1be

A massive release that increases performance up to 10x for diffing repositories1 and correctness at the same time. This release
wouldn't have been possible without the herculean efforts of Pascal Kuthe and I am grateful
for his contribution. Thank you!

Other

  • try to rewrite delegate to be map based…
    …but besides completely failing the normalization test which I don't
    understand, it also doesn't manage to get the correct amount of
    versions.
  • try to chunk up baseline, but changes do not line up.
    When stepping through the changes in multiple steps, we end up with
    more crates then there are even though we identify them by
    checksum and consider deletions. Yanking doesn't remove them from
    the iteration either.

New Features

  • a max-performance feature to tune git-repository.
    The performance difference is rather drastic at about 2.5x, and
    definitely worth having if there is no compatibility issue
    due to shared C dependencies in the same binary.

    Additionally we setup the makefile to use big object caches
    to avoid having to decompress the same object too often, accelerating
    the diffing process about 4x, for a total of 10x performance boost.

Changed (BREAKING)

  • Change::Deleted variant now has versions field to include all deleted versions.
    That way it doesn't degenerate any information, previously the exact
    version information was lost.

    Not doing so helps to be able to reproduce the current state by
    aggregating all changes.

New Features (BREAKING)

  • Reduce heap-allocations CrateVersion type and sub-types.
    This improves performance slightly when dealing with a lot of versions,
    like when all versions are obtained from the beginning of time.

Commit Statistics

  • 21 commits contributed to the release over the course of 3 calendar days.
  • 3 days passed between releases.
  • 5 commits were understood as conventional.
  • 1 unique issue was worked on: #26

Thanks Clippy

Clippy helped 1 time to make code idiomatic.

Commit Details

view details
  • #26
    • refactor (b42ac1e)
    • revert previous to FAILed commits (3b52cfd)
    • try to rewrite delegate to be map based… (4d53b04)
    • try to chunk up baseline, but changes do not line up. (c0c01bb)
    • refactor (097209c)
    • Now the baseline result is the same. (02cdb2e)
    • make baseline work with CI (b9a1850)
    • a baseline test which shows that we cannot reproduce the status quo with changes just yet. (3fcf96b)
    • Change::Deleted variant now as versions to include all deleted versions. (b538ad6)
    • Reduce heap-allocations CrateVersion type and sub-types. (f9be536)
    • layout baseline for exhaustive test against the latest available index (7e9d3cd)
  • Uncategorized
    • prepare changelog prior to release (a93ba40)
    • Merge branch 'fix-diff' (ec9842a)
    • refactor (bd3bc22)
    • remove unnecessary unsafe code (1b5684f)
    • a max-performance feature to tune git-repository. (6f5b12a)
    • improve baseline tests to be more practical (bae80b0)
    • add baseline tests that steps trough each commit individually (a377ca4)
    • perform an unordered comparison instead of using a linear edit-sequence (8256cbb)
    • Merge branch 'complete-baseline' (61c6272)
    • thanks clippy (249d141)
  1. Needs to build with git-repository/max-performance and setup a pack cache, for example with GITOXIDE_PACK_CACHE_MEMORY=1g <you-application>