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

> Сделать закон, передающий в общественное достояние всё 5 лет после публикации .С публикацией исходных кодов на GPL

fxd

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

Gpl дает свободу пользователям производных продуктов получить их исходный код, а какую свободу дает лицензия LLVM?

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

GPL даёт возможность ПРОГРАММИСТАМ видеть исходные тексты производных продуктов, выпущенных в свет.

BSDL даёт возможность ВСЕМ желающим делать с продуктом что угодно, кроме присваивания авторства на то, что они не сделали.

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

лицензию определяет автор программного кода, я не понимаю как можно обсуждать то что решил автор :-|

по теме: удобочитаемые выхлопы ошибок в clang весьма доставляют, особенно после пары лет непрограммирвания на Си :-)

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

А по факту какое отличие? И то и то некие terms of use. Хотя я поспешил, даже общественное достояние полной свободы не дает.

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

http://llvm.org/

Code in the LLVM project is licensed under the «UIUC» BSD-Style license.

http://llvm.org/docs/DeveloperPolicy.html#license

We intend to keep LLVM perpetually open source and to use a liberal open source license. All of the code in LLVM is available under the University of Illinois/NCSA Open Source License, which boils down to this:

• You can freely distribute LLVM.
• You must retain the copyright notice if you redistribute LLVM.
• Binaries derived from LLVM must reproduce the copyright notice (e.g. in an included readme file).
• You can't use our names to promote your LLVM derived products.
• There's no warranty on LLVM at all.

We believe this fosters the widest adoption of LLVM because it allows commercial products to be derived from LLVM with few restrictions and without a requirement for making any derived works also open source (i.e. LLVM's license is not a "copyleft" license like the GPL). We suggest that you read the License if further clarification is needed.

In addition to the UIUC license, the runtime library components of LLVM (compiler_rt and libc++) are also licensed under the MIT license, which does not contain the binary redistribution clause. As a user of these runtime libraries, it means that you can choose to use the code under either license (and thus don't need the binary redistribution clause), and as a contributor to the code that you agree that any contributions to these libraries be licensed under both licenses. We feel that this is important for runtime libraries, because they are implicitly linked into applications and therefore should not subject those applications to the binary redistribution clause. This also means that it is ok to move code from (e.g.) libc++ to the LLVM core without concern, but that code cannot be moved from the LLVM core to libc++ without the copyright owner's permission.

Note that the LLVM Project does distribute llvm-gcc, which is GPL. This means that anything "linked" into llvm-gcc must itself be compatible with the GPL, and must be releasable under the terms of the GPL. This implies that any code linked into llvm-gcc and distributed to others may be subject to the viral aspects of the GPL (for example, a proprietary code generator linked into llvm-gcc must be made available under the GPL). This is not a problem for code already distributed under a more liberal license (like the UIUC license), and does not affect code generated by llvm-gcc. It may be a problem if you intend to base commercial development on llvm-gcc without redistributing your source code.

We have no plans to change the license of LLVM. If you have questions or comments about the license, please contact the LLVM Developer's Mailing List.

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

Хотя я поспешил, даже общественное достояние полной свободы не дает.

Ну, да, конечно — стихи Пушкина никто не издаст под собственным именем и фамилией.

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

Ну да, тем не менее твое высказывание

даёт возможность ВСЕМ желающим делать с продуктом что угодно, кроме присваивания авторства на то, что они не сделали.


ложно в случае этой лицензии)

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

Вот-вот. Поэтому все лицензии получается не есть истинно свободны.

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

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

> отказаться от авторских прав нельзя

Вот черт, где это написано? Они убили мою свободу, сволочи!

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

Вот черт, где это написано?

Четвёртая часть ГК РФ:

Статья 1228. Автор результата интеллектуальной деятельности

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

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

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

4. Права на результат интеллектуальной деятельности, созданный совместным творческим трудом двух и более граждан (соавторство), принадлежат соавторам совместно.
Пункт 2 прочти внимательно.

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

Да, вижу. Но не совсем понятно, что означает «ничтожность» в данном контексте.

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

Делать с продуктом что угодно нельзя хотя бы потому что его нельзя рекламировать используя факт, что это производный продукт от продукта Эппл (интересно зачем им такое ограничение, чтобы их пользователи не знали, что к священным програмным продуктам Эппл прикасались грязные руки других разработчиков, или же боятся что присутствие слова Эппл на одной страничке с тем, что я там наговнокодил осквернит энто священное имя). Что любопытно, это требование (не использовать имя корпорации, разработавшей продукт для рекламы) в куче с требованием не убирать имя корпорации, разработавшей продукт может рассматриваться как Двойное послание. Нас тут к шизофрении такие лицензии толкают, а вы говорите «большая свобода»

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

У тебя вызывает батхёрт вот этот пункт лицензии: «You can't use our names to promote your LLVM derived products.»? Это относится только к именам разработчиков LLVM. То есть ты можешь для продвижения своего derived-продукта (форка LLVM) указывать в СМИ только своё имя, но никак не имена разработчиков исходного.

Однако, на основе пунктов «You must retain the copyright notice if you redistribute LLVM.» и «Binaries derived from LLVM must reproduce the copyright notice (e.g. in an included readme file).» в производных от него продуктах должно быть сохранено уведомление об авторских правах разработчиков LLVM, что согласуется с логикой и ГК, вообще-то.

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

А на кой пользователи, не вносящие свой вклад в экосистему? Не возвращаешь код (= не помогаешь возможность написать еще лучший код) - пройди лесом. А кто возвращает - тем исходники нужны.

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

А на кой пользователи, не вносящие свой вклад в экосистему? Не возвращаешь код (= не помогаешь возможность написать еще лучший код) - пройди лесом.

С каких пор пользователи стали программистами?

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

Они авторы продукта - называться автором неотъемлемое право. Вроде это логично. Логично, что apple оплачивает работу программистов ту, что выгодна им.

Но не кто не мешает добавить код, который будет это делать и под другие системы

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

А программист что, софтом не пользуется? Если нет - то черта с два он напишет что-то вменяемое.

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

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

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

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

На то, что не всегда охотой возвращать код (ли весь код). Но код возвращается, по возможности, всегда.

Таким образом заинтересованных в развитии продукта больше. На примере LLVM и clang это видно хорошо: еще год назад c++0x не поддерживался не как, а пол года назад только пара фич (тот clang, что идет в Xcode почти ничего не умет, а хочется). И за пол года все появилось. И еще и исходники открыты.

Яблоко широко использует код clang в своих продуктах - они заинтересованы в его развитии. Я думаю с их деньгами можно было сделать и закрытый компилятор (тем более вложенных в clang денег хватило бы). Но проект открыт - значит эта модель им выгодна. И нам, за одно

namezys ★★★★
()

Для чего вообще нужна LLVM? Еще одна прослойка, которая «ускоряет» выполнение программы. Что за мода на интерпретирование??? Я понимаю еще, когда это делается в языках, заточенных на интерпретатор. Но Си и ассемблер... какие вещества употребляют аффтары?

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

Что за мода на интерпретирование?

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

hint: в GCC есть один момент, связанный с сокрытием промежуточного представления, от чего отказались разработчики LLVM.

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

Более того, используя его в качестве автокомплита в vim позволяет отловить ошибки еще до компиляции.

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

> модель интерпретации исходных текстов в независимый от платформы код и его оптимизацию с последующим транслированием в native.

Даже если поменять местами слова «интерпретация» и «трансляция», все равно непонятно о чем предложение. Может, ссылку на преимущества интерпретации? Ну кроме портируемости, простоты отладки и возможности урезать API?

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

>Еще одна прослойка, которая «ускоряет» выполнение программы.

Что за мода на интерпретирование???


Очевидно ты не в курсе.
1. LLVM универсален, им можно хоть шейдеры оптимизировать до отправки на видюху.
2. JIT - это очень крутая вещь. И на некоторых задачах сильно быстрее использовать его, чем статическую сборку.

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

>Более того, используя его в качестве автокомплита в vim позволяет отловить ошибки еще до компиляции.

ого, надо попробовать! :-)

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

