~~~~~~~~~~~~~~~~~~~~ Arc.Ask3.Ru ~~~~~~~~~~~~~~~~~~~~~ 
Номер скриншота №:
✰ 2B6ABB954436ACFB171DCF0CB6E6DBAE__1716281880 ✰
Заголовок документа оригинал.:
✰ Bazel (software) - Wikipedia ✰
Заголовок документа перевод.:
✰ Базель (программное обеспечение) — Википедия ✰
Снимок документа находящегося по адресу (URL):
✰ https://en.wikipedia.org/wiki/Bazel_(software) ✰
Адрес хранения снимка оригинал (URL):
✰ https://arc.ask3.ru/arc/aa/2b/ae/2b6abb954436acfb171dcf0cb6e6dbae.html ✰
Адрес хранения снимка перевод (URL):
✰ https://arc.ask3.ru/arc/aa/2b/ae/2b6abb954436acfb171dcf0cb6e6dbae__translat.html ✰
Дата и время сохранения документа:
✰ 18.06.2024 09:43:05 (GMT+3, MSK) ✰
Дата и время изменения документа (по данным источника):
✰ 21 May 2024, at 11:58 (UTC). ✰ 

~~~~~~~~~~~~~~~~~~~~~~ Ask3.Ru ~~~~~~~~~~~~~~~~~~~~~~ 
Сервисы Ask3.ru: 
 Архив документов (Снимки документов, в формате HTML, PDF, PNG - подписанные ЭЦП, доказывающие существование документа в момент подписи. Перевод сохраненных документов на русский язык.)https://arc.ask3.ruОтветы на вопросы (Сервис ответов на вопросы, в основном, научной направленности)https://ask3.ru/answer2questionТоварный сопоставитель (Сервис сравнения и выбора товаров) ✰✰
✰ https://ask3.ru/product2collationПартнерыhttps://comrades.ask3.ru


Совет. Чтобы искать на странице, нажмите Ctrl+F или ⌘-F (для MacOS) и введите запрос в поле поиска.
Arc.Ask3.ru: далее начало оригинального документа

Базель (программное обеспечение) — Википедия Jump to content

Базель (программное обеспечение)

Из Википедии, бесплатной энциклопедии
Базель
Разработчики) Google
Начальная версия март 2015 г .; 9 лет назад ( 2015-03 )
Стабильная версия
7.1.1 / 21 марта 2024 г .; 2 месяца назад ( 21.03.2024 ) [1]
Репозиторий
Написано в Джава [2]
Операционная система Кросс-платформенный
Лицензия Лицензия Апач 2.0
Веб-сайт Базель .строить  Edit this on Wikidata

Базель ( / ˈ b z рука / [3] ) — это бесплатный инструмент с открытым исходным кодом, программный используемый для автоматизации создания и тестирования программного обеспечения. [2] Google использует инструмент сборки Blaze внутри компании [4] и выпустила порт инструмента Blaze с открытым исходным кодом под названием Bazel, названный как анаграмма Blaze. [5] Bazel был впервые выпущен в марте 2015 года и вступил в бета-версию к сентябрю 2015 года. [6] Версия 1.0 была выпущена в октябре 2019 года. [7]

Подобно инструментам сборки, таким как Make , Apache Ant и Apache Maven , [2] [5] Bazel создает программные приложения из исходного кода с использованием правил. Правила и макросы созданы на языке Starlark (ранее называвшемся Skylark), [8] диалект Python . [5] Существуют встроенные правила для создания программного обеспечения, написанного на Java , Kotlin , Scala , C , C++ , Go , Python , Rust , JavaScript , Objective-C и bash . скриптах [5] [6] «Базэл» может производить пакеты программных приложений, подходящие для развертывания в Android и iOS операционных системах . [9]

Обоснование [ править ]

