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

Бак2-Герой

Buck2, нова система збірки Facebook з відкритим кодом

Представлений Facebook нещодавно випустила нову систему збірки під назвою "Buck2", яка зазначає, що це так зосереджено на створенні проектів зі сховищ Muy великі, які містять код різними мовами програмування.

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

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

Про Buck2

Це підкреслюється система не прив'язана до створення коду на конкретних мовах і з коробки він підтримує проекти конструкторів, написані на 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 і уникнути багатьох видів помилок.
  • Код Buck2, опублікований на GitHub, і правила підтримки мови програмування майже ідентичні внутрішній версії, що використовується в інфраструктурі Facebook (відмінності полягають лише в посиланні на версії компілятора та сервери збірки, які використовує Facebook).
  • Система збірки розроблена для інтеграції з системами віддаленого виконання завдань, які дозволяють запускати завдання на віддалених серверах. API віддаленого виконання сумісний із Bazel і перевірено на сумісність із Buildbarn і EngFlow.
  • Передбачена інтеграція з віртуальними файловими системами, в яких представлений вміст всього репозиторію, але фактично робота ведеться з реальною локальною частиною частини репозиторію (розробник бачить весь репозиторій, але тільки те, що необхідний) файли, до яких здійснюється доступ, витягуються зі сховища). Підтримуються VFS на основі EdenFS і Git LFS, які використовуються Sapling.

Нарешті, для тих, хто зацікавлений у можливості дізнатися більше про це, вони повинні знати, що код поширюється за ліцензією Apache 2.0, і вони можуть ознайомитися з деталями У наступному посиланні.


Залиште свій коментар

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

*

*

  1. Відповідальний за дані: Мігель Анхель Гатон
  2. Призначення даних: Контроль спаму, управління коментарями.
  3. Легітимація: Ваша згода
  4. Передача даних: Дані не передаватимуться третім особам, за винятком юридичних зобов’язань.
  5. Зберігання даних: База даних, розміщена в мережі Occentus Networks (ЄС)
  6. Права: Ви можете будь-коли обмежити, відновити та видалити свою інформацію.