Skip to content

Tracking issue for RFC 1977: public & private dependencies, as it relates to the resolver #6129

@Eh2406

Description

@Eh2406

Summary

RFC (original, superseded): #1977
RFC: #3516
Compiler tracking issue: rust-lang/rust#44663

Implementation:

Non-blocking further improvements

Considerations for stabilization

Unresolved Issues

  • How do we handle unifying public between more than one dependencies table (normal, target A normal, target B normal), both public = <bool> and default and public = true with public = false

Known Issues

Future Extensions

About tracking issues

Tracking issues are used to record the overall progress of implementation.
They are also used as hubs connecting to other relevant issues, e.g., bugs or open design questions.
A tracking issue is however not meant for large scale discussion, questions, or bug reports about a feature.
Instead, open a dedicated issue for the specific matter and add the relevant feature gate label.


Original issue

This is a sub part of the discussion of implementation of RFC 1977, specifically how the resolver could implement this protocol. The main Tracking issue is at rust-lang/rust#44663.

This comment rust-lang/rfcs#1977 (comment) described the properties we want to uphold the way that fits best with my brain.
So to use the termanology, I feel like when we are adding a packedge B we need to walk up the dependency tree to all potential C's that can see the addition to test if there is a conflicting A.
That can be done pretty fast if we have a fast way to walk up dependency tree and a fast way to see all the pub reachable packages for each ancestor. (Neither of which we have at this time.)
But that feels like a lot of state to be cloned for each tick.
Currently we avoid the expensive clones with extensive use of RC.

Is it time to add a im-rs dependency?
Is there a better algorithm?
Is there a small part that would make a good starting PR?\

Metadata

Metadata

Assignees

No one assigned

    Labels

    A-dependency-resolutionArea: dependency resolution and the resolverC-tracking-issueCategory: A tracking issue for something unstable.Z-public-dependencyNightly: public-dependency

    Type

    No type

    Projects

    Status

    Ideas

    Status

    Unstable, no backers

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions