Llançament del sistema de compilació Bazel 2.0

Disponible llançament d'eines de muntatge obertes Bazel 2.0, развиваемого инженерами из Google и используемого для сборки большинства внутренних проектов данной компании. Bazel обеспечивает сборку проекта, запуская необходимые компиляторы и тесты. Поддерживается сборка и тестирование кода на Java, C++, Objective-C, Python, Rust, Go и многих других языках, а также сборка мобильных приложений для Android и iOS. Код проекта Distribuït per amb llicència d'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».

Entre les característiques distintives de Bazel es troben l'alta velocitat, la fiabilitat i la repetibilitat del procés de muntatge. Per aconseguir una alta velocitat de creació, Bazel utilitza activament tècniques de memòria cau i paral·lelització per al procés de creació. Els fitxers BUILD han de definir completament totes les dependències, a partir de les quals es prenen decisions per reconstruir els components després de fer els canvis (només es reconstrueixen els fitxers modificats) i paral·lelitzar el procés de muntatge. Les eines també garanteixen un muntatge repetible, és a dir. el resultat de la creació d'un projecte a la màquina del desenvolupador serà completament idèntic a la construcció en sistemes de tercers, com ara servidors d'integració contínua.

A diferència de Make i Ninja, Bazel utilitza un enfocament de nivell superior per crear regles de muntatge, en el qual, en lloc de definir la vinculació d'ordres als fitxers que s'estan construint, s'utilitzen blocs ja fets més abstractes, com ara "crear un fitxer executable en C++", "construir una biblioteca en C++" o "executar una prova per a C++", així com identificar plataformes de destinació i compilació. Al fitxer de text BUILD, els components del projecte es descriuen com un munt de biblioteques, fitxers executables i proves, sense detallar a nivell de fitxers individuals i ordres de trucada del compilador. S'implementa una funcionalitat addicional mitjançant el mecanisme per connectar extensions.

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

Font: opennet.ru

Afegeix comentari