Новая версия LLVM 9.0 уже вышла и это ее новости

LLVM

После шести месяцев разработки представлен запуск новой версии проекта LLVM 9.0, который является совместимым с GCC набором инструментов (компиляторы, оптимизаторы и генераторы кода), который компилирует программы в промежуточный битовый код виртуальных инструкций, подобных RISC. (низкоуровневая виртуальная машина с многоуровневой системой оптимизации).

Он предназначен для оптимизации времени компиляции, время привязки, время выполнения на любом языке программирования, который пользователь хочет определить.. Первоначально реализовано для компиляции C и C ++, Независимый от языка дизайн LLVM и успех проекта породили множество языков, включая Objective-C, Fortran, Ada, Haskell, байт-код Java, Python, Ruby, ActionScript, GLSL, Clang, Rust, Gambas и другие.

Сгенерированный псевдокод можно преобразовать с помощью JIT-компилятора в машинные инструкции непосредственно во время выполнения программы.

Основные новые возможности LLVM 9.0

Среди новых возможностей LLVM 9.0 найти поддержку для удаления тега экспериментальной разработки с платформы RISC-V, Поддержка C ++ для OpenCL.

Еще одна новинка, которая выделяется возможность разделить программу на динамически загружаемые части в LLD и реализация конструкции »asm goto», используемой в коде ядра Linux.

Кроме того, также подчеркивается, что Libc ++ поставляется с поддержкой WASI. (Системный интерфейс WebAssembly), а LLD представила начальную поддержку динамической привязки WebAssembly. Добавлена ​​реализация специфичного для GCC выражения »asm goto», которое позволяет переключаться с встроенного блока сборки на тег в коде C.

Эта функция необходима для сборки ядра Linux в режиме »CONFIG_JUMP_LABEL = y« с использованием Clang в системах x86_64. С учетом изменений, внесенных в предыдущие версии, ядро ​​Linux теперь может быть построено в Clang для архитектуры x86_64 (ранее оно поддерживалось только для архитектур arm, aarch64, ppc32, ppc64le и mips.

Добавлена ​​поддержка инструкций BTI. (Индикатор цели перехода) и PAC (Код аутентификации указателя) для архитектуры AArch64. Значительно улучшена поддержка платформ MIPS, RISC-V и PowerPC.

Кроме того, Проекты Android и ChromeOS уже перешли на использование Clang для сборки ядра. а Google тестирует Clang в качестве ядра основной платформы сборки для своих операционных систем Linux.

В будущем, в процессе компиляции ядра можно будет использовать другие компоненты LLVM, включая LLD, llvm-objcopy, llvm-ar, llvm-nm и llvm-objdump.

В компоновщик LLD была добавлена ​​экспериментальная функция секционирования, которая позволяет разделить программу на несколько частей, каждая из которых помещается в отдельный файл ELF. Эта функция позволяет запускать основную часть программы, которая по мере необходимости загружает остальные компоненты в процессе (например, вы можете выбрать встроенную программу просмотра PDF как отдельный файл, который будет загружен только тогда, когда пользователь открывает файл PDF).

С другой стороны, также выделяются многочисленные улучшения в серверных приложениях. для архитектур X86, AArch64, ARM, SystemZ, MIPS, AMDGPU и PowerPC.

Например, поддержка инструкций SVE2 и MTE (Memory Tagging Extensions) была добавлена ​​для архитектуры AArch64, поддержка архитектуры Armv8.1-M и архитектуры MVE была добавлена ​​в бэкэнд ARM.

В случае AMDGPU добавлена ​​поддержка архитектуры GFX10. (Navi) по умолчанию разрешено вызывать функцию и передавать активированный комбинированный DPP (параллельные примитивы данных).

В отладчике LLDB добавлено цветовое выделение трасс в обратном направлении; добавлена ​​поддержка блоков DWARF4 debug_types и DWARF5 debug_info;

Утилиты llvm-objcopy и llvm-strip добавили поддержку исполняемых файлов и объектов в формате COFF.

Бэкэнд для архитектуры RISC-V стабилизирован, который больше не позиционируется как экспериментальный и строится по умолчанию. Полная поддержка генерации кода для вариантов набора команд RV32I и RV64I с расширениями MAFDC.

источник: http://releases.llvm.org/


Содержание статьи соответствует нашим принципам редакционная этика. Чтобы сообщить об ошибке, нажмите здесь.

Будьте первым, чтобы комментировать

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

Ваш электронный адрес не будет опубликован. Обязательные для заполнения поля помечены *

*

*

  1. Ответственный за данные: AB Internet Networks 2008 SL
  2. Назначение данных: контроль спама, управление комментариями.
  3. Легитимация: ваше согласие
  4. Передача данных: данные не будут переданы третьим лицам, кроме как по закону.
  5. Хранение данных: база данных, размещенная в Occentus Networks (ЕС)
  6. Права: в любое время вы можете ограничить, восстановить и удалить свою информацию.