Bazel 2.0 quruluş sisteminin buraxılışı

Mövcuddur açıq montaj alətlərinin buraxılması Bazel 2.0, развиваемого инженерами из Google и используемого для сборки большинства внутренних проектов данной компании. Bazel обеспечивает сборку проекта, запуская необходимые компиляторы и тесты. Поддерживается сборка и тестирование кода на Java, C++, Objective-C, Python, Rust, Go и многих других языках, а также сборка мобильных приложений для Android и iOS. Код проекта yayılır Apache 2.0 altında lisenziyalıdır.

Значительное изменение версии связано с добавлением изменений, нарушающих обратную совместимость. Начиная с 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».

Bazel-in fərqli xüsusiyyətləri arasında montaj prosesinin yüksək sürəti, etibarlılığı və təkrarlanmasıdır. Yüksək qurma sürətinə nail olmaq üçün Bazel qurma prosesi üçün keşləmə və paralelləşdirmə üsullarından fəal şəkildə istifadə edir. BUILD faylları bütün asılılıqları tam müəyyən etməlidir, bunun əsasında dəyişikliklər edildikdən sonra (yalnız dəyişdirilmiş fayllar yenidən qurulur) komponentlərin yenidən qurulmasına dair qərarlar qəbul edilir və montaj prosesini paralelləşdirir. Alətlər də təkrarlanan montajı təmin edir, yəni. Tərtibatçının maşınında layihənin qurulmasının nəticəsi, davamlı inteqrasiya serverləri kimi üçüncü tərəf sistemlərində qurulan ilə tamamilə eyni olacaq.

Make və Ninja-dan fərqli olaraq, Bazel montaj qaydalarının qurulması üçün daha yüksək səviyyəli yanaşmadan istifadə edir, burada qurulan fayllara əmrlərin bağlanmasını müəyyən etmək əvəzinə, daha mücərrəd hazır bloklardan istifadə olunur, məsələn, “icra edilə bilən faylın yaradılması” C++”, “C++-da kitabxananın qurulması” və ya “C++ üçün testin aparılması”, həmçinin hədəfin müəyyən edilməsi və platformaların qurulması. BUILD mətn faylında layihə komponentləri ayrı-ayrı fayllar və kompilyator çağırış əmrləri səviyyəsində təfərrüat verilmədən kitabxanalar, icra olunan fayllar və testlər dəstəsi kimi təsvir edilir. Əlavə funksionallıq uzantıları birləşdirmək mexanizmi vasitəsilə həyata keçirilir.

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

Mənbə: opennet.ru

Добавить комментарий