Κυκλοφορία του συστήματος κατασκευής Bazel 2.0

Διαθέσιμος απελευθέρωση ανοιχτών εργαλείων συναρμολόγησης Bazel 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 πρέπει να ορίζουν πλήρως όλες τις εξαρτήσεις, βάσει των οποίων λαμβάνονται αποφάσεις για την αναδόμηση στοιχείων μετά την πραγματοποίηση αλλαγών (μόνο τα αλλαγμένα αρχεία αναδημιουργούνται) και να παραλληλίζουν τη διαδικασία συναρμολόγησης. Τα εργαλεία εξασφαλίζουν επίσης επαναλαμβανόμενη συναρμολόγηση, π.χ. το αποτέλεσμα της δημιουργίας ενός έργου στο μηχάνημα του προγραμματιστή θα είναι εντελώς πανομοιότυπο με το build σε συστήματα τρίτων, όπως διακομιστές συνεχούς ενοποίησης.

Σε αντίθεση με το Make και το Ninja, το Bazel χρησιμοποιεί μια προσέγγιση υψηλότερου επιπέδου για τους κανόνες συναρμολόγησης κτιρίων, στην οποία, αντί να ορίζεται η σύνδεση των εντολών στα αρχεία που δημιουργούνται, χρησιμοποιούνται πιο αφηρημένα έτοιμα μπλοκ, όπως «δημιουργία εκτελέσιμου αρχείου σε C++», «κατασκευή βιβλιοθήκης σε C++» ή «εκτέλεση δοκιμής για C++», καθώς και αναγνώριση πλατφορμών στόχων και κατασκευής. Στο αρχείο κειμένου BUILD, τα στοιχεία του έργου περιγράφονται ως μια δέσμη βιβλιοθηκών, εκτελέσιμων αρχείων και δοκιμών, χωρίς λεπτομέρειες σε επίπεδο μεμονωμένων αρχείων και εντολών κλήσης μεταγλωττιστή. Πρόσθετη λειτουργικότητα υλοποιείται μέσω του μηχανισμού σύνδεσης επεκτάσεων.

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

Πηγή: opennet.ru

Προσθέστε ένα σχόλιο