pubgrub-rs / pubgrub

PubGrub version solving algorithm implemented in Rust
https://pubgrub-rs.github.io/pubgrub/pubgrub/
Mozilla Public License 2.0
337 stars 30 forks source link

Future proof dependency provider. #148

Open Eh2406 opened 7 months ago

Eh2406 commented 7 months ago

Most breaking changes in our API involve changes to the dependency provider. We can cut new breaking changes if we need to, but we would all prefer to avoid it. On the other hand, we don't want to at API service for functionality that is not yet implemented. We should look through future possibilities (that we can predict) and see if there are ways to change the API now to make things more flexible in the future.

Here are some additional functionality we may want add at some point:

  1. The ability to add more different kinds of "dependencies" like constraints #124
  2. The ability to return a borrowed iterator of dependencies instead of a owned Map #18
  3. The ability to optimistically return a "no versions" incompatibility during prioritization #135
  4. The ability to ask for a different package to be re-prioritized due to outside information #138
  5. Provide statistics in should cancel about which packages are giving us trouble
  6. I knew I had more in mind when I started this post...

Tools at our disposal include: