Buck2, новая система сборки Facebook

Buck2-герой

Buck2, новая система сборки Facebook с открытым исходным кодом

Facebook представил недавно выпустила новую систему сборки под названием «Buck2», в которой отмечается, что она ориентирован на сборку проектов из репозиториев очень большие, которые включают код на разных языках программирование.

Различия между новой реализацией и системой ранее использованный доллар Через facebook используют язык Rust вместо Java и существенное повышение эффективности и производительности процесса сборки (во внутренних тестах на той же инфраструктуре Buck2 выполняет сборочные задачи в два раза быстрее, чем Buck).

Системы сборки стоят между разработчиком и работающим кодом, поэтому все, что мы можем сделать, чтобы сделать процесс быстрее или продуктивнее, напрямую влияет на то, насколько эффективным может быть разработчик. Цель Buck2 заключалась в том, чтобы сохранить то, что нам нравилось в Buck1 (основы и рабочие процессы), вдохновиться инновациями после Buck1 (включая Bazel, Adapton и Shake) и сосредоточиться на скорости и предоставлении новых возможностей.

О Бак2

Подчеркивается, что система не привязана к созданию кода на конкретных языках и по умолчанию он поддерживает проекты компоновщика, написанные на C++, Python, Rust, Kotlin, Erlang, Swift, Objective-C, Haskell и OCaml, используемые Facebook.

Язык Starlark, основанный на Python (как и в Bazel), используется для разработки плагинов, создания скриптов и правил. Starlark позволяет расширить возможности системы сборки и абстрагироваться от конкретных языков, используемых в строящихся проектах.

Упоминается, что высокая производительность достигается за счет кэширования результатов, распараллеливание работы и поддержка удаленного выполнения задач (Remote Build Execution).

Среда сборки использует понятие «герметичность»: скомпилированный код оторван от внешнего мира, в процессе сборки ничего извне не загружается, а многократное выполнение задания на разных системах приводит к одному и тому же результату (повторные сборки, например, результата компиляции проекта на машина от разработчика будет точно такой же, как сборка на сервере непрерывной интеграции). Ситуация отсутствия зависимости воспринимается в Buck2 как баг.

Со стороны Основные характеристики Buck2, выделяются следующие:

  • Правила поддержки языков программирования и системы сборки ядра полностью разделены. Правила написаны на языке Starlark, а инструментарий и реализация Starlark написаны на Rust.
  • В системе сборки используется единый инкрементальный граф зависимостей (без staging), что позволяет увеличить глубину распараллеливания работы по сравнению с Buck и Bazel и избежать разного рода багов.
  • Код Buck2, размещенный на GitHub, и правила поддержки языка программирования практически идентичны внутренней версии, используемой в инфраструктуре Facebook (единственные отличия — ссылка на версии компилятора и серверы сборки, используемые Facebook).
  • Система сборки предназначена для интеграции с системами удаленного выполнения заданий, которые позволяют запускать задания на удаленных серверах. API удаленного выполнения совместим с Bazel и был протестирован на совместимость с Buildbarn и EngFlow.
  • Предусмотрена интеграция с виртуальными файловыми системами, в которых представлено содержимое всего репозитория, но фактически работа ведется с реальной локальной частью части репозитория (разработчик видит репозиторий целиком, но только то, что требуется) файлы, к которым осуществляется доступ, извлекаются из репозитория). Поддерживаются VFS на основе EdenFS и Git LFS, которые используются Sapling.

Наконец, для тех, кто хочет узнать об этом больше, они должны знать, что код распространяется под лицензией Apache 2.0, и они могут ознакомиться с деталями. По следующей ссылке.


Оставьте свой комментарий

Ваш электронный адрес не будет опубликован. Обязательные для заполнения поля помечены *

*

*

  1. Ответственный за данные: Мигель Анхель Гатон
  2. Назначение данных: контроль спама, управление комментариями.
  3. Легитимация: ваше согласие
  4. Передача данных: данные не будут переданы третьим лицам, кроме как по закону.
  5. Хранение данных: база данных, размещенная в Occentus Networks (ЕС)
  6. Права: в любое время вы можете ограничить, восстановить и удалить свою информацию.