Rilaxx tas-sistema tal-bini Bazel 2.0

Disponibbli rilaxx ta 'għodda ta' assemblaġġ miftuħa Bazel 2.0, развиваемого инженерами из Google и используемого для сборки большинства внутренних проектов данной компании. Bazel обеспечивает сборку проекта, запуская необходимые компиляторы и тесты. Поддерживается сборка и тестирование кода на Java, C++, Objective-C, Python, Rust, Go и многих других языках, а также сборка мобильных приложений для Android и iOS. Код проекта imqassma minn liċenzjat taħt 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».

Fost il-karatteristiċi distintivi ta' Bazel hemm il-veloċità għolja, l-affidabbiltà u r-ripetibbiltà tal-proċess tal-assemblaġġ. Biex tikseb veloċità għolja tal-bini, Bazel juża b'mod attiv tekniki ta 'caching u parallelizzazzjoni għall-proċess tal-bini. Il-fajls BUILD għandhom jiddefinixxu bis-sħiħ id-dipendenzi kollha, li fuq il-bażi tagħhom jittieħdu deċiżjonijiet biex jerġgħu jinbnew il-komponenti wara li jsiru l-bidliet (fajls mibdula biss jinbnew mill-ġdid) u jipparallelizzaw il-proċess tal-assemblaġġ. L-għodda tiżgura wkoll assemblaġġ ripetibbli, i.e. ir-riżultat tal-bini ta 'proġett fuq il-magna tal-iżviluppatur se jkun kompletament identiku għall-bini fuq sistemi ta' partijiet terzi, bħal servers ta 'integrazzjoni kontinwa.

B'differenza Make u Ninja, Bazel juża approċċ ta 'livell ogħla għall-bini ta' regoli ta 'assemblaġġ, li fih, minflok jiddefinixxi l-irbit tal-kmandi mal-fajls li qed jinbnew, jintużaw blokki lesti aktar astratti, bħal "bini ta' fajl eżekutibbli f' C++”, “bini ta’ librerija f’C++” jew “tmexxija ta’ test għal C++”, kif ukoll identifikazzjoni ta’ pjattaformi ta’ mira u ta’ bini. Fil-fajl tat-test BUILD, il-komponenti tal-proġett huma deskritti bħala mazz ta 'libreriji, fajls eżekutibbli u testijiet, mingħajr dettalji fil-livell ta' fajls individwali u kmandi tas-sejħa tal-kompilatur. Funzjonalità addizzjonali hija implimentata permezz tal-mekkaniżmu għall-konnessjoni tal-estensjonijiet.

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

Sors: opennet.ru

Żid kumment