📜 ⬆️ ⬇️

What's new in the development of Mamba

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



Accelerate the snake!

What is Mamba?


Mamba is a drop-in replacement for Conda, a terrific cross-platform package manager. In our opinion, Conda has one fatal flaw: it is too slow when many packages are already installed or when several packages are being installed simultaneously. Mamba still uses Conda for almost everything except dependency resolution. We replaced this part of Conda with an alternative implementation called libsolv - C library, which already underlies package managers on Linux systems like dnf in Fedora or zypper in OpenSuse.


The command line interface, the environment, the package file format, the installation process, the repodata format and everything else is one-to-one as in Conda and works 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 libsolv edits for Windows support (MSVC) have been added to upstream. This means that libsolv now 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 to install, but also to upgrade and remove modules.


For example, now commands


$ mamba update xtensor -c conda-forge 

and


 $ mamba remove numpy 

work without problems and much faster than at Conda.


Thanks to the support of Conda at the level of libsolv, the packages will now match using 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 the installation from yml files too! I am glad to announce that she passes all tests from repo2docker!


 $ mamba env create -f xstack.yml 

Where xstack.yml is the yml file that conds.


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


 conda install mamba -c conda-forge # or ... <br />mamba update mamba -c conda-forge # of course ;) 

Mamba Mini: minimamba!



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


Download page


Future plans


Although we are already very pleased with Mamba, since we use it in our daily activities, there is still a lot of work to be done:



And a couple more changes like these - not very complicated, but time consuming to implement. We are still thinking about launching a KickStarter campaign or something like that, to provide funding for job stability.


If you want to contribute, Mamba lives here.


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


')

Source: https://habr.com/ru/post/456114/


All Articles