NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
crates.io · #2487 most downloaded on crates.io
Track and query Cargo dependency graphs.
Last release 13 days ago
24 Sep 2026
Ships fairly regularly
a new release about every 6 weeks
Nearly every release is documented
notes for 60 of the last 60 stable releases
3 versions withdrawn
withdrawn after publishing
7 years old
78 releases · first in 2019
This includes all the changes from version 0.6.0, plus a minor fix:
This includes all the changes from version 0.6.0, plus a minor fix:
This includes the changes in version 0.5.0-rc.1, plus:
This includes the changes in version 0.5.0-rc.1, plus:
CargoSet instances through the optional summaries feature.target-spec has been upgraded to 0.4.MetadataCommand::exec and build_graph are now &self, not &mut self.One column per quarter.
PackageGraph::query_workspace_paths and resolve_workspace_paths provide convenient ways to create queries and package sets given a list of workspace p
PackageGraph::query_workspace_paths and resolve_workspace_paths provide convenient ways
to create queries and package sets given a list of workspace paths.PackageMetadata::source provides the source of a package (a local path, crates.io, a git repository or a custom
registry).PackageQuery::initials returns the initial set of packages specified in a package query.FeatureQuery::initials returns the initial set of features specified in a feature query.FeatureQuery::initial_packages returns the initial set of packages specified in a feature query.CargoSet now carries with it the original query and information about
direct third-party dependencies.Workspace::members_by_paths and Workspace::members_by_names look up a list of workspace members
by path or name, respectively.FeatureGraph::all_features_for returns a list of all known features for a specified package.PackageGraph::metadata now return Results with errors instead of Options.target-spec has been upgraded to 0.3.proptest has been upgraded to 0.10. The feature has accordingly been renamed to
proptest010.Workspace::members is now Workspace::iter_by_path, and Workspace::members_by_name is now Workspace::iter_by_name.FeatureQuery<'g> and FeatureSet<'g>, the lifetime parameter 'g is now covariant.
Compile-time assertions ensure that all lifetime parameters in guppy are covariant.This is a small followup release with some APIs that were meant to be added to 0.4.0.
This is a small followup release with some APIs that were meant to be added to 0.4.0.
PackageGraph now has some new resolve_ methods:
resolve_ids: creates a PackageSet with the specified package IDs.resolve_workspace: creates a PackageSet with all workspace packages (but no transitive dependencies).resolve_workspace_names: creates a PackageSet with the specified workspace packages by name (but no transitive
dependencies).This is a major overhaul of guppy, with many new features and several changed APIs.
This is a major overhaul of guppy, with many new features and several changed APIs.
guppy::graph::feature, and are accessible through PackageGraph::feature_graph.FeatureQuery and FeatureSet.guppy::graph::cargo, and are accessible by constructing a FeatureQuery and using its
resolve_cargo method.guppy faithfully emulates cargo.PackageQuery (and FeatureQuery) can now be introspected with new methods direction and starts_from.PackageMetadata instances now have has_build_script and is_proc_macro methods.PackageGraph::query_workspace_names to make a PackageQuery by workspace name.PackageSet's consuming into_ iterators have been turned into borrowing iterators.
into_ids is now ids, and into_links is now links.PackageMetadata instances.PackageLink, instead of having public from, to and edge fields, now has methods which return that data.
PackageEdge has been subsumed into PackageLink.EnabledStatus, PlatformStatus and
PlatformEval.PackageResolver (and FeatureResolver) improvements.
&mut self instead of a plain &self (or FnMut instead of Fn).MetadataCommand has been reimplemented in guppy, and now has a build_graph method.
Metadata has been reworked as well, and renamed to CargoMetadata.PackageGraph::retain_edges no longer exists: its functionality can be replicated through PackageResolver.Support for listing and querying build targets (library, binaries, tests, etc) within a package.
PackageMetadata::build_targets: iterates over all build targets within a package.PackageMetadata::build_target: retrieves a build target by identifier.This is a breaking release with some minor API changes.
This is a breaking release with some minor API changes.
PackageGraph::directly_depends_on: returns true if a package directly depends on another.Workspace has new member_by_name and members_by_name methods for workspace lookups by name.guppy now checks for duplicate names in workspaces and errors out if it finds any.Workspace::members and Workspace::member_by_path now return PackageMetadata instances, not PackageId.Fixed a build issue on nightly Rust.
All previously deprecated methods have been cleaned up.
This is a breaking release. There are no new or removed features, but many existing APIs have been cleaned up.
select_ methods have been renamed to query_.
PackageSelect is now PackageQuery.select_all is now resolve_all and directly produces a PackageSet.DependencyLink is now PackageLink, and DependencyEdge is now PackageEdge.into_iter_links is now PackageSet::into_links.PackageId is now custom to guppy instead of reusing cargo_metadata::PackageId.PackageDotVisitor now takes a &mut DotWrite.A PackageSet can also be iterated on in various ways, listed in the "Deprecated" section.
PackageResolver trait.
PackageSelect::resolve_with and PackageSelect::resolve_with_fn.PackageResolver provides fine-grained control over which links are followed.PackageGraph::retain_edges, but doesn't borrow mutably and is scoped to a single selector.PackageSet to represent a set of known, resolved packages.
PackageSet comes with the standard set operations: len, contains, union, intersection, difference and
symmetric_difference.PackageSet can also be iterated on in various ways, listed in the "Deprecated" section.into_ methods on PackageSelect have been deprecated and moved to PackageSet.
select.into_iter_ids() -> select.resolve().into_ids()select.into_iter_metadatas() -> select.resolve().into_metadatas()select.into_root_ids() -> select.resolve().into_root_ids()select.into_root_metadatas() -> select.resolve().into_root_metadatas()Support for platform-specific dependencies, including:
into_iter_ids is a further 10-15% faster for large graphs.DependencyMetadata::target has been replaced with the _on methods.
enabled_on method.Handle cyclic dev-dependencies properly. Previously, guppy could produce incomplete results if it encountered cycles.
guppy could produce incomplete results if it encountered cycles.into_iter_ids is now around 60% faster for large graphs.Fix a bug involving situations where different dependency sections depend on the same package with different versions:
[dependencies]
lazy_static = "1"
[dev-dependencies]
lazy_static = "0.2"
New selector select_workspace to select packages that are part of the workspace and all their transitive dependencies. In general, select_workspace is
select_workspace to select packages that are part of the workspace and all their transitive
dependencies. In general, select_workspace is preferable over select_all.into_root_ids and into_root_metadatas that would cause it to return packages that aren't roots of
another package.PackageSelect::into_root_metadatas returns package metadatas for all roots within a selection.
PackageSelect::into_root_metadatas returns package metadatas for all roots within a selection.proptest010 to help with property testing.petgraph 0.5 -- this allows for some internal code to be simplified.select_transitive_deps → select_forwardselect_reverse_transitive_deps → select_reverseselect_transitive_deps_directed → select_directedFixed the return type of into_root_ids to be impl Iterator instead of impl IntoIterator.
into_root_ids to be impl Iterator instead of impl IntoIterator.Fixed a publishing issue with version 0.1.0.
Nothing published for this version
Your coding agent can read these notes before it upgrades. Set up the MCP server →