• Stars
    star
    154
  • Rank 242,095 (Top 5 %)
  • Language
    Rust
  • License
    BSD 3-Clause "New...
  • Created about 1 year ago
  • Updated 4 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

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

Resolvo: Fast package resolver written in Rust

License crates.io Build Status Project Chat Docs

Resolvo implements a fast package resolution algorithm based on CDCL SAT solving.

Projects using resolvo

  • rip: An async package resolver and installer for Python PyPI packages
  • rattler: Conda package resolver and installer (non-async)
  • resolvo-rpm: Experimental RPM resolver for Fedora / RedHat / OpenSUSE ... RPM packages
  • ... add yours!

Features

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.
  • Resolvo optionally provides an async interface to allow concurrent metadata fetching.
  • 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.

More Repositories

1

mamba

The Fast Cross-Platform Package Manager
C++
6,696
star
2

quetz

The Open-Source Server for Conda Packages
Python
280
star
3

gator

Conda environment and package management extension from within Jupyter
TypeScript
260
star
4

micromamba-docker

Rapid builds of small Conda-based containers using micromamba.
Shell
258
star
5

boa

The fast conda package builder, based on mamba
Python
253
star
6

setup-micromamba

GitHub Action to set up micromamba
TypeScript
94
star
7

vscode-micromamba

A VSCode extension to generate development environments using micromamba and conda-forge package repository
TypeScript
82
star
8

provision-with-micromamba

[DEPRECATED] Use setup-micromamba instead
JavaScript
74
star
9

rhumba

The R package manager that is blazingly fast ⚑. Powered by mamba.
C++
72
star
10

micromamba-releases

Micromamba executables mirrored from conda-forge as Github releases
Python
54
star
11

micromamba-devcontainer

A micromamba-based VS Code development container image.
Shell
39
star
12

setup-mamba

A GitHub action for setting up the Mamba package manager
TypeScript
20
star
13

picomamba

Minimalistic, experimental mamba, compiles to WASM
Python
18
star
14

multisheller

Python
15
star
15

powerloader

C++
15
star
16

minirhumba

Mini installer that contains everything that's necessary to run rhumba
Shell
14
star
17

monstructor

The mamba constructor
C++
13
star
18

mamba-navigator

A web UI for exploring Mamba environments
TypeScript
12
star
19

boa-forge

New style recipes for boa, with features enabled
Python
11
star
20

ansible-role-micromamba

Install micromamba, and optionally create a base conda environment.
9
star
21

quetz-frontend

Quetz Frontend
TypeScript
8
star
22

rattler-server

A server that solves environments using rattler!
Rust
8
star
23

quetz-client

A Python client for Quetz.
Python
5
star
24

build-locally-ansible

Build locally (in the cloud) with Ansible
Jinja
4
star
25

devcontainer-features

Shell
4
star
26

conda-specs

A collection of specs, and spec proposals for Mamba packages, recipes and repositories
3
star
27

design

Design resources
3
star
28

bitfurnace

Cross platform build helpers for conda-forge
Python
3
star
29

cmake-micromamba

Install dependencies using micromamba directly from a CMake script
CMake
2
star
30

quetz-theme

A dark-yellow theme for JupyterLab and Quetz
CSS
2
star
31

libcred

Cross-platform secure credential storage - port of keytar to pure C++ library
C++
2
star
32

conda_oci_mirror

Tools to mirror conda packages to an OCI registry
Python
1
star
33

quetz-plugin-cookiecutter

cookiecutter template for quetz plugins
Python
1
star