Что нового в разработке Mamba

Моя цель - предложение широкого ассортимента товаров и услуг на постоянно высоком качестве обслуживания по самым выгодным ценам.

Прежде чем перейти к статье, хочу вам представить, экономическую онлайн игру Brave Knights, в которой вы можете играть и зарабатывать. Регистируйтесь, играйте и зарабатывайте!

Прошло немало времени с тех пор, как мы рассказывали о том, что нового в змеиной стране. Mamba всё еще быстра, поддерживает больше операций Conda и отрастила хвост (бэкенд) посолиднее благодаря изменениям в libsolv.



Ускоряем змею!

А что такое Mamba?


Mamba — это drop-in замена Conda, потрясающего кросс-платформенного менеджера пакетов. На наш взгляд у Conda есть один фатальный недостаток: она слишком медленная, когда много пакетов уже установлено или при одновременной установке нескольких пакетов. Mamba по-прежнему использует Conda почти для всего, кроме разрешения зависимостей. Мы заменили эту часть Conda на альтернативную реализацию под названием libsolv — C библиотеку, которая уже лежит в основе менеджеров пакетов в Linux системах типа dnf в Fedora или zypper в OpenSuse.


Интерфейс командной строки, работа с окружением, формат файла пакета, процесс установки, формат repodata и всё остальное — один-в-один как в Conda и работает на том же питоновском коде, что и Conda. Так что отличие, и правда, только в разрешении зависимостей!


Что нового


Первая хорошая новость в том, что наши правки libsolv для поддержки Windows (MSVC) были добавлены в upstream. Это значит, что теперь libsolv отлично работает на всех основных операционных системах (Windows, Linux и OS X). Кроме того, Michael Schröder из OpenSUSE очень помог нам, интегрировав поддержку Conda в саму libsolv!


Последнюю версию Mamba можно использовать не только для установки, но и для обновления и удаления модулей.


Например, сейчас команды


$ mamba update xtensor -c conda-forge

и


$ mamba remove numpy

работают без проблем и гораздо быстрее чем в Conda.


Благодаря поддержке Conda на уровне libsolv пакеты теперь будут матчиться по абсолютно тому же алгоритму, что и в Python. Можно использовать «сложные» аргументы в командной строке, например:


$ mamba install "blas=*=openblas"

Благодаря нашим друзьям в Binder/repo2docker мы стали поддерживать установку и из yml файлов! Рад сообщить что она проходит все тесты из repo2docker!


$ mamba env create -f xstack.yml

Где xstack.yml это yml файл, соответствующий формату Conda.


И последнее по порядку, но не по важности: Mamba перестала быть в статусе «альфа». Теперь её можно загрузить из дефолтного канала conda-forge:


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

Mamba в Mini: minimamba!



Так же как у Conda есть miniconda для минимальной базовой установки, теперь и у нас есть minimamba, использующая тот же самый механизм подготовки к установке Mamba. Это очень круто, так как вскоре Mamba можно будет использовать в CI, где она сможет значительно ускорить сборку!


Страница для загрузки


Дальнейшие планы


Хотя мы уже очень довольны Mamba, так как используем её в повседневной деятельности, есть ещё над чем поработать:


  • Отрефакторить код, чтобы добиться прямой совместимости с классом разрешения зависимостей в Conda, чтобы прогонять её тесты
  • Добавить информацию о процессе скачивания данных репозитория
  • Добавить поддержку выбора «фич» и их отслеживание
  • Разрешить обновление всех установленных пакетов (сейчас можно обновлять только выбранные пакеты, т.е. `mamba update xtensor numpy`)

И ещё пара изменений вроде этих — не очень сложных, но требующих времени на реализацию. Мы все ещё подумываем о запуске кампании на KickStarter или о чём-нибудь в этом роде, чтобы обеспечить финансирование стабильности работы.


Если вы захотите внести свой вклад, Mamba живёт здесь.


Если вы хотите оставаться в курсе событий: https://twitter.com/wuoulf

Источник: https://habr.com/ru/post/456114/


Интересные статьи

Интересные статьи

По мере приближения запуска нового поколения консолей Insomniac Games начала публиковать больше материалов, раскрывающих подробности о Marvel’s Spider-Man и Marvel's Spider-Man: M...
Как известно, Vue.js — это фреймворк, основанный на JavaScript, популярность которого в последние годы стремительно растёт. У роста популярности Vue есть множество причин. Сюда вхо...
Привет, Хабр! XR-разработкой я занимаюсь около семи лет: проделал путь от младшего специалиста до директора бизнес-юнита КРОК Иммерсивные технологии. Моя команда уже более пяти лет со...
Привет, Хабр. Мы уже 4 года ведем блог здесь и собрали большое сообщество разработчиков, почти 17 тысяч! Мы пишем для вас статьи, переводим то, что стоит внимания и создаем туториалы. П...
Модульность является одним из ключевых принципов разработки программного обеспечения с 1960-х годов. Применение этого принципа приносит в программирование много полезного. Модульность способствуе...