Meta* представила систему сборки Buck2
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**:
* признана экстремистской организацией, её деятельность в России запрещена;
** запрещены в России.