# Changelog All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). ## [Unreleased] - ReleaseDate ## [0.16.0] - 2024-11-28 ### Changed - [PR#75](https://github.com/EmbarkStudios/tame-index/pull/75) updated `gix` -> 0.68. ## [0.15.0] - 2024-11-11 ### Changed - [PR#74](https://github.com/EmbarkStudios/tame-index/pull/74) updated `gix` -> 0.67. ### Fixed - [PR#74](https://github.com/EmbarkStudios/tame-index/pull/74) fixed a bug where the list of reserved crate names was not sorted correctly for binary searching. ## [0.14.0] - 2024-09-20 ### Changed - [PR#73](https://github.com/EmbarkStudios/tame-index/pull/73) updated `gix` -> 0.66. ## [0.13.2] - 2024-08-20 ### Fixed - [PR#71](https://github.com/EmbarkStudios/tame-index/pull/71) resolved [#70](https://github.com/EmbarkStudios/tame-index/issues/70) by using the correct feature flag for docs.rs. ### Changed - [PR#72](https://github.com/EmbarkStudios/tame-index/pull/72) updated crates. ## [0.13.1] - 2024-08-01 ### Fixed - [PR#69](https://github.com/EmbarkStudios/tame-index/pull/69) resolved an issue where 32-bit targets would have a different ident hash from what cargo would have due to cargo being target dependent in the hash calculation. ## [0.13.0] - 2024-07-25 ### Changed - [PR#67](https://github.com/EmbarkStudios/tame-index/pull/67) updated `gix` -> 0.64. ## [0.12.2] - 2024-07-22 ### Added - [PR#66](https://github.com/EmbarkStudios/tame-index/pull/66) added the `gix-curl` feature, which is mutually exclusive with the `git` and `gix-reqwest` features. ## [0.12.1] - 2024-06-26 ### Changed - [PR#65](https://github.com/EmbarkStudios/tame-index/pull/65) updated `toml-span` -> 0.3.0. ## [0.12.0] - 2024-05-24 ### Changed - [PR#64](https://github.com/EmbarkStudios/tame-index/pull/64) updated `gix` -> 0.63. ## [0.11.1] - 2024-05-03 - [PR#61](https://github.com/EmbarkStudios/tame-index/pull/61) addressed [#60](https://github.com/EmbarkStudios/tame-index/issues/60) by adding `IndexUrl::for_registry_name` to read a registry's index url from the config/environment. ## [0.11.0] - 2024-04-23 ### Changed - [PR#59](https://github.com/EmbarkStudios/tame-index/pull/59) updated `gix` -> 0.62, `reqwest` -> 0.12, `http` -> 1.1. ## [0.10.0] - 2024-03-21 ### Changed - [PR#54](https://github.com/EmbarkStudios/tame-index/pull/54) updated `gix` -> 0.61. - [PR#53](https://github.com/EmbarkStudios/tame-index/pull/53) updated `gix` -> 0.60. ## [0.9.9] - 2024-03-21 ### Changed - [PR#54](https://github.com/EmbarkStudios/tame-index/pull/54) updated `gix` -> 0.61. ## [0.9.8] - 2024-03-17 ### Changed - [PR#53](https://github.com/EmbarkStudios/tame-index/pull/53) updated `gix` -> 0.60. ## [0.9.7] - 2024-03-12 ### Added - [PR#52](https://github.com/EmbarkStudios/tame-index/pull/52) added `ComboIndexCache::cache_path` to retrieve the path of a particular crate's index entry. ## [0.9.6] - 2024-03-12 ### Changed - [PR#51](https://github.com/EmbarkStudios/tame-index/pull/51) updated dependencies. ## [0.9.5] - 2024-02-22 ### Changed - [PR#49](https://github.com/EmbarkStudios/tame-index/pull/49) updated `toml-span` -> 0.2 ## [0.9.4] - 2024-02-20 ### Changed - [PR#48](https://github.com/EmbarkStudios/tame-index/pull/48) replaced `toml` with `toml-span` removing several dependencies. ## [0.9.3] - 2024-02-07 ### Fixed - [PR#47](https://github.com/EmbarkStudios/tame-index/pull/47) fixed [#46](https://github.com/EmbarkStudios/tame-index/issues/46) by ensuring one full DNS lookup and request response roundtrip is made before going wide to ensure that excessive DNS lookups and connections are not made. ## [0.9.2] - 2024-01-21 ### Changed - [PR#45](https://github.com/EmbarkStudios/tame-index/pull/45) bumped `gix` -> 0.58 ## [0.9.1] - 2024-01-12 ### Changed - [PR#44](https://github.com/EmbarkStudios/tame-index/pull/44) bumped `gix` -> 0.57 ## [0.9.0] - 2023-12-13 ### Fixed - [PR#43](https://github.com/EmbarkStudios/tame-index/pull/43) fixed the file lock options from `LockOptions::cargo_package_lock` to be `exclusive` to more closely match Cargo's behavior. This would not have been a problem in practice, but is more correct now. ### Changed - [PR#43](https://github.com/EmbarkStudios/tame-index/pull/43) bumped `gix` -> 0.56 ## [0.8.0] - 2023-11-06 ### Fixed - [PR#41](https://github.com/EmbarkStudios/tame-index/pull/41) resolved [#29](https://github.com/EmbarkStudios/tame-index/issues/29) by force disabling gpg signing in test. - Commit e3c6ff1 bumped the patch version of `windows-targets` to .5 to prevent using older versions that don't compile (See [#40](https://github.com/EmbarkStudios/tame-index/issues/40)) ### Changed - [PR#41](https://github.com/EmbarkStudios/tame-index/pull/41) bumped `gix` -> 0.55 ## [0.7.2] - 2023-10-18 ### Fixed - [PR#39](https://github.com/EmbarkStudios/tame-index/pull/39) resolved [#38](https://github.com/EmbarkStudios/tame-index/issues/38) by ensuring all parent directories are created before attempting a clone with `gix`. ## [0.7.1] - 2023-09-29 ### Fixed - [PR#34](https://github.com/EmbarkStudios/tame-index/pull/33) resolved a compile issue when targeting `musl` libc. ## [0.7.0] - 2023-09-29 ### Changed - [PR#32](https://github.com/EmbarkStudios/tame-index/pull/32) resolved [#31](https://github.com/EmbarkStudios/tame-index/issues/31) by reducing the size of `Error`. - [PR#33](https://github.com/EmbarkStudios/tame-index/pull/33) updated dependencies, notably `gix` -> 0.54. - [PR#33](https://github.com/EmbarkStudios/tame-index/pull/33) added a `tame_index::utils::flock::FileLock` parameter to all methods on indices that perform disk operations. ### Added - [PR#33](https://github.com/EmbarkStudios/tame-index/pull/33) added `tame_index::utils::flock`, which contains a `FileLock` for holding an OS file lock for a particular path, as well as `LockOptions` for creating them. ### Fixed - [PR#33](https://github.com/EmbarkStudios/tame-index/pull/33) resolved [#30](https://github.com/EmbarkStudios/tame-index/issues/30) by removing the usage of `gix::lock` in favor of the aforementioned `FileLock` - [PR#33](https://github.com/EmbarkStudios/tame-index/pull/33) resolved [#17](https://github.com/EmbarkStudios/tame-index/issues/17) by adding `LockOptions::cargo_package_lock` to easily create a lock file compatible with cargo's own ($CARGO_HOME global) package lock. ## [0.6.0] - 2023-09-11 ### Changed - [PR#27](https://github.com/EmbarkStudios/tame-index/pull/27) updated `gix` to 0.53.1. Thanks [@Byron](https://github.com/Byron)! ## [0.5.6] - 2023-09-11 **yanked** ### Changed - [PR#27](https://github.com/EmbarkStudios/tame-index/pull/27) updated `gix` to 0.53.1. Thanks [@Byron](https://github.com/Byron)! ## [0.5.5] - 2023-09-06 ### Changed - [PR#26](https://github.com/EmbarkStudios/tame-index/pull/26) changed sparse index request creation to not use HTTP/2 for the version to support corporate potato proxies. This results in a slight but noticeable degradation in throughput when making many requests to a sparse index. ## [0.5.4] - 2023-08-24 ### Fixed - [PR#24](https://github.com/EmbarkStudios/tame-index/pull/24) resolved [#23](https://github.com/EmbarkStudios/tame-index/issues/23) by fixing a bug where index cache paths were not lower cased as cargo does. ## [0.5.3] - 2023-08-23 ### Fixed - [PR#22](https://github.com/EmbarkStudios/tame-index/pull/22) fixed an issue where ssh index urls would be mapped to the incorrect local directory. This issue was raised in [cargo-deny](https://github.com/EmbarkStudios/cargo-deny/issues/548). ## [0.5.2] - 2023-08-23 ### Fixed - [`d9cb55f`] fixed and issue with docs.rs documentation building. ## [0.5.1] - 2023-08-23 ### Added - [PR#20](https://github.com/EmbarkStudios/tame-index/pull/20) publicly exposed `tame_index::external::http` for easier downstream usage. ## [0.5.0] - 2023-08-23 ### Fixed - [PR#18](https://github.com/EmbarkStudios/tame-index/pull/18) resolved [#16](https://github.com/EmbarkStudios/tame-index/issues/16) by marking `ComboIndexCache` and `ComboIndex` as `#[non_exhaustive]`. This avoids build breaks if the `local` feature is enabled in one transitive dependency and not in another, as much as I hate `non_exhaustive`. ### Changed - [PR#18](https://github.com/EmbarkStudios/tame-index/pull/18) changed `SparseIndex::make_remote_request` to take an optional [ETag](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/ETag), completely avoiding disk I/O, which allows `SparseIndex` to be used for making and parsing requests without worrying about cargo's global package lock. ## [0.4.1] - 2023-08-21 ### Added - [PR#15](https://github.com/EmbarkStudios/tame-index/pull/15) added the `native-certs` feature to be able to use the OS certificate store instead of `webpki-roots`. Thanks [@Shnatsel](https://github.com/Shnatsel)! ## [0.4.0] - 2023-08-18 ### Changed - [PR#14](https://github.com/EmbarkStudios/tame-index/pull/14) added the ability to specify the repository lock policy when calling `RemoteGitIndex::with_options`. Thanks [@Shnatsel](https://github.com/Shnatsel)! ## [0.3.2] - 2023-08-15 ### Fixed - [PR#13](https://github.com/EmbarkStudios/tame-index/pull/13) fixed a bug where git repository url canonicalization was incorrect if the url was not a github.com url that ended with .git. ## [0.3.1] - 2023-08-04 ### Added - [PR#11](https://github.com/EmbarkStudios/tame-index/pull/11) added `RemoteSparseIndex::krates`, `AsyncRemoteSparseIndex::krates`, and `AsyncRemoteSparseIndex::krates_blocking` as helper methods for improving throughput when fetching index entries for many crates. ## [0.3.0] - 2023-08-03 ### Changed - [PR#10](https://github.com/EmbarkStudios/tame-index/pull/10) unfortunately had to [relax the constraint](https://github.com/rustsec/rustsec/issues/759) that crate versions in an index are always parsable as `semver::Version`. ## [0.2.5] - 2023-08-02 ### Fixed - [PR#9](https://github.com/EmbarkStudios/tame-index/pull/9) resolved [#8](https://github.com/EmbarkStudios/tame-index/issues/8) by ensuring (valid) non-official cargo build version output can also be parsed. ## [0.2.4] - 2023-07-28 ### Fixed - [PR#7](https://github.com/EmbarkStudios/tame-index/pull/7) fixed an issue where `RemoteGitIndex::fetch` could fail in environments where the git committer was not configured. ### Changed - [PR#7](https://github.com/EmbarkStudios/tame-index/pull/7) change how `RemoteGitIndex` looks up blobs. Previously fetching would actually update references, now however we write a `FETCH_HEAD` similarly to git/libgit2, and uses that (or other) reference to find the commit to use, rather than updating the HEAD to point to the same commit as the remote HEAD. ## [0.2.3] - 2023-07-26 ### Fixed - [PR#6](https://github.com/EmbarkStudios/tame-index/pull/6) fixed two bugs with git registries. 1. `cargo` does not set remotes for git registry indices, the previous code assumed there was a remote, thus failed to fetch updates 2. Updating reflogs after a fetch would fail in CI-like environments without a global git config that set the committer, `committer.name` is now set to `tame-index` ## [0.2.2] - 2023-07-26 ### Changed - [PR#5](https://github.com/EmbarkStudios/tame-index/pull/5) relaxed `rust-version` to 1.67.0. ## [0.2.1] - 2023-07-26 ### Added - [PR#4](https://github.com/EmbarkStudios/tame-index/pull/4) added `GitError::is_spurious` and `GitError::is_locked` to detect fetch errors that could potentially succeed in the future if retried. ### Changed - [PR#4](https://github.com/EmbarkStudios/tame-index/pull/4) now re-exports `reqwest` and `gix` from `tame_index::externals` for easier downstream usage. ## [0.2.0] - 2023-07-25 ### Added - [PR#3](https://github.com/EmbarkStudios/tame-index/pull/3) added support for [`Local Registry`](https://doc.rust-lang.org/cargo/reference/source-replacement.html#local-registry-sources) - [PR#3](https://github.com/EmbarkStudios/tame-index/pull/3) added [`LocalRegistry`] as an option for `ComboIndexCache` - [PR#3](https://github.com/EmbarkStudios/tame-index/pull/3) added `KrateName::cargo` and `KrateName::crates_io` options for validating crates names against the (current) constraints of cargo and crates.io respectively. ### Changed - [PR#3](https://github.com/EmbarkStudios/tame-index/pull/3) refactored how index initialization is performed by splitting out the individual pieces into a cleaner API, adding the types `IndexUrl`, `IndexPath`, and `IndexLocation` ### Fixed - [PR#3](https://github.com/EmbarkStudios/tame-index/pull/3) fixed an issue where the .cache entries for a git index were not using the same cache version of cargo, as of 1.65.0+. cargo in those versions now uses the object id of the blob the crate is read from, rather than the `HEAD` commit hash, for more granular change detection. ## [0.1.0] - 2023-07-05 ### Added - [PR#1](https://github.com/EmbarkStudios/tame-index/pull/1) added the initial working implementation for this crate ## [0.0.1] - 2023-06-19 ### Added - Initial crate squat [Unreleased]: https://github.com/EmbarkStudios/tame-index/compare/0.16.0...HEAD [0.16.0]: https://github.com/EmbarkStudios/tame-index/compare/0.15.0...0.16.0 [0.15.0]: https://github.com/EmbarkStudios/tame-index/compare/0.14.0...0.15.0 [0.14.0]: https://github.com/EmbarkStudios/tame-index/compare/0.13.2...0.14.0 [0.13.2]: https://github.com/EmbarkStudios/tame-index/compare/0.13.1...0.13.2 [0.13.1]: https://github.com/EmbarkStudios/tame-index/compare/0.13.0...0.13.1 [0.13.0]: https://github.com/EmbarkStudios/tame-index/compare/0.12.2...0.13.0 [0.12.2]: https://github.com/EmbarkStudios/tame-index/compare/0.12.1...0.12.2 [0.12.1]: https://github.com/EmbarkStudios/tame-index/compare/0.12.0...0.12.1 [0.12.0]: https://github.com/EmbarkStudios/tame-index/compare/0.11.1...0.12.0 [0.11.1]: https://github.com/EmbarkStudios/tame-index/compare/0.11.0...0.11.1 [0.11.0]: https://github.com/EmbarkStudios/tame-index/compare/0.10.0...0.11.0 [0.10.0]: https://github.com/EmbarkStudios/tame-index/compare/0.9.9...0.10.0 [0.9.9]: https://github.com/EmbarkStudios/tame-index/compare/0.9.8...0.9.9 [0.9.8]: https://github.com/EmbarkStudios/tame-index/compare/0.9.7...0.9.8 [0.9.7]: https://github.com/EmbarkStudios/tame-index/compare/0.9.6...0.9.7 [0.9.6]: https://github.com/EmbarkStudios/tame-index/compare/0.9.5...0.9.6 [0.9.5]: https://github.com/EmbarkStudios/tame-index/compare/0.9.4...0.9.5 [0.9.4]: https://github.com/EmbarkStudios/tame-index/compare/0.9.3...0.9.4 [0.9.3]: https://github.com/EmbarkStudios/tame-index/compare/0.9.2...0.9.3 [0.9.2]: https://github.com/EmbarkStudios/tame-index/compare/0.9.1...0.9.2 [0.9.1]: https://github.com/EmbarkStudios/tame-index/compare/0.9.0...0.9.1 [0.9.0]: https://github.com/EmbarkStudios/tame-index/compare/0.8.0...0.9.0 [0.8.0]: https://github.com/EmbarkStudios/tame-index/compare/0.7.2...0.8.0 [0.7.2]: https://github.com/EmbarkStudios/tame-index/compare/0.7.1...0.7.2 [0.7.1]: https://github.com/EmbarkStudios/tame-index/compare/0.7.0...0.7.1 [0.7.0]: https://github.com/EmbarkStudios/tame-index/compare/0.6.0...0.7.0 [0.6.0]: https://github.com/EmbarkStudios/tame-index/compare/0.5.6...0.6.0 [0.5.6]: https://github.com/EmbarkStudios/tame-index/compare/0.5.5...0.5.6 [0.5.5]: https://github.com/EmbarkStudios/tame-index/compare/0.5.4...0.5.5 [0.5.4]: https://github.com/EmbarkStudios/tame-index/compare/0.5.3...0.5.4 [0.5.3]: https://github.com/EmbarkStudios/tame-index/compare/0.5.2...0.5.3 [0.5.2]: https://github.com/EmbarkStudios/tame-index/compare/0.5.1...0.5.2 [0.5.1]: https://github.com/EmbarkStudios/tame-index/compare/0.5.0...0.5.1 [0.5.0]: https://github.com/EmbarkStudios/tame-index/compare/0.4.1...0.5.0 [0.4.1]: https://github.com/EmbarkStudios/tame-index/compare/0.4.0...0.4.1 [0.4.0]: https://github.com/EmbarkStudios/tame-index/compare/0.3.2...0.4.0 [0.3.2]: https://github.com/EmbarkStudios/tame-index/compare/0.3.1...0.3.2 [0.3.1]: https://github.com/EmbarkStudios/tame-index/compare/0.3.0...0.3.1 [0.3.0]: https://github.com/EmbarkStudios/tame-index/compare/0.2.5...0.3.0 [0.2.5]: https://github.com/EmbarkStudios/tame-index/compare/0.2.4...0.2.5 [0.2.4]: https://github.com/EmbarkStudios/tame-index/compare/0.2.3...0.2.4 [0.2.3]: https://github.com/EmbarkStudios/tame-index/compare/0.2.2...0.2.3 [0.2.2]: https://github.com/EmbarkStudios/tame-index/compare/0.2.1...0.2.2 [0.2.1]: https://github.com/EmbarkStudios/tame-index/compare/0.2.0...0.2.1 [0.2.0]: https://github.com/EmbarkStudios/tame-index/compare/0.1.0...0.2.0 [0.1.0]: https://github.com/EmbarkStudios/tame-index/compare/0.0.1...0.1.0 [0.0.1]: https://github.com/EmbarkStudios/tame-index/releases/tag/0.0.1