Новая версия 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. Права: в любое время вы можете ограничить, восстановить и удалить свою информацию.