Liberasyon sistèm asanble Bazel 2.0 la

Disponib lage zouti asanble louvri Bazel 2.0, развиваемого инженерами из Google и используемого для сборки большинства внутренних проектов данной компании. Bazel обеспечивает сборку проекта, запуская необходимые компиляторы и тесты. Поддерживается сборка и тестирование кода на Java, C++, Objective-C, Python, Rust, Go и многих других языках, а также сборка мобильных приложений для Android и iOS. Код проекта distribiye pa ki gen lisans anba 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».

Pami karakteristik diferan Bazel yo se gwo vitès, fyab ak repetibilite nan pwosesis asanble a. Pou reyalize gwo vitès bati, Bazel aktivman itilize teknik kachèt ak paralelizasyon pou pwosesis konstriksyon an. Fichye BUILD yo dwe konplètman defini tout depandans, sou baz ki desizyon yo pran pou rekonstwi konpozan apre yo fin fè chanjman (sèlman dosye ki chanje yo rebati) epi paralelize pwosesis asanble a. Zouti tou asire asanble repete, i.e. rezilta a nan bati yon pwojè sou machin pwomotè a pral konplètman ki idantik ak bati a sou sistèm twazyèm-pati, tankou sèvè entegrasyon kontinyèl.

Kontrèman ak Make ak Ninja, Bazel sèvi ak yon apwòch ki pi wo nan bati règleman asanble, kote, olye pou yo defini lyen kòmandman yo nan dosye yo ap bati yo, yo itilize plis abstrè blòk pare, tankou "konstriksyon yon dosye ègzèkutabl nan C++", "konstwi yon bibliyotèk nan C++" oswa "kouri yon tès pou C++", osi byen ke idantifye sib ak bati platfòm. Nan dosye tèks BUILD la, eleman pwojè yo dekri kòm yon pakèt bibliyotèk, dosye ègzèkutabl ak tès, san yo pa detaye nan nivo fichye endividyèl ak kòmandman apèl konpilatè. Lòt fonksyonalite aplike atravè mekanis pou konekte ekstansyon yo.

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

Sous: opennet.ru

Add nouvo kòmantè