-
Notifications
You must be signed in to change notification settings - Fork 8
-Z build-std with unified workspace #64
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Comments
What's the plan to stablize -Z build-std? |
Hopefully not until these changes are done... |
This was discussed at length on Zulip. The crux of the issue is that because the standard library's crates.io dependencies can use nightly features (often hidden behind a Cargo feature flag), their versions cannot be changed. Currently the Cargo resolver does not allow conflicting versions of a dependency (different semvers with the same major version) in the same resolve - meaning any shared dependencies would have to be locked to the standard library's version. The general reason for this restriction is that types defined in different versions of the same dependency are considered different types and are not interchangeable. However, the standard library does not actually leak types defined in its dependencies and all types in its API are its own. This means this restriction could be lifted somewhat for std's dependencies. |
If I'm not misreading the Cargo code:
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:
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?
The text was updated successfully, but these errors were encountered: