Nouveautés du développement Mamba

Beaucoup de temps s'est écoulé depuis que nous avons parlé des nouveautés du pays serpentin. Mamba est toujours rapide, prend en charge plus d'opérations Conda et a augmenté de plus en plus (backend) grâce aux changements dans libsolv.



Accélérer le serpent!

Qu'est-ce que Mamba?


Mamba est un remplacement direct de Conda, le formidable gestionnaire de packages multiplateforme. À notre avis, Conda a un défaut fatal: il est trop lent lorsque de nombreux packages sont déjà installés ou lors de l'installation de plusieurs packages en même temps. Mamba utilise toujours Conda pour presque tout sauf la résolution des dépendances. Nous avons remplacé cette partie de Conda par une implémentation alternative appelée libsolv-C library, qui est déjà la base des gestionnaires de paquets sur les systèmes Linux comme dnf dans Fedora ou zypper dans OpenSuse.


L'interface de ligne de commande, fonctionnant avec l'environnement, le format de fichier de package, le processus d'installation, le format de repodata et tout le reste est un à un comme dans Conda et s'exécute sur le même code Python que Conda. La différence et la vérité ne résident donc que dans la résolution des dépendances!


Quoi de neuf


La première bonne nouvelle est que nos modifications du support libsolv pour Windows (MSVC) ont été ajoutées en amont. Cela signifie que maintenant libsolv fonctionne correctement sur tous les principaux systèmes d'exploitation (Windows, Linux et OS X). De plus, Michael Schröder d'OpenSUSE nous a beaucoup aidés en intégrant le support Conda dans libsolv lui-même!


La dernière version de Mamba peut être utilisée non seulement pour l'installation, mais également pour la mise à jour et la suppression de modules.


Par exemple, maintenant les équipes


$ mamba update xtensor -c conda-forge 

et


 $ mamba remove numpy 

travailler sans problème et beaucoup plus vite que dans Conda.


Grâce à la prise en charge de Conda au niveau de libsolv, les packages correspondront désormais exactement selon le même algorithme qu'en Python. Vous pouvez utiliser des arguments "complexes" sur la ligne de commande, par exemple:


 $ mamba install "blas=*=openblas" 

Grâce à nos amis de Binder / repo2docker, nous avons également commencé à prendre en charge l'installation à partir de fichiers yml! Je suis heureux d'annoncer qu'elle réussit tous les tests de repo2docker!


 $ mamba env create -f xstack.yml 

Où xstack.yml est un fichier yml conforme au format Conda.


Enfin et surtout, Mamba n'est plus en statut alpha. Maintenant, il peut être téléchargé à partir du canal conda-forge par défaut:


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

Mamba in Mini: minimamba!



Tout comme Conda a miniconda pour une installation de base minimale, nous avons maintenant minimamba utilisant le même mécanisme pour préparer l'installation de Mamba. C'est très cool, car bientôt Mamba peut être utilisé en CI, où il peut accélérer considérablement l'assemblage!


Page de téléchargement


Plans supplémentaires


Bien que nous soyons déjà très satisfaits de Mamba, car nous l'utilisons dans les activités quotidiennes, il y a encore du travail à faire:


  • Refactorisez le code pour obtenir une compatibilité directe avec la classe de résolution de dépendance Conda pour exécuter ses tests
  • Ajouter des informations sur le processus de téléchargement des données du référentiel
  • Ajout de la prise en charge de la sélection et du suivi des fonctionnalités
  • Autoriser la mise à jour de tous les packages installés (vous pouvez désormais mettre à jour uniquement les packages sélectionnés, c'est-à-dire `mamba update xtensor numpy`)

Et quelques changements comme ceux-ci - pas très complexes, mais nécessitent du temps pour être mis en œuvre. Nous pensons toujours à lancer une campagne sur KickStarter ou quelque chose comme ça pour assurer le financement de la stabilité.


Si vous voulez contribuer, Mamba vit ici.


Si vous voulez rester à jour: https://twitter.com/wuoulf

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


All Articles