LINUX.ORG.RU

FreeBSD 10 отказывается от GCC в пользу CLANG

 , , ,


1

6

Как отмечено в Q1-2012 FreeBSD Status Report, LLVM компилятор Clang стремительно замещает GCC для этой популярной BSD ОС. Разработчики заметно продвинулись в построении C++11-стека, свободного от GNU. К релизу FreeBSD 10 они планируют сделать Clang С/С++ компилятором по умолчанию, отказавшись от GCC, и получить стек разработки на C++ под лицензией BSD.

Q1-2012 FreeBSD Status Report
http://wiki.freebsd.org/BuildingFreeBSDWithClang

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



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

Есть ли возможность совместной жизни Clang и GCC? Если есть, то зачем выпиливать уже сейчас GCC?

amazpyel ★★★
()

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

Менять gcc на llvm по собственной воле в рамках целой системы станет только клинический идиот:

  • Gcc поддерживает C, C++ и Objective C не хуже llvm, к тому же ещё Fortran, Ada, Go, а вскоре и D2.
  • Собранный Gcc код быстре практически всегда, а часто существенно быстрее.
  • Gcc работает на дюжине архитектур, причём на всех нужных и весьма надёжно, llvm --- только на i386 и amd64, порт на mips пока носит весьма экспериментальный характер.

За сим откланиваюсь.

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

Есть ли возможность совместной жизни Clang и GCC? Если есть, то зачем выпиливать уже сейчас GCC?

GCC никто не выпиливает как класс, просто с 10-й версии FreeBSD базовая система будет полностью собираться Clang'ом и он же будет компилятором по умолчанию. Никто не мешает поставить GCC из портов и собирать софт им.

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

к тому же ещё Fortran, Ada, Go, а вскоре и D2.

у llvm уже длиннее больше, причем значительно, но к FreeBSD конечно это отношения не имеет

Собранный Gcc код быстре

да

Gcc работает на дюжине архитектур

да

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

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

свой и рион
а гцц ищи в тулчейне каком-нибудь

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

Clang не от хорошей жизни создали. Просто в FSF с версии 4.3 не захотели делиться. Ну их теперь и поделят на ноль.

Лицензия BSD - целиком «заслуга» FSF.

quiet_readonly ★★★★
()

Почему-то прочел, как «FreeBSD 10 лет отказывается от GCC в пользу CLANG»

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

у llvm уже длиннее больше, причем значительно, но к FreeBSD конечно это отношения не имеет

ldc действительно рабочий, портов к Фортрану, Аде и Го не знаю.

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

Clang не от хорошей жизни создали. Просто в FSF с версии 4.3 не захотели делиться. Ну их теперь и поделят на ноль.

Лицензия BSD - целиком «заслуга» FSF.

Растолкуйте, кто и с кем не поделился и при чём здесь 4.3. Пока что это больше похоже на бред.

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

линуксокопэц не за горами

Да, когда Apple запатентует компилятор и запретит всем заниматься его разработками. Llvm сделан для этого в том числе.

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

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

Ага. Как выходят, так и обновляются ? В сыром виде ? :-)
Чо, хороша ОС...

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

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

BSD можно использовать в GPL проекте, GPL в BSD нет

За это люто плюсуем. Тебе удалось объяснить и дуракам, что BSD лицензия - действительно свободная. И я добавлю от себя, что FreeBSD - символ прагматизма и здравого смысла. Линукс - повторное изобретение велосипеда.

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

У GPL есть один глобальный глюк: она требует единой лицензии для всего кода программы.

Это не бага, это фича. Призванная открыть весть код в «счастливом завтра». :-)

Выпущенное под BSD, может быть использовано и закрыто. Выпущенное под GPL незакрываемо (в теории).

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

Да. BSD действительно позволяет продаться всем и каждому. Никто и не отрицает.

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

У GPL есть один глобальный глюк: она требует единой лицензии для всего кода программы.

