إطلاق نظام البناء Bazel 2.0

متاح الافراج عن أدوات التجميع المفتوحة بازل 2.0, развиваемого инженерами из Google и используемого для сборки большинства внутренних проектов данной компании. Bazel обеспечивает сборку проекта, запуская необходимые компиляторы и тесты. Поддерживается сборка и тестирование кода на Java, C++, Objective-C, Python, Rust, Go и многих других языках, а также сборка мобильных приложений для Android и iOS. Код проекта وزعت من خلال مرخص بموجب 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».

من بين السمات المميزة لشركة Bazel السرعة العالية والموثوقية والتكرار في عملية التجميع. لتحقيق سرعة بناء عالية، يستخدم Bazel بشكل فعال تقنيات التخزين المؤقت والتوازي لعملية البناء. يجب أن تحدد ملفات BUILD جميع التبعيات بشكل كامل، وعلى أساسها يتم اتخاذ القرارات لإعادة بناء المكونات بعد إجراء التغييرات (يتم إعادة بناء الملفات التي تم تغييرها فقط) وموازاة عملية التجميع. تضمن الأدوات أيضًا التجميع القابل للتكرار، على سبيل المثال. ستكون نتيجة بناء المشروع على جهاز المطور مطابقة تمامًا للبناء على أنظمة الطرف الثالث، مثل خوادم التكامل المستمر.

على عكس Make وNinja، يستخدم Bazel نهجًا عالي المستوى لبناء قواعد التجميع، حيث بدلاً من تحديد ربط الأوامر بالملفات التي يتم إنشاؤها، يتم استخدام كتل جاهزة أكثر تجريدًا، مثل "إنشاء ملف قابل للتنفيذ في C++"، أو "إنشاء مكتبة في C++"، أو "إجراء اختبار لـ C++"، بالإضافة إلى تحديد الأنظمة الأساسية المستهدفة والبناء. في الملف النصي BUILD، يتم وصف مكونات المشروع على أنها مجموعة من المكتبات والملفات القابلة للتنفيذ والاختبارات، دون التفصيل على مستوى الملفات الفردية وأوامر استدعاء المترجم. يتم تنفيذ وظائف إضافية من خلال آلية توصيل الامتدادات.

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

المصدر: opennet.ru

إضافة تعليق