Новата версия на 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 (Pointer 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.

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

В случая на AMDGPU е добавена поддръжка за архитектурата GFX10 (Navi), по подразбиране е разрешено извикване на функция и предаване на активирания комбиниран DPP (Data Primitives-Parallel).

Дебъгерът на LLDB въведе цветно подчертаване на следи назад; добавена поддръжка за DWARF4 debug_types и DWARF5 debug_info блокове;

Помощните програми llvm-objcopy и llvm-strip са добавили поддръжка за изпълними файлове и обекти във формат COFF.

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

Fuente: http://releases.llvm.org/


Оставете вашия коментар

Вашият имейл адрес няма да бъде публикуван. Задължителните полета са отбелязани с *

*

*

  1. Отговорник за данните: AB Internet Networks 2008 SL
  2. Предназначение на данните: Контрол на СПАМ, управление на коментари.
  3. Легитимация: Вашето съгласие
  4. Съобщаване на данните: Данните няма да бъдат съобщени на трети страни, освен по законово задължение.
  5. Съхранение на данни: База данни, хоствана от Occentus Networks (ЕС)
  6. Права: По всяко време можете да ограничите, възстановите и изтриете информацията си.