Ha pasado mucho tiempo desde que hablamos sobre las novedades en el país serpentino. Mamba sigue siendo rápido, admite más operaciones de Conda y ha crecido mucho más tiempo (backend) gracias a los cambios en libsolv.
¡Acelerando la serpiente!¿Qué es la mamba?
Mamba es un reemplazo directo de Conda, el increíble administrador de paquetes multiplataforma. En nuestra opinión, Conda tiene un defecto fatal: es demasiado lento cuando muchos paquetes ya están instalados o cuando se instalan varios paquetes al mismo tiempo. Mamba todavía usa Conda para casi todo, excepto para resolver dependencias. Reemplazamos esta parte de Conda con una implementación alternativa llamada biblioteca libsolv - C, que ya es la base de los administradores de paquetes en sistemas Linux como dnf en Fedora o zypper en OpenSuse.
La interfaz de línea de comandos, que trabaja con el entorno, el formato de archivo del paquete, el proceso de instalación, el formato de repodatos y todo lo demás son uno a uno como en Conda y se ejecutan en el mismo código Python que Conda. ¡Entonces la diferencia, y la verdad, está solo en resolver dependencias!
Que hay de nuevo
La primera buena noticia es que nuestras ediciones de libsolv para el Soporte de Windows (MSVC) se han agregado a upstream. Esto significa que ahora libsolv funciona bien en todos los principales sistemas operativos (Windows, Linux y OS X). Además, Michael Schröder de OpenSUSE nos ayudó mucho al integrar el soporte de Conda en la propia libsolv.
La última versión de Mamba puede usarse no solo para la instalación, sino también para actualizar y eliminar módulos.
Por ejemplo, ahora los equipos
$ mamba update xtensor -c conda-forge
y
$ mamba remove numpy
trabajar sin problemas y mucho más rápido que en Conda.
Gracias al soporte de Conda en el nivel libsolv, los paquetes ahora coincidirán exactamente de acuerdo con el mismo algoritmo que en Python. Puede usar argumentos "complejos" en la línea de comando, por ejemplo:
$ mamba install "blas=*=openblas"
Gracias a nuestros amigos en Binder / repo2docker, ¡también comenzamos a admitir la instalación desde archivos yml! ¡Me alegra anunciar que pasa todas las pruebas de repo2docker!
$ mamba env create -f xstack.yml
Donde xstack.yml es un archivo yml que se ajusta al formato Conda.
Por último, pero no menos importante, Mamba ya no está en estado alfa. Ahora se puede descargar desde el canal predeterminado de conda-forge:
conda install mamba -c conda-forge # or ... <br />mamba update mamba -c conda-forge # of course ;)
Mamba en Mini: minimamba!
Así como Conda tiene miniconda para una instalación básica mínima, ahora tenemos minimamba usando el mismo mecanismo para preparar la instalación de Mamba. Esto es muy bueno, ya que pronto Mamba puede usarse en CI, ¡donde puede acelerar significativamente el ensamblaje!
Descargar página
Planes adicionales
Aunque ya estamos muy satisfechos con Mamba, ya que la usamos en las actividades diarias, todavía queda trabajo por hacer:
- Código de refactorización para compatibilidad directa con la clase de resolución de dependencia de Conda para ejecutar sus pruebas
- Agregar información sobre el proceso de descarga de datos del repositorio
- Agregue soporte para la selección y seguimiento de funciones
- Permitir la actualización de todos los paquetes instalados (ahora puede actualizar solo los paquetes seleccionados, es decir, `mamba update xtensor numpy`)
Y un par de cambios como estos, no muy complejos, pero requieren tiempo para implementarse. Todavía estamos pensando en lanzar una campaña en KickStarter o algo así para garantizar la estabilidad financiera.
Si quieres contribuir, Mamba vive aquí.
Si desea mantenerse actualizado: https://twitter.com/wuoulf