Что Нового В Llvm

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



Что нового в LLVM

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

Это ядро, которое стоит за компилятором Clang, за компиляторами языков Rust и Swift, и предоставляет широкие возможности для разработки компиляторов для новых языков.

Это также довольно быстрорастущий проект: крупные релизы выходят каждые шесть месяцев или около того.

Недавно выпущенная версия 6.0 продолжает миссию LLVM по углублению и расширению поддержки различных целевых платформ.

Обновление также добавляет несколько исправлений, направленных на недавно обнаруженные уязвимости на уровне процессора.



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

Уязвимости CPU Spectre и Meltdown используют особенности спекулятивного выполнения современных процессоров.

Их сложно исправить, поскольку они требуют внесения изменений как в микрокод процессора, так и в существующее программное обеспечение.

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

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

Microsoft Windows использует отладочную информацию, хранящуюся в формате CodeView, аналогичном формату DWARF, используемому в системах Linux. Поддержка CodeView ранее была добавлена в LLVM в рамках общих усилий по разработке LLVM для Windows и улучшению состояния инструментов отладки Windows с помощью CodeView. В LLVM 6 эта поддержка еще более улучшена, как благодаря помощи Microsoft, так и тщательному обратному проектированию командой 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.

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

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

Теги: #llvm #открытый исходный код #программирование #компиляторы

Вместе с данным постом часто просматривают:

Автор Статьи


Зарегистрирован: 2019-12-10 15:07:06
Баллов опыта: 0
Всего постов на сайте: 0
Всего комментарий на сайте: 0
Dima Manisha

Dima Manisha

Эксперт Wmlog. Профессиональный веб-мастер, SEO-специалист, дизайнер, маркетолог и интернет-предприниматель.