LINUX.ORG.RU

LLVM 11

 ,


2

4

Состоялся релиз набора GCC-совместимых инструментов разработки LLVM. В частности, в порядке эксперимента в состав вошёл Flang – фронтэнд для языка Фортран.

Из значимого:

  • Начата миграция сборочной системы в сторону использования Python 3. 2-я версия языка, тем не менее, всё ещё поддерживается в качестве «запасного» (fallback) варианта.
  • Поддержка восстановления AST, что упрощает поиск ошибок в коде, в том числе и дополнительными утилитами. Пример
  • Новые группы предупреждений: -Wpointer-to-int-cast, -Wuninitialized-const-reference и -Wimplicit-const-int-float-conversion. Последняя включена по умолчанию.
  • Добавлен набор расширенных целочисленных типов _ExtInt(N), позволяющих создавать типы не кратные степени двойки. Да, теперь можно делать «инты» кратными любому числу!
  • Целая куча улучшений в Clang, в частности, новые «фичи» для многих платформ, в том числе x86, ARM и RISC-V, улучшенная производительность, новые функции для работы с OpenCL (и ROCm) и OpenMP.

Полный список изменений, как всегда, в Release Notes:

https://releases.llvm.org/11.0.0/docs/ReleaseNotes.html

https://releases.llvm.org/11.0.0/tools/clang/docs/ReleaseNotes.html

https://releases.llvm.org/11.0.0/tools/clang/tools/extra/docs/ReleaseNotes.html

https://releases.llvm.org/11.0.0/tools/flang/docs/ReleaseNotes.html

https://releases.llvm.org/11.0.0/tools/lld/docs/ReleaseNotes.html

https://releases.llvm.org/11.0.0/tools/polly/docs/ReleaseNotes.html

https://releases.llvm.org/11.0.0/projects/libcxx/docs/ReleaseNotes.html

>>> Подробности

★★★★★

Проверено: Shaman007 ()
Последнее исправление: Shaman007 (всего исправлений: 1)

За flang зачёт.

yvv ★★☆
()
Ответ на: комментарий от xtouqh

-fno-common по умолчанию.

В gcc так же (вроде, стало недавно).

anonymous
()

Интересно, кто-нибудь пробовал что-то писать руками на низкоуровневом языке самого LLVM? :)

hobbit ★★★★★
()
Ответ на: комментарий от hobbit

Давно пробовал. Геморно немного, но в целом типичный компиляторный IR.

alexanius ★★
()
Ответ на: комментарий от menangen

Там на pypy доках если порыться, можно найти объяснение, почему они не стали использовать llvm. Не срослось у них чего-то там.

yvv ★★☆
()
Ответ на: комментарий от anonymous

В результате он бы развивался как отдельный язык, так как привязки к В8 и браузерам не было бы, не нужно

fernandos ★★★
()

В частности, в порядке эксперимента в состав вошёл Flang – фронтэнд для языка Фортран.

Ого! Вот это новость, надо будет попробовать.

hotpil ★★★★
()
Ответ на: комментарий от hotpil

Самое интересное, что у них была реализация, которая генерит исполняемый файл. Но она привязана к clang_driver посредством его патчинга. Видимо, в таком виде б нарный flang и предоставляли pgi и amd в своих наборах.

grem ★★★★★
()
Ответ на: комментарий от RazrFalcon

Самый отсталый из основных - это ваш любимый msvc.

По поддержке стандарта С++ точно нет.

clang особенно со своей libc++ поддерживает меньше всего фич C++20. Что и говорить, он до сих пор не поддерживает часть фич С++17…

https://en.cppreference.com/w/cpp/header/memory_resource

https://en.cppreference.com/w/cpp/numeric/special_functions

fsb4000 ★★★★★
()
Последнее исправление: fsb4000 (всего исправлений: 1)
Ответ на: комментарий от fsb4000

Я ждал этого комментария. (с)

Там такая поддержка, что в каждой минорной версии что-то ломают. Даже мои поделки умудрились сломать.

libc++

Я за бан x2. Никто не заставляет её использовать.

Как компилятор/набор утилит - llvm не имеет равных. Даже msvs уже тащит его.

Про сообщения об ошибках в msvc я вообще молчу. Привет 80-е.

RazrFalcon ★★★★★
()
Последнее исправление: RazrFalcon (всего исправлений: 1)
Ответ на: комментарий от hobbit

Писал когда-то на нём одну небольшую программку ради эксперимента. Писать можно и в некоторых моментах удобнее чем на многих ЯП, но:

  • если регистрам давать осознанные имена - генерируется менее качественный код
  • очень много неопределённого поведения
  • компилятор анализирует ошибки на самом минимальном уровне
Taetricus
()
Ответ на: комментарий от RazrFalcon

clang с stdc++ глюконавтит с дебагерами, что с gdb, что с lldb.

anonymous
()
Ответ на: комментарий от ponchik-2

Эм. Может, потому что он ещё и про C++? Для Андроида и мака/айоси - основной компилятор

anonymous
()
Ответ на: комментарий от AUX

Чем тебе лицензия компилятора мешает компилить коммерческий код?

Некоторые (все) компиляторы вставляют рантайм со своей телеметрией лицензией.

anonymous
()
Ответ на: комментарий от grem

