LINUX.ORG.RU

Вышел LLVM 3.2

 ,


1

4

Chris Lattner из Apple представил новый релиз LLVM — низкоуровневой виртуальной машины, работающей на многих архитектурах, в байткод которой могут компилироваться многие популярные языки при помощи соответствующих фронтендов.

Разработчики называют данную версию большим скачком, она разрабатывалась более 6 месяцев и содержит большое количество улучшений и новой функциональности.

Clang теперь имеет лучшую в отрасли поддержку C++11, улучшена диагностика, улучшения в C11 и Obj-C (включая поддержку «ObjC literals»). Статический анализатор Clang теперь имеет поддержку кроссфункционального анализа вместе с улучшенной поддержкой Objective-C.

LLVM 3.2 теперь включает:

  • автоматический векторизатор (в ранней стадии разработки);
  • поддержку тюнинга для различных процессоров архитектуры ARM;
  • поддержку кодогенерации NVIDIA PTX (промежуточный код для устройств CUDA);
  • значительные улучшения в фазе компиляции SROA;
  • улучшения в поддержке AVX2 для процессоров x86;
  • значительные улучшения в бэкэнде для процессоров MIPS (включая поддержку ассемблера и дизассемблера);
  • серьезные улучшения в поддержке ELF для архитектуры PowerPC64;
  • LLDB — новый инструментарий для отладки;
  • многочисленные исправления ошибок и минорные улучшения.

Полный список изменений

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

★★★★★

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

Clang теперь имеет полноценную поддержку C++11

В смысле весь стандарт целиком?

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

Clang 3.2 supports most of the language features added in the latest ISO C++ standard,C++ 2011. Use -std=c++11 or -std=gnu++11 to enable support for these features. In addition to the features supported by Clang 3.1, the following features have been added:

  • Implemented the C++11 discarded value expression rules for volatile lvalues.
  • Support for the C++11 enum forward declarations.
  • Handling of C++11 attribute namespaces (automatically).
  • Implemented C++11 [conv.prom]p4: an enumeration with a fixed underlying type has integral promotions to both its underlying type and to its underlying type's promoted type.

З.Ы. поправил новость, спасибо, что обратил внимание

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

Собственный trunk уже может собрать без образования сингулярностей?

buddhist ★★★★★
()

имеет поддержку кроссфункционального анализа

Если бы я не читал оригинал, то хрен бы понял о чем речь. По-моему interprocedural лучше перевести как «межпроцедурный».

Relan ★★★★★
()

Я так понимаю, VMKit и Unladen Swallow закопали?

devl547 ★★★★★
()

IDE

А какие-нибудь IDE используют сейчас CLang для анализа С++-кода, подсказок и т.п.? вроде Qt Creator хотели на это дело перевести, но что-то новостей не слышно.

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

А в машине ты наверно педаль тормоза срезал для крутости

Конечно. Собираюсь сбросить её в овраг. Разгонюсь и выброшусь в последний момент из окна.

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

Да в том то и дело, что от них никаких вестей нет уже давно.

devl547 ★★★★★
()
Ответ на: IDE от anonymous

А какие-нибудь IDE используют сейчас CLang для анализа С++-кода, подсказок и т.п.?

Xcode использует давно.
Vim + clang_complete (анализатора кода нет, только комплит).

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

Не, при всем уважении vim всё-таки не IDE, а редактор на стероидах. Я про более «хомячковые» вещи вроде KDevelop.

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

Понятно, спасибо. Но макинтоша не имею, а Вим всё-таки слишком хардкорная штука для меня. Я больше Qt Creator и т.п. user-friendly IDE предпочитаю. А они что-то не торопятся с clang'ом :/

ЗЫЖ хоть на мак переходи, хех.

anonymous
()

новый релиз LLVM — низкоуровневой виртуальной машины

«Мать-мать-мать...» - привычно отозвалось эхо (с)

Ну что за нах?! Даже на сайте написано: «The LLVM Project is a collection of modular and reusable compiler and toolchain technologies.» и «The name „LLVM“ itself is not an acronym; it is the full name of the project.»

КОГДА ВЫ УЖЕ ЗАБУДЕТЕ ПРО vm? Её там _практически_ нет, как самостоятельной отдельной «единицы». Вот уж эти прыщавые красногалстучники^W красноглазики!

yyk ★★★★★
()

Я правильно понимаю, что это такой велосипед, чтобы теоретически устранить один немаловажный аргумент для открытия исходников приложений в виде возможности собрать открытые исходники под любую архитектуру?

Типа вот вам LLVM, вот и запускайте на ней закрытый байткод, всё будет работать, зачем вам исходники?

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

ещё один... хоть бы по диагонали пролистали прочие срачи про llvm... Байткод - платформо-зависим. Как ассемблер. Пусть и унифицирован на 95%, но всё равно - ПЛАТФОРМО-ЗАВИСИМ. Он генериться _для_ одной платформы и для неё-же переводится в натив.

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

Дык все равно в x86 всё преобразовывается в микрокод оптимизируется же, причем в каждой модели процессора по-своему. Или он и для RISC-архитектур похабщину выплёвывает?

anonymous
()
Ответ на: IDE от anonymous

Один из авторов плагина для вима (украинец gribozavr) запилил в сам clang выдачу варнингов в doxygen с флагом -Wdocumentation, парсинг доксигена и всё сопутствующее.

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

Codeblocks и codelite что-то делали, но я бы не назвал это полномасштабным системным процессом. В Visual Studio есть плагин для компиляции с использованием clang, там можно выбрать между ABI mingw и msvc. Это не к анализу конечно.

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

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

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

Тогда в чём смысл байткода? Чего бы сразу в нормальный код не компилировать?

Байткод - это универсальное представление кода, которое хорошо связывается с AST и над которым можно производить любые оптимизирующие преобразования вне зависимости от исходного языка программирования.

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

а Вим всё-таки слишком хардкорная штука для меня.

Это кажется так. Попробуйте поработать с ним день так, как будто других вариантов у вас нет. После этого поймете, насколько ущербны все ide, которые вы до этого использовали.

ЗЫЖ хоть на мак переходи, хех.

Ради Xcode не стоит - то еще говно. Хотя в четвертой ветке и появилась претензия на удобство, но все равно, это говно в цветном фантике.

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

КОГДА ВЫ УЖЕ ЗАБУДЕТЕ ПРО vm?

Ну дык авторам, наверное, никто не навязывал названия под дулом, сами сглупили. «Как ты судно назовёшь...» Теперь будут спрашивать, пока не переименуют.

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

КОГДА ВЫ УЖЕ ЗАБУДЕТЕ ПРО vm? Её там _практически_ нет, как самостоятельной отдельной «единицы». Вот уж эти прыщавые красногалстучники^W красноглазики!

Почитал английскую википедию, истину глаголишь, боярин! :)

The name LLVM was originally an initialism for Low Level Virtual Machine, but the initialism caused widespread confusion because the scope of the project is not limited to the creation of virtual machines. As the scope of LLVM grew even further, it became an umbrella project that includes a variety of other compiler and low-level tool technologies as well, making the name even less apt. As such, the project abandoned[4] the initialism. Now, LLVM is a brand that applies to the LLVM umbrella project, the LLVM intermediate representation, the LLVM debugger, the LLVM C++ standard library, etc.

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

Попробуйте поработать с ним день так, как будто других вариантов у вас нет.