Одна из целей Bazel — создать систему сборки, в которой входные и выходные данные целей сборки полностью определены, что обеспечивает точные знания внутри системы сборки. [9] Это позволяет более точно анализировать и определять устаревшие артефакты сборки в графе зависимостей системы сборки . Повышение детерминированности анализа графа зависимостей приводит к потенциальному сокращению времени сборки за счет предотвращения повторного выполнения ненужных целей сборки. Надежность сборки повышается за счет исключения ошибок, в которых цели сборки могут зависеть от устаревших входных артефактов.

Bazel использует дайджесты контента , а не временные метки на основе файлов. Временные метки файлов обычно используются для обнаружения изменений в таких инструментах, как Make или Apache Ant. Временные метки могут быть проблематичными, когда сборки распространяются на несколько хостов из-за проблем с синхронизацией часов. [10] Еще одна цель Bazel — обеспечить возможность распределенных и параллельных сборок в удаленной облачной инфраструктуре. Он также предназначен для масштабирования до очень больших репозиториев сборок, загрузка которых на рабочую машину отдельного разработчика может оказаться нецелесообразной. [11]

Язык жаворонков [ править ]

Bazel расширяется за счет специального языка программирования Starlark. Starlark использует синтаксис, который является подмножеством синтаксиса языка программирования Python. Однако он не реализует многие функции языка Python, такие как возможность изменять коллекции или получать доступ к файловому вводу-выводу, чтобы избежать расширений, которые могут создавать побочные эффекты или создавать выходные данные сборки, неизвестные самой системе сборки. . Такие побочные эффекты потенциально могут привести к неправильному анализу графа зависимостей сборки.

Bazel был разработан как многоязычная система сборки. Многие широко используемые системы сборки разработаны с упором на определенный язык программирования. Примеры таких систем включают Ant и Maven для Java, Leiningen для Clojure , sbt для Scala и т. д. В многоязычном проекте объединение отдельных систем сборки и достижение описанных выше преимуществ в скорости и корректности сборки может быть трудным и проблематичным.

Bazel также обеспечивает выполнение сборки в песочнице. Это можно использовать для того, чтобы убедиться, что все зависимости сборки указаны правильно и сборка не зависит, например, от библиотек, установленных только локально на рабочем компьютере разработчика. Это помогает гарантировать, что сборки остаются переносимыми и могут быть выполнены в других (удаленных) средах.

Системы сборки, наиболее похожие на «Базель», — это «Штаны», [12] Бак , и пожалуйста. [13] [14] Pants и Buck преследуют схожие цели технического проектирования, поскольку Bazel и Pants были вдохновлены системой сборки Blaze, используемой внутри Google. Blaze также является предшественником Bazel. Bazel, Pants, Buck и Please использовали Starlark в качестве анализатора файлов BUILD в соответствии с синтаксисом файла BUILD. Независимо разработанные системы сборки с аналогичными целями эффективного анализа графа зависимостей и автоматического отслеживания артефактов сборки были реализованы в таких системах сборки, как tup. [15]

Песочница [ править ]

Одной из ключевых особенностей, отличающих Bazel и подобные системы от более ранних систем сборки, является использование песочницы для этапов компиляции. Когда Bazel выполняет отдельную компиляцию, он создает новый каталог и заполняет его символическими ссылками на явные входные зависимости для правила. Для таких языков, как C/C++, это обеспечивает значительную безопасность при включении заголовочных файлов: это гарантирует, что разработчик знает о файлах, которые используются при компиляции, и предотвращает неожиданное включение заголовочного файла с таким же именем из другого включая каталог.

