Vydání sestavení systému Bazel 2.0

Dostupný uvolnění otevřených montážních nástrojů Bazel 2.0, развиваемого инженерами из Google и используемого для сборки большинства внутренних проектов данной компании. Bazel обеспечивает сборку проекта, запуская необходимые компиляторы и тесты. Поддерживается сборка и тестирование кода на Java, C++, Objective-C, Python, Rust, Go и многих других языках, а также сборка мобильных приложений для Android и iOS. Код проекта distribuovány licencováno pod Apache 2.0.

Значительное изменение версии связано с добавлением изменений, нарушающих обратную совместимость. Начиная с Bazel 2.0 включены по умолчанию режимы «—incompatible_remap_main_repo» (ссылки по имени и через @ теперь ссылаются на один репозиторий), «—incompatible_disallow_dict_lookup»_(применение нехешируемых ключей),
«—incompatible_remove_native_maven_jar» и «—incompatible_prohibit_aapt1». Среди других изменений:

  • V týmu aquery появилась экспериментальная поддержка новой редауции формата вывода «proto» (—output=proto), которая пока отключена по умолчанию (—incompatible_proto_output_v2) и обеспечивает более компактное представление данных;
  • Добавлен флаг «—incompatible_remove_enabled_toolchain_types», позволяющий удалить поле PlatformConfiguration.enabled_toolchain_types;
  • Добавлена защита от загрузки пакетов, при загрузке которых при раскрытии путей используются цикличные символические ссылки;
  • Реализована возможность использования флага «—disk_cache» с внешними кэшами gRPC;
  • В пакет для Debian и бинарный инсталлятор включена улучшенная прослойка, обрабатывающая файлы ~/.bazelversion и переменную окружения $USE_BAZEL_VERSION;
  • В рамках подготовки к переводу файлов с манифестом runfiles в категорию устаревших возможностей добавлен флаг «—experimental_skip_runfiles_manifests».

Mezi charakteristické rysy Bazel patří vysoká rychlost, spolehlivost a opakovatelnost procesu montáže. K dosažení vysoké rychlosti sestavení Bazel aktivně používá techniky ukládání do mezipaměti a paralelizace pro proces sestavení. Soubory BUILD musí plně definovat všechny závislosti, na základě kterých se rozhodují o přestavbě komponent po provedení změn (přestavují se pouze změněné soubory) a paralelizaci procesu sestavení. Nástrojové vybavení také zajišťuje opakovatelnou montáž, tzn. výsledek výstavby projektu na vývojářském stroji bude zcela identický se stavbou na systémech třetích stran, jako jsou servery pro nepřetržitou integraci.

Na rozdíl od Make a Ninja používá Bazel přístup na vyšší úrovni k vytváření pravidel sestavení, ve kterém se namísto definování vazby příkazů na sestavované soubory používají abstraktnější hotové bloky, jako je „sestavení spustitelného souboru v C++“, „vytváření knihovny v C++“ nebo „provádění testu pro C++“, stejně jako identifikace cílových a sestavovacích platforem. V textovém souboru BUILD jsou komponenty projektu popsány jako hromada knihoven, spustitelných souborů a testů, bez podrobností na úrovni jednotlivých souborů a příkazů volání kompilátoru. Další funkce jsou implementovány prostřednictvím mechanismu pro připojení rozšíření.

Поддерживается использование единых сборочных файлов для разных платформ и архитектур, например, один файл сборки без изменений может применяться как для серверной системы, так и для мобильного устройства. Сборочная система изначально спроектирована для оптимальной сборки проектов Google, в том числе сборки очень больших проектов и проектов, содержащих код на нескольких языках программирования, требующих расширенного тестирования и собираемых для нескольких платформ.

Zdroj: opennet.ru

Přidat komentář