Skip to content

Fast package resolver written in Rust (CDCL based SAT solving)

License

Notifications You must be signed in to change notification settings

sumanth-manchala/resolvo

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

88 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

banner

Resolvo: Fast package resolver written in Rust

License crates.io Build Status Project Chat

Resolvo implements a fast package resolution algorithm based on CDCL SAT solving. If resolvo is unable to find a solution it outputs a human-readable error message:

The following packages are incompatible
|-- bluesky-widgets >=0, <100 can be installed with any of the following options:
    |-- bluesky-widgets 42 would require
        |-- suitcase-utils >=0, <54, which can be installed with any of the following options:
            |-- suitcase-utils 53
|-- suitcase-utils >=54, <100 cannot be installed because there are no viable options:
    |-- suitcase-utils 54, which conflicts with the versions reported above.

Resolve provides a generic interface which allows integrating the solver with a variety of package managers. For instance resolvo is used in rattler and pixi to solve packages from the conda ecosystem.

Originally resolvo started out as a port/fork of libsolv but it has since then diverged substantially. However, the same CDCL algorithm based on MiniSats An Extensible SAT-solver is still used underneath. Major differences compared to libsolv are:

  • Resolvo does not come with built-in support for several packaging ecosystems but instead provides a generic interface to allow it to be used in different scenarios.
  • Resolvo has support for incremental/lazy solving. This allows users to quickly find solutions in ecosystems where retrieving package metadata is expensive.
  • Resolvo is considerably faster than libsolv in large complex cases.
  • Resolvo can easily be used in multithreaded environments.
  • Resolvo provides human-readable error messages out-of-the-box.
  • However, Libsolv is more extensive and supports more complex queries.

Contributing 😍

We would love to have you contribute! See the CONTRIBUTION.md for more info. For questions, requests or a casual chat, we are very active on our discord server. You can join our discord server via this link.

About

Fast package resolver written in Rust (CDCL based SAT solving)

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Rust 100.0%