What's New in Mamba Development

Original author: Wolf Vollprecht
  • Transfer

A lot of time has passed since we talked about what's new in the serpentine country. Mamba is still fast, supports more Conda operations and has grown a longer tail (backend) thanks to changes in libsolv.



Speeding up the snake!

What is Mamba?


Mamba is a drop-in replacement for Conda, the awesome cross-platform package manager. In our opinion, Conda has one fatal flaw: it is too slow when many packages are already installed or when installing multiple packages at the same time. Mamba still uses Conda for almost everything except resolving dependencies. We replaced this part of Conda with an alternative implementation called libsolv - C library, which is already the basis of package managers on Linux systems like dnf in Fedora or zypper in OpenSuse.


The command line interface, working with the environment, the package file format, the installation process, the repodata format and everything else are one-on-one like in Conda and run on the same Python code as Conda. So the difference, and the truth, is only in resolving dependencies!


What's new


The first good news is that our edits of libsolv for Windows Support (MSVC) have been added to upstream. This means that now libsolv works fine on all major operating systems (Windows, Linux and OS X). In addition, Michael Schröder from OpenSUSE helped us a lot by integrating Conda support into libsolv itself!


The latest version of Mamba can be used not only for installation, but also for updating and removing modules.


For example, now the teams


$ mamba update xtensor -c conda-forge

and


$ mamba remove numpy

work without problems and much faster than in Conda.


Thanks to Conda support at the libsolv level, packages will now match according to exactly the same algorithm as in Python. You can use "complex" arguments on the command line, for example:


$ mamba install "blas=*=openblas"

Thanks to our friends in Binder / repo2docker, we began to support installation from yml files too! I am glad to announce that she passes all the tests from repo2docker!


$ mamba env create -f xstack.yml

Where xstack.yml is a yml file conforming to the Conda format.


Last but not least, Mamba is no longer in alpha status. Now it can be downloaded from the default conda-forge channel:


conda install mamba -c conda-forge # or ... 
mamba update mamba -c conda-forge # of course ;)

Mamba in Mini: minimamba!



Just as Conda has miniconda for a minimal basic installation, now we have minimamba using the same mechanism for preparing for Mamba installation. This is very cool, since soon Mamba can be used in CI, where it can significantly speed up the assembly!


Download Page


Future plans


Although we are already very pleased with Mamba, as we use it in daily activities, there is still work to do:


  • Refactor the code to achieve direct compatibility with the Conda dependency resolution class to run its tests
  • Add information about the process of downloading repository data
  • Add support for feature selection and tracking
  • Allow updating all installed packages (now you can update only selected packages, i.e. `mamba update xtensor numpy`)

And a couple of changes like these - not very complex, but require time to implement. We are still thinking of launching a campaign on KickStarter or something like that to ensure stability financing.


If you want to contribute, Mamba lives here.


If you want to stay up to date: https://twitter.com/wuoulf


Also popular now: