LINUX.ORG.RU

Релиз LLVM 2.9

 ,


0

2

Состоялся новый релиз системы программирования Low Level Virtual Machine (LLVM). Среди заявленных изменений можно отметить улучшенную генерацию и оптимизацию кода, поддержку C++'0x в Clang, а также более продвинутый отладчик LLDB для C, Objective-C и C++, официально поддерживающий, правда, только Mac OS X i386 и x86-64.

Наиболее важные функциональные новинки включают встроенную поддержку ассемблера для ELF-файлов (прямую запись в объектный файл), некоторые улучшения в области оптимизации во время линковки файлов (Link Time Optimization, LTO), позволяющей компилировать приложения из большого дерева исходных кодов, автоматическую замену циклов на вызов memset и memcpy, улучшения в отладке оптимизированного кода, готовую инфраструктуру для оптимизации, базирующуюся на регионах (region based optimization), улучшенную поддержка кода, обращающегося к состоянию регистров, новый алгоритм распределения регистров.

Версия 2.9 — последняя в ветке 2.х. В 3-ей ветке планируется отказаться от компилятора llvm-gcc 4.2. Указывается, что проект Clang является лучшим решением для компиляции основанных на C языков, а проект DragonEgg является подходящим решением для тех, кто интересуется интеграцией LLVM с GCC.

Комментарии к релизу

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

★★★★★

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

Ответ на: комментарий от lucentcode

А какой толк им оплачивать своими деньгами разработку и под чужие ОС? Они и так делают огромную часть работы по проекту, исходные коды открыты под супер-либеральной лицензией, может таки и «соопшэство» тоже что-то сделает?

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

Это потому что тема модная и сравнительно несложная. А вот с Дарвином да и с другими зрелыми продуктами, где прорывов куда как меньше, а говнокода* - куда как больше - ситуация, ну, мягко говоря, немножко другая, энтузиазма у just-for-fun'щиков она вызывает не в пример меньше.

* - говнокод - обобщённое название кода, который имеет длинную историю развития, множество наслоений и ad-hoc решений, которые загромождают первоначальную реализацию и затрудняют внесение изменений. При этом, когда я на него смотрел последний раз, код FreeBSD'шного ядра в целом был написан чище, чем, скажем, код Linux'ового, но и он не свободен от этих исторических напластований.

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

> по идее выгода в том что промежуточное представление одно и для C и для других входных языков и оптимизатор один. по идее круто то что оптимизатор это отдельный проект который может улучшать отдельная команда

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

Нашел тут пару тем, в т.ч. как упоминалось про Dynamo:

http://www.linux.org.ru/forum/development/5643855

http://www.linux.org.ru/forum/talks/5528896

Пока всё не читал, но из увиденного в основном тоже недоумения :)

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

> тема модная и сравнительно несложная

Э. А (нормальные) компиляторы уже не одна из самых сложных тем? ;)

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

Вообще, при компиляции в нативную архитектуры уже на исполняемоц машине есть следующие возможности: точно известен процессор, их количество, свойство и тд. Можно сделать микрооптимизацию, хотя бы эффективнее использовать кэши, порядок выполнения команд для эффективного заполнения конвеера, улутшиить предсказание перехода Если это требует много машинного времени, то результат можно кешировать. Такой подход уже давно предагается, я о нем еще в 2000 от Бабаяна слышал

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

Я имел в виду другое: либеральная BSD лицензия привлекает разработчиков. То же cups они хорошо допилили.

Если продукт можно закрыть, точнее закрыть часть его, то его очень хочется использовать

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

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

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

Если продукт можно закрыть, точнее закрыть часть его, то его очень хочется использовать

Использовать != хоть как-то помогать апстриму.

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

> Тогда прирост производительности должен быть нулевой по сравнению с нормально собранной гентой, например

Чисто теоретически, можно использовать данные профилирования для определения параметров оптимизации

Использовать != хоть как-то помогать апстриму.

Обычно хотят не просто стащить код, а тащить из апстрима постоянно. А вот тут уже дешевле вернуть код, чем потом портировать

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

