Разработчик (и) | |
---|---|
Первый выпуск | 17 апреля 2013 г.; 7 лет назад (17.04.2013) |
S настольный выпуск | 2019.10.17.01 / 17 октября 2019 г.; 12 месяцев назад (17.10.2019) |
Репозиторий | |
Написано на | Java |
Операционная система | Кросс-платформенная |
Лицензия | Apache License 2.0 |
Веб-сайт | buck.build |
Buck - это многоязычная система сборки, разработанная и используемая Facebook. Он был разработан для создания небольших многократно используемых модулей, состоящих из кода и ресурсов в монорепозитории, и поддерживает C ++ (Objective-C, Swift ), Shell, Java (Kotlin, Groovy ), Python, Lua, OCaml, Rust, Go и другие исходные коды в качестве входных данных для двоичной цели на соответствующих целевых платформах, таких как IOS, Android, .NET и Java VM среды выполнения. Buck лицензирован в соответствии с лицензией Apache License 2.0..
Buck требует явного объявления зависимостей и обеспечивает это путем использования дерева символических ссылок. Поскольку все зависимости являются явными, а Buck имеет направленный ациклический граф всех исходных файлов и целей сборки, Buck может выполнять инкрементную перекомпиляцию, создавая только целевые объекты, расположенные ниже по течению файлов, которые были изменены. Buck вычисляет ключ для каждой цели, который является хешем содержимого всех файлов, от которых он зависит. Он сохраняет сопоставление этого ключа со встроенной целью в кэше сборки. Предполагая, что все цели являются детерминированными функциями содержимого своих зависимостей, вы можете поделиться этим кешем сборки между разработчиками и непрерывной интеграцией (CI), поскольку Buck поддерживает HTTP Cache API.
.