[WIP] Improve dependency resolver #1918
Merged
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 is a first of probably a few PRs to implement a new dependency resolution algorithm in SwiftPM (my project whilst interning at Apple). It's based on Pubgrub.
The major upside to this will be more descriptive and actionable diagnostics in error cases. Better performance is another side goal. Currently, in the case that dependency resolution fails, SwiftPM is unable to explain to the user why it did, just that it is so. This aims to improve that.
Please note that the code here is still very much a work in progress. It is as of yet still non-functional, but includes necessary types, API and several building blocks. It however currently stills fails at its actual job, resolving dependencies. There are also several TODOs, FIXMEs, fatalError calls and force unwraps which are placeholders for further improvements and improved error handling.
I added a new CLI option (
--enable-pubgrub-resolver
), which uses the new resolver. This will of course be of more use once it actually works 😅Any review and feedback is very much appreciated!