> Нельзя. Потому что хрен знает, какие данные ты будешь подавать на вход программы. А с JIT она сама подстроится как надо.

А, понял. Статистическая оптимизация. Годно только в некоторых случаях. В куда большем числе случаев она сыграет с вами злую шутку. Ведь JIT тоже «хрен узнает», какие данные будет обрабатывать этот кусок кода в следующий момент времени. А код-то уже скомпилен с оптимизацией под те данные, на которых профайлер собирал статистику.

Прирост скорости до 30% за счет...

Ключевое слово здесь «ДО». Т.е. был найден случай, когда прирост составил 30%. Хотелось бы посмотреть на мат. ожидание этого прироста.

segfault ★★★★★
()

отличная новость. API llvm очень удобное и простое в использовании.

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

Проси у HP. Кстати на досуге почитай про использование JIT c кэшем инструкций в эмуляторах и почему это выгодно.

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

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

segfault ★★★★★
()

В FreeBSD 9-CURRENT я заметил при сборке, что кроме LLVM/Clang собирается также GNU-тулчейн. Если отказаться от его сборки (в src.conf указать соответствующие опции типа: WITHOT_GNU=true WITHOUT_GNU_SUPPORT=true), то что может не работать и можно ли будет заново пересобрать систему в окружении с отсутствующим тулчейном?

То есть задача «обеспечить самопересборку FreeBSD из исходников без использования инструментов GNU» уже реальна?

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

Про использование JIT c кэшем инструкций за 5 минут ничего не нашел, далее обломало, ведь теоретической модели оно не меняет.

Кстати, вопрос о среднестатистической винарности JIT по сравнению с бинарниками остается открытим. HP указало только «до 30%». Но по своему опыту я знаю чем эти все «от» и «до» обычно оборачиваются...

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

Вот это я и имел в виду: http://www.linux.org.ru/jump-message.jsp?msgid=6125711&cid=6128623

А интерпретатор, если и нужен, то разве что на момент отладки и для расстановки статистических значений для оптимизатора. И собирать эту статистику нужно не за первые 3-5 секунд работы приложения, а во время полноценного тестирования с существенно различающимися входными данными.

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

>а во время полноценного тестирования с существенно различающимися входными данными.

Это PGO и ручная оптимизация после профайлинга.

А вот тот же JIT например будет сильно помогать в циклах (опять же, хрен его знает, как твой «оптимизированный» код будет работать на другом процессоре.)

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

Процессорозависимые оптимизации выполняются на этапе компиляции под конкретный процессор. Причем, делает это машина. Статистические данные для этого не нужны - слишком низкий уровень.

З.Ы. Здесь я не брал во внимание ручную оптимизацию на уровне ассемблера.

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

> либеральная BSD лицензия привлекает разработчиков. То же cups они хорошо допилили.

Отдельных - да. А компании, и прочие «бизнесы» - по-всякому. Может, конечно, история с развитием UNIX(tm) и его растаскиванием на проприетарные и друг с другом несовместимые вариации, и научила корпораторов, что зажимать наработки - себе дороже. Но, сдаётся мне, такая экосистема живёт только до тех пор, пока не появляется самый умный/наглый, который кладёт на всех болт и захомячивает самое вкусное. Потом начинается новый раунд «гонки вооружений» - и оппа, от единой платформы остаются рожки да ножки, а сама платформа оказывается в глубокой стагнации.

BSD-шная лицензия хорошо работает, когда открывающий явно доминирует в данной области и ему совершенно не боязно, что некий Вася Пупкин организует «РогаИКопытаСофт» и запросто составит серьёзную конкуренцию тому, кто вложился в открываемый софт по полной программе.

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

> А код-то уже скомпилен с оптимизацией под те данные, на которых профайлер собирал статистику.

Некоторые особо умные в этом месте делают несколько вариантов кода под различные /сценарии использования/. Впрочем, ничего не мешает обучить таким же фокусам и «статическую компиляцию».

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

