LINUX.ORG.RU

Вышел LLVM 2.8

 , , , ,


0

0

Спустя полгода активной разработки анонсирован выход версии 2.8 набора компиляторов LLVM , распространяемых по условиям BSD-подобной лицензии UIUC. Одновременно вышли и обновления подпроектов LLVM: компилятора C/C++ — Clang, модифицированной версии GCC 4.2.x (использует LLVM для генерации кода) — llvm-gcc, плагина для GCC 4.5 (и выше) — dragonegg.

Наиболее значимые изменения:

  • в основной проект вошел отладчик LLDB;
  • другим дополнением проекта стала замена libstdc++ — совместимая с C++0x стандартом библиотека libc++;
  • LLVM Machine Code (MC) — подсистема для поддержки ассемблирования, дизассемблирования и обработки бинарных форматов файлов (подробности в блоге);

    К сожалению, вышеперечисленные новшества реализованы в LLVM 2.8 только для платформ Mac OS X (x86 и x86-64).

  • llvm-diff для семантического сравнивания .ll-файлов.

В числе других изменений можно отметить:

  • оптимизация внутренних функций работы с памятью;
  • более эффективная отладка за счет генерации метаданных для отладчика в режиме реального времени;
  • более эффективная оптимизация циклов, вложенности функций (inlining), -loweratomic pass;
  • Clang теперь поддерживает ключи -momit-leaf-frame-pointer, -ffunction-sections, -fdata-sections;
  • значительно улучшен аллокатор регистров (особенно для -O0), возможен выбор алллокатора (в зависимости от ключа -O) при использовании ключа -regalloc=default, также будет задействованы SSE-регистры;
  • множество процессор-специфичных оптимизаций для платформ ARM и x86 (SSE, AVX, NEON).

Просмотреть полный список изменений (также по ссылке доступен и список нерешённых проблем выпуска).
Ознакомиться с материалами конференции разработчиков LLVM, прошедшей перед выпуском.
Загрузить source-tarballs.

>>> Сайт проекта

★★★★★

Проверено: hibou ()
Последнее исправление: MuZHiK-2 (всего исправлений: 3)
Ответ на: комментарий от anonymous

>У меня 265 МБ ОЗУ, селерон и гента. Собираю с использованием GCC — всё тормозит. Собираю с использованием clang — всё тормозит гораздо меньше. ЧЯДНТ?

Честно говоря меня время компиляции заботит на более современном железе (при 256 Mb RAM компилять не пробовал уже давно), и тут clang не лучше, а чуть хуже gcc. Пока что clang обгоняет gcc только на синтетических тестах, и то максимум в 2 раза.

http://lists.boost.org/boost-users/2010/09/62498.php

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

> требует меньше ресурсов компьютера

время компиляции

Время компиляции это всего лишь время. А ресурсы это ПАМЯТЬ ТЕЧЁТ КАК ФУРРИФОКС ИЗ ВЕДРА ЦПУ 100%, СИМВОЛЫ В КОНСОЛЕ ПЕЧАТАЮТСЯ ЧЕРЕЗ СЕКУНДЫ, X-СЫ МЫШЬ УСТАЛА ОТДОХНУТЬ, ЛИНУС ЯДРО ПОЗИКСЫ ЯХОЧУПЛАНДЕВЯТЬ
Как-то так. =/

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

>Время компиляции это всего лишь время.

Это время работы процессора(ов), и в данном случае это основной ресурс компьютера. Учись, студент (школота?).

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

Не всё в компьютерах состоит из ЦПУ.

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

> Ссылка есть или нет?

нет

вот че щас отрыл, только это кхм... не окончательный вариант, интересно чем дело закончилось

[I]f you modify gcc by adding GPL-incompatible software used to generate code, it is likely that you will not be granted any exception to the GPL when using the runtime library. In other words, if you 1) add an optimization pass to gcc using the (hypothetical) plugin architecture, and 2) that optimization pass is not licensed under a GPL-compatible license, and 3) you generate object code using that optimization pass, and 4) you link that generated object code with the gcc runtime library (e.g., libgcc or libstdc++-v3), then you will not be permitted to distribute the resulting executable except under the terms of the GPL

