Muito tempo se passou desde que conversamos sobre o que há de novo no país serpentino. O Mamba ainda é rápido, suporta mais operações da Conda e cresceu mais (backend), graças às mudanças no libsolv.
Acelerando a cobra!O que é o Mamba?
O Mamba é um substituto para o Conda, o incrível gerenciador de pacotes entre plataformas. Em nossa opinião, o Conda tem uma falha fatal: é muito lenta quando muitos pacotes já estão instalados ou ao instalar vários pacotes ao mesmo tempo. O Mamba ainda usa o Conda para quase tudo, exceto para resolver dependências. Substituímos esta parte do Conda por uma implementação alternativa chamada libsolv-C library, que já é a base dos gerenciadores de pacotes em sistemas Linux como o dnf no Fedora ou o zypper no OpenSuse.
A interface da linha de comando, trabalhando com o ambiente, o formato do arquivo do pacote, o processo de instalação, o formato repodata e tudo o mais, é semelhante ao Conda e é executada no mesmo código Python que o Conda. Portanto, a diferença e a verdade estão apenas na resolução de dependências!
Novidades
A primeira boa notícia é que nossas edições do libsolv for Windows Support (MSVC) foram adicionadas ao upstream. Isso significa que agora a libsolv funciona bem em todos os principais sistemas operacionais (Windows, Linux e OS X). Além disso, Michael Schröder, do OpenSUSE, nos ajudou bastante ao integrar o suporte da Conda ao próprio libsolv!
A versão mais recente do Mamba pode ser usada não apenas para instalação, mas também para atualizar e remover módulos.
Por exemplo, agora as equipes
$ mamba update xtensor -c conda-forge
e
$ mamba remove numpy
trabalhe sem problemas e muito mais rápido que no Conda.
Graças ao suporte da Conda no nível libsolv, os pacotes agora corresponderão exatamente com o mesmo algoritmo do Python. Você pode usar argumentos "complexos" na linha de comando, por exemplo:
$ mamba install "blas=*=openblas"
Graças aos nossos amigos no Binder / repo2docker, também começamos a oferecer suporte à instalação a partir de arquivos yml! Tenho o prazer de anunciar que ela passou em todos os testes do repo2docker!
$ mamba env create -f xstack.yml
Onde xstack.yml é um arquivo yml correspondente ao formato Conda.
Por último, mas não menos importante, o Mamba não está mais no status alfa. Agora ele pode ser baixado do canal conda-forge padrão:
conda install mamba -c conda-forge # or ... <br />mamba update mamba -c conda-forge # of course ;)
Mamba no Mini: minimamba!
Assim como o Conda possui miniconda para uma instalação básica mínima, agora temos o minimamba usando o mesmo mecanismo para preparar a instalação do Mamba. Isso é muito legal, pois em breve o Mamba poderá ser usado no CI, onde poderá acelerar significativamente a montagem!
Página de Download
Planos adicionais
Embora já estejamos muito satisfeitos com o Mamba, como o usamos nas atividades diárias, ainda há trabalho a fazer:
- Refatorar o código para obter compatibilidade direta com a classe de resolução de dependência Conda para executar seus testes
- Adicione informações sobre o processo de download de dados do repositório
- Adicione suporte para seleção e rastreamento de recursos
- Permitir a atualização de todos os pacotes instalados (agora você pode atualizar apenas os pacotes selecionados, ou seja, `mamba update xtensor numpy`)
E algumas mudanças como essas - não muito complexas, mas exigem tempo para serem implementadas. Ainda estamos pensando em lançar uma campanha no KickStarter ou algo assim para garantir o financiamento da estabilidade.
Se você quer contribuir, o Mamba mora aqui.
Se você quiser se manter atualizado: https://twitter.com/wuoulf