Meta* представила систему сборки Buck2

31af1847b61dfe22536756ec5477835a

Meta* представила систему Buck2, предназначенную для сборки проектов из больших репозиториев. В новой версии компания отказалась от Java и переписала кода на Rust. Вместе с этим в Meta* рассказали, что скорость сборки увеличилась в два раза.

Сама система Buck2 поддерживает сборку проектов на языках C++, Python, Rust, Kotlin, Swift, Objective-C, Haskell, OCaml и других, которые Meta* использует в разработке своих продуктов. Также Buck2 может собирать проекты, написанные на нескольких языках. К примеру, главный модуль на Python может использовать библиотеку на Rust, которая зависит от библиотеки на C. Разработчиками заявлена поддержка сборки на нескольких удалённых серверах.

Основные нововведения в Buck2:

  • ядро системы теперь не связано с правилами поддержки языков программирования. Для написания правил используется язык Starlark, а он сам и вспомогательные инструменты реализованы с помощью Rust;

  • Buck2 полностью совместима с системой сборки Bazel от Google, EngFlow и Buildbarn;

  • на GitHub опубликован код сборочной системы, который Meta* использует в своей работе. Различия есть только в версиях компиляторов и других инструментов;

  • реализована поддержка виртуальных файловых систем. Заявлена поддержка VFS на базе Git LFS и EdenFS;

  • в Buck2 используется единый инкрементный график зависимостей. Это позволяет избежать ошибок, возникающих в Buck1 и Bazel.

Код сборочной системы доступен на GitHub, а на официальном сайте компания опубликовала документацию, руководство по работе с API и дополнительные материалы.

Meta Platforms*, а также принадлежащие ей Facebook** и Instagram**:
* признана экстремистской организацией, её деятельность в России запрещена;
** запрещены в России.

© Habrahabr.ru