Bazel 2.0 yapı sisteminin piyasaya sürülmesi

Mevcut açık montaj aletlerinin serbest bırakılması Bazel 2.0, развиваемого инженерами из Google и используемого для сборки большинства внутренних проектов данной компании. Bazel обеспечивает сборку проекта, запуская необходимые компиляторы и тесты. Поддерживается сборка и тестирование кода на Java, C++, Objective-C, Python, Rust, Go и многих других языках, а также сборка мобильных приложений для Android и iOS. Код проекта tarafından dağıtıldı Apache 2.0 altında lisanslanmıştı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 ayırt edici özellikleri arasında montaj sürecinin yüksek hızı, güvenilirliği ve tekrarlanabilirliği yer alıyor. Yüksek derleme hızına ulaşmak için Bazel, oluşturma sürecinde önbelleğe alma ve paralelleştirme tekniklerini aktif olarak kullanıyor. BUILD dosyaları, değişiklikler yapıldıktan sonra bileşenleri yeniden oluşturma kararlarının verildiği (yalnızca değiştirilen dosyalar yeniden oluşturulur) ve montaj sürecini paralel hale getiren tüm bağımlılıkları tam olarak tanımlamalıdır. Takımlama aynı zamanda tekrarlanabilir montajı da sağlar; Geliştiricinin makinesinde bir proje oluşturmanın sonucu, sürekli entegrasyon sunucuları gibi üçüncü taraf sistemlerde yapılan geliştirmeyle tamamen aynı olacaktır.

Make ve Ninja'dan farklı olarak Bazel, montaj kuralları oluşturmak için daha üst düzey bir yaklaşım kullanıyor; burada komutların oluşturulmakta olan dosyalara bağlanmasını tanımlamak yerine "çalıştırılabilir bir dosya oluşturmak" gibi daha soyut hazır bloklar kullanılıyor. C++", "C++'da kitaplık oluşturma" veya "C++ için test çalıştırma" ve ayrıca hedef ve derleme platformlarını tanımlama. BUILD metin dosyasında proje bileşenleri, tek tek dosyalar ve derleyici çağrı komutları düzeyinde ayrıntıya girmeden bir grup kitaplık, çalıştırılabilir dosya ve test olarak tanımlanır. Uzantıları bağlama mekanizması aracılığıyla ek işlevsellik uygulanır.

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

Kaynak: opennet.ru

Yorum ekle