Skip to content

v2.1.0

Compare
Choose a tag to compare
@Byron Byron released this 02 Aug 08:58
· 47 commits to master since this release
a9b6065

New Features

  • add GitIndex::try_new*() and GitIndex::try_with_path() to open without cloning.
    These methods are naturally read-only and thus have no issues in concurrent contexts, while
    not providing an option to not auto-clone a whole index.
  • Add Names iterator as building block for fuzzy-lookups.
    It creates all allowed permutations regarding - and _ in the crate name,
    so it should be possible to find a crate even if the name doesn't have the correct
    hyphens or underscores set.

Bug Fixes

  • GitIndex::new_*() will not discover the git repository anymore.
    Previously, discovery was used which may traverse the directory structure
    upwards to find the index. This may be error prone as the index location is
    supposed to be well-known.

    Now the index path provided must either be .../index or .../index.git to be
    opened successfully.

  • remove the usage of file locks in preference for documentation when opening a git index.
    Previously, to allow concurrently opening and possibly updating a crates-index, a file-lock was
    used for synchronization. However, it was rather specific to what the test-suite needed while
    adding another failure mode for production code which could leave lock-files behind that then
    lock the crates-index forever for this library at least.

    Instead, appropriate locking will be used in tests only, while the documentation of all
    open methods of GitIndex was adjusted to inform about ways to protect concurrent accesses
    on application level.

  • always use / for sparse URLs
    Previously on windows, backslashes could have snuck in which may cause problems.

Other

  • add new example to print information using the sparse index: list_recent_versions.
    Run it with cargo run --example list_recent_versions -- foo bar baz gix rustc gcc foobar blaz.

Commit Statistics

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

Commit Details

view details
  • #62
    • Improve docs to better clarify the locking behaviour and implications (4919cb2)
  • Uncategorized
    • Merge branch 'locking' (d8fc1c1)
    • Add GitIndex::try_new*() and GitIndex::try_with_path() to open without cloning. (639b081)
    • GitIndex::new_*() will not discover the git repository anymore. (28ab782)
    • Remove the usage of file locks in preference for documentation when opening a git index. (c67033d)
    • Minor refactor to make names in example more descriptive (6f8aa18)
    • Add new example to print information using the sparse index: list_recent_versions. (421de35)
    • Slighlty more informative printing in new example and improve usability (dc6537a)
    • Refactor (fdf663e)
    • Rename new example to fit what it does even better (5f73acd)
    • Add example to Cargo.toml (6125624)
    • Add a small example to show the full sparse workflow (2ef9dac)
    • Example "update_and_get_latest" requires git-https (f755b0f)
    • Merge branch 'names-optimizations' (7b8683e)
    • Improve docs for Names (6ab652e)
    • Minor refactor (a20138d)
    • First return all-hyphens & all_underscores (6b66356)
    • Update test to capture edge case (b63ec37)
    • Use max_count for count() (254d21e)
    • Fix typo in Names doc (c8aa392)
    • Improve documentation of Names iterator (5272d41)
    • Add Names iterator as building block for fuzzy-lookups. (abe5d70)
    • Return the input name first (797081e)
    • Double the performance/throughput by absusing our knowledge about UTF-8 (61ddff0)
    • Prefer hyphens over underscores as these are more common (1f542a5)
    • Avoid allocation of vector for separator indices (a7801b0)
    • Allow the Names iterator to fail creation if too many permutations are possible (9b88659)
    • Refactor tests (95308c8)
    • Refactor structure (bc16839)
    • Add PoC of NamePermutationIterator (1429c4e)
    • Only test on stable Rust as this covers most use-cases (a0bba1c)
    • Change links from lib.rs to crates.io (5f1f245)
    • Always use / for sparse URLs (3bb46ab)
    • Add a cache as well to speed up builds, hopefully, particularly on windows (e322e13)
    • See if CI can handle windows tests as well (2b6e070)
    • Always use / as a separator for sparse urls (1d8a895)