Страницы

четверг, 7 апреля 2022 г.

Взаимодействие Red Hat и LLVM

Проект LLVM (ранее известный как Low Level Virtual Machine) – это набор компонентов, которые представляют собой блоки для сборки компиляторов и связанных инструментов. В Red Hat Enterprise Linux (RHEL) эти компоненты используются в компиляторе Rust, встроенном шейдерном компиляторе Mesa, а также в инструментах Berkeley Packet Filter (BPF), таких как BPF Compiler Collection (BCC) и bpftrace. Дополнительно, LLVM содержит собственный компилятор (Clang) и компоновщик (LLD), оба также являются частью RHEL.

Исходный проект для LLVM очень большой и быстро развивающийся почти с сотней правок в день и более чем 250 уникальными участниками в месяц. Помимо сборки и упаковки исходных кодов LLVM для RHEL, инженеры Red Hat активно взаимодействую с сообществом, чтобы сделать проект лучше. Сегодня мы рассмотрим проект LLVM и то, какую работу проделал Red Hat с LLVM за прошлый год.


LLVM Foundation.

LLVM Foundation – это некоммерческая организация, которая отвечает за нетехнические аспекты проекта LLVM в дополнение к обучению и продвижению компилятора и инструментов. Совет директоров LLVM Foundation состоит из девяти человек, в число которых входит Tom Stellard (Principal Software Engineer в Red Hat), также он выполняет функции секретаря в совете и менеджера релизов в проекте.


Управление релизами LLVM.

Исходный проект LLVM использует 6-ти месячный цикл релизов, который включает в себя мажорные релизы (X.0.0) и далее версия увеличивается на единицу при исправлении ошибок (X.0.1) в рамках цикла.

Также несколько инженеров в Red Hat поддерживает процесс релизов, исправляя ошибки и тестируя сборки.


Неявные указатели (Opaque Pointers).

Проект LLVM использует внутреннее представление компилятора, называемое LLVM IR. Компиляторы на базе LLVM выпускают это промежуточное представление и передают его компонентам для оптимизации и генерации машинного кода. LLVM IR – это хорошо определенное, постоянно улучшающееся и дополняемое новыми возможностями представление компилятора. Одним из таких улучшений, над которым работает сообщество, является неявные указатели (Opaque Pointers).


Opaque Pointers – указатели без связанного типа.

На данный момент в LLVM IR каждая запись указателя определяет тип значения, на которое он указывает, так, например i8* указывает на значение i8, i32* на 32-ух битное значение и так далее.

Удаление типа указателя должно упростить IR за счёт устранения необходимости конвертации между типами (очень популярная операция). В свою очередь, это должно помочь сократить сложность оптимизатора, а также ускорить и улучшить его работу. Red Hat помогает исходному проекту, улучшая оптимизатор и прочие части LLVM для работы с новым типом представления указателя.


Улучшения времени компиляции.

В Red Hat работают над рядом улучшений во внутренних структурах данных LLVM, чтобы увеличить скорость работы компилятора. Скорость компилятора (т.е. время, необходимое для компиляции программ) нередко игнорируется. Однако, этот показатель очень важен, так как он может помочь разработчикам сделать свою работу быстрее.

Помимо прочего, разработчики Red Hat сделали и делают следующее:

  • Добавили новых ботов для сборки в инфраструктуру LLVM.
  • Помогли улучшить удобство работы с инструментами LLVM при помощи более понятных вспомогательных сообщений.
  • Добавили в OpenCL реализацию C.
  • Создают каждую ночь моментальные сборки для использования в сообществе.
  • Улучшают возможности безопасности.
  • Исправляют ошибки.

Эта работа вместе с участием сообщества доступна в текущем и будет доступна в последующих релизах RHEL. Новая версия LLVM добавляется в каждом минорном релизе RHEL, таким образом, новейшие возможности и исправления ошибок всегда доступны пользователям Red Hat Enterprise Linux.

В Red Hat существует политика «Upstream First», по которой предпочтение отдается исходным проектам. Так как здоровое состояние исходного проекта неминуемо ведёт к улучшению качества продуктов Red Hat. Именно поэтому сотрудники Red Hat столь активно участвуют в проекте LLVM, не только в 2021-ом году, но и в предыдущие годы. Совместная работа над проектом LLVM продолжится и в дальнейшем.

Комментариев нет:

Отправить комментарий