Buck - это кроссплатформенная кросс-языковая система сборки, предназначенная для крупномасштабной компиляции в Facebook. Все пакеты Buckaroo используют Buck в качестве системы сборки, поэтому само собой разумеется, что мы большие поклонники.
Однако, даже если вы не в масштабе Facebook, вот 7 причин, по которым, мы думаем, вам стоит попробовать Бак.
1. Проверенная технология
Бак - это не просто проект для любителей, который может потерять поддержку, когда создатель потеряет интерес. Он используется в производстве в Facebook, Uber и Dropbox, и это лишь некоторые из них. Вдобавок ко всему, многие из команды Бака являются бывшими сотрудниками Google, где они работали над Blaze, предшественником Бака (и Bazel) с закрытым исходным кодом. Buck - это кульминация огромного количества знаний о системах сборки.
2. Правильные инкрементальные сборки
Вы когда-нибудь удаляли папку сборки на всякий случай? Buck копирует (или создает символические ссылки) исходные файлы в промежуточную область перед компиляцией, чтобы зависимости были изолированы в песочнице. Каждый ввод сборки (заголовки, флаги и окружение) используется как ключ кеширования для артефактов сборки. Такой дисциплинированный подход означает, что Бак может каждый раз давать вам правильные инкрементальные сборки.
3. Частные заголовки
Для C / C ++ Buck позволяет отделить экспортированные заголовки (заголовки, доступные пользователям вашей библиотеки) от частных заголовков (заголовков, используемых для создания вашей библиотеки). Это огромный выигрыш для модульности кода C / C ++, поскольку он не позволяет другим модулям проникать за ваш API.
4. Хеши, а не отметки времени
Бак знает, когда перестроить цель, по хешам ее входных данных. Это означает, что меньше времени разработчика будет потрачено на ненужные перестройки, потому что вы коснулись, но не изменили файл. Buck невероятно хорошо работает с VCS ветвления, например Git.
5. Правильный язык сценариев
Любой, кто работал с CMake, поймет, как сложно работать с некачественным языком сценариев. Бак не изобретает велосипед и вместо этого использует Python для скриптов сборки.
Однако Бак использует Python контролируемым образом. Скрипты Python используются для создания целей сборки, а не для выполнения самой сборки. Это позволяет Buck выполнять код Python в одном потоке, но впоследствии выполнять сборку параллельно. В качестве дополнительного бонуса это означает, что результат Python можно кэшировать.
6. Более быстрые сборки
Бак понимает граф зависимостей вашего проекта, что позволяет ему параллельно строить независимые артефакты. Однако, в отличие от make -j4
, Бак всегда детерминирован. Вы даже можете делиться результатами инкрементной компиляции со своей командой, используя Buck Server.
7. Легко рассуждать о
Возможно, лучшая особенность Buck заключается в том, что файлы сборки легко рассуждать. Каждая цель может использовать только те зависимости, которые она объявляет, циклы зависимостей не допускаются, а рекурсия между выходными данными сборки невозможна.
Даже если вы никогда раньше не использовали Buck, вы, вероятно, сможете понять это:
Убежденный?
Перейдите на сайт Buck, чтобы начать.
Вас также может заинтересовать…
Хакерский полдень - это то, с чего хакеры начинают свои дни. Мы часть семьи @AMI. Сейчас мы принимаем заявки и рады обсудить рекламные и спонсорские возможности.
Чтобы узнать больше, прочтите нашу страницу о нас, поставьте лайк / напишите нам в Facebook или просто tweet / DM @HackerNoon.
Если вам понравился этот рассказ, мы рекомендуем прочитать наши Последние технические истории и Современные технические истории. До следующего раза не воспринимайте реалии мира как должное!