The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  вход/выход  слежка  RSS
"Новая версия набора компиляторов LLVM 3.1"
Вариант для распечатки  
Пред. тема | След. тема 
Форум Разговоры, обсуждение новостей
Изначальное сообщение [ Отслеживать ]

"Новая версия набора компиляторов LLVM 3.1"  +/
Сообщение от opennews on 23-Май-12, 12:22 
После 6 месяцев разработки доступен (
http://lists.cs.uiuc.edu/pipermail/llvm-announce/2012-May/00...
) релиз проекта LLVM 3.1 (http://llvm.org) (Low Level Virtual Machine) - GCC совместимого инструментария (компиляторы, оптимизаторы и генераторы кода), компилирующего программы в промежуточный биткод (http://llvm.org/docs/BitCodeFormat.html) RISC подобных виртуальных инструкций (низкоуровневая виртуальная машина с многоуровневой системой оптимизации). Сгенерированный платформонезависимый псевдокод может быть преобразован при помощи JIT-компилятора в машинные инструкции непосредственно в момент выполнения программы.

Основные новшества (http://llvm.org/docs/ReleaseNotes.html) LLVM 3.1:

-  Представлен инструмент для автоматизированного  выявления ошибок с распределением памяти AddressSanitizer, позволяющий определить факты обращения к освобождённым областям памяти, выхода за пределы границ выделенного буфера и некоторые другие типы ошибок при работе с памятью;
-  Значительное улучшение поддержки стандарта C++'11 (http://www.opennet.me/opennews/art.shtml?num=31476) в LLVM-фронтэнде Clang. В том числе добавлена поддержка лямбда-выражений, списков инициализации, атомарных операций, ключевого слова "constexpr", пользовательских литералов и т.п. Поддержка языков  C, C++, Objective-C++ и Objective-C в настоящее время полностью стабилизирована для целевых плафторм x86 (32- и 64-bit) и ARM. В новой версии также добавлена расширенная поддержка литералов для Objective C и интегрирована библиотека tooling (http://clang.llvm.org/docs/Tooling.html) для упрощения разработки собственных инструментариев на базе Clang;

-  В генератор кода добавлена поддержка "связок инструкций" (instruction bundles (http://llvm.org/releases/3.1/docs/CodeGenerator.html#machine...)), позволяющих смоделировать поддержку VLIW-групп через упаковку произвольного числа параллельных инструкций. В итоге, значительно улучшена поддержка генерации кода для целевых архитектур процессоров VLIW (http://ru.wikipedia.org/wiki/VLIW) (например, применяется в некоторых GPU), в которых одна инструкция содержит несколько параллельно выполняющихся операций. Кроме того, в генератор кода добавлена поддержка алгоритма "Basic Block Placement", поддерживающий вероятностные методы размещения блоков кода;

-  Добавлена (http://llvm.org/releases/3.1/docs/ReleaseNotes.html#arminteg...) реализация интегрированного макро-ассемблера для архитектуры ARM, который ускорил время компиляции и дал возможность реализовать некоторые дополнительные возможности для целевых систем ARM, такие как Thumb1, Thumb2 и ARM режимы, а также поддержку специфичных расширений для VFP2, VFP3 и NEON;

-  Значительное улучшение работы MIPS-бэкенда, теперь полноценно поддерживающего архитектуру MIPS64;

-  Добавлен новый порт с поддержкой процессоров Qualcomm Hexagon VLIW;

-  В DragonEgg, плагине к набору компиляторов GCC, заменяющем оригинальные оптимизаторы и генераторы кода GCC на аналоги, созданные в рамках проекта LLVM, в дополнение к полной поддержке работы в виде плагина к GCC 4.5 и 4.6 без применения дополнительных патчей, добавлена базовая поддержка GCC 4.7. Также добавлена возможность сборки для архитектуры ARM;

-  Улучшена работа библиотек libc++ (http://libcxx.llvm.org/) и compiler_rt (http://compiler-rt.llvm.org/), которые распространяются под двойной лицензией MIT и UIUC. Библиотека libc++ представляет собой (http://www.opennet.me/opennews/art.shtml?num=26560) реализацию стандартной библиотеки классов C++, распространяемую под BSD-подобной лицензией и нацеленную на высокоэффективную генерацию кода и на максимальное обеспечение совместимости с существующими и будущими стандартами. Библиотека обеспечивает минимальное потребление памяти, высокую скорость выполнения функций, быструю компиляцию и совместимость на уровне ABI с libstdc++ из состава GCC для некоторых низкоуровневых возможностей, таких как объекты-исключения (exception objects), rtti и распределение памяти. В настоящее время libc++ уже интегрирована в базовую систему FreeBSD и планируется к использованию по умолчанию в FreeBSD 10. Отмечается также портирование libc++ для Solaris и возможность полноценного использования на данной платформе в сочетании с  libcxxrt и clang;

-  Значительное увеличение производительности проекта VMKit (http://vmkit.llvm.org/), виртуальной машины Java VM, использующей LLVM для статической и JIT-компиляции;

-  В число официально поддерживаемых проектов включён экспериментальный оптимизатор Polly (http://polly.llvm.org/), в настоящий момент поддерживающий несколько техник оптимизации циклов и позволяющий организовать автоматическое распараллеливание кода с задействованием OpenMP. Для использования polly в clang следует указать "-O3 -mllvm -polly";

-  Для целевых платформ X86-32 и X86-64 значительно расширена поддержка набора инструкций AVX 2 (Advanced Vector Extensions), устранены проблемы с ранее реализованной поддержкой AVX1, добавлена поддержка расширений FMA4 и XOP;

-  Добавлены официально поддерживаемые биндинги для языка Python, которые пока поддерживают только интерфейс для работы с объектными файлами и дизасемблер;

-  Добавлена утилита llvm-stress для проведения стресс-тестирования различных компонентов LLVM путем генерации случайных ll-файлов.


Из параллельно развивающихся проектов, основанных на LLVM, можно отметить:


-  KLEE (http://klee.llvm.org/) - символьный анализатор и генератор тестовых наборов;

-  Runtime-библиотека compiler-rt (http://compiler-rt.llvm.org/);

-  llvm-mc (http://llvm.org/releases/2.6/docs/ReleaseNotes.html#mc) - автогенератор ассемблера, дизассемблера и других, связанных с машинным кодом компонентов, на основе описаний параметров LLVM-совместимых платформ.

-  VMKit (http://vmkit.llvm.org/) - виртуальная машина для Java и .NET;

-  Реализация функционального языка программирования Pure (http://pure-lang.googlecode.com/);

-   LDC (http://www.dsource.org/projects/ldc) - компилятор для языка D;

-  Roadsend PHP (http://code.roadsend.com/rphp) - оптимизатор, статический и JIT компилятор для языка PHP;

-  Виртуальные машины для Ruby: Rubinius (http://rubini.us/) и MacRuby (http://www.macruby.org/);

-  Unladen
Swallow (http://code.google.com/p/unladen-swallow/)  - реализация языка Python;

-  LLVM-Lua (http://code.google.com/p/llvm-lua/)

-  FlashCCompiler (http://llvm.org/devmtg/2008-08/Petersen_FlashCCompiler.pdf) - средство для компиляции кода на языке Си в вид пригодный для выполнения в виртуальной машине Adobe Flash;

-  LLDB (http://lldb.llvm.org/) - новая (http://www.opennet.me/opennews/art.shtml?num=26907)  модульная инфраструктура отладки, использующая такие подсистемы LLVM как API для дизассемблирования, Clang AST (Abstract Syntax Tree), парсер выражений, генератор кода и JIT-компилятор. LLDB поддерживает отладку многопоточных программ на языках C, Objective-C и C++; отличается возможностью подключения плагинов и скриптов на языке Python; демонстрирует экстремально высокое быстродействие при отладке программ большого размера;

-  emscripten (https://github.com/kripken/emscripten/wiki) - компилятор биткода LLVM в JavaScript, позволяющий преобразовать для запуска в браузере приложения, изначально написанные на языке Си. Например, удалось запустить Python, Lua, Quake, Freetype;

-  sparse-llvm (https://github.com/penberg/sparse-llvm) - бэкенд, нацеленный (http://www.opennet.me/opennews/art.shtml?num=31636) на создание Си-компилятора, способного собирать ядро Linux.
-  Portable OpenCL (http://www.opennet.me/opennews/art.shtml?num=32092) -  открытая и независимая реализация стандарта OpenCL;
-  CUDA Compiler (http://www.opennet.me/opennews/art.shtml?num=33800) - позволяет сгенерировать GPU-инструкции из кода, написанного на языках Си, Си++ и Fortran;
-  Julia (http://www.opennet.me/opennews/art.shtml?num=33315) - открытый динамический язык программирования, использующий наработки проекта LLVM.


URL: http://lists.cs.uiuc.edu/pipermail/llvm-announce/2012-May/00...
Новость: http://www.opennet.me/opennews/art.shtml?num=33915

Ответить | Правка | Cообщить модератору

Оглавление

Сообщения по теме [Сортировка по времени | RSS]


7. "Новая версия набора компиляторов LLVM 3.1"  –4 +/
Сообщение от pavlinux (ok) on 23-Май-12, 12:59 
Polly вкусная няшка.
Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

60. "Новая версия набора компиляторов LLVM 3.1"  +/
Сообщение от кевин on 25-Май-12, 03:39 
хм понять бы как её в генте завести..
Ответить | Правка | ^ к родителю #7 | Наверх | Cообщить модератору

8. "Новая версия набора компиляторов LLVM 3.1"  –1 +/
Сообщение от Андрей (??) on 23-Май-12, 13:30 
Если бы LLDB был не только под Apple.
Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

21. "Новая версия набора компиляторов LLVM 3.1"  +/
Сообщение от an. on 23-Май-12, 16:57 
> Если бы LLDB был не только под Apple.

Что Вы имеете в виду? Насколько написано в документации, он должен работать под Linux. Я собирал и запускал его (правда, сильно поизучать его не удалось из-за нехватки времени...)

Ответить | Правка | ^ к родителю #8 | Наверх | Cообщить модератору

24. "Новая версия набора компиляторов LLVM 3.1"  +/
Сообщение от Андрей (??) on 23-Май-12, 17:25 
Вот другие обещают, но не делают, а LLDB, значит, может больше, чем на главной странице:
"LLDB is known to work on the following platforms, but ports to new platforms are welcome:
    Mac OS X desktop user space debugging for i386 and x86-64
    iOS simulator debugging on i386
    iOS device debugging on ARM"
Ответить | Правка | ^ к родителю #21 | Наверх | Cообщить модератору

31. "Новая версия набора компиляторов LLVM 3.1"  +/
Сообщение от an. on 23-Май-12, 18:27 
Да, на главной действительно нету. Но есть вот это: http://lldb.llvm.org/build.html ("Building LLDB on Linux")
Ответить | Правка | ^ к родителю #24 | Наверх | Cообщить модератору

9. "Новая версия набора компиляторов LLVM 3.1"  +2 +/
Сообщение от Аноним (??) on 23-Май-12, 13:42 
"Параллельно развивающийся" проект Unladen Swallow умер 2 года назад "за ненадобностью". Где он развивается?
Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

26. "Новая версия набора компиляторов LLVM 3.1"  +1 +/
Сообщение от Аноним (??) on 23-Май-12, 17:59 
> Где он развивается?

В параллельной вселенной, разумеется. Никогда не слышали про кота Шредингера и ансамбли миров чтоли? :)

Ответить | Правка | ^ к родителю #9 | Наверх | Cообщить модератору

11. "Новая версия набора компиляторов LLVM 3.1"  +/
Сообщение от x0r (??) on 23-Май-12, 14:28 
clang static checker классная штука, жаль только для C, а не C++
Я им нашел ошибки в нескольких opensource проектах
Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

12. "Новая версия набора компиляторов LLVM 3.1"  +/
Сообщение от Trewsa on 23-Май-12, 15:42 
Объясните, что такое LLVM? Это наподобие Java? Скомпилировал в байт-код и могу использовать на разных платформах с LLVM. Или  это наподобия виртуальной явы машины, а clang типа jcc. Вот для примера у меня есть какой либо код написанный с использованием C++(никакого гуи только консоль).  Каким образом компилировать? llvm или clang?
Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

14. "Новая версия набора компиляторов LLVM 3.1"  +1 +/
Сообщение от Толстый (ok) on 23-Май-12, 16:02 
Первое предложение c llvm.org:

"The LLVM Project is a collection of modular and reusable compiler and toolchain technologies. Despite its name, LLVM has little to do with traditional virtual machines, though it does provide helpful libraries that can be used to build them."

LLVM это набор библиотек для создания компиляторов, основная библиотека предоставляет универсальный бэкенд. Clang - С/C++ компилятор использующий LLVM.

Ответить | Правка | ^ к родителю #12 | Наверх | Cообщить модератору

16. "Новая версия набора компиляторов LLVM 3.1"  +/
Сообщение от Trewsa on 23-Май-12, 16:08 
> Первое предложение c llvm.org:
> "The LLVM Project is a collection of modular and reusable compiler and
> toolchain technologies. Despite its name, LLVM has little to do with
> traditional virtual machines, though it does provide helpful libraries that can
> be used to build them."
> LLVM это набор библиотек для создания компиляторов, основная библиотека предоставляет
> универсальный бэкенд. Clang - С/C++ компилятор использующий LLVM.

Т.е. LLVM это просто библиотеки? И clang не обязательно использовать LLVM?

Ответить | Правка | ^ к родителю #14 | Наверх | Cообщить модератору

18. "Новая версия набора компиляторов LLVM 3.1"  +/
Сообщение от Толстый (ok) on 23-Май-12, 16:21 
Clang это компилятор построенный на технологиях LLVM. Для тебя это будет такой же компилятор как и GCC, только с более быстрой компиляцией и лучшими средствами диагностики.
Ответить | Правка | ^ к родителю #16 | Наверх | Cообщить модератору

22. "Новая версия набора компиляторов LLVM 3.1"  +/
Сообщение от Trewsa on 23-Май-12, 17:18 
> Clang это компилятор построенный на технологиях LLVM. Для тебя это будет такой
> же компилятор как и GCC, только с более быстрой компиляцией и
> лучшими средствами диагностики.

Т.о. кроссплатформеность LLVM это кроссплатформенность Clang. И чтобы какое либо приложение было много платформенным необходимо компилировать clang-ом в разных ОС? Или достаточно из одной ОС компилировать с разными флагами под системы? Я все правильно понял?

Ответить | Правка | ^ к родителю #18 | Наверх | Cообщить модератору

29. "Новая версия набора компиляторов LLVM 3.1"  +1 +/
Сообщение от dq0s4y71 (??) on 23-Май-12, 18:17 
> И чтобы какое либо приложение было много платформенным необходимо компилировать clang-ом в разных ОС?

Чтобы какое либо приложение было кроссплатформенным, его нужно таким НАПИСАТЬ. А компилировать его можно тем, что вы выбрали для каждой отдельной платформы

Ответить | Правка | ^ к родителю #22 | Наверх | Cообщить модератору

34. "Новая версия набора компиляторов LLVM 3.1"  +/
Сообщение от Аник on 23-Май-12, 19:52 
Ну так и в чем суть LLVM? Virtual machine не?
Ответить | Правка | ^ к родителю #29 | Наверх | Cообщить модератору

61. "Новая версия набора компиляторов LLVM 3.1"  +/
Сообщение от кевин on 25-Май-12, 03:44 
>> Clang это компилятор построенный на технологиях LLVM. Для тебя это будет такой
>> же компилятор как и GCC, только с более быстрой компиляцией и
>> лучшими средствами диагностики.
> Т.о. кроссплатформеность LLVM это кроссплатформенность Clang. И чтобы какое либо приложение
> было много платформенным необходимо компилировать clang-ом в разных ОС? Или достаточно
> из одной ОС компилировать с разными флагами под системы? Я все
> правильно понял?

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

Ответить | Правка | ^ к родителю #22 | Наверх | Cообщить модератору

28. "Новая версия набора компиляторов LLVM 3.1"  –6 +/
Сообщение от Аноним (??) on 23-Май-12, 18:10 
> же компилятор как и GCC, только с более быстрой компиляцией и лучшими средствами диагностики.

А также:
- С кривым оптимизатором, выдающим код хуже укуренной обезьяны под градусом. Порой еще и неверный код к тому же генерится.
- Вагоном странных багов, когда все падает к черту с internal error. Так что вместо написания программы вы идете воркэраундить чужой баг компилера...
- Странные баги в кодогенерации. Хотите ощутить что ваша программа живет своей жизнью и насколько кайфово ловить неочевидные левые глюки в которых вы не виноваты? Добро пожаловать в программерский ад.
- Поддержкой полутора архитектур и систем. Реально почти все разработчики вкалывают в эппле, их интересует 1-2 архитектуры и по сути 1 единственная система в паре вариантов. На все остальное эпплу по очевидным причинам положить. Поэтому доводить до ума вы их будете как-то сами. Почему вы? Потому что яблоку не надо а других как-то и нет.

Ответить | Правка | ^ к родителю #18 | Наверх | Cообщить модератору

32. "Новая версия набора компиляторов LLVM 3.1"  +1 +/
Сообщение от an. on 23-Май-12, 18:32 
Есть подозрение, что Вы не полностью правы насчет его стабильности и того, кому он интересен. Например:
* FreeBSD 10 отказывается от GCC в пользу CLANG: http://www.linux.org.ru/news/bsd/7747515
* Debian экспериментирует с этим вопросом: http://www.opennet.me/opennews/art.shtml?num=33281

Хотя я не отрицаю, стабильность пока оставляет желать лучшего - internal error'ы мне попадались самому, к сожалению.

Ответить | Правка | ^ к родителю #28 | Наверх | Cообщить модератору

39. "Новая версия набора компиляторов LLVM 3.1"  +/
Сообщение от an. on 23-Май-12, 22:02 
> internal error'ы мне попадались самому, к сожалению.

Справедливости ради хочу отметить, что речь шла про версию 3.0. Что касается 3.1 - она только что полностью собрала наш проект, на котором падала ее предшественица.

Ответить | Правка | ^ к родителю #32 | Наверх | Cообщить модератору

43. "Новая версия набора компиляторов LLVM 3.1"  –4 +/
Сообщение от Аноним (??) on 24-Май-12, 03:00 
> * FreeBSD 10 отказывается от GCC в пользу CLANG:

А эти господа велосипедисты-концептуалы на проблемы своих пользователей по жизни чихать хотели. В ответ все больше контор чихает уже на них. В том числе и потому что выбор между некрофильской версией gcc и глючным шлангом - по вкусу далеко не всем.

> * Debian экспериментирует с этим вопросом:

Они и с hurd экспериментируют. Давайте вы свалите на debian/GNU hurd?

> internal error'ы мне попадались самому, к сожалению.

Ну так эппл чужие проблемы чинить не будет.

Ответить | Правка | ^ к родителю #32 | Наверх | Cообщить модератору

64. "Новая версия набора компиляторов LLVM 3.1"  +/
Сообщение от кевин on 25-Май-12, 03:59 
>> * FreeBSD 10 отказывается от GCC в пользу CLANG:
> А эти господа велосипедисты-концептуалы на проблемы своих пользователей по жизни чихать
> хотели. В ответ все больше контор чихает уже на них. В
> том числе и потому что выбор между некрофильской версией gcc и
> глючным шлангом - по вкусу далеко не всем.
>> * Debian экспериментирует с этим вопросом:
> Они и с hurd экспериментируют. Давайте вы свалите на debian/GNU hurd?
>> internal error'ы мне попадались самому, к сожалению.
> Ну так эппл чужие проблемы чинить не будет.

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

Ответить | Правка | ^ к родителю #43 | Наверх | Cообщить модератору

66. "Новая версия набора компиляторов LLVM 3.1"  +/
Сообщение от N901 on 25-Май-12, 06:55 
кевин, жжешь! :)
Ответить | Правка | ^ к родителю #64 | Наверх | Cообщить модератору

36. "Новая версия набора компиляторов LLVM 3.1"  +/
Сообщение от Толстый (ok) on 23-Май-12, 20:45 
Мы вроде как находимся на форуме посвященному OpenSource - добро пожаловать! Какой открытый проект не глючный скажи мне пожалуйста? Особенно на ранней стадии своего развития. GCC  до 4 версии насколько я знаю был тоже далеко не сахар. Я clang'ом не пользовался, а только LDC - впечатления очень положительные. Если есть проблемы, то в лучших традициях опенсорса тебе сюда http://llvm.org/bugs/
Ответить | Правка | ^ к родителю #28 | Наверх | Cообщить модератору

38. "Новая версия набора компиляторов LLVM 3.1"  +/
Сообщение от Crazy Alex (ok) on 23-Май-12, 21:34 
Кхм. LDC вместо DMD? Но зачем...
Ответить | Правка | ^ к родителю #36 | Наверх | Cообщить модератору

42. "Новая версия набора компиляторов LLVM 3.1"  +/
Сообщение от Толстый (ok) on 24-Май-12, 01:11 
Ну dmd мой основной компилятор, но и ldc пользоваться иногда приходится. На линуксе работает практически также, компилирует медленнее, зато генерируемый код быстрее.
Ответить | Правка | ^ к родителю #38 | Наверх | Cообщить модератору

47. "Новая версия набора компиляторов LLVM 3.1"  +/
Сообщение от Аноним (??) on 24-Май-12, 03:21 
> Ну dmd мой основной компилятор,

Мсье знает толк...

Ответить | Правка | ^ к родителю #42 | Наверх | Cообщить модератору

44. "Новая версия набора компиляторов LLVM 3.1"  –1 +/
Сообщение от Аноним (??) on 24-Май-12, 03:16 
> Если есть проблемы, то в лучших традициях опенсорса тебе сюда http://llvm.org/bugs/

Глупо ломиться в запертую дверь если она стоит в чистом поле. Можно просто взять и обойти. Внезапно: GCC не падает, генерит код под кучу платформ (вот прям ща бинарь под Atmel AVR мне билданул, например). При компилежке ничего не падает. И код генерится такой что закачаешься: на easyelectronics например показано как перец приделал к avr'кам си++ классы для дергания лапками. GCC в ответ отжог и выдал феноменальную по простоте и эффективности конструкцию, невзирая на концепции. Буквально считанные асмовые команды. Вот это то что я называю фразой "хорошо работающий оптимизатор". Я бы даже сказал, круто работающий - никогда б не подумал что это можно так компактно утрамбовать. Это конечно изврат, но оптимизатору - зачет.

Понимаешь, мне не @#$тись с концептуальным тулом надо, который может быть, когда-то там. А чтоб оно работало. Желательно прям ща и хорошо. Свою ненависть к GPL и подхалимаж к эпплу засунь уже туда где не светит солнце. С таким подходом далеко не уедешь. Особенно если надо бинарник который меряет датчики и щелкает нагрузкой по нужному алгоритму вот прям ща, а не через 10 лет. И да, я не вижу в каком месте меня обули на права. Этот блоб по сути 100% проприетарь. У тебя его никогда не будет. Да и не нужен он тебе, это единичная штука "по месту, по ситуации". И я не вижу в каком месте и чья лицензия была попрана: там кроме моего кода вообще нихрена нет. А тот кто просто генерил код - никаких правов по этому поводу вообще не приобретает ;]

Ответить | Правка | ^ к родителю #36 | Наверх | Cообщить модератору

50. "Новая версия набора компиляторов LLVM 3.1"  +2 +/
Сообщение от kshetragia (ok) on 24-Май-12, 05:54 
Че сказать-то хотел.. Залогинься уже, User. Ты можешь изменить ник, но стиль вполне узнаваем.

Ответить | Правка | ^ к родителю #44 | Наверх | Cообщить модератору

52. "Новая версия набора компиляторов LLVM 3.1"  +2 +/
Сообщение от _yurkis_ (ok) on 24-Май-12, 10:09 
Первый абзац вроде ничего. Но потом эталонный неадекват :(
Ответить | Правка | ^ к родителю #44 | Наверх | Cообщить модератору

65. "Новая версия набора компиляторов LLVM 3.1"  +/
Сообщение от Аноним (??) on 25-Май-12, 04:37 
не говори мне, чем пользоваться и не скажу куда тебе следует пойти.
не нравится - не ешь, только молча, не нужно всем остальным рассказывать как это не вкусно, если у всех остальных оно за обе щеки уплетается.
Ответить | Правка | ^ к родителю #44 | Наверх | Cообщить модератору

62. "Новая версия набора компиляторов LLVM 3.1"  +/
Сообщение от кевин on 25-Май-12, 03:47 
>[оверквотинг удален]
> - Вагоном странных багов, когда все падает к черту с internal error.
> Так что вместо написания программы вы идете воркэраундить чужой баг компилера...
> - Странные баги в кодогенерации. Хотите ощутить что ваша программа живет своей
> жизнью и насколько кайфово ловить неочевидные левые глюки в которых вы
> не виноваты? Добро пожаловать в программерский ад.
> - Поддержкой полутора архитектур и систем. Реально почти все разработчики вкалывают в
> эппле, их интересует 1-2 архитектуры и по сути 1 единственная система
> в паре вариантов. На все остальное эпплу по очевидным причинам положить.
> Поэтому доводить до ума вы их будете как-то сами. Почему вы?
> Потому что яблоку не надо а других как-то и нет.

весь мой генту перекомпилировался клангом(за исключением 5 приложений где было лень копать) и работает замечательно

ну и проблемы там токо на си коде, всё на плюсах без проблем( опенмп отключил да -_-)

Ответить | Правка | ^ к родителю #28 | Наверх | Cообщить модератору

33. "Новая версия набора компиляторов LLVM 3.1"  +/
Сообщение от Имя on 23-Май-12, 19:30 
> ... Это наподобие Java? Скомпилировал в байт-код и могу использовать на разных платформах с LLVM. Или  это наподобия виртуальной явы машины, а clang типа jcc.

Эксперименты с переносимым байт кодом LLVM идут в NativeClient-е, без особого успеха.

А так - либа, которая генерит машинный код, местами кое-как.

Ответить | Правка | ^ к родителю #12 | Наверх | Cообщить модератору

49. "Новая версия набора компиляторов LLVM 3.1"  +/
Сообщение от kshetragia (ok) on 24-Май-12, 05:51 
   Это скорее и то и другое. CLANG - это фронтенд компилятор. Который разбирает синтаксис C/C++ и генеряет из него байткод наподобие RISK архитектуры. LLVM - виртуальная машина, которая может этот байткод исполнять, генерять нативный код на выбранной системе, упрощает создание различного рода инструментов анализа кода.. Такое разделение так же позволяет вносить более суровые оптимизации в LLVM не трогая собсно синтаксический анализатор.
   C Java в этом отношении очень много общего. Хотя и там эта идея была не нова. В Java позаимствовали наработки Вирта(если не ошибаюсь Модула3/Оберон) и промежуточное представление если не полностью, то во многом унаследовано от P-кода равно как и во многих других языках.
Ответить | Правка | ^ к родителю #12 | Наверх | Cообщить модератору

51. "Новая версия набора компиляторов LLVM 3.1"  +/
Сообщение от kshetragia (ok) on 24-Май-12, 06:15 
"Идея p-кода принадлежит Арсу Эмману (Urs Ammann), студенту Никлауса Вирта. В своем документе «On Code Generation in a Pascal», опубликованном в 1977 году, Эмман описал метод трансляции исходного кода программы в промежуточный код и то, как эта идея может быть использована для создания переносимых программ. Год спустя Кэн Боулс (Ken Bowles), профессор Калифорнийского университета в Сан Диего, разработал операционную систему UCSD p-System, в основе которой лежала виртуальная машина, исполняющая p-код, который, в свою очередь, создавался специальным компилятором с языка Pascal.

Идеей p-кода также заинтересовался и сам Никлаус Вирт. В 1985 году он начал работу над операционной системой Oberon, которая базировалась на интерпретаторе p-кода и высокоуровневом языке Oberon. Позднее на ее основе была создана ОС BlueBottle, развитие которой продолжается по сей день."

Ответить | Правка | ^ к родителю #49 | Наверх | Cообщить модератору

54. "Новая версия набора компиляторов LLVM 3.1"  +1 +/
Сообщение от тоже Аноним email(ok) on 24-Май-12, 12:58 
Значит, хотя бы это уже не смогли запатентовать корпорации. И то славно...
Ответить | Правка | ^ к родителю #51 | Наверх | Cообщить модератору

58. "Новая версия набора компиляторов LLVM 3.1"  +/
Сообщение от arisu (ok) on 25-Май-12, 00:59 
> Значит, хотя бы это уже не смогли запатентовать корпорации. И то славно…

как будто наличие prior work мешает выдаче патента. патентные бюро патенты не проверяют, фактически. и если сформулировать заявку достаточно туманно или «другими словами» — можно стричь купоны. потому что судебные разбирательства — штука дорогая, бизнес в это время стоит колом и вообще неудобно.

Ответить | Правка | ^ к родителю #54 | Наверх | Cообщить модератору

13. "Новая версия набора компиляторов LLVM 3.1"  +/
Сообщение от Анонимко on 23-Май-12, 15:47 
>clang static checker классная штука, жаль только для C, а не C++

Ты про статический анализатор? Если да, то он есть и под C++

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

15. "Новая версия набора компиляторов LLVM 3.1"  +/
Сообщение от Толстый (ok) on 23-Май-12, 16:05 
Отличный проект. Благодаря LLVM появилась возможность экспериментировать с новыми языками программирования компилирующими в нативный код, не углубляясь в детали кодогенерации. До этого это было невозможно, не связываясь с ужасом под названием GCC.
Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

20. "Новая версия набора компиляторов LLVM 3.1"  +/
Сообщение от iZEN (ok) on 23-Май-12, 16:34 
> Отличный проект. Благодаря LLVM появилась возможность экспериментировать с новыми языками
> программирования компилирующими в нативный код, не углубляясь в детали кодогенерации.
> До этого это было невозможно, не связываясь с ужасом под названием
> GCC.

LLVM как раз-таки позволяет углубляться в детали кодогенерации в отличие от "ужаса под названием GCC".


Ответить | Правка | ^ к родителю #15 | Наверх | Cообщить модератору

23. "Новая версия набора компиляторов LLVM 3.1"  +/
Сообщение от Толстый (ok) on 23-Май-12, 17:18 
>> Отличный проект. Благодаря LLVM появилась возможность экспериментировать с новыми языками
>> программирования компилирующими в нативный код, не углубляясь в детали кодогенерации.
>> До этого это было невозможно, не связываясь с ужасом под названием
>> GCC.
> LLVM как раз-таки позволяет углубляться в детали кодогенерации в отличие от "ужаса
> под названием GCC".

Нет. LLVM IR довольно-таки high-level штука. Совсем необязательно знать даже ассемблер чтобы написать кодогенератор для своего языка с помощью llvm.

Ответить | Правка | ^ к родителю #20 | Наверх | Cообщить модератору

30. "Новая версия набора компиляторов LLVM 3.1"  +4 +/
Сообщение от dq0s4y71 (??) on 23-Май-12, 18:20 
> Совсем необязательно знать даже ассемблер чтобы написать кодогенератор для своего языка с помощью llvm.

И работать он будет как кодогенератор, сделанный человеком, который даже не знает ассемблер.

Ответить | Правка | ^ к родителю #23 | Наверх | Cообщить модератору

37. "Новая версия набора компиляторов LLVM 3.1"  +/
Сообщение от Толстый (ok) on 23-Май-12, 21:09 
>> Совсем необязательно знать даже ассемблер чтобы написать кодогенератор для своего языка с помощью llvm.
> И работать он будет как кодогенератор, сделанный человеком, который даже не знает
> ассемблер.

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

Ответить | Правка | ^ к родителю #30 | Наверх | Cообщить модератору

45. "Новая версия набора компиляторов LLVM 3.1"  +/
Сообщение от Аноним (??) on 24-Май-12, 03:18 
> что все плохо, но конкретных примеров никто так и не привел.

А тебе что, слабо погуглить по наиболее типовым ошибкам и найти тонну мата самому? Ничо, ща бсдельники на него переползут - вот тут то и обчитаешься :)


Ответить | Правка | ^ к родителю #37 | Наверх | Cообщить модератору

63. "Новая версия набора компиляторов LLVM 3.1"  +/
Сообщение от кевин on 25-Май-12, 03:53 
>> что все плохо, но конкретных примеров никто так и не привел.
> А тебе что, слабо погуглить по наиболее типовым ошибкам и найти тонну
> мата самому? Ничо, ща бсдельники на него переползут - вот тут
> то и обчитаешься :)

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

Ответить | Правка | ^ к родителю #45 | Наверх | Cообщить модератору

68. "Новая версия набора компиляторов LLVM 3.1"  +/
Сообщение от ffirefox on 25-Май-12, 18:08 
> До этого это было невозможно, не связываясь с ужасом под названием
> GCC.

До этого делали генератор С кода, который компилили через любой С-компилятор. Удобство: можно использовать _любой_ С-компилятор и получить качественный код на выходе. Недостаток: дольше компилится (т.е. например, для JIT не совсем удобно).

Ответить | Правка | ^ к родителю #15 | Наверх | Cообщить модератору

19. "Новая версия набора компиляторов LLVM 3.1"  +/
Сообщение от iZEN (ok) on 23-Май-12, 16:31 
LLVM/Clang 3.1 доступен в составе базовой системы FreeBSD 9-STABLE.
Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

25. "Новая версия набора компиляторов LLVM 3.1"  +/
Сообщение от Аноним (??) on 23-Май-12, 17:27 
Фряха поддерживает арм? Если да, то странно смотреть на их спешки, сланг много каки генерит для арма. К примеру вместо инструкции bl(переход с возвратом) втыкает 2 инструкции
mov lr, pc (сохраняет адрес возврата)
b (и переходит)

bl делает тоже самое за одну инструкцию. Потом много чего компилится криво, например faad после компиляции шлангом выдает приколымые звуки почти похожие на оригинал.

Ответить | Правка | ^ к родителю #19 | Наверх | Cообщить модератору

27. "Новая версия набора компиляторов LLVM 3.1"  +1 +/
Сообщение от Аноним (??) on 23-Май-12, 18:02 
> например faad после компиляции шлангом выдает приколымые звуки почти похожие на оригинал.

Можно реализовать большой проект быстро, дешево и качественно. Но в любой момент времени вы можете выбрать только любые 2 из этих 3 свойств.

Ответить | Правка | ^ к родителю #25 | Наверх | Cообщить модератору

35. "Новая версия набора компиляторов LLVM 3.1"  –1 +/
Сообщение от iZEN (ok) on 23-Май-12, 20:14 
> Фряха поддерживает арм?

Давно уже. Правда в качестве экспериментальной архитектуры, так как до конца не определены механизмы получения информации о периферийных устройствах сынтегрированных с ядром arm.

> Потом много чего компилится криво, например faad после компиляции шлангом выдает приколымые звуки почти похожие на оригинал.

А может дело в консерватории (в режиме кодирования), который не поддерживается faad?

(Собрал faad2-2.7 из порта с помощью системного LLVM/Clang 3.0 и 3.1 — артефактов в воспроизведении M4A-файлов, созданных с помощью faac, не заметил).


Ответить | Правка | ^ к родителю #25 | Наверх | Cообщить модератору

41. "Новая версия набора компиляторов LLVM 3.1"  +1 +/
Сообщение от Vova email(??) on 24-Май-12, 00:17 
На арме собрал?
Ответить | Правка | ^ к родителю #35 | Наверх | Cообщить модератору

46. "Новая версия набора компиляторов LLVM 3.1"  +/
Сообщение от Аноним (??) on 24-Май-12, 03:19 
> (Собрал faad2-2.7 из порта с помощью системного LLVM/Clang 3.0 и 3.1 —

И что за ARMовская машинка была? А то как бы названия команд типа b и bl должны бы навести на смутные подозрения что это слегонца не х86 был :)

Ответить | Правка | ^ к родителю #35 | Наверх | Cообщить модератору

56. "Новая версия набора компиляторов LLVM 3.1"  +/
Сообщение от iZEN (ok) on 24-Май-12, 14:21 
>> (Собрал faad2-2.7 из порта с помощью системного LLVM/Clang 3.0 и 3.1 —
> И что за ARMовская машинка была? А то как бы названия команд
> типа b и bl должны бы навести на смутные подозрения что
> это слегонца не х86 был :)

faac/faad2 собирал под [amd64]. Вопрос был о качестве компиляции декодера.


Ответить | Правка | ^ к родителю #46 | Наверх | Cообщить модератору

59. "Новая версия набора компиляторов LLVM 3.1"  +/
Сообщение от arisu (ok) on 25-Май-12, 01:24 
> faac/faad2 собирал под [amd64]. Вопрос был о качестве компиляции декодера.

вопрос, наш недалёкий друг, был о качестве кодогенератора под ARM. но ты у нас не читатель, ты писатель прозаек.

Ответить | Правка | ^ к родителю #56 | Наверх | Cообщить модератору

40. "Новая версия набора компиляторов LLVM 3.1"  –6 +/
Сообщение от MegaEvgeniy email(ok) on 23-Май-12, 23:03 
Походу это интересно *bsd юзерам по большей степени.

Использую джава, ибо это супер мега крутая весчь по до всё и вся, для с++ юзаю g++.

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

48. "Новая версия набора компиляторов LLVM 3.1"  +4 +/
Сообщение от arisu (ok) on 24-Май-12, 04:01 
> Использую джава

ну и шёл бы себе мимо.

Ответить | Правка | ^ к родителю #40 | Наверх | Cообщить модератору

53. "Новая версия набора компиляторов LLVM 3.1"  –2 +/
Сообщение от MegaEvgeniy email(ok) on 24-Май-12, 11:38 
>> Использую джава
> ну и шёл бы себе мимо.

Очень продуктивный коммент =)


Ответить | Правка | ^ к родителю #48 | Наверх | Cообщить модератору

57. "Новая версия набора компиляторов LLVM 3.1"  +/
Сообщение от arisu (ok) on 25-Май-12, 00:52 
>>> Использую джава
>> ну и шёл бы себе мимо.
> Очень продуктивный коммент =)

примерно как твой. мы спать не могли, мечтали увидеть восхваление жабы в теме про llvm. а также очень хотели узнать, что именно ты именно жабу любишь и используешь.

Ответить | Правка | ^ к родителю #53 | Наверх | Cообщить модератору

69. "Новая версия набора компиляторов LLVM 3.1"  +/
Сообщение от Аноним (??) on 25-Май-12, 21:29 
А вот Вы как любите свою жабу? Давайте рассказывайте, не стесняйтесь.
Ответить | Правка | ^ к родителю #57 | Наверх | Cообщить модератору

55. "Новая версия набора компиляторов LLVM 3.1"  +/
Сообщение от Аноним (??) on 24-Май-12, 13:10 
и действительно
Ответить | Правка | ^ к родителю #48 | Наверх | Cообщить модератору

67. "Новая версия набора компиляторов LLVM 3.1"  +1 +/
Сообщение от N901 on 25-Май-12, 07:03 
Джава в теме LLVM - означает пользуешься VMKit??
а ну поделись успехами!
Ответить | Правка | ^ к родителю #40 | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру