Buck2, новата система за изграждане на Facebook

Buck2-Hero

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.
  • Осигурена е интеграция с виртуални файлови системи, в които се представя съдържанието на цялото хранилище, но всъщност работата се извършва с реалната локална част на част от хранилището (разработчикът вижда цялото хранилище, но само това, което се изисква) достъпните файлове се извличат от хранилището). Поддържат се базирани на EdenFS VFS и Git LFS, които се използват от Sapling.

И накрая, за тези, които се интересуват от възможността да научат повече за него, те трябва да знаят, че кодът се разпространява под лиценза Apache 2.0 и могат да се консултират с подробностите В следващия линк.


Оставете вашия коментар

Вашият имейл адрес няма да бъде публикуван. Задължителните полета са отбелязани с *

*

*

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