Facebook опубликовал систему сборки Buck2

Автор Сообщение
news_bot ®

Стаж: 6 лет 3 месяца
Сообщений: 27286

Создавать темы news_bot ® написал(а)
07-Апр-2023 16:11

Facebook представил новую сборочную систему Buck2, ориентированную на организацию сборки проектов из очень крупных репозиториев, включающих код на разных языках программирования. Ключевыми отличиями новой реализации от ранее применявшейся в Facebook системы Buck является использование языка Rust вместо Java и существенное увеличение эффективности и производительности сборочного процесса (во внутренних тестах в той же инфраструктуре Buck2 выполняет сборочные задания быстрее Buck в два раза). Код распространяется под лицензией Apache 2.0.
Система не привязана к сборке кода на конкретных языках и из коробки поддерживает сборку проектов, написанных на языках C++, Python, Rust, Kotlin, Erlang, Swift, Objective-C, Haskell и OCaml, используемых в Facebook. Для оформления дополнений, сборочных сценариев и правил применяется язык Starlark, основанный на Python (как в Bazel). Starlark позволяет расширять возможности сборочной системы и абстрагироваться от конкретных языков, применяемых в собираемых проектах.
Высокая производительнось достигается за счёт кэширования результатов, распараллелирования работ и поддержки удалённого выполнения заданий (Remote Build Execution). В сборочном окружении применяется концепция "гермитичности" - собираемый код отрезан от внешнего мира, в процессе сборки извне ничего не загружается, а повторные выполнения работ на разных системах приводят к одному и тому же результату (повторяемые сборки, например, результат сборки проекта на машине разработчика будет полностью совпадать со сборкой на сервере непрерывной интеграции). Ситуация отсутствия зависимости воспринимается в Buck2 как ошибка.
Ключевые особенности Buck2:
  • Правила поддержки языков программирования и ядро сборочной системы полностью разделены. Для правил используется язык Starlark, а инструментарий и реализация Starlark написаны на Rust.
  • В сборочной системе применяется единый инкрементальный граф зависимостей (без разделения на стадии), что позволяет повысить глубину распараллеливания работ по сравнению с Buck и Bazel и избежать многих типов ошибок.
  • Опубликованный на GitHub код Buck2 и правила поддержки языков программирования почти идентичны со внутренней версией, применяемой в инфраструктуре Facebook (отличия только в привязке к редакциям компиляторов и сборочным серверам, применяемым в Facebook).
  • Сборочная система спроектирована с оглядкой на интеграцию с системами удалённого выполнения заданий, позволяющими запускать работы на удалённых серверах. API для удалённого выполнения совместим с Bazel и протестирован на совместимость с Buildbarn и EngFlow.
  • Обеспечена интеграция с виртуальными файловыми системами, в которых представлено содержимое всего репозитория, но фактически работа осуществляется с актуальным локальным срезом части репозитория (разработчик видит весь репозиторий, но из репозитория извлекаются только востребованные файлы, к которым выполняется обращение). Поддерживаются VFS на базе EdenFS и Git LFS, которые используются в Sapling.

===========
Источник:
OpenNet.RU
===========

Похожие новости: Теги для поиска: #_buck2, #_buck, #_facebook, #_build
Профиль  ЛС 
Показать сообщения:     

Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы

Текущее время: 10-Май 10:50
Часовой пояс: UTC + 5