LLVM 15 теперь готов к выпуску в качестве большого полугодового обновления этого стека компиляторов с открытым исходным кодом. LLVM 15.0, Clang 15.0 и другие подпроекты могут многое показать своими достижениями за лето 2022 года.
LLVM 15.0 предлагает ряд новых функций безопасности, связанных с x86, поддержку Armv9, экспериментальную работу HLSL и DirectX от Microsoft, новую поддержку AMD RDNA3 и GFX940 в их серверной части компилятора шейдеров, теперь поддерживается больше инструкций RISC-V и множество других улучшений в этом массивном стеке компилятора.
В LLVM 15 есть ряд новых функций/устранений безопасности x86, от прямых спекуляций до повторных битов.
Что касается интерфейсной части Clang C/C++, основные моменты Clang 15.0 включают:
- Поддержка параметра «-fzero-call-used-regs» на x86/x86_64, который аналогичен тому, что было добавлено в GCC. Опцию -fzero-call-used-regs можно использовать для ограничения атак ROP/COP/JOP путем обнуления выбранного класса регистров перед возвратом функции.
- Поддержка параметра «-mharden-sls=" на x86/x86_64 для усиления защиты от прямолинейных предположений.
- Поддержка параметра «-mfunction-return=thunk-extern», который будет использоваться ядром Linux как часть смягчения последствий Retbleed.
- Поддержка типа _Float16 на x86 для всех целей с поддержкой SSE2. Тип _Float16 является родным для AVX-512 FP16 или эмулируется с использованием float.
- Поддержка рандомизации макета структуры в C. Это метод усиления жесткости во время компиляции, который можно активировать с помощью атрибута «randomize_layout».
- Экспериментальная поддержка языка шейдеров Microsoft HLSL. HLSL в Clang 15.0 все еще является «крайне экспериментальной» и «неполной». Это часть усилий Microsoft по добавлению DirectX и HLSL в исходную кодовую базу LLVM/Clang .
- Добавлена опция -fexperimental-max-bitint-width= для управления максимально допустимой битовой шириной для типов _BitInt, превышающей стандартные 128 бит. Также добавлен ряд других новых флагов компилятора, в основном для ограниченного применения/ниши.
- Поддержка большего количества прагм MSVC, а также поддержка дополнительных флагов, совместимых с MSVC, в clang-cl для поддержки Windows.
- Добавлено множество функций, связанных с все еще развивающейся поддержкой языка C2X. Среди функций C2X, реализованных в этом выпуске, - атрибут «noreturn», фундаментальный тип для N-битных целых чисел, символьный префикс u8, удаленная поддержка неявных объявлений функций и многое другое.
- Поддержка дополнительных функций C++20 для модулей, изоляция ABI для функций-членов и многое другое.
- Поддержка некоторых функций C++2b, таких как оператор многомерного нижнего индекса, escape-последовательности с разделителями, именованные универсальные escape-символы и многое другое.
- Поддержка OpenMP 5.1 для атомарного сравнения и захвата атомарного сравнения.
- Обновления векторных встроенных функций RISC-V, поддержка скалярных криптографических расширений RISC-V «K», инструкций CLZ/CTX и т. д.
- Множество исправлений ошибок и улучшений диагностики/предупреждений компилятора.
Помимо внешнего интерфейса компилятора Clang C/C++, другие изменения LLVM 15.0 включают:
- Поддержка архитектур Armv9-A, Armv9.1-A и Armv9.2-A. Также добавлена поддержка процессора Arm Cortex-M85.
- Экспериментальный бэкэнд DirectX вместе с упомянутыми изменениями HLSL в Clang. Серверная часть DirectX нацелена на архитектуру DXIL, используемую для шейдерных программ DirectX GPU.
- Поддержка инструкции RDPRU на процессорах AMD Zen 2 и более новых.
- HTTP-сервер для Debuginfod .
- Первоначальная внутренняя работа SPIR-V .
- В Clang добавлена поддержка типа half на процессорах x86 с поддержкой SSE2 как часть типа _Float16.
- LLVM теперь использует непрозрачные указатели для LLVM IR.
- AMD работает с графикой RDNA3/GFX11 и GFX940 с CDNA следующего поколения .
- Поддержка 8- и 16-битных атомарных загрузок и сохранений с серверной частью AMDGPU.
LLVM 15.0 также включает в себя ряд обновлений и дополнений к подпроекту libc++ 15.0.
Выпущен LLVM 15.0 с функциями безопасности, экспериментальной серверной частью DirectX, новыми графическими процессорами AMD
8 сентября 20228 сен 2022
10
3 мин