Was ist neu in der Mamba-Entwicklung?

Es ist viel Zeit vergangen, seit wir darüber gesprochen haben, was es Neues im Serpentinenland gibt. Mamba ist immer noch schnell, unterstützt mehr Conda-Operationen und hat dank Änderungen in libsolv einen längeren Schwanz (Backend).



Beschleunige die Schlange!

Was ist Mamba?


Mamba ist ein Ersatz für Conda, den großartigen plattformübergreifenden Paketmanager. Unserer Meinung nach hat Conda einen schwerwiegenden Fehler: Es ist zu langsam, wenn viele Pakete bereits installiert sind oder wenn mehrere Pakete gleichzeitig installiert werden. Mamba verwendet Conda immer noch für fast alles außer zum Auflösen von Abhängigkeiten. Wir haben diesen Teil von Conda durch eine alternative Implementierung namens libsolv-C library ersetzt, die bereits die Basis für Paketmanager auf Linux-Systemen wie dnf in Fedora oder zypper in OpenSuse ist.


Die Befehlszeilenschnittstelle, die mit der Umgebung, dem Paketdateiformat, dem Installationsprozess, dem Repodatenformat und allem anderen zusammenarbeitet, ist wie in Conda eins zu eins und wird mit demselben Python-Code wie Conda ausgeführt. Der Unterschied und die Wahrheit besteht also nur in der Auflösung von Abhängigkeiten!


Was gibt's Neues


Die erste gute Nachricht ist, dass unsere Änderungen von libsolv für Windows Support (MSVC) dem Upstream hinzugefügt wurden. Dies bedeutet, dass libsolv jetzt auf allen gängigen Betriebssystemen (Windows, Linux und OS X) einwandfrei funktioniert. Darüber hinaus hat uns Michael Schröder von OpenSUSE sehr geholfen, indem er den Conda-Support in libsolv selbst integriert hat!


Die neueste Version von Mamba kann nicht nur zum Installieren, sondern auch zum Aktualisieren und Entfernen von Modulen verwendet werden.


Zum Beispiel jetzt die Teams


$ mamba update xtensor -c conda-forge 

und


 $ mamba remove numpy 

arbeiten ohne Probleme und viel schneller als in Conda.


Dank der Conda-Unterstützung auf libsolv-Ebene stimmen Pakete jetzt nach genau demselben Algorithmus wie in Python überein. Sie können "komplexe" Argumente in der Befehlszeile verwenden, zum Beispiel:


 $ mamba install "blas=*=openblas" 

Dank unserer Freunde in Binder / repo2docker haben wir begonnen, die Installation auch von yml-Dateien zu unterstützen! Ich freue mich, Ihnen mitteilen zu können, dass sie alle Tests von repo2docker bestanden hat!


 $ mamba env create -f xstack.yml 

Wobei xstack.yml eine yml-Datei ist, die dem Conda-Format entspricht.


Last but not least befindet sich Mamba nicht mehr im Alpha-Status. Jetzt kann es vom Standard-Conda-Forge-Kanal heruntergeladen werden:


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

Mamba in Mini: Minimamba!



So wie Conda Miniconda für eine minimale Basisinstallation hat, haben wir jetzt Minimamba , die denselben Mechanismus für die Vorbereitung der Mamba-Installation verwenden. Dies ist sehr cool, da Mamba bald in CI verwendet werden kann, wo es die Montage erheblich beschleunigen kann!


Seite herunterladen


Weitere Pläne


Obwohl wir mit Mamba bereits sehr zufrieden sind, da wir es für die täglichen Aktivitäten verwenden, gibt es noch viel zu tun:


  • Refaktorieren Sie den Code, um eine direkte Kompatibilität mit der Conda-Abhängigkeitsauflösungsklasse zu erreichen und die Tests auszuführen
  • Fügen Sie Informationen zum Herunterladen von Repository-Daten hinzu
  • Unterstützung für die Auswahl und Nachverfolgung von Funktionen hinzufügen
  • Erlaube das Aktualisieren aller installierten Pakete (jetzt kannst du nur ausgewählte Pakete aktualisieren, d. H. `Mamba update xtensor numpy`)

Und ein paar Änderungen wie diese - nicht sehr komplex, erfordern aber Zeit für die Implementierung. Wir denken immer noch darüber nach, eine Kampagne auf KickStarter oder ähnliches zu starten, um die Stabilitätsfinanzierung sicherzustellen.


Wenn Sie dazu beitragen möchten, lebt Mamba hier.


Wenn Sie auf dem Laufenden bleiben möchten: https://twitter.com/wuoulf

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


All Articles