All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
Unreleased - ReleaseDate
0.17.5 - 2024-11-14
- PR#98 resolved #84 and #97 by resolving
<crate>/<feature>
references to the correct crate in all cases, as it could have resolved to a crate with the same name but different version/feature set previously.
0.17.4 - 2024-11-14
- PR#96 fixed an issue where package specs didn't allow the
@
separator, resolving cargo-deny#717.
0.17.3 - 2024-11-11
- PR#94 fixed an issue with canonical path mismatches (I presume on Windows). Thanks @Tastaturtaste!
- PR#95 added the 2024 variant so that edition 2024 (unstable) crates don't fail to be parsed from cargo-metadata. Thanks @kpcyrd!
0.17.2 - 2024-09-20
- PR#93 updated crates.
0.17.1 - 2024-08-02
- PR#92 updated crates.
0.17.0 - 2024-06-26
- PR#90 added
Krates::resolved_dependency
to get theKrate
(if any) that was resolved for aPackage
'sDependency
.
- PR#86 and PR#87 resolved #85 caused by the stable package format URL-encoding query parameters, unlike the old opaque format, causing
krates
to be unable to resolve dependencies to the appropriate crate node.
- PR#90 made
cargo_metadata
optional, if not selected types internal to this crate are used (and exported) instead. The types are currently mostly the same, but this might change in the future.
0.16.10 - 2024-04-12
- PR#83 resolved #82 by properly handling
cfg()
specific dependencies for the same crate with different features enabled. - PR#83 fixed an issue where
cfg(any())
crates would be pulled into the graph erroneously if not performing target filtering.
0.16.9 - 2024-04-09
0.16.8 - 2024-04-09
0.16.7 - 2024-03-20
- PR#78 fixed an issue where setting manifest_path to
Cargo.toml
without preceding./
would cause the current directory be set to empty, and cargo_metadata to fail.
0.16.6 - 2024-01-24
- PR#77 resolved #76 by special casing "wildcard" version requirements if the version being tested is a pre-release, as pre-releases must have at least one comparator.
0.16.5 - 2024-01-24
0.16.4 - 2024-01-22
0.16.3 - 2024-01-22
- PR#71 fixed an issue introduced in PR#70 that would cause duplicates to not be detected correctly. Thanks @louisdewar!
0.16.2 - 2024-01-21
- PR#70 resolved #68 and #69 by additionally checking the version of resolve dependencies if there were 2 or more of the same name referenced by the same crate.
0.16.1 - 2024-01-20
- PR#67 resolved #66 by ignore features that reference crates that aren't resolved, instead of panicing, as there should only be one case where that occurs.
0.16.0 - 2024-01-19
- PR#65 resolved #64 by adding support for the newly stabilized (currently nightly only) package id format.
- PR#65 changed
Kid
from just a type alias forcargo_metadata::PackageId
to an actual type that has accessors for the various components of the id. It also specifies its ownOrd
etc implementation so that those ids are sorted the exact same as the old version.
0.15.3 - 2024-01-12
0.15.2 - 2024-01-12
- PR#61 resolved #60 by refactoring the building of the crate graph to do its own crate and feature resolution to properly handle pruning based on the user's desires.
0.15.1 - 2023-09-03
- PR#59 added
Krates::krates_filtered
, allowing filtering of crates based upon their edge kinds.
0.15.0 - 2023-08-23
- PR#58 removed the
prefer-index
feature, which brought intame-index
, in favor of just letting the user provide a callback that can be used to gather index information, freeing this crate from dependency issues and allowing downstream crates more flexibility.
0.14.1 - 2023-08-21
- PR#57 bumped
tame-index
to0.4
.
0.14.0 - 2023-07-25
- PR#55 and PR#56 replaced
crates-index
withtame-index
- PR#56 changed
Krates::lock_path
->Krates::workspace_root
, which can then be joined withCargo.lock
to get the same path, but workspace root is more generally useful.
0.13.1 - 2023-06-13
- PR#54 fixed an issue where the crates.io index was unconditionally opened, and synced, if the
prefer-index
feature was enabled, causing long stalls if using the crates.io sparse index instead.
0.13.0 - 2023-04-04
- PR#53 updated
cfg-expr
to 0.14 andcrates-index
to 0.19.
- PR#53 added support for using the HTTP sparse index for crates.io. If the sparse index was enabled and there wasn't a regular git index (for example, if you use
dtolnay/rust-toolchain@stable
in your CI) this would cause no index to be used to fix crate features ifprefer-index
was enabled.
0.12.6 - 2022-11-25
- PR#52 updated cfg-expr to 0.12.
- PR#52 changed
Krates::search_matches
andKrates::search_by_name
to useimpl Into<String>
for the name to search, so that the lifetime of it is not paired with the graph itself.
0.12.5 - 2022-11-08
- PR#51 resolved #50 by no longer treating the feature set in the index as authoritative, but rather just merging in the keys that were not already located in the feature set from the crate itself. This would mean that features that are present in both but with different sub-features from the index will now be lost, but that can be fixed later if it is actually an issue.
0.12.4 - 2022-11-02
0.12.3 - 2022-11-01
- PR#47 resolved #46 by both adding the
prefer-index
feature to get the actual correct feature information for a crate from the index, rather than the cargo metadata, as well as silently ignoring features that are resolved, but not available from the package manifest if the feature is not enabled.
0.12.2 - 2022-10-28
- PR#45 fixed a bug where optional dependencies could be pruned if their name differed from the feature that enabled them.
- PR#45 added
Krates::direct_dependencies
as a complement toKrates::direct_dependents
.
0.12.1 - 2022-10-25
- PR#43 and PR#44 added
Krates::direct_dependents
to more easily obtain the crates that directly depend on the specified crate/node, regardless of any features in between those crates.
0.12.0 - 2022-10-06
- PR#42 added support for features, adding nodes for each unique future, and linking edges between dependencies and features themselves. This (hopefully) properly takes into account the existing ways of pruning the graph via targets, exclusions etc. It also allows the retrieval of that final feature set via
Krates::get_enabled_features
.
0.11.0 - 2022-07-04
- PR#40 updated
cargo_metadata
to 0.15. Thanks @pinkforest!
0.10.1 - 2022-02-16
0.10.0 - 2022-02-04
- PR#36 updated
cfg-expr
and fixed up crates.io metadata.
0.9.0 - 2021-10-21
- PR#35 changed
Krates::search_matches
to get rid of unnecessary lifetime coupling.
- PR#35 updated
cfg-expr
to 0.9.
0.8.1 - 2021-07-20
- PR#34 added support for the
--locked
,--offline
, and--frozen
arguments.
0.8.0 - 2021-07-16
- PR#32 replaced the use of
difference
withsimilar
. Thanks @j-k! - PR#33 updated
semver
,cargo_metadata
,petgraph
, andcfg-expr
to their latest versions.
0.7.0 - 2021-03-11
- Updated
cargo_metadata
to 0.13.0, which usescamino
for path information, so it is reexported and used forKrates::lock_path
0.6.0 - 2021-02-12
- Updated
cfg-expr
to 0.7.0, which brings targets as of 1.50.0
0.5.0 - 2020-10-20
- Added
impl PartialEq<cargo_metadata::DependencyKind> for DepKind
- Updated
semver
,cargo_metadata
, and `cfg-expr.
- PR#19 Fixed an issue where
git
sources could differ in package id representation between the actual source, and the id used to specify it as a dependency from another package.
- Fix to version
0.11.1
ofcargo_metadata
.
- Align
semver
version with the same one used bycargo_metadata
, again.
- Align
semver
version with the same one used bycargo_metadata
- Updated
cfg-expr
to 0.4.0, and added thetargets
feature, will enable thetargets
feature in cfg-expr, allowing the use of matching cfg expressions againsttarget_lexicon::Triple
instead of only built-in targets/names.
- Updated
cfg-expr
to 0.2.0, so only 1.41.0 built-in targets are fully supported
- Added
PkgSpec
, an implementation of cargo's package id specifications - Added
Builder::workspace
, which allows the equivalent ofcargo <cmd> --workspace
when building the graph - Added
Builder::exclude
, which allows the equivalent ofcargo <cmd> --exclude
when building the graph
0.1.0 - 2020-01-14
- Initial implementation