PackageTrack
Sign in Get early access

krates

Create graphs of crates gathered from cargo metadata

0.21.3 5.6M downloads/mo #4279 most downloaded on crates.io EmbarkStudios/krates

What this package is like to depend on

Last release 1 months ago

29 Jun 2026

Release timing varies

gaps range from 8 days to 10 months

Nearly every release is documented

notes for 53 of 53 stable releases

4 versions withdrawn

withdrawn after publishing

7 years old

57 releases · first in 2020

4 releases in the last 12 months

see the full history below

Release timeline

57 releases · Jan 2020 to Jun 2026
2021 2022 2023 2024 2025 2026
Release Pre-release Withdrawn

Releases

latest 57
  1. 0.21.3 29 Jun 2026
    Release notes

    Changed

    • PR#114 updated crates, pinning indexmap to avoid multiple versions of the hashbrown crate.
    Open source →
    Release notes

    Changed

    • PR#114 updated crates, pinning indexmap to avoid multiple versions of the hashbrown crate.
    Open source →
  2. 0.21.2 22 May 2026
    Release notes

    Fixed

    • PR#112 resolved #111 by taking into account path sources.
    Open source →
    Release notes

    Fixed

    • PR#112 resolved #111 by taking into account path sources.
    Open source →
  3. 0.21.1 10 Apr 2026
    Release notes

    Fixed

    • PR#110 resolved #109 by properly enabling features of a weak dependency directly referenced by another weak feature.
    Open source →
    Release notes

    Fixed

    • PR#110 resolved #109 by properly enabling features of a weak dependency directly referenced by another weak feature.
    Open source →
  4. 0.21.0 01 Apr 2026
    Release notes

    Changed

    Removed

    • PR#107 removed the metadata feature and thus compatibility with cargo_metadata.

    Fixed

    • PR#107 fixed an issue where crates which renamed their lib target and were gated behind a feature in a dependent that didn't rename it would be pruned from the final graph erroneously.
    Open source →
    Release notes

    Changed

    Removed

    • PR#107 removed the metadata feature and thus compatibility with cargo_metadata.

    Fixed

    • PR#107 fixed an issue where crates which renamed their lib target and were gated behind a feature in a dependent that didn't rename it would be pruned from the final graph erroneously.
    Open source →
  5. 0.20.0 22 May 2025
    Release notes

    Changed

    Open source →
    Release notes

    Changed

    Open source →
  6. 0.19.0 03 Apr 2025
    Release notes

    Changed

    Open source →
    Release notes

    Changed

    Open source →
  7. 0.18.1 27 Feb 2025
    Release notes

    Fixed

    • PR#101 resolved #100 by correctly swallowing unknown fields for the various objects in a metadata dump.
    Open source →
    Release notes

    Fixed

    • PR#101 resolved #100 by correctly swallowing unknown fields for the various objects in a metadata dump.
    Open source →
  8. 0.18.0 24 Feb 2025
    Release notes

    Changed

    • PR#99 updated to edition 2024.
    • PR#99 changed from using serde_derive to manual deserialization.

    Added

    • PR#99 added support for serialization of metadata gated behind the serialize feature.
    Open source →
    Release notes

    Changed

    • PR#99 updated to edition 2024.
    • PR#99 changed from using serde_derive to manual deserialization.

    Added

    • PR#99 added support for serialization of metadata gated behind the serialize feature.
    Open source →
  9. 0.17.5 14 Nov 2024
    Release notes

    Fixed

    • 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.
    Open source →
    Release notes

    Fixed

    • 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.
    Open source →
  10. 0.17.4 14 Nov 2024
    Release notes

    Fixed

    • PR#96 fixed an issue where package specs didn't allow the @ separator, resolving cargo-deny#717.
    Open source →
    Release notes

    Fixed

    • PR#96 fixed an issue where package specs didn't allow the @ separator, resolving cargo-deny#717.
    Open source →
  11. 0.17.3 11 Nov 2024
    Release notes

    Fixed

    • PR#94 fixed an issue with canonical path mismatches (I presume on Windows). Thanks @Tastaturtaste!

    Added

    • PR#95 added the 2024 variant so that edition 2024 (unstable) crates don't fail to be parsed from cargo-metadata. Thanks @kpcyrd!
    Open source →
  12. 0.17.2 20 Sep 2024
    Release notes

    Changed

    Open source →
  13. 0.17.1 02 Aug 2024
    Release notes

    Changed

    Open source →
  14. 0.17.0 26 Jun 2024
    Release notes

    Added

    • PR#90 added Krates::resolved_dependency to get the Krate (if any) that was resolved for a Package's Dependency.

    Fixed

    • 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.

    Changed

    • 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.
    Open source →
  15. 0.16.10 12 Apr 2024
    Release notes

    Fixed

    • 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.
    Open source →
  16. 0.16.9 09 Apr 2024
    Release notes

    Fixed

    • PR#81 re-resolved #79 because the PR#80 completely broke in the presence of cargo patches.
    Open source →
  17. 0.16.8 09 Apr 2024 withdrawn
    Release notes

    Fixed

    • PR#80 resolved #79 by fixing an extreme edge case with dependency renaming.
    Open source →
  18. 0.16.7 20 Mar 2024
    Release notes

    Fixed

    • 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.
    Open source →
  19. 0.16.6 24 Jan 2024
    Release notes

    Fixed

    • 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.
    Open source →
  20. 0.16.5 24 Jan 2024
    Release notes

    Fixed

    • PR#75 resolved #74 by just always checking version requirements for dependencies. Sigh.
    Open source →
  21. 0.16.4 22 Jan 2024
    Release notes

    Fixed

    • PR#73 resolved #72 by correctly parsing the new stable package ids where a specifier was not used.
    Open source →
  22. 0.16.3 22 Jan 2024
    Release notes

    Fixed

    • PR#71 fixed an issue introduced in PR#70 that would cause duplicates to not be detected correctly. Thanks @louisdewar!
    Open source →
  23. 0.16.2 21 Jan 2024
    Release notes

    Fixed

    • 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.
    Open source →
  24. 0.16.1 20 Jan 2024
    Release notes

    Fixed

    • 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.
    Open source →
  25. 0.16.0 19 Jan 2024
    Release notes

    Fixed

    • PR#65 resolved #64 by adding support for the newly stabilized (currently nightly only) package id format.

    Changed

    • PR#65 changed Kid from just a type alias for cargo_metadata::PackageId to an actual type that has accessors for the various components of the id. It also specifies its own Ord etc implementation so that those ids are sorted the exact same as the old version.
    Open source →
  26. 0.15.3 12 Jan 2024
    Release notes

    Fixed

    Open source →
  27. 0.15.2 12 Jan 2024 withdrawn
    Release notes

    Fixed

    • 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.
    Open source →
  28. 0.15.1 03 Sep 2023
    Release notes

    Added

    • PR#59 added Krates::krates_filtered, allowing filtering of crates based upon their edge kinds.
    Open source →
  29. 0.15.0 23 Aug 2023
    Release notes

    Changed

    • PR#58 removed the prefer-index feature, which brought in tame-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.
    Open source →
  30. 0.14.1 21 Aug 2023
    Release notes

    Changed

    • PR#57 bumped tame-index to 0.4.
    Open source →
  31. 0.14.0 25 Jul 2023
    Release notes

    Changed

    • PR#55 and PR#56 replaced crates-index with tame-index
    • PR#56 changed Krates::lock_path -> Krates::workspace_root, which can then be joined with Cargo.lock to get the same path, but workspace root is more generally useful.
    Open source →
  32. 0.13.1 13 Jun 2023
    Release notes

    Fixed

    • 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.
    Open source →
  33. 0.13.0 04 Apr 2023
    Release notes

    Changed

    • PR#53 updated cfg-expr to 0.14 and crates-index to 0.19.

    Fixed

    • 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 if prefer-index was enabled.
    Open source →
  34. 0.12.6 25 Nov 2022
    Release notes

    Changed

    • PR#52 updated cfg-expr to 0.12.
    • PR#52 changed Krates::search_matches and Krates::search_by_name to use impl Into<String> for the name to search, so that the lifetime of it is not paired with the graph itself.
    Open source →
  35. 0.12.5 08 Nov 2022
    Release notes

    Fixed

    • 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.
    Open source →
  36. 0.12.4 02 Nov 2022
    Release notes

    Fixed

    • PR#49 resolved #48 by not entering into an infinite loop in the presence of cyclic features. Oops.
    Open source →
  37. 0.12.3 01 Nov 2022
    Release notes

    Fixed

    • 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.
    Open source →
  38. 0.12.2 28 Oct 2022
    Release notes

    Fixed

    • PR#45 fixed a bug where optional dependencies could be pruned if their name differed from the feature that enabled them.

    Added

    • PR#45 added Krates::direct_dependencies as a complement to Krates::direct_dependents.
    Open source →
  39. 0.12.1 25 Oct 2022
    Release notes

    Added

    • 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.
    Open source →
  40. 0.12.0 06 Oct 2022
    Release notes

    Added

    • 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.

    Fixed

    • PR#42 resolved #41 by properly pruning weak dependencies that were improperly resolved by cargo.
    Open source →
  41. 0.11.0 04 Jul 2022
    Release notes

    Changed

    Open source →
  42. 0.10.1 16 Feb 2022
    Release notes

    Fixed

    • PR#38 fixed #37 by properly adding multiple features if specified.
    Open source →
  43. 0.10.0 04 Feb 2022
    Release notes

    Changed

    • PR#36 updated cfg-expr and fixed up crates.io metadata.
    Open source →
  44. 0.9.0 21 Oct 2021
    Release notes

    Fixed

    • PR#35 changed Krates::search_matches to get rid of unnecessary lifetime coupling.

    Changed

    • PR#35 updated cfg-expr to 0.9.
    Open source →
  45. 0.8.1 20 Jul 2021
    Release notes

    Added

    Open source →
  46. 0.8.0 16 Jul 2021
    Release notes

    Changed

    • PR#32 replaced the use of difference with similar. Thanks @j-k!
    • PR#33 updated semver, cargo_metadata, petgraph, and cfg-expr to their latest versions.
    Open source →
  47. 0.7.0 11 Mar 2021
    Release notes

    Changed

    • Updated cargo_metadata to 0.13.0, which uses camino for path information, so it is reexported and used for Krates::lock_path
    Open source →
  48. 0.6.0 12 Feb 2021
    Release notes

    Changed

    • Updated cfg-expr to 0.7.0, which brings targets as of 1.50.0
    Open source →
  49. 0.5.0 20 Oct 2020
    Release notes

    Added

    • Added impl PartialEq<cargo_metadata::DependencyKind> for DepKind

    Changed

    • Updated semver, cargo_metadata, and `cfg-expr.
    Open source →
  50. 0.4.2 13 Oct 2020
    Release notes

    Fixed

    • 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.
    Open source →
  51. 0.4.1 28 Jul 2020
    Release notes

    Fixed

    • Fix to version 0.11.1 of cargo_metadata.
    Open source →
  52. 0.4.0 28 Jul 2020 withdrawn
    Release notes

    Fixed

    • Align semver version with the same one used by cargo_metadata, again.
    Open source →
  53. 0.3.1 18 Jul 2020 withdrawn
    Release notes

    Fixed

    • Align semver version with the same one used by cargo_metadata
    Open source →
  54. 0.3.0 04 Jun 2020
    Release notes

    Changed

    • Updated cfg-expr to 0.4.0, and added the targets feature, will enable the targets feature in cfg-expr, allowing the use of matching cfg expressions against target_lexicon::Triple instead of only built-in targets/names.
    Open source →
  55. 0.2.0 05 Feb 2020
    Release notes

    Changed

    • Updated cfg-expr to 0.2.0, so only 1.41.0 built-in targets are fully supported
    Open source →
  56. 0.1.1 04 Feb 2020
    Release notes

    Added

    • Added PkgSpec, an implementation of cargo's package id specifications
    • Added Builder::workspace, which allows the equivalent of cargo <cmd> --workspace when building the graph
    • Added Builder::exclude, which allows the equivalent of cargo <cmd> --exclude when building the graph
    Open source →
  57. 0.1.0 14 Jan 2020
    Release notes

    Added

    • Initial implementation

    <!-- next-url --> [Unreleased]: https://github.com/EmbarkStudios/krates/compare/0.21.3...HEAD [0.21.3]: https://github.com/EmbarkStudios/krates/compare/0.21.2...0.21.3 [0.21.2]: https://github.com/EmbarkStudios/krates/compare/0.21.1...0.21.2 [0.21.1]: https://github.com/EmbarkStudios/krates/compare/0.21.0...0.21.1 [0.21.0]: https://github.com/EmbarkStudios/krates/compare/0.20.0...0.21.0 [0.20.0]: https://github.com/EmbarkStudios/krates/compare/0.19.0...0.20.0 [0.19.0]: https://github.com/EmbarkStudios/krates/compare/0.18.1...0.19.0 [0.18.1]: https://github.com/EmbarkStudios/krates/compare/0.18.0...0.18.1 [0.18.0]: https://github.com/EmbarkStudios/krates/compare/0.17.5...0.18.0 [0.17.5]: https://github.com/EmbarkStudios/krates/compare/0.17.4...0.17.5 [0.17.4]: https://github.com/EmbarkStudios/krates/compare/0.17.3...0.17.4 [0.17.3]: https://github.com/EmbarkStudios/krates/compare/0.17.2...0.17.3 [0.17.2]: https://github.com/EmbarkStudios/krates/compare/0.17.1...0.17.2 [0.17.1]: https://github.com/EmbarkStudios/krates/compare/0.17.0...0.17.1 [0.17.0]: https://github.com/EmbarkStudios/krates/compare/0.16.10...0.17.0 [0.16.10]: https://github.com/EmbarkStudios/krates/compare/0.16.9...0.16.10 [0.16.9]: https://github.com/EmbarkStudios/krates/compare/0.16.8...0.16.9 [0.16.8]: https://github.com/EmbarkStudios/krates/compare/0.16.7...0.16.8 [0.16.7]: https://github.com/EmbarkStudios/krates/compare/0.16.6...0.16.7 [0.16.6]: https://github.com/EmbarkStudios/krates/compare/0.16.5...0.16.6 [0.16.5]: https://github.com/EmbarkStudios/krates/compare/0.16.4...0.16.5 [0.16.4]: https://github.com/EmbarkStudios/krates/compare/0.16.3...0.16.4 [0.16.3]: https://github.com/EmbarkStudios/krates/compare/0.16.2...0.16.3 [0.16.2]: https://github.com/EmbarkStudios/krates/compare/0.16.1...0.16.2 [0.16.1]: https://github.com/EmbarkStudios/krates/compare/0.16.0...0.16.1 [0.16.0]: https://github.com/EmbarkStudios/krates/compare/0.15.3...0.16.0 [0.15.3]: https://github.com/EmbarkStudios/krates/compare/0.15.2...0.15.3 [0.15.2]: https://github.com/EmbarkStudios/krates/compare/0.15.1...0.15.2 [0.15.1]: https://github.com/EmbarkStudios/krates/compare/0.15.0...0.15.1 [0.15.0]: https://github.com/EmbarkStudios/krates/compare/0.14.1...0.15.0 [0.14.1]: https://github.com/EmbarkStudios/krates/compare/0.14.0...0.14.1 [0.14.0]: https://github.com/EmbarkStudios/krates/compare/0.13.1...0.14.0 [0.13.1]: https://github.com/EmbarkStudios/krates/compare/0.13.0...0.13.1 [0.13.0]: https://github.com/EmbarkStudios/krates/compare/0.12.6...0.13.0 [0.12.6]: https://github.com/EmbarkStudios/krates/compare/0.12.5...0.12.6 [0.12.5]: https://github.com/EmbarkStudios/krates/compare/0.12.4...0.12.5 [0.12.4]: https://github.com/EmbarkStudios/krates/compare/0.12.3...0.12.4 [0.12.3]: https://github.com/EmbarkStudios/krates/compare/0.12.2...0.12.3 [0.12.2]: https://github.com/EmbarkStudios/krates/compare/0.12.1...0.12.2 [0.12.1]: https://github.com/EmbarkStudios/krates/compare/0.12.0...0.12.1 [0.12.0]: https://github.com/EmbarkStudios/krates/compare/0.11.0...0.12.0 [0.11.0]: https://github.com/EmbarkStudios/krates/compare/0.10.1...0.11.0 [0.10.1]: https://github.com/EmbarkStudios/krates/compare/0.10.0...0.10.1 [0.10.0]: https://github.com/EmbarkStudios/krates/compare/0.9.0...0.10.0 [0.9.0]: https://github.com/EmbarkStudios/krates/compare/0.8.1...0.9.0 [0.8.1]: https://github.com/EmbarkStudios/krates/compare/0.8.0...0.8.1 [0.8.0]: https://github.com/EmbarkStudios/krates/compare/0.7.0...0.8.0 [0.7.0]: https://github.com/EmbarkStudios/krates/compare/0.6.0...0.7.0 [0.6.0]: https://github.com/EmbarkStudios/krates/compare/0.5.0...0.6.0 [0.5.0]: https://github.com/EmbarkStudios/krates/compare/0.4.2...0.5.0 [0.1.0]: https://github.com/EmbarkStudios/krates/releases/tag/0.1.0

    Open source →

Every package, every release, already written down.

The archive is open and free. Watching your own project is what we are building next.

Browse the archive