Izdanje sustava za izgradnju Bazel 2.0

Dostupno oslobađanje otvorenih montažnih alata Bazel 2.0, развиваемого инженерами из Google и используемого для сборки большинства внутренних проектов данной компании. Bazel обеспечивает сборку проекта, запуская необходимые компиляторы и тесты. Поддерживается сборка и тестирование кода на Java, C++, Objective-C, Python, Rust, Go и многих других языках, а также сборка мобильных приложений для Android и iOS. Код проекта distribuira licenciran pod Apache 2.0.

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

  • В команде 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».

Među karakterističnim značajkama Bazela su velika brzina, pouzdanost i ponovljivost procesa montaže. Kako bi postigao veliku brzinu izgradnje, Bazel aktivno koristi tehnike predmemoriranja i paralelizacije za proces izgradnje. Datoteke BUILD moraju u potpunosti definirati sve ovisnosti, na temelju kojih se donose odluke o ponovnoj izgradnji komponenti nakon izvršenih promjena (samo promijenjene datoteke se ponovno grade) i paralelizira proces sklapanja. Alati također osiguravaju ponovljivu montažu, tj. rezultat izgradnje projekta na stroju programera bit će potpuno identičan izgradnji na sustavima trećih strana, kao što su poslužitelji kontinuirane integracije.

Za razliku od Make i Ninje, Bazel koristi pristup više razine za izgradnju pravila sklopa, u kojem se, umjesto definiranja vezanja naredbi za datoteke koje se izgrađuju, koriste apstraktniji gotovi blokovi, kao što je "izgradnja izvršne datoteke u C++”, “izrada biblioteke u C++” ili “izvođenje testa za C++”, kao i identificiranje ciljne i građevne platforme. U tekstualnoj datoteci BUILD, komponente projekta opisane su kao hrpa biblioteka, izvršnih datoteka i testova, bez detalja na razini pojedinačnih datoteka i naredbi poziva prevoditelja. Dodatna funkcionalnost implementirana je kroz mehanizam za povezivanje ekstenzija.

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

Izvor: opennet.ru

Dodajte komentar