Novidades no desenvolvimento de Mamba

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

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


All Articles