Что нового в LLVM

в 14:12, , рубрики: LLVM, open source, Компиляторы, Программирование

LLVM 6 уменьшает опасность Spectre, имеет улучшенную поддержку Windows и CPU компании Intel, а также включает WebAssembly в число поддерживаемых целевых платформ.

Что нового в LLVM - 1

Инфраструктура компилятора LLVM прошла путь от технически любопытной вещи до живой части современного ландшафта программного обеспечения. Это то ядро, которое стоит за компилятором Clang, за компиляторами языков Rust и Swift, и предоставляет широкие возможности для разработки компиляторов для новых языков.

Это также довольно быстро развивающийся проект, его мажорные релизы выходят каждые полгода или близко к этому. Версия 6.0, вышедшая недавно, продолжает миссию LLVM по углублению и расширению поддержки различных целевых платформ. Апдейт также добавляет некоторые патчи, направленные против недавно обнаруженных уязвимостей уровня процессора.

В LLVM добавлена частичная защита от Spectre

Уязвимости CPU Spectre и Meltdown эксплуатируют особенности спекулятивного выполнения современных процессоров. Их сложно исправить, так как они требуют изменения как микрокода CPU, так и существующего ПО.

Для того, чтобы приложения, собранные с помощью LLVM, также вносили свой вклад в борьбу с этими уязвимостями, LLVM предлагает поддержку так называемых ”retpolines”, программных конструкций, которые частично уменьшают возможность атаки Spectre. Для того, чтобы использовать эту возможность, вам нужно перекомпилировать программы с LLVM 6.0 с ключом -mretpoline.

Улучшена отладка LLVM CodeView для Windows

Microsoft Windows использует отладочную информацию, хранящуюся в формате CodeView, аналогичном формату DWARF, используемому в системах Linux.

В LLVM ранее была добавлена поддержка CodeView, как часть общих усилий по развитию LLVM под Windows, и улучшению состояния инструментов отладки под Windows с использованием CodeView.

LLVM 6 далее улучшает эту поддержку, как благодаря помощи со стороны Microsoft, так и благодаря тщательному reverse engineering со стороны команды LLVM. Долгосрочные планы состоят в улучшении поддержки CodeView до той стадии, когда языки, отличные от C/C++, компилируемые в LLVM смогут надёжно использовать CodeView в своих инструментах.

LLVM поддерживает WebAssembly, как цель линковки

WebAssembly, бинарный формат приложений для веб-браузера, начал развиваться от стадии эксперимента к стадии используемой в продакшене технологии. Ключевой частью тулчейна WebAssembly, такой же, как Emscripten и PNaCL, является LLVM.

Самым последним шагом в поддержке линковки WebAssembly в LLVM стал инструмент wasm-ld. Этот инструмент получает на входе ассемблер, созданный в LLVM (таргет wasm32-unknown-unknown-wasm), и генерирует готовый к использованию бинарный файл WebAssembly.

Поддержка WebAssembly по-прежнему неполна, и работа над WebAssembly ещё продолжается, но LLVM останется ключевым элементом стека WebAssembly.

В LLVM улучшена поддержка Intel CPU

Программы LLVM сейчас имеют возможность использовать инструкции множества семейств процессоров Intel: Sandy Bridge, Ivy Bridge, Haswell, Broadwell, и Skylake. Intel Icelake сейчас также поддерживается.

В настоящее время LLVM генерирует код для процессоров Intel с использованием векторных расширений: VAES, GFNI, VPCLMULQDQ, AVX512VBMI2, AVX512BITALG, and AVX512VNNI.

Генерация кода улучшена для различных операций процессоров Intel, таких, как сравнения в памяти (memory comparisons), урезание векторов (vector truncations), умножение вектора на 32-битное целое значение.

Автор: 32bit_me

Источник

Поделиться

* - обязательные к заполнению поля