> Оптимизация дважды идет. На этапе превращения в LLVM IR и на этапе сборки в машинные коды.

Что мешает это сделать в компиляторе? Да, и где гарантия что две оптимизации - это не перетягивание каната?

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

> JIT - это очень крутая вещь. И на некоторых задачах сильно быстрее использовать его, чем статическую сборку.

Так... вот тут мат. логика пошла отдохнуть...

Интерпретируемый код + JIT = нативный код. По-вашему собрать и использовать - это быстрее чем сразу использовать собранное?

Если рассмотреть интерпретируемый код и интерпретатор как единое целое (черный ящик), то получится та же статическая сборка. Как частный случай может быть хоть чем-то лучше общего???

Короче, если сравнение производительности компилятора с интерпретатором идет в пользу интерпретатора, то на это может быть 2 причины:

1) Кривой компилятор сравнен с хорошим интерпретатором.

2) Разная реализация алгоритма.

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

> Стратегии оптимизации, которые используют GCC и LLVM.

Да, GCC - это компилятор, но компилятор - это не только GCC.

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

> Интерпретируемый код + JIT = нативный код. По-вашему собрать и использовать - это быстрее чем сразу использовать собранное?

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

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

>По-вашему собрать и использовать - это быстрее чем сразу использовать собранное?

Я как-то на лоре приводил ссылку на HP Dynamo. Там был JIT из нативной архитектуры в нативную. Прирост скорости до 30% за счет улучшенного использования кэша и агрессивного инлайна исполняемого кода.

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

Прирост до 30% относительно чего? Того, что накомпилировал GCC? Да и что на выходе - бинарный код. Т.е. можно один раз применить все эти оптимизации, а при использовании только запускать.

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

>Прирост до 30% относительно чего?

Относительно бинарной версии (без JIT)

Т.е. можно один раз применить все эти оптимизации, а при использовании только запускать.


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

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

>Причем тогда «Virtual Machine» в аббревиатуре???

Потому что VM. потому что там IR и JIT. И потому что архитектура у него такая.

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

>а какая выгода от промежуточного представления для какого-нибудь С?

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

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

>Потому что VM. потому что там IR и JIT. И потому что архитектура у него такая.

Оно то «да». Вот только в «рабоче-крестьянском сознании» vm - это что-то типа jvm. Т.е. как минимум «совершенно самостоятельная сущность». Учитывая «некросплатформенность» своего байткода, llvm «vm» только «внутри» цепочки «исходный код» - «натив», а как самостоятельная vm без дополнительных «обвесов» смысла не имеет.

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

> Причем тогда «Virtual Machine» в аббревиатуре???

При том, что GIMPLE это тоже Virtual Machine. Surprise!

anonymous
()

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

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