• Stars
    star
    127
  • Rank 272,930 (Top 6 %)
  • Language
    Rust
  • License
    BSD 3-Clause "New...
  • Created 7 months ago
  • Updated 3 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,027
star
2

quetz

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

gator

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

boa

The fast conda package builder, based on mamba
Python
248
star
5

micromamba-docker

Rapid builds of small Conda-based containers using micromamba.
Shell
243
star
6

rattler

Rust crates to work with the Conda ecosystem.
Rust
214
star
7

setup-micromamba

GitHub Action to set up micromamba
TypeScript
86
star
8

provision-with-micromamba

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

vscode-micromamba

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

rhumba

The R package manager that is blazingly fast ⚡. Powered by mamba.
C++
68
star
11

micromamba-releases

Micromamba executables mirrored from conda-forge as Github releases
Python
42
star
12

micromamba-devcontainer

A micromamba-based VS Code development container image.
Shell
34
star
13

setup-mamba

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

picomamba

Minimalistic, experimental mamba, compiles to WASM
Python
16
star
15

multisheller

Python
15
star
16

powerloader

C++
15
star
17

minirhumba

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

mamba-navigator

A web UI for exploring Mamba environments
TypeScript
12
star
19

monstructor

The mamba constructor
C++
11
star
20

boa-forge

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

ansible-role-micromamba

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

quetz-frontend

Quetz Frontend
TypeScript
8
star
23

rattler-server

A server that solves environments using rattler!
Rust
7
star
24

quetz-client

A Python client for Quetz.
Python
5
star
25

build-locally-ansible

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

devcontainer-features

Shell
4
star
27

bitfurnace

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

conda-specs

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

design

Design resources
3
star
30

cmake-micromamba

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

quetz-theme

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

libcred

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

conda_oci_mirror

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

quetz-plugin-cookiecutter

cookiecutter template for quetz plugins
Python
1
star