Такой подход к песочнице приводит к проблемам с распространенными инструментами сборки, в результате чего для правильной компиляции кода в различных архитектурах требуется ряд обходных путей. Например, при выполнении отдельной компиляции для архитектур Mac/Darwin компилятор записывает входные пути в символы SO и OSO в двоичном файле Mach-O, что можно увидеть с помощью команды типа nm -a mybinary | grep SO. Эти пути необходимы для поиска символов во время отладки. В результате сборки в Bazel должны исправлять скомпилированные объекты постфактум, пытаясь исправить проблемы, связанные с путями, возникшие в результате построения песочницы, используя такие флаги, как -fdebug-prefix-map и -oso_prefix, последний стал доступен в Xcode 11.0 . Аналогичная обработка должна выполняться на этапах связывания, переписывая значения rpath в общих библиотеках объектов с помощью команды типа install_name_tool. [16]

[ править ]

Старый логотип Базеля

С момента первого выпуска Bazel логотип представлял собой зеленую букву «b», стилизованную под стебель базилика с двумя листьями. 5 июля 2017 года блог Bazel анонсировал новый логотип: [17] состоит из трех зеленых строительных блоков, образующих сердце.

См. также [ править ]

Ссылки [ править ]

  1. ^ «Релизы · bazelbuild/bazel» . Гитхаб .
  2. ^ Перейти обратно: а б с Егулалп, Сердар (11 сентября 2015 г.). «Масштабируемый программный инструмент Google с открытым исходным кодом, независимый от языка» . Инфомир . Архивировано из оригинала 25 октября 2017 года . Проверено 25 июня 2016 г.
  3. ^ «FAQ-Базэл» . bazel.build . Архивировано из оригинала 06.11.2016.
  4. ^ Бейер, Бетси; Джонс, Крис; Петофф, Дженнифер; Мерфи, Найл Ричард (23 марта 2016 г.). Проектирование надежности сайта: как Google управляет производственными системами . «О'Рейли Медиа, Инк.». п. 90. ИСБН  9781491951187 . Проверено 25 июня 2016 г.
  5. ^ Перейти обратно: а б с д Болтон, Дэвид (27 апреля 2015 г.). «Bazel, система сборки Google с открытым исходным кодом — новый стек» . thenewstack.io . Новый стек. Архивировано из оригинала 24 октября 2017 года . Проверено 25 июня 2016 г.
  6. ^ Перейти обратно: а б Доус, Райан (10 сентября 2015 г.). «Инструмент для сборки программного обеспечения Google Bazel скоро выйдет в бета-версию» . www.developer-tech.com . Разработчик Тех. Архивировано из оригинала 23 октября 2017 года . Проверено 25 июня 2016 г.
  7. ^ «Базель 1.0» . blog.bazel.build . Проверено 29 октября 2023 г.
  8. ^ «Жаворонок – Базель» . blog.bazel.build . Проверено 18 октября 2018 г.
  9. ^ Перейти обратно: а б «FAQ-Базэл» . bazel.build . Проверено 25 июня 2016 г.
  10. ^ «Что не так с GNU make?» . Архивировано из оригинала 13 августа 2016 г. Проверено 23 апреля 2017 г.
  11. ^ Йорк, Натан (23 сентября 2011 г.). «Сборка в облаке: распределение этапов сборки» . google-engtools.blogspot.com .
  12. ^ «Штаны: быстрая и масштабируемая система сборки» .
  13. ^ «Бак: высокопроизводительный инструмент для сборки» .
  14. ^ Пожалуйста, часто задаваемые вопросы
  15. ^ Шал, Майк (2009). «Правила и алгоритмы создания системы» (PDF) .
  16. ^ "инструменты/cpp/osx_cc_wrapper.sh" . Гитхаб. 5 февраля 2022 г.
  17. ^ Джаннини, Стерен (5 июля 2017 г.). «Новый логотип и домашняя страница Базела» .

Внешние ссылки [ править ]

Arc.Ask3.Ru: конец оригинального документа.
Arc.Ask3.Ru
Номер скриншота №: 2B6ABB954436ACFB171DCF0CB6E6DBAE__1716281880
URL1:https://en.wikipedia.org/wiki/Bazel_(software)
Заголовок, (Title) документа по адресу, URL1:
Bazel (software) - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть, любые претензии не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, денежную единицу можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)