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

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

В частности, в порядке эксперимента в состав вошёл 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 ()
Ответ на: комментарий от AUX

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

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

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

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

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

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

https://github.com/ldionne

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

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

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

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

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

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

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

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

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

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

anonymous ()
Ответ на: комментарий от 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)