LLVM 6 снижает угрозу Spectre, имеет улучшенную поддержку процессоров Windows и Intel и включает WebAssembly в качестве поддерживаемой целевой платформы.
Инфраструктура компилятора 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 #открытый исходный код #программирование #компиляторы
-
Гсон Или «Туда И Обратно»
19 Oct, 24 -
Рубиновый V8
19 Oct, 24 -
Сотрудники Microsoft Закапывают Iphone
19 Oct, 24 -
Поиск Изображений По Контенту
19 Oct, 24 -
Еще Руткиты – «Хорошие» И Разные. Часть Ii
19 Oct, 24