URL: https://www.opennet.ru/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID3
Нить номер: 84656
[ Назад ]

Исходное сообщение
"Новая версия набора компиляторов LLVM 3.1"

Отправлено opennews , 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.ru/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.ru/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.ru/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.ru/opennews/art.shtml?num=31636) на создание Си-компилятора, способного собирать ядро Linux.
-  Portable OpenCL (http://www.opennet.ru/opennews/art.shtml?num=32092) -  открытая и независимая реализация стандарта OpenCL;
-  CUDA Compiler (http://www.opennet.ru/opennews/art.shtml?num=33800) - позволяет сгенерировать GPU-инструкции из кода, написанного на языках Си, Си++ и Fortran;
-  Julia (http://www.opennet.ru/opennews/art.shtml?num=33315) - открытый динамический язык программирования, использующий наработки проекта LLVM.


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


Содержание

Сообщения в этом обсуждении
"Новая версия набора компиляторов LLVM 3.1"
Отправлено pavlinux , 23-Май-12 12:59 
Polly вкусная няшка.

"Новая версия набора компиляторов LLVM 3.1"
Отправлено кевин , 25-Май-12 03:39 
хм понять бы как её в генте завести..

"Новая версия набора компиляторов LLVM 3.1"
Отправлено Андрей , 23-Май-12 13:30 
Если бы LLDB был не только под Apple.

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

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


"Новая версия набора компиляторов LLVM 3.1"
Отправлено Андрей , 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"

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

"Новая версия набора компиляторов LLVM 3.1"
Отправлено Аноним , 23-Май-12 13:42 
"Параллельно развивающийся" проект Unladen Swallow умер 2 года назад "за ненадобностью". Где он развивается?

"Новая версия набора компиляторов LLVM 3.1"
Отправлено Аноним , 23-Май-12 17:59 
> Где он развивается?

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


"Новая версия набора компиляторов LLVM 3.1"
Отправлено x0r , 23-Май-12 14:28 
clang static checker классная штука, жаль только для C, а не C++
Я им нашел ошибки в нескольких opensource проектах

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

"Новая версия набора компиляторов LLVM 3.1"
Отправлено Толстый , 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.


"Новая версия набора компиляторов LLVM 3.1"
Отправлено Trewsa , 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?


"Новая версия набора компиляторов LLVM 3.1"
Отправлено Толстый , 23-Май-12 16:21 
Clang это компилятор построенный на технологиях LLVM. Для тебя это будет такой же компилятор как и GCC, только с более быстрой компиляцией и лучшими средствами диагностики.

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

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


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

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


"Новая версия набора компиляторов LLVM 3.1"
Отправлено Аник , 23-Май-12 19:52 
Ну так и в чем суть LLVM? Virtual machine не?

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

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


"Новая версия набора компиляторов LLVM 3.1"
Отправлено Аноним , 23-Май-12 18:10 
> же компилятор как и GCC, только с более быстрой компиляцией и лучшими средствами диагностики.

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


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

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


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

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


"Новая версия набора компиляторов LLVM 3.1"
Отправлено Аноним , 24-Май-12 03:00 
> * FreeBSD 10 отказывается от GCC в пользу CLANG:

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

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

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

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

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


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

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


"Новая версия набора компиляторов LLVM 3.1"
Отправлено N901 , 25-Май-12 06:55 
кевин, жжешь! :)

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

"Новая версия набора компиляторов LLVM 3.1"
Отправлено Crazy Alex , 23-Май-12 21:34 
Кхм. LDC вместо DMD? Но зачем...

"Новая версия набора компиляторов LLVM 3.1"
Отправлено Толстый , 24-Май-12 01:11 
Ну dmd мой основной компилятор, но и ldc пользоваться иногда приходится. На линуксе работает практически также, компилирует медленнее, зато генерируемый код быстрее.

"Новая версия набора компиляторов LLVM 3.1"
Отправлено Аноним , 24-Май-12 03:21 
> Ну dmd мой основной компилятор,

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


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

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

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


"Новая версия набора компиляторов LLVM 3.1"
Отправлено kshetragia , 24-Май-12 05:54 
Че сказать-то хотел.. Залогинься уже, User. Ты можешь изменить ник, но стиль вполне узнаваем.


"Новая версия набора компиляторов LLVM 3.1"
Отправлено _yurkis_ , 24-Май-12 10:09 
Первый абзац вроде ничего. Но потом эталонный неадекват :(

"Новая версия набора компиляторов LLVM 3.1"
Отправлено Аноним , 25-Май-12 04:37 
не говори мне, чем пользоваться и не скажу куда тебе следует пойти.
не нравится - не ешь, только молча, не нужно всем остальным рассказывать как это не вкусно, если у всех остальных оно за обе щеки уплетается.

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

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

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


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

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

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


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

"Новая версия набора компиляторов LLVM 3.1"
Отправлено kshetragia , 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, развитие которой продолжается по сей день."


"Новая версия набора компиляторов LLVM 3.1"
Отправлено тоже Аноним , 24-Май-12 12:58 
Значит, хотя бы это уже не смогли запатентовать корпорации. И то славно...

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

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


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

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


"Новая версия набора компиляторов LLVM 3.1"
Отправлено Толстый , 23-Май-12 16:05 
Отличный проект. Благодаря LLVM появилась возможность экспериментировать с новыми языками программирования компилирующими в нативный код, не углубляясь в детали кодогенерации. До этого это было невозможно, не связываясь с ужасом под названием GCC.

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

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



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

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


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

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


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

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


"Новая версия набора компиляторов LLVM 3.1"
Отправлено Аноним , 24-Май-12 03:18 
> что все плохо, но конкретных примеров никто так и не привел.

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



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

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


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

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


"Новая версия набора компиляторов LLVM 3.1"
Отправлено iZEN , 23-Май-12 16:31 
LLVM/Clang 3.1 доступен в составе базовой системы FreeBSD 9-STABLE.

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

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


"Новая версия набора компиляторов LLVM 3.1"
Отправлено Аноним , 23-Май-12 18:02 
> например faad после компиляции шлангом выдает приколымые звуки почти похожие на оригинал.

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


"Новая версия набора компиляторов LLVM 3.1"
Отправлено iZEN , 23-Май-12 20:14 
> Фряха поддерживает арм?

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

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

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

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



"Новая версия набора компиляторов LLVM 3.1"
Отправлено Vova , 24-Май-12 00:17 
На арме собрал?

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

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


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

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



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

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


"Новая версия набора компиляторов LLVM 3.1"
Отправлено MegaEvgeniy , 23-Май-12 23:03 
Походу это интересно *bsd юзерам по большей степени.

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


"Новая версия набора компиляторов LLVM 3.1"
Отправлено arisu , 24-Май-12 04:01 
> Использую джава

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


"Новая версия набора компиляторов LLVM 3.1"
Отправлено MegaEvgeniy , 24-Май-12 11:38 
>> Использую джава
> ну и шёл бы себе мимо.

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



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

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


"Новая версия набора компиляторов LLVM 3.1"
Отправлено Аноним , 25-Май-12 21:29 
А вот Вы как любите свою жабу? Давайте рассказывайте, не стесняйтесь.

"Новая версия набора компиляторов LLVM 3.1"
Отправлено Аноним , 24-Май-12 13:10 
и действительно

"Новая версия набора компиляторов LLVM 3.1"
Отправлено N901 , 25-Май-12 07:03 
Джава в теме LLVM - означает пользуешься VMKit??
а ну поделись успехами!