http://lwn.net/Articles/301135/

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

Таак, блин, до чего же крив этот ваш Charon...

Ладно, обрезать и установить Inferno в режиме эмулятора можно. Но что оно даст если сравнивать скорость выполнения программ? Limbo на shootout-е отсутствует =( Да и что там с библиотеками? Всё писать самому?

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

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

У FSF (или RMS лично) когда-то давно в самом деле были опасения, что, если сделать четкие бибилиотечные интерфейсы к стадиям компиляции, какие-нибудь проприетарщики обойдут GPL и используют GCC, не отдав свои тексты. Но единственной защитой против этого стало отсуствие библиотечных интерфейсов.

И что до меня, я вполне поимаю эту паранойю. Была ли он оправданной - ХЗ.

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

> Но любой может модифицировать GCC так, что тот дудет дампить какое-то промежуточное представление, и использовать этот дамп так, как сам захочет.

Дампить — да, но потом скармливать жцц сишный код, полученный из дампа — скорее всего нет.

1. обмен сложными структурами данных приравнивается к линковке (а тут, обрати внимание, обмен gcc -> something -> gcc, хотя то, что второй жцц != первому жцц позволяет сомневаться, но кому охота рисковать???)

2. то, что я написал — это *послабление*, раньше было еще хуже

И что до меня, я вполне поимаю эту паранойю. Была ли он оправданной - ХЗ.

А я — нет. Как и сама GPL — это в бОльшей части случаев идиотизм (т.к. любая прога должна иметь возможность быть расширяемой независимо), вот LGPL это разумно.

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

А в случае GPL этот идиотизм становится политикой.

З.Ы. Случай ядра линукс возможно не относится к большинству.

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

да и вообще столлмановская модель плохо подходит для зарабатывания денег, а оно нужно с обоих сторон (и покупателя, и продавца)

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

или, альтернативно, лицензии в стиле LLVM

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

>> Но любой может модифицировать GCC так, что тот дудет дампить какое-то промежуточное представление, и использовать этот дамп так, как сам захочет.

Дампить — да, но потом скармливать жцц сишный код, полученный из дампа — скорее всего нет.

Еще раз - у тебя есть ссылка? Я никогда не слышал об этом странном ограничении,

2. то, что я написал — это *послабление*, раньше было еще хуже

Ты хоть одну ссылку дашь?

Как и сама GPL — это в бОльшей части случаев идиотизм (т.к. любая прога должна иметь возможность быть расширяемой независимо)

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

А в случае GPL этот идиотизм становится политикой.

GPL была для проведения в жизнь определенной политики.

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

> Ты хоть одну ссылку дашь?

а тебе ну никак не найти самому первоисточник?

http://www.gnu.org/licenses/gcc-exception-faq.html

In order to take advantage of this permission [*], the Compilation Process that you use to create Target Code has to be “Eligible,” which means that it does not involve both GCC and GPL-incompatible software. It's important to remember that the Compilation Process starts when you feed any high-level code to GCC, and ends as soon as it generates anything that can be considered Target Code.

* GCC Runtime Library Exception (добавлено мной)

так что если ты скормил жцц некий сишный код, сдампил че-то, этот дамп по пути преобразовал чем-то не-жпл-ным в сишный код и снова скормил жцц, то как я понимаю это уже не Eligible Compilation Process.

Because of this, even if someone writes a plugin that saves this information [*] to disk, any programs that change the structures before GCC writes out Target Code will be involved in the Compilation Process. If that program is proprietary, the exception will not be available to any software compiled with it; the object code that GCC ultimately creates will have to be distributed under the terms of the GPL.

* GCC's internal, low-level compilation data structures (добавлено мной)

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

Хотя, возможно, надо задать этот вопрос FSF.

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

> так что если ты скормил жцц некий сишный код, сдампил че-то, этот дамп по пути преобразовал чем-то не-жпл-ным в сишный код и снова скормил жцц, то как я понимаю это уже не Eligible Compilation Process.

По-моему, тоже. И что? Это всего лишь значит, что ты использовал GCC как библиотеку, а GCC лицензирован по «заразной» GPL => твой код «заразился». Обычный механизм GPL.

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

> и да, в следующий раз, когда тебя забанят в гугле (или на gnu.org), ты уж предупреждай

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

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

> И большигство лицензий ограничивают твою свободу (кроме новых BSD-like).

Да, ограничивают, но достаточно бесполезным образом. Типа «ты не должен в течение месяца думать про белого медведя».

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

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

> По-моему, тоже. И что? Это всего лишь значит, что ты использовал GCC как библиотеку, а GCC лицензирован по «заразной» GPL => твой код «заразился». Обычный механизм GPL.

А на практике это значит, что я не могу с помощью жцц выдернуть из исходника необходимую мне информацию, допустим, необходимую для reflection. Т.е. могу, но должен обрабатывать ее только GPL прогами.

Даже в яве до такого не додумались.

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

>> По-моему, тоже. И что? Это всего лишь значит, что ты использовал GCC как библиотеку, а GCC лицензирован по «заразной» GPL => твой код «заразился». Обычный механизм GPL.

А на практике это значит, что я не могу с помощью жцц выдернуть из исходника необходимую мне информацию, допустим, необходимую для reflection. Т.е. могу, но должен обрабатывать ее только GPL прогами.

Ыыыы... ладно, пробую объяснить последний раз: программа, «выдергивающая информацию для reflection», в случае публикации попадает под GPL.

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

> Откуда мне было знать, что ты второй раз задашь вопрос о плагинах?

Где я это сделал?

Я выразил неудовольствие, что жцц ограничивает Eligible Compilation Process бесполезным образом, и удовольствие от того, что LLVM такой ерунды не делает.

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

> Ыыыы... ладно, пробую объяснить последний раз: программа, «выдергивающая информацию для reflection», в случае публикации попадает под GPL.

Это можно пережить.

Но вот то, что (фактически) любая другая прогамма, которая по информации для reflection генерит новый плюсовый исходик с геттерами-сеттерами-сериализаторами должна быть *тоже* GPL-ной — нет.

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

> (фактически) любая другая прогамма, которая по информации для reflection генерит новый плюсовый исходик с геттерами-сеттерами-сериализаторами должна быть *тоже* GPL-ной

А вот это уже вряд ли.

Кстати, чисто технически, информация для reflection есть в объектных файлах в виде DWARF - нет нужны лезть во внутреннее представление компилятора.

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

> По-моему, тоже. И что? Это всего лишь значит, что ты использовал GCC как библиотеку, а GCC лицензирован по «заразной» GPL => твой код «заразился». Обычный механизм GPL.

Даже в анально огороженной яве до такого не додумались.

Там есть compiler API, и можно пройтись во всему дереву AST с помощью ЕМНИП виртуальных функций для класса каждого узла. Сгенеренный результат ЕМНИП вовсе не обязан быть лицензирован как javac.

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

> А вот это уже вряд ли.

Я это писал намного раньше, а ты похоже заметил только щас.

Кстати, чисто технически, информация для reflection есть в объектных файлах в виде DWARF - нет нужны лезть во внутреннее представление компилятора.

думаю, что в DWARF, как и в gcc-xml, все шаблоны раскрыты, а для написания полноценных сериализаторов могут потребоваться нераскрытые

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

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

>> У меня 265 МБ ОЗУ, селерон и гента.

Собираю с использованием GCC — всё тормозит.

Собираю с использованием clang — всё тормозит гораздо меньше.

ЧЯДНТ?

Руки для начала выпрями.

Чувак, как закончишь школу, открывай консультационное агентство на тему «как выпрямить себе руки чтобы все тормозило». Уверен, к тебе народ поняется очередью.

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

Как уже достали эти ненавистники GPL. Всё им не так и не этак. Им обязательно надо оставить какие-либ лазейки, причём каждому свои. И тогда они обещают, что толпы разработчиком стройными рядами потянутся в наш лагерь, а корпорации станут наперебой предлагать деньги.

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

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

> если бы яббл вложился в еще одну базу данных, то это не значит, что набегание также бы произошло.

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

особенно на таких «социальных» проектах, как компиляторы/интерпретаторы, дистрибутивы и прочее

Главное подкинуть конфеток: кому бабло, кому лицензия, кому имя пообещать

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

>> это ограничение специально для жцц обсуждалось где-то подробно на lwn

Ссылка есть или нет?

apple об этом говорили. Они хотели встроить семантический парсер от компилятора в xCode, но лицензия не позволила

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

> И что до меня, я вполне поимаю эту паранойю. Была ли он оправданной - ХЗ.

Замечательно полуичлось. для obj-c есть 2 ветки: одна для NEXTStep, вторая для OpenStep. И они несовместимый код генерируют

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

> Как уже достали эти ненавистники GPL.

Это несвобода. Я хочу свободу. И даю свободу. Мой личный код под BSD будет всегда

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

Я уже не раз приводил пример, что BSD позваляет лучше зарабатывать деньги и лучше приводить поддержку.

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

>А для переносимого байткода есть Dis из Inferno

Почитав форумы по Inferno очень быстро понимаешь - Inferno НЕТ. Не в том смысле, что его нет вообще, а в том, что количество граблей не позволяет его использовать «без страха и упрёка»

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

третий пень 667 + 256 оперативы.
slitaz и gentoo - все летает.

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

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

Я уже не раз приводил пример, что BSD позваляет лучше зарабатывать деньги и лучше приводить поддержку.

Я вам ни сколько не противоречу. Если я напишу код под BSD, вы его позаимствуете, приделаете туда свой установщик и будете продавать бинарники за полную стоимость, то это гораздо выгоднее, чем писать всё самому.

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

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

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

Спасибо, К.О.

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

Мое понимание открытых исходников таково: они должны давать право 0. запускать 1. читать 2. править 3. продавать программу, *однако* в рамках количества экземпляров, купленных у изначального автора(-ов).

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

www_linux_org_ru ★★★★★
()

Приветствую. Может кто подскажет...

Я создаю программу и публикую её под GPL (+ exception), а потом продаю со всеми исходниками. Понятное дело, что те исходники, что были до продажи, достаются в паблике. Могу ли я, в дальнейшем, как автор, сменить их лицензию на, например, BSD?

Здесь может быть вариант договора с покупателем, запрещающего подобное действие. Но если я всё же это сделаю, на сколько оно будет законным?

Благодарствую...

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

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

Если код выпущен под GPL, то все изменения его должны быть опубликованы под GPL, только если код был полностью обезличен (copyleft), авторов не сыскать. Для нового авторского кода (на котором ставится copyright) возможна смена лицензии при согласии авторов с соавторами.

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

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

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

>> И что до меня, я вполне поимаю эту паранойю. Была ли он оправданной - ХЗ.

Замечательно полуичлось.

Да, получилось и в самом деле замечательно - компилятор, который генерит код на кучу архитектур, и при этом совсем уступает заточенным под одну архитектуру лидерам (там, где они есть).

для obj-c есть 2 ветки: одна для NEXTStep, вторая для OpenStep.

Скажи за это спасибо жопсу.

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

> apple об этом говорили. Они хотели встроить семантический парсер от компилятора в xCode, но лицензия не позволила

Ты правда не понимаешь или сознательно лжешь? Лицензия им вполне позволяла встроить парсер куда угодно, но результирующий продукт должен был быть GPL (и да, это сделано специально). То, что условия лицензии не утроили Яббл - личные половые проблемы Яббла.

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

> компилятор, который генерит код на кучу архитектур, и при этом совсем [?] уступает заточенным под одну архитектуру лидерам (там, где они есть).

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

Предположим, по договору имущественные права на код

Код какого рода: исходный текст, бинарный код, конечный продукт?

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

Авторство неотчуждаемо по ГК РФ. С имущественными правами нужно дополнительно выяснять.

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

> То, что условия лицензии не утроили Яббл - личные половые проблемы Яббла.

Не спорю. Но нам от этого лучше.

Скажи за это спасибо жопсу.

За то, что NEXTStep закрыт? Это их право. За то, что open source не захотел реализовать совместимую библиотеку? Это тоже право open source'а

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

нет

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

>Нет и не будет, ибо там gcc-измов хоть жопой жуй.

Если запилят распространенные gcc-измы, будет, интеловский же собирает

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

>фортран уже давно стал read-only языком

о_О а мужики-то и не знали)

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