Нова версія 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 System Interface) та LLD ввів початкову підтримку динамічного прив'язки WebAssembly. Додана реалізація специфічного для GCC виразу »asm goto», який дозволяє перейти від зібраного вбудованого блоку до тегу C.

Ця функція необхідна для побудови ядра Linux у режимі »CONFIG_JUMP_LABEL = y« за допомогою Clang в системах x86_64. Враховуючи зміни, додані в попередніх версіях, ядро ​​Linux тепер можна вбудувати в Clang для архітектури x86_64 (раніше воно підтримувалось лише для архітектур arm, aarch64, ppc32, ppc64le та mips.

Додана підтримка інструкцій з ОТІ (Branch Target Indicator) та PAC (Ponder Authentication Code) для архітектури 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.

Наприклад, для архітектури AArch2 додана підтримка інструкцій SVE64 та MTE (Розширення тегів пам'яті), до архітектури ARM - підтримка архітектури Armv8.1-M та архітектури MVE.

У випадку з AMDGPU була додана підтримка архітектури GFX10 (Navi), за замовчуванням вмикається виклик функції та передача активованого комбінованого DPP (Data Primitives-Parallel).

Налагоджувач LLDB ввів кольорове підсвічування слідів назад; додана підтримка типів налагодження DWARF4 та блоків налагодження DWARF5;

Службові програми 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. Права: Ви можете будь-коли обмежити, відновити та видалити свою інформацію.