Что, у него от этого появится вменяемый рефакторинг? Или в подсказках будут использоваться варианты, основанные на анализе текущего контекста (типа, если в данной точке доступны переменные: локальная C1 a, глобальная C2 g_b и член класса C3 m_c, - то при написав «myFunc(», вы в подсказках получите «myFunc(a, g_b, m_c)», при условии, что myFunc принимает параметры этих типов)? Или всё это нафиг не нужно, и Люк должен выключить компьютер, чтобы попасть точно в цель?

По теме. Мне тут товарищи из нашего отдела портирования сказали, что clang стал основным компилятором для iOS. И это при том, что бенчмарки «обычного clang vs gcc» местами пугают. У эппла в девките совсем свой clang, с ментоловым вкусом, или решили, что процессор пятого айфона надо как-то утилизировать?

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

Он, как правило, на уровне (или несколько медленнее, но непринципиально) текущего gcc, но местами есть провалы. На опеннете и хабре, что-ли, были хобости с последующим обсуждением и обменом собственным опытом.

Плюс, интересно, что с векторизатором кода. Интелевцы говорили, что они плотно работают с gcc'шниками на повод поддержки всех новомодных интелевых наработок (ну, по крайней мере, на уровне фронтенда компилятора), интересно, как с этим у эппловцев.

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

Что, у него от этого появится вменяемый рефакторинг?

Нет, рефакторинг говно, тупо руками (или я чего то не знаю?).

Или в подсказках будут использоваться варианты, основанные на анализе текущего контекста (типа, если в данной точке доступны переменные: локальная C1 a, глобальная C2 g_b и член класса C3 m_c, - то при написав «myFunc(», вы в подсказках получите «myFunc(a, g_b, m_c)», при условии, что myFunc принимает параметры этих типов)? Или всё это нафиг не нужно, и Люк должен выключить компьютер, чтобы попасть точно в цель?

Да, читайте, что такое clang_complete.

Мне тут товарищи из нашего отдела портирования сказали, что clang стал основным компилятором для iOS.

Это было так давно, что я уже и забыл когда оно свершилось.

И это при том, что бенчмарки «обычного clang vs gcc» местами пугают.

Меня в плане разработки для ios не пугают.

У эппла в девките совсем свой clang, с ментоловым вкусом, или решили, что процессор пятого айфона надо как-то утилизировать?

Тут все проще - кто девушку танцует, тот ее и любит.

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

Он, как правило, на уровне (или несколько медленнее, но непринципиально) текущего gcc, но местами есть провалы. На опеннете и хабре, что-ли, были хобости с последующим обсуждением и обменом собственным опытом.

При этом он давно основной компилер для ios.

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

Два года назад на ЛОРе сообщили, что в LLVM 2.8 «в основной проект вошел отладчик LLDB».

Ну так он и вошел... для макообразия.

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

Я некоторое время назад спрашивал (может, и тут) - сказали, что оно и не только там уже работает, просто страничку не обновили.

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

При этом он давно основной компилер для ios.

ну, я сейчас посмотрел, около года, наверное. А для некоторых платформ нашим до сих пор 2005-ую студию приходится использовать :)

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

Меня в плане разработки для ios не пугают.

В том смысле, что оно «как-то работает»? Наверняка, работает. Вопрос в том, как.

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

Да, читайте, что такое clang_complete

Спасибо.

AlexM ★★★★★
()
Ответ на: IDE от anonymous

А какие-нибудь IDE используют сейчас CLang для анализа С++-кода, подсказок и т.п.?

Xcode, vim, даже emacs научили (clang-completion-mode.el)

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

Я правильно понимаю

Нет, неправильно. Ты вообще ни черта не понимаешь.

Типа вот вам LLVM, вот и запускайте на ней закрытый байткод

Биткод LLVM платформозависимый. Его нельзя переносить.

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

где IR зависим?там только интринсики зависимы и то не все.

Ламер.

Размеры и alignment-ы всех типов данных платформозависимы. Интринсики почти все платформозависимы. В конце концов, ABI очень сильно платформозависимо.

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

Тогда в чём смысл байткода? Чего бы сразу в нормальный код не компилировать?

Ты ламер. Внутри GCC тоже полно точно такого же «байткода». Попробуй, например, скомпилировать что-то с gcc -flto.

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