You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Return and track affected and culprit on conflicts (#39)
This PR is the child of #36 and
pubgrub-rs#291, providing an
implementation that works for both cargo and uv. Upstream PR:
pubgrub-rs#298.
Specifically, we use the returned incompatibility in
astral-sh/uv#9843, but not
`PackageResolutionStatistics`.
---
Whenever we either discard a version due to its dependencies or perform
conflict resolution, we return the last conflict that led to discarding
them.
In cargo, we use this information for prioritization, which speeds up
resolution (`cargo run -r -- -m pub --with-solana --filter
solana-archiver-lib -t 16` goes from 90s to 20s on my machine).
Configurations that are noticeably slower for the solana test case:
* All incompatibilities unit propagation
* Only the last root cause in unit propagation
* No incompatibilities from unit propagation
* No incompatibilities from `add_version`
* Only affect counts (without culprit counts)
* Backtracking with the same heuristic as
astral-sh/uv#9843 (backtracking once after
affected hits 5)
In uv, we use this to re-prioritize and backtrack when a package
decision accumulated to many conflicts. Since we have our own solver
loop, we add the incompatibility to our own tracking instead.
Built on pubgrub-rs#291
## Benchmarks
Main:
```
index commit hash: 82086e46740d7a9303216bfac093e7268a95121f
index commit time: 2024-11-30T18:18:14Z
index size: 32
solana in index: 32
Pub CPU time: 1215.49s == 20.26min
Cargo CPU time: skipped
Cargo check lock CPU time: skipped
Pub check lock CPU time: skipped
Wall time: 80.58s == 1.34min
```
With pubgrub-rs#291:
```
index commit hash: 82086e46740d7a9303216bfac093e7268a95121f
index commit time: 2024-11-30T18:18:14Z
index size: 32
solana in index: 32
Pub CPU time: 467.73s == 7.80min
Cargo CPU time: skipped
Cargo check lock CPU time: skipped
Pub check lock CPU time: skipped
Wall time: 34.76s == 0.58min
```
This PR:
```
index commit hash: 82086e46740d7a9303216bfac093e7268a95121f
index commit time: 2024-11-30T18:18:14Z
index size: 32
solana in index: 32
Pub CPU time: 271.79s == 4.53min
Cargo CPU time: skipped
Cargo check lock CPU time: skipped
Pub check lock CPU time: skipped
Wall time: 20.17s == 0.34min
```
0 commit comments