у AMD flang был старый - в llvm добавили 2ю инкарнацию - f18, переименовав его в flang.

Slackware_user ★★★★★
()
Ответ на: комментарий от hobbit

Я делал компилятор с llvm-бэком. На IR писал базовую часть рантайма. Намного приятнее ассемблеров.

filosofia
()
Ответ на: комментарий от Slackware_user

Пока пишут, что вин не поддерживает.

grem ★★★★★
()

LLVM. В частности, в порядке эксперимента в состав вошёл Flang – фронтэнд для языка Фортран.

?
??
-_-
-_- -_-

llvmd?

darkenshvein ★★★★★
()
Ответ на: комментарий от RazrFalcon

Никто не заставляет её использовать.

libc++ единственная стандартная библиотека для Android, Mac, FreeBSD, OpenBSD. (на Linux/Windows да есть другие стандартные библиотеки С++)

Последние месяцы в LLVM был ровно один разработчик стандартной библиотеки C++

https://github.com/ldionne

Именно по этому за 7 месяцев там были добавлены лишь математические константы.

Гугл и Apple просто жлобы упоротые, картинка им в тему: https://xkcd.com/2347/

fsb4000 ★★★★★
()
Последнее исправление: fsb4000 (всего исправлений: 1)
Ответ на: комментарий от alexanius

translates a subset of Python

Вот когда будет не subset а, полный, тогда поговорим

anonymous
()
Ответ на: комментарий от menangen

Лучше сразу в asm. Зато универсальнее и не надо зависеть от LLVm инфраструктуры.

anonymous
()

Эм, просветите - llvm которые могут в С++ и С и сами делают классные не только низкоуровневые вещи такие как оптимизации кода и реализации алгоритмов стандартных библиотек, но и делают хорошую архитектуру своих продуктов на этих самых С++ и С, с какого-то фига для системы сборки используют Питон?

Почему? Зачем? о_О

bonta ★★★★★
()
Ответ на: комментарий от RazrFalcon

Если Borland считать тоже за основной, то таки он победит в отсталости, в нём даже буст собрать нельзя ванильный, и те кто использует по каким-то причнам борланд, когда выходит новая версия иде и иже с ним вынуждены ждать когда буст (адаптированный под их компиллер) появится в пакетах. В прошлый раз промежуток между выходом новейшей среды и пакета с бустом составил около полугода. Круто, промышленно. Кстати я так и не понял у них толи свой компилятор как фронт к llvm толи взяли какую-то версию clang и отфоркали для своих нужд.

bonta ★★★★★
()
Ответ на: комментарий от fsb4000

Почти ничего не сделали за 7 месяцев для С++

Что С++ сделал такого, что для него кто-то должен что-то делать?

LongLiveUbuntu ★★★★★
()
Ответ на: комментарий от bonta

Почему? Зачем? о_О

Потому-что разработчики llvm не страдают фанатизмом, и там где нужно используют подходящий инструмент.

anonymous
()
Ответ на: комментарий от bonta

Кстати я так и не понял у них толи свой компилятор как фронт к llvm толи взяли какую-то версию clang и отфоркали для своих нужд.

У них покалеченный адаптированный ими под расширения борланда форк clang. При этом он получился почему-то в несколько раз тормознее чем оригинальный clang. Но самый ужас это стандартная библиотека, там прикрученная изолентой бета альфа версия динкумваре стл, в любом месте на корректном коде может быть глюк с AV так как прикручивали индусы дельфисты не знающие ни про копирующие ни тем более про перемещающие конструкторы. Хотя это все продолжение славных традиций борланда.

anonymous
()
Ответ на: комментарий от anonymous

У них и для delphi на основе llvm сейчас компилятор

grem ★★★★★
()
Ответ на: комментарий от bonta

Сильно сомневаюсь, что его можно считать основным. msvc - винда llvm (clang) - яблоко и бсд gcc - линукс + бОльшая часть опенсорс программ

fernandos ★★★
()
Ответ на: комментарий от fsb4000

Гугл и Apple просто жлобы упоротые

Нет, они просто понимают что C++ - ненужно.

RazrFalcon ★★★★★
()
Ответ на: комментарий от bonta

Для управления дебагером и прочим, тебе это не нужно, не парься

menangen ★★★★★
()

В чём именно заключается «эксперимент по включению Фортрана»?? Сам эксперимент - медицинский штоле?

matumba ★★★★★
()
Ответ на: комментарий от HIU

Попробуй развить свою мысль, например, модули там появились раньше всех.

Модули появились раньше всех в MSVC(16.8 Preview 3, релиз вроде в ноябре будет, совсем скоро, но уже доступна для скачивания 16.8 Preview 4), а в clang их до сих пор нет. Даже в develop ветки gcc реализовано больше возможностей модулей(почти всё) по сравнению с clang.

Смотри их табличку на самом сайте clang: http://clang.llvm.org/cxx_status.html#cxx20

https://imgur.com/a/TeNK2lY

Не удивлюсь если в gcc 11 будут модули, а в clang 12 до сих пор не будет…

fsb4000 ★★★★★
()
Последнее исправление: fsb4000 (всего исправлений: 2)
Ответ на: комментарий от HIU

Там были clang modules и это совсем не то, что вошло в 20й стандарт. Стандартные модули МС запилили первые.

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.