> Чисто теоретически, можно использовать данные профилирования для определения параметров оптимизации

А сколько сожрет само профилирование, ежели мы за крошками следим? И как тут уже указали, при изменении характера входных данных всё это может пойти псу под хвост, и хорошо еще если без дополнительных отрицательных последствий по скорости.

Обычно хотят не просто стащить код, а тащить из апстрима постоянно. А вот тут уже дешевле вернуть код, чем потом портировать

В этом случае да, но лично мой небольшой опыт пока говорит об обратном. Стащили, работает — всё, пока новая апстримная функциональность позарез не потребуется, ничего меняться не будет. В пределах мажорной версии или жизненного цикла девайса. Что тоже логично.

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

>Вообще, при компиляции в нативную архитектуры уже на исполняемоц машине есть следующие возможности: точно известен процессор, их количество, свойство и тд. Можно сделать микрооптимизацию, хотя бы эффективнее использовать кэши, порядок выполнения команд для эффективного заполнения конвеера, улутшиить предсказание перехода

бредовенько. все это, кроме типа процессора, относится к рантайму.

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

Сообщество живёт по принципу just for fun, каждый делает то, что хочет. А не хочет, не делает. Отладчик написать, это не новый плеерок или плагин для лисы накодить. Дело долгое, очень муторное и не интересное. Сообщество лучше что-то попроще сварганит.

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

>BSD-шная лицензия хорошо работает, когда открывающий явно доминирует в данной области и ему совершенно не боязно, что некий Вася Пупкин организует «РогаИКопытаСофт» и запросто составит серьёзную конкуренцию тому, кто вложился в открываемый софт по полной программе.

Вроде написано все верно, но совершенно неприменимо к сегодняшней мясорубке.

Кто на сегодняшний день может чувствовать себя уверенно в кресле лидера? Возьмем рынок смартфонов. МС долго и упорно грызла по крупицам долю на рынке. Вложила кучу бабла, сил разработчико и маркетологов. Выпустила минимум три поколения своей операционки вин це.

И что? Пришла конь в пальто, не имеющая ничего эппле и за год сожрала рынок своим айфоном. Ладно, эти хоть умели делать плейеры и по сути айфон это раздутый жиром айпод. Но потом пришел гугле и опять мы слышим звуки множественных изнасилований участников рынка, теперь включая и эппле.

И что там с «лидерами»? МС вызывает жалость, ведь так еще ни над кем не глумились... Нокия, ах да, была же нокия, которую так потоптали, что она от болевого синдрома теперь прячется за тенью МС. Кто мог такое предположить еще пол-года назад?

Так что нет и не может быть никаких гарантий лидерства. А тем не менее БСД лицензия (не система) процветает...

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

Да ну? Кто же тогда сделал GCC? Прилетели инопланетяне и дали готовое (прямо как с пирамидами, ага)?

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

И много там особо открытого кода под либеральной лицензией «бери-не-хочу»? Или, точнее, так: каковы шансы «РогаИКопыта.cn» организовать конкуренцию «большим дядькам» на мировом уровне? Отвечаю: примерно 0 из N. Почему? Очень просто: патенты. И в этом контексте становится совершенно неважно, открыт код, закрыт, тивоизирован или что-там-ещё-придумают, чтобы при случае оттоптать тебе все выступающие части...

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

>И много там особо открытого кода под либеральной лицензией «бери-не-хочу»?

да вроде как дальвик и андройд - бери не хочу.

Или, точнее, так: каковы шансы «РогаИКопыта.cn» организовать конкуренцию «большим дядькам» на мировом уровне?

Во первых, мы как раз и говорим о том, что сегодня рынок может взломать что угодно. Кто такой Брин десяток лет назад? Рогатый копытоносец. А что он сделал с яхой, с мсн и т.д.? Мекрософт уже жалуется на монополизацию. Смешно, не правда ли?

А во вторых, больших дядек больше одного. А если говорить о системе финансирования, раз уж друших авторитетов нет, то их уже десятки-сотни. Есть выбор для амбициозного новичка.

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

