Skip to content

-Z build-std with unified workspace #64

Open
@Ericson2314

Description

@Ericson2314

If I'm not misreading the Cargo code:

  • We currently have separate workspace for the user's project std
  • We resolve them separately and then combine the unit graphs

I don't think this is a good approach, long term:

Conversely, we might inject the crates and (explicit and implicit) stdlib deps to create a unified workspace. We would also combine the lock files to create a lockfile for the combined workspace with the materialized. Now, this will be a bunch of work up front, but I think it comes with a bunch of benefits:

  • It's not adding expressive power: one could also manually combine the workspace, lockfile, and add the stdlib deps and then run Cargo on it. This means no new code paths downstream of the workspace combination.
  • Since everything is resolved at once, std features affected by project crate features

I also wonder if it might help with #23 (comment). Combining the workspaces and lockfiles is also a "big global change", so maybe it's OK to use source for mirroring just in that case?

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions