Издање Базел 2.0 система градње

Доступан ослобађање отворених алата за монтажу Базел 2.0, развиваемого инженерами из Google и используемого для сборки большинства внутренних проектов данной компании. Bazel обеспечивает сборку проекта, запуская необходимые компиляторы и тесты. Поддерживается сборка и тестирование кода на Java, C++, Objective-C, Python, Rust, Go и многих других языках, а также сборка мобильных приложений для Android и iOS. Код проекта дистрибуира лиценциран под Апацхе 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».

Међу карактеристичним карактеристикама Базела су велика брзина, поузданост и поновљивост процеса монтаже. Да би постигао велику брзину изградње, Базел активно користи технике кеширања и паралелизације за процес изградње. БУИЛД фајлови морају у потпуности да дефинишу све зависности, на основу којих се доносе одлуке да се компоненте поново направе након извршених промена (само измењене датотеке се поново праве) и паралелизују процес склапања. Алат такође обезбеђује поновљиву монтажу, тј. резултат изградње пројекта на машини програмера биће потпуно идентичан изградњи на системима трећих страна, као што су сервери за континуирану интеграцију.

За разлику од Маке и Ниња, Базел користи приступ вишег нивоа изградњи правила склапања, у којем се, уместо дефинисања везивања команди за датотеке које се граде, користе апстрактнији готови блокови, као што је „изградња извршне датотеке у Ц++“, „изградња библиотеке у Ц++“ или „покретање теста за Ц++“, као и препознавање циљних и платформи за прављење. У текстуалној датотеци БУИЛД, компоненте пројекта су описане као гомила библиотека, извршних датотека и тестова, без детаља на нивоу појединачних датотека и команди позива компајлера. Додатна функционалност је имплементирана кроз механизам за повезивање екстензија.

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

Извор: опеннет.ру

Додај коментар