>Ну вот перед запуском приложения и оптимизировать

1) это немного уже не компиляция.

2) это все равно ерунда. Системы предвыборки данных, предсказания ветвлений, смены порядка исполнения, зацепление данных работают в рантайме, относятся к процессору и вообще к компиляции не имеют отношения.

К компилятору относится упаковка команд в большие слова и ленивые вычисления. И то и другое не требует учета мелочей типа размер кеша или количество процессоров. Достаточно знать платформу.

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

> Нокия, ах да, была же нокия... Кто мог такое предположить еще пол-года назад?

Хех, ну, вообще она тонула довольно давно уже. Точнее, это можно было назвать «купанием», но уж больно редко голова над поверхностью последнее время показывалась. А метания, они неудивительны, вон как Palm перед смертью корчился, тоже успел и с линуксом позаигрывать...

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

Ну как-то странно она тонула. Надо сказать, что N800 была вполне неплохой таблеткой, а n900 одним из лучших смартонов.

А их первый смартфон с hdmi на борту даже несмотря на угасающий симбиан все равно хит.

Цена и метания - вот что их сгубило.

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

> да вроде как дальвик и андройд - бери не хочу.

Ну, кроме 3.0 :) Да, я знаю, можно попытаться вступить в общество состоятельных парней :)

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

> Надо сказать, что N800 была вполне неплохой таблеткой, а n900 одним из лучших смартонов.

И то, и другое - изделия для гиков, что-то я не слышал, чтобы они продавались, как горячие пирожки. В отличие от поделий от Самсунга и HTC.

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

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

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

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

Гугл будет бить или кто?

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

А ты думаешь, зачем им Нортеловские патенты, на стенке развешивать и перед дружками на юбилеях хвастаться?

С Гуглом и Андроидом сейчас ситуация смешная. Они вроде как и написали код, но дрючат за этот код всяких HTC-шников, Мотороллеров и прочих Барнс-и-Ноблзов. А те, естественно, огрызаются в ответ. Если могут, конечно. А если не могут - то и платят по тихой грусти. Ещё немного и связываться с Андроидом для средневесов будет себе дороже. Вот тогда мы и посмотрим, что будет с Phone7 :)

P.S. Вроде переходили на «ты», или путаю с кем-то?

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

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

Это ответ «да, гугл будет давить патентами корпорации, использующие Андроид»?

Вроде переходили на «ты»,

Ээ... я не назыаал тебя на «вы» :)

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

> Это ответ «да, гугл будет давить патентами корпорации, использующие Андроид»?

А кто ж его знает сейчас. Но за я^W^Wна прицеле будет держать совершенно точно. Собственно, в других областях уже сейчас держит. Большим и толстым - не страшно, мелких - не видно, а вот средневесам приходится крутиться.

Кстати, вопрос: а есть у кого статистика, кто и как вкладывается в код Андроида, доступный через android.com?

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

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

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

>> Это ответ «да, гугл будет давить патентами корпорации, использующие Андроид»?

А кто ж его знает сейчас.

Ну то есть, кроме здоровой паранойи, оснований считать так нет.

Но за я^W^Wна прицеле будет держать совершенно точно.

Метод контроля он продемонстрировал на примере Honeycomb - зажимание исходников. BSD^WApache разрешил, чо. Но всё же это не патенты.

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

LLVM — виртуальная машина, которая транслирует IR-байткод в машинный код. Имеет множество оптимизаций на разных уровнях.

Это если кратко и на общем уровне. Где вы тут увидели прослойки, ускоряющие выполнение программ — одному б-гу известно. Интерпретаторы в си и ассемблере. Ну тут явно вещества уже употребляете вы.

Могу отправить почитать про JIT, компиляторы, а также «Компиляторы: принципы, технологии, инструменты» Альфреда Ахо.

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

Я сравнивал компиляцию кода на C++ и его использование в LLVM. Во втором случае ест «прослойка» между исполняемым кодом и ЦП есть.

Что такое компилятор, интерпретатор и JIT я и так знаю.

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