NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
crates.io · #4268 most downloaded on crates.io
Create graphs of crates gathered from cargo metadata
Last release 3 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
One column per quarter.
PR#114 updated crates, pinning indexmap to avoid multiple versions of the hashbrown crate.
indexmap to avoid multiple versions of the hashbrown crate.PR#112 resolved #111 by taking into account path sources.
PR#110 resolved #109 by properly enabling features of a weak dependency directly referenced by another weak feature.
PR#107 removed the metadata feature and thus compatibility with cargo_metadata.
metadata feature and thus compatibility with cargo_metadata.PR#103 updated petgraph -> 0.8.
Changed PR#102 updated crates.
PR#101 resolved #100 by correctly swallowing unknown fields for the various objects in a metadata dump.
PR#99 changed from using serde_derive to manual deserialization.
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
PR#96 fixed an issue where package specs didn't allow the @ separator, resolving cargo-deny#717 .
@ separator, resolving cargo-deny#717.PR#94 fixed an issue with canonical path mismatches (I presume on Windows). Thanks @Tastaturtaste!
### Changed - PR#93 updated crates.
### Changed - PR#92 updated crates.
PR#90 added Krates::resolved_dependency to get the Krate (if any) that was resolved for a Package's Dependency.
Krates::resolved_dependency to get the Krate (if any) that was resolved for a Package's Dependency.krates to be unable to resolve dependencies to the appropriate crate node.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.PR#83 resolved #82 by properly handling cfg() specific dependencies for the same crate with different features enabled.
PR#81 re-resolved #79 because the PR#80 completely broke in the presence of cargo patches.
PR#80 resolved #79 by fixing an extreme edge case with dependency renaming.
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_metad
Cargo.toml without preceding ./ would cause the current directory be set to empty, and cargo_metadata to fail.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
PR#75 resolved #74 by just always checking version requirements for dependencies. Sigh.
PR#73 resolved #72 by correctly parsing the new stable package ids where a specifier was not used.
PR#71 fixed an issue introduced in PR#70 that would cause duplicates to not be detected correctly. Thanks @louisdewar!
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 sam
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 occ
PR#65 resolved #64 by adding support for the newly stabilized (currently nightly only) package id format.
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.PR#63 resolved #62 which was a bug introduced in PR#61
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 u
PR#59 added Krates::krates_filtered, allowing filtering of crates based upon their edge kinds.
Krates::krates_filtered, allowing filtering of crates based upon their edge kinds.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 i
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.PR#57 bumped tame-index to 0.4.
tame-index to 0.4.PR#55 and PR#56 replaced crates-index with tame-index
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
prefer-index feature was enabled, causing long stalls if using the crates.io sparse index instead.PR#53 updated cfg-expr to 0.14 and crates-index to 0.19.
cfg-expr to 0.14 and crates-index to 0.19.dtolnay/rust-toolchain@stable in your CI) this would cause no index to be used to fix crate features if prefer-index was enabled.PR#52 updated cfg-expr to 0.12.
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 loca
PR#49 resolved #48 by not entering into an infinite loop in the presence of cyclic features. Oops.
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 c
PR#45 fixed a bug where optional dependencies could be pruned if their name differed from the feature that enabled them.
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 f
PR#42 added support for features, adding nodes for each unique future, and linking edges between dependencies and features themselves. This (hopefully
Krates::get_enabled_features.PR#40 updated cargo_metadata to 0.15. Thanks @pinkforest!
cargo_metadata to 0.15. Thanks @pinkforest!PR#38 fixed #37 by properly adding multiple features if specified.
PR#36 updated cfg-expr and fixed up crates.io metadata.
cfg-expr and fixed up crates.io metadata.PR#35 changed Krates::search_matches to get rid of unnecessary lifetime coupling.
PR#34 added support for the `--locked`, `--offline`, and `--frozen` arguments.
--locked, --offline, and --frozen arguments.PR#32 replaced the use of difference with similar. Thanks @j-k!
Updated cargo_metadata to 0.13.0, which uses `camino` for path information, so it is reexported and used for Krates::lock_path
cargo_metadata to 0.13.0, which uses camino for path information, so it is reexported and used for Krates::lock_pathUpdated cfg-expr to 0.7.0, which brings targets as of 1.50.0
cfg-expr to 0.7.0, which brings targets as of 1.50.0Added impl PartialEq for DepKind
impl PartialEq<cargo_metadata::DependencyKind> for DepKindsemver, 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 depende
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 of cargo_metadata.
0.11.1 of cargo_metadata.Align semver version with the same one used by cargo_metadata, again.
semver version with the same one used by cargo_metadata, again.Align semver version with the same one used by cargo_metadata
semver version with the same one used by cargo_metadataUpdated 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 ag
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.Updated cfg-expr to 0.2.0, so only 1.41.0 built-in targets are fully supported
cfg-expr to 0.2.0, so only 1.41.0 built-in targets are fully supportedAdded PkgSpec, an implementation of cargo's package id specifications
PkgSpec, an implementation of cargo's package id specificationsBuilder::workspace, which allows the equivalent of cargo <cmd> --workspace when building the graphBuilder::exclude, which allows the equivalent of cargo <cmd> --exclude when building the graph<!-- next-url --> [Unreleased]: https://github.com/EmbarkStudios/krates/compare/0.21.3...HEAD [0.21.3]: https://github.com/EmbarkStudios/krates/compar
<!-- 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
Your coding agent can read these notes before it upgrades. Set up the MCP server →