Update Rust crate guppy to 0.17.26#3363
Merged
Merged
Conversation
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## main #3363 +/- ##
==========================================
- Coverage 85.53% 85.52% -0.01%
==========================================
Files 160 160
Lines 47954 47954
==========================================
- Hits 41017 41013 -4
- Misses 6937 6941 +4 ☔ View full report in Codecov by Sentry. 🚀 New features to boost your workflow:
|
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This PR contains the following updates:
0.17.25→0.17.26Release Notes
guppy-rs/guppy (guppy)
v0.17.26: guppy 0.17.26Compare Source
Fixed
A node with a self-loop edge -- typically a package with a
pathdev-dependency on its own crate, or a feature node like
base/[base]arising from one -- was treated inconsistently by several APIs. The root
cause was that self-edges were counted as incoming edges in the SCC and
topological-sort machinery, which transitively confused everything built
on top:
Sccs::externals/ forward roots. Previously, a package whose onlyincoming edge was its own self-loop was excluded from the set of forward
roots, so callers iterating over
query_workspace().resolve().root_ids(_)did not see it, and forwardlink enumeration on it was broken. Now, self-loop edges no longer
disqualify a node from being a forward root: a single-node SCC is
external iff it has no incoming edges from outside its own SCC.
(#586)
TopoWithCycles::newfilteredself-looping nodes out of its root set for the same reason, dropping
them from the DFS and then placing them and their descendants at the
end of the topological order via a best-effort fallback. Now, the
root-set predicate accepts a node whose only incoming edge is its own
self-loop, so such nodes are visited in DFS order alongside other
roots. (#589)
Cycles::is_cyclicandfeature::Cycles::is_cyclic. Previously,these were reflexively
truefor every package or feature, regardlessof actual cycle membership. Now, they return
trueonly when theargument lies on a directed cycle: either in a multi-node SCC, or in a
single-node SCC with a self-loop edge. This is a behavior change, but
in the context of the rest of this release is being treated as a
bugfix. (#590)
Cycles::all_cyclesandfeature::Cycles::all_cycles. Previously,these reported only SCCs of two or more elements. Now, they also yield
single-node SCCs whose node has a self-loop edge, in topological order
alongside multi-node SCCs. This makes
all_cycles()andis_cyclic(x, x)agree on what counts as a cycle. (#590)FeatureGraphWarning::SelfLoop. Previously, this warning wasemitted for every self-loop edge in the feature graph, including
legitimate ones such as a path dev-dependency on the package's own
crate. Now, it is restricted to named-feature self-loops like
[features] a = ["a"], which really are user errors. (#592)Documentation
PackageGraph::directly_depends_onandFeatureGraph::directly_depends_on. Previously, both documentedthemselves as returning
falsewhen the two IDs were equal. Theimplementation has always called
dep_graph.contains_edge(a, b),which correctly returns
truefor self-loop edges, so thedocumentation contradicted the behavior. The documentation has now
been corrected to match.
FeatureGraph::directly_depends_on. Previously, the docstringread "returns true if
feature_ais a direct dependency offeature_b," with the operands inverted relative to the actualimplementation. Now the docstring reflects the implementation:
returns true if
feature_bis a direct dependency offeature_a.(#591)
Cycles] type-level documentation. Previously, the long-formdocumentation talked exclusively about multi-node cycles (like
serdeandserde_derive). It now also acknowledges single-nodeself-loop cycles as a case.
Configuration
📅 Schedule: (in timezone America/Los_Angeles)
🚦 Automerge: Enabled.
♻ Rebasing: Whenever PR is behind base branch, or you tick the rebase/retry checkbox.
🔕 Ignore: Close this PR and you won't be reminded about this update again.
This PR has been generated by Mend Renovate.