Как тебе уже выше сказали, это не баг, это фича.

Поэтому о неправильности я бы поспорил.

Поспорь. Но суть от того не поменяется.

Было бы в ней что-то типа: «запрещено распространять производные работы без исходного кода», вопросов бы не было.

А в ней так и есть. «Запрещено распространять производные работы без открытия исходного кода под той же лицензией». И это правильно.

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

Если есть, то зачем выпиливать уже сейчас GCC?

gcc выпиливают в базовой системе, в портах (и для портов) gcc останется, а также останется для ia64, sparc64, ppc и может ещё для каких-нибудь других архитектур, которые llvm не поддерживает/поддерживает плохо.

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

Менять gcc на llvm по собственной воле в рамках целой системы станет только клинический идиот:

Система не должна быть прибита к компилятору гвоздями. В проекте FreeBSD это, видимо, понимают.

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

Есть ли возможность совместной жизни Clang и GCC?

Да. GCC можно установить из портов. Досупны разные версии GCC. Компиляция и сборка программ из портов определённой версией компилятора легко осуществима.

Если есть, то зачем выпиливать уже сейчас GCC?

В базовой системе должен быть один компилятор, так как код базовой системы поддерживается ограниченным числом людей Core Team, и этот код должен быть согласованным.

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

BSD — свободная лицензия.

Эм.... Не сочтите за флуд, но не могу не вспомнить песню:

Свобода

Слова: С. Бехтеев

Исп.: Жанна Бичевская

---

Желанное, светлое слово «Свобода» -

Прекраснейший лозунг на вид.

В устах исступлённого зверя-народа

Преступной насмешкой звучит.

---

Сводода - темница, свобода - оковы,

Свобода - законный грабёж.

Свобода - венец, как и прежде, терновый.

Такая ужасная ложь.

---

Свободный народ, позабывший про Бога,

Кого же, безумный, ты ждёшь?

Что делать ты будешь с твоею свободой,

Которая в сущности - ложь.

---

Желанное, светлое слово «Свобода»,

Без веры его не поймёшь.

В устах обозлённого дикого сброда

Такая свобода есть ложь.

---

Желанное, светлое слово «Свобода» -

Прекраснейший лозунг на вид.

В устах исступлённого зверя-народа

Преступной насмешкой звучит.

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

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

Чем меньше будет число этих людей, тем будет лучше. ;)

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

Кстати, компиляция и сборка порта binutils 2.22, как зависимости GCC 4.8, с помощью LLVM/Clang 3.0 не удалась:

% portmaster -gD --delete-build-only devel/binutils
...
...
...
script.cc:2874:7: error: call to 'script_parse_option' is ambiguous
      script_parse_option(closurev, s.c_str(), s.size());
      ^~~~~~~~~~~~~~~~~~~
./script-c.h:271:1: note: candidate function
script_parse_option(void* closure, const char*, size_t);
^
script.cc:2794:1: note: candidate function
script_parse_option(void* closurev, const char* option, size_t length)
^
script.cc:3014:7: error: call to 'yyerror' is ambiguous
      yyerror(closurev, buf);
      ^~~~~~~
./script-c.h:226:1: note: candidate function
yyerror(void* closure, const char*);
^
script.cc:2607:1: note: candidate function
yyerror(void* closurev, const char* message)
^
script.cc:3168:12: error: call to 'script_new_string_sort_list' is ambiguous
    return script_new_string_sort_list(string_sort);
           ^~~~~~~~~~~~~~~~~~~~~~~~~~~
./script-c.h:377:1: note: candidate function
script_new_string_sort_list(const struct Wildcard_section*);
^
script.cc:3154:1: note: candidate function
script_new_string_sort_list(const struct Wildcard_section* string_sort)
^
script.cc:3192:12: error: call to 'script_new_string_list' is ambiguous
    return script_new_string_list(str, len);
           ^~~~~~~~~~~~~~~~~~~~~~
./script-c.h:388:1: note: candidate function
script_new_string_list(const char*, size_t);
^
script.cc:3179:1: note: candidate function
script_new_string_list(const char* str, size_t len)
^
script.cc:3264:3: error: call to 'yyerror' is ambiguous
  yyerror(closurev, _("unknown PHDR type (try integer)"));
  ^~~~~~~
./script-c.h:226:1: note: candidate function
yyerror(void* closure, const char*);
^
script.cc:2607:1: note: candidate function
yyerror(void* closurev, const char* message)
^
script.cc:3339:2: error: call to 'yyerror' is ambiguous
        yyerror(closurev, _("unknown MEMORY attribute"));
        ^~~~~~~
./script-c.h:226:1: note: candidate function
yyerror(void* closure, const char*);
^
script.cc:2607:1: note: candidate function
yyerror(void* closurev, const char* message)
^
script.cc:3352:3: error: call to 'yyerror' is ambiguous
  yyerror (closurev, _("GOLD does not currently support INCLUDE directives"));
  ^~~~~~~
./script-c.h:226:1: note: candidate function
yyerror(void* closure, const char*);
^
script.cc:2607:1: note: candidate function
yyerror(void* closurev, const char* message)
^
3 warnings and 7 errors generated.
gmake[4]: *** [script.o] Ошибка 1
gmake[4]: Выход из каталога `/usr/obj/usr/ports/devel/binutils/work/binutils-2.22/gold'
gmake[3]: *** [all-recursive] Ошибка 1
gmake[3]: Выход из каталога `/usr/obj/usr/ports/devel/binutils/work/binutils-2.22/gold'
gmake[2]: *** [all] Ошибка 2
gmake[2]: Выход из каталога `/usr/obj/usr/ports/devel/binutils/work/binutils-2.22/gold'
gmake[1]: *** [all-gold] Ошибка 2
gmake[1]: Выход из каталога `/usr/obj/usr/ports/devel/binutils/work/binutils-2.22'
gmake: *** [all] Ошибка 2
*** Error code 1

Stop in /usr/ports/devel/binutils.
*** Error code 1

Stop in /usr/ports/devel/binutils.

===>>> make failed for devel/binutils
===>>> Aborting update

Terminated

===>>> You can restart from the point of failure with this command line:
       portmaster <flags> devel/binutils
(Пробую установить последний снапшот GCC 4.8)

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

BSD можно использовать в GPL проекте

По сути ты говоришь: «В рамках проекта можно мешать код под GPL и под BSD», - и это правильно.

А теперь определи, что такое «проект под BSD» и «проект под GPL»? Могу ли я в ядро линукс добавить файл под BSD и распространять это дело? Могу ли я в ядро фрибсд добавить файл под GPL? Естественно, в обоих случаях всё в целом распространяется под GPL, но становится ли от этого ядро фрибсд проектом под GPL? И что лицензией проекта, если файл под другой лицензией добавляется только при определённых условиях (например, только под одной архитектурой)?

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

Дальше не читал.

Я тоже атеист. :) И тоже когда-то считал, что песня идиотская. Жизнь показала обратное, да. :)

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

это для web приложений... вот же облом, чо они не сделали вирт. машину типа жабской для «типа нативного» кода, но как бы с AOT

ну вы поняли, я ж мечтаю что вот собрал ты такой байткод, а потом хопа и вот тебе на arm, x86, amd64 и на чем то еще работает... :) ну красота же

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

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

не удалась

по простой причине - декларация в хедере считается плюсовой, а в .cc файле - явно задана сишной, разработчики поленились добавить #ifdef _cplusplus в хедер, наглядный пример того, что clang более строгий компилятор

vaino
()

И это победа. Силы добра не остановить.

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

Привет, изя. Ты как обычно еле влазишь в ЛОР. :)

Зачем пилить еще один компилятор под другой, сомнительно нужной лицензией, вместо пиления wayland/nouveau/X.org для гибридных видеокарт, например?

Изя еле , но влез, а ты, похоже, в пролёте с размерами. Тоньше надо быть, тоньше и нежнее.

Зачем пилить еще один компилятор

Как только внятно сможешь объяснить, почему создан зоопарк компиляторов С/С++ уже. Я думаю, как раз к китайской пасхе поспеешь.

под другой, сомнительно нужной лицензией

Это ты сказку про белого бычка собрался завести?

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

Проект под License, обозначает, что проект распространяется под лицензией License, что тут может быть непонятным?

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

А вот лично вы как относитесь к лицензии MIT?

Чтобы относиться к к.-л. лицензии, надо сперва что-нибудь под ней выпустить. Поэтому 99% суждений ЛОРа о лицензиях можно смело пропускать мимо ушей и глаз :)

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

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

И даже Mono

malbolge ★★
()
Ответ на: комментарий от I-Love-Microsoft

это для web приложений... вот же облом

кто сказал? в хром{е|иуме} можно запускать локальные приложения без подключения к сети.

машину типа жабской для «типа нативного» кода, но как бы с AOT

J3 развивается в этом направлении

ну вы поняли, я ж мечтаю что вот собрал ты такой байткод, а потом хопа и вот тебе на arm, x86, amd64 и на чем то еще работает... :) ну красота же

Проблема в том, что у PNaCl свой ABI, а у перечисленных архитектур - свой, поэтому платформенно-независимый биткод LLVM нельзя скомпилировать в нативный бинарник

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

А вот лично вы как относитесь к лицензии MIT?

X.org rulez!

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

Вот вместо свободы предлагается мазохистская идеология, в песне — религиозная, устами сумасшедших фсф-овцев — гплная. Вводится образ врага, не проникнувшегося Великой Идеей — МС не проникся гплью, а зверь народ — фофудьёю.

Это не о том, что гпл — плохо, гпл может быть оправдана. Цель — не лицензия, цель — удовлетворение потребностей, для которого создаётся софт.

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

Ладно. binutils установил командой «pkg_add -r binutils»:

% pkg_info -Ex binutils
binutils-2.22_1
А вот GCC 4.8 установился из исходников с помощью системного LLVM/Clang:
===>   Registering installation for gcc-4.8.0.20120506
===> SECURITY REPORT: 
      This port has installed the following files which may act as network
      servers and may therefore pose a remote security risk to the system.
/usr/local/lib/gcc48/libmudflapth.so.0
/usr/local/lib/gcc48/libmudflap.so.0

      If there are vulnerabilities in these programs there may be a security
      risk to the system. FreeBSD makes no guarantee about the security of
      ports included in the Ports Collection. Please type 'make deinstall'
      to deinstall the port if this is a concern.

      For more information, and contact details about the security
      status of this software, see the following webpage: 
http://gcc.gnu.org/

===>>> Creating a package for new version gcc-4.8.0.20120506
	===>>> Package saved to /store/pckgs64/All

===>  Cleaning for gcc-4.8.0.20120506

===>>> The following actions were performed:
	Installation of math/mpc (mpc-0.9)
	Installation of lang/gcc48 (gcc-4.8.0.20120506)
%

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

J3 развивается в этом направлении

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

I-Love-Microsoft ★★★★★
()

Остается поздравить этих проприетарщиков с тем, что они больше не будут совать свои ручонки в СПО :)

Quasar ★★★★★
()
Ответ на: Аргумент: CUDA от iZEN

станет

О, великий провидец, могу ли я учиться у тебя?

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

Правильно.

Софт под EULA создаётся для набития карманов лицензиара, удовлетворение потребностей вторично.

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

А исключительно для удовлетворения потребностей софт писали в СССР. Вы же не хотите взад в СССР, правда?

хехехе

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