lëshimi i mjetit të hapur për ndërtim , развиваемого инженерами из Google и используемого для сборки большинства внутренних проектов данной компании. Bazel обеспечивает сборку проекта, запуская необходимые компиляторы и тесты. Поддерживается сборка и тестирование кода на Java, C++, Objective-C, Python, Rust, Go и многих других языках, а также сборка мобильных приложений для Android и iOS. Код проекта nën licencën Apache 2.0.
Значительное изменение версии связано с добавлением изменений, нарушающих обратную совместимость. Начиная с Bazel 2.0 включены по умолчанию режимы «—incompatible_remap_main_repo» (ссылки по имени и через @ теперь ссылаются на один репозиторий), «—incompatible_disallow_dict_lookup»_(применение нехешируемых ключей),
«—incompatible_remove_native_maven_jar» и «—incompatible_prohibit_aapt1». Среди других изменений:
- В команде появилась экспериментальная поддержка новой редауции формата вывода «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».
Disa nga karakteristikat dalluese të Bazel janë shpejtësia e lartë, besueshmëria dhe përsëritshmëria e procesit të ndërtimit. Për të arritur një shpejtësi të lartë ndërtimi, Bazel zbatuan aktivisht teknikat e caching-ut dhe paralelizimit të procesit të ndërtimit. Në skedarët BUILD, të gjitha varësitë janë të përcaktuara plotësisht, mbi të cilat merren vendime për rindërtimin e komponenteve pas ndryshimeve (përfshihen vetëm skedarët e ndryshuar) dhe paralelizimi i procesit të ndërtimit. Veglat gjithashtu garantuajnë përsëritshmërinë e ndërtimit, dmth. rezultati i ndërtimit të projektit në makinën e zhvilluesit do të forcohet plotësisht me ndërtimin në sisteme të jashtme, të tilla si serverët e integrimit të vazhdueshëm.
Ndryshe nga Make dhe Ninja, Bazel përdor një qasje më të lartë në ndërtimin e rregullave të ndërtimit, ku në vend të përcaktimit të lidhjeve të komandave me skedarët që ndërtohen, aplikohet blloqe më abstrakte të gatshme, si "ndërtimi i një skedari ekzekutiv në C++", "ndërtimi i një biblioteke në C++" ose "ekzekutimi i një testi për C++", si dhe përcaktimi i platformave të objektivave dhe ndërtimit. Në skedarin tekstual BUILD, komponentët e projektit përshkruhen si një grup bibliotekash, skedarësh ekzekutivë dhe teste, pa detaje në nivelin e skedarëve individualë dhe komandave të thirrjes së kompajlerit. Funksionalitete të tjera realizohen nëpërmjet mekanizmit të lidhjes së shtesave.
Поддерживается использование единых сборочных файлов для разных платформ и архитектур, например, один файл сборки без изменений может применяться как для серверной системы, так и для мобильного устройства. Сборочная система изначально спроектирована для оптимальной сборки проектов Google, в том числе сборки очень больших проектов и проектов, содержащих код на нескольких языках программирования, требующих расширенного тестирования и собираемых для нескольких платформ.
Burimi: opennet.ru
