LINUX.ORG.RU

Вышел GCC 4.8.0

 


1

4

Вышла новая версия набора компиляторов GNU — 4.8.0. Среди нововведений:

  • Теперь для сборки GCC требуется компилятор С++.
  • Формат отладочной информации по умолчанию изменён на DWARF4, который поддерживается в GDB 7.5, Valgrind 3.8.0 и elfutils 0.154.
  • Добавлен новый уровень оптимизации -Og, предназначенный для быстрой компиляции и отладки, обеспечивая при этом приемлемую производительность.
  • Убран ряд узких мест в оптимизаторе, что существенно ускорило компиляцию чрезвычайно больших функций.
  • Добавлены AddressSanitizer (быстрый детектор ошибок работы с памятью) и ThreadSanitizer (детектор гонок данных).
  • Улучшены сообщения об ошибках, исходная строка выводится полностью, а колонка с ошибкой отмечается знаком ^. Опция ftrack-macro-expansion=2 теперь включена по умолчанию, что показывает стек раскрытия макросов:
    t.c:1:94: error: invalid operands to binary < (have ‘struct mystruct’ and ‘float’)
     #define MYMAX(A,B)    __extension__ ({ __typeof__(A) __a = (A); __typeof__(B) __b = (B); __a < __b ? __b : __a; })
                                                                                                  ^
    t.c:7:7: note: in expansion of macro 'MYMAX'
       X = MYMAX(P, F);
    
  • Улучшена поддержка стандарта C++11: поддерживается ключевое слово thread_local, синтаксис атрибутов, спецификаторов выравнивания и наследование конструкторов. Также добавлена опция -std=C++1y для поддержки будущего стандарта, пока она добавляет только возможность автоматического определения типа результата в определении функций.
  • Реализована предварительная версия языка Go 1.1.
  • Добавлена поддержка архитектуры AArch64.

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

★★★★★

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

Теперь для сборки GCC требуется компилятор С++.

Собирал GCC 4.8.0 2013 года с помощью GCC 4.8.0 2012 года. Вылез Internal compiler error. Та же хрень, когда собирал с помощью 4.7.2. В итоге забил и юзаю 4.7.2.

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

Я, например, каждый день использую параллельно Eclipse CDT и VS2010 для одного и того же C++ проекта (150 подпроектов, миллионы loc). И эклипсом пользоваться намного удобнее, благодаря разным мелочам. И не тормозит.

После VS2010 даже карбоновые тормоза слабо тормозят. Нашел с чем сравнивать. Возьми VS2005 с Visual Assist в качестве мозгов и тогда сравнивай.

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

+1. А сейчас есть N компиляторов, и один одно считает за warning, второй - второе. И конечно новая версия ничего не может собирать с warnings as errors.

Pavval ★★★★★
()

Теперь для сборки GCC требуется компилятор С++.

Все плохо. Теперь пора идти и писать нормальный компилятор на Си под Си+Asm. Давно хотел эту связку сделать. А С++ и прочий шлак не нужны.

Кому-нибудь еще интересно?

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

Я боюсь даже подумать, насколько будет там BSD тормозить.

В BSD нету лагов и «linux bug #12309» — доказано практикой. Можно смотреть фильм, а в консоли одновременно с этим что-то компилировать с "-j5". И ничего не запнётся.

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

Можно смотреть фильм, а в консоли одновременно с этим что-то компилировать с "-j5". И ничего не запнётся.

Я в своей генте это постоянно делаю. И все отлично.

В BSD нету лагов и «linux bug #12309» — доказано практикой.

Угу. После плясок с бубном и невозможности поставить нормально фряху на свой ноут докажи мне еще)
Что пробовал ее в 2003, что в 2005, что сейчас - один фиг уныло где-то плетется сзади.

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

ничего не лагает кроме начальной прогрузки на холодную.

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

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

Так где BSD встала, там она и работает, как вкопанная. А твой ноут только для Windows и Linux видимо предназначен, больше ни для чего.

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

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

45 МБ это много или мало? Ангрибёрд запустил — не лагает.

Что ещё предложишь попробовать?

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

Ангрибёрд запустил — не лагает.

Оно не лагает даже на самых дешевых китайцах за 2к рублей.

Так где BSD встала, там она и работает, как вкопанная.

Угу. Сказки только не рассказывай. К слову:

server ~ # uptime
01:58:07 up 300 days,  7:56,  1 user,  load average: 0.52, 0.48, 0.13
Мой серверок с гентой на автопилоте. Каждый день по крону софт обновляет. Сейчас вот хочу еще автоапдейт ядра прикрутить.

А твой ноут только для Windows и Linux видимо предназначен, больше ни для чего.

OpenSolaris, AROS и Haiku без проблем поставились и работали.

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

Оно не лагает даже на самых дешевых китайцах за 2к рублей.

Ты предлагай, а не констатируй.

Сейчас вот хочу еще автоапдейт ядра прикрутить.

Зря! Крутого аптайма лишишься. Или у вас система всё равно раз в полгода обновляется — не страшно? :))

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

Или у вас система всё равно раз в полгода обновляется — не страшно? :))

@system или о чем ты? Вообще, обновляются все пакеты по мере появления в portage по крону каждый день.

Зря! Крутого аптайма лишишься.

Хочу uKSM прикрутить и BFS/BFQ.
Кстати, а аналог KSM есть во фряхе?

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

@system или о чем ты?

Я о ядре в системе. При обновлении ядра нужно перезагрузиться, не так ли?

Кстати, а аналог KSM есть во фряхе?

Нет. Все силы брошены на то, чтобы не появился «linux bug #12309».

iZEN ★★★★★
()
Последнее исправление: iZEN (всего исправлений: 2)
Ответ на: комментарий от iZEN

При обновлении ядра нужно перезагрузиться, не так ли?

it's all about choice.
холодная перезагрузка, горячая перезагрузка (kexec), патчи на работающее ядро (название к сожалению не помню).

на то, чтобы не появился «linux bug #12309».

появится только если фряха перейдет на более нормальное ядро.

Нет

Жаль, очень жаль.

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

Они же чуть в С++11 не попали. Точнее говоря, попали, но вылетели. Так что для 14 было бы как раз.

Чуть? Там было сильно не чуть. А 14 будут багофиксы и мелкие улучшения.

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

Ведь что может в рабочем коде делать неиспользуемая переменная?

В С++ - освобождать ресурсы.

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

Так где BSD встала, там она и работает, как вкопанная

как вкопанная

по Фрейду прямо :-D

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

И как это разорвать?

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

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

Работающим компилятором или интерпретатором нужного языка.

Begemoth ★★★★★
() автор топика
Последнее исправление: Begemoth (всего исправлений: 1)
Ответ на: комментарий от Begemoth

Ведь что может в рабочем коде делать неиспользуемая переменная?

В С++ - освобождать ресурсы.

А ты не пользуйся компилятором, который оставляет в генерируемом коде неиспользуемые переменные.

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

Первый компилятор был написан прямо в машинных кодах.

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

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

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

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

После VS2010 даже карбоновые тормоза слабо тормозят. Нашел с чем сравнивать. Возьми VS2005 с Visual Assist в качестве мозгов и тогда сравнивай.

Eclipse 2006-2008 годов вполне приемлемо шевелился на Celeron2.4ГГц с 512М памяти.

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

Не, с 4.7.2 в моем случае поменьше. В процентах:

~ $ echo "$(cat /etc/portage/package.env|wc -l)/$(eix -Ic|wc -l)*100" | bc -l
2.07939508506616257000

~ $ gcc версия 4.7.2 (Gentoo 4.7.2-r1 p1.5, pie-0.5.5) 

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

Перегрузка new и подсчёт ссылок (=тонкое и при этом автоматическое управление памятью), RAII, хорошая поддержка ООП.

ООП даёт более простую реализацию паттерна visitor, который всё равно приходится пересоздавать в любом компиляторе, и возможность безпроблемно вставлять хуки в любых местах.

Всё это легко можно увидеть в исходниках clang, а о причинах, почему на C++ перешли в GCC, сказано тут.

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

Перегрузка new и подсчёт ссылок (=тонкое и при этом автоматическое управление памятью), RAII, хорошая поддержка ООП.

ООП даёт более простую реализацию паттерна visitor, который всё равно приходится пересоздавать в любом компиляторе, и возможность безпроблемно вставлять хуки в любых местах.

Ясно. В построении компиляторов ты разбираешься как свинья в алмазах.

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

Компиляторы, паттерны, ...

Ниче не хочу сказать, но похоже что хомяки (из-за скудоумия?) пытаясь хоть как-то разобраться в окружающем мире пришли к тупому мышлению через шаблоны использованию паттернов. Проблема лишь в том что новичкам, быдлячкам и хомячкам это очень нравится (ровно как и java/python, C# и .net/mono) - не думать своей головой.

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

там она и работает, как вкопанная

s/работает/находится/

s/вкопанная/закопанная/

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

Почему вы считаете, что использовать паттерны == не думать своей головой?

Использовать готовое решение == не думать.

Искать решение == думать.

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

Почему вы считаете, что использовать паттерны == не думать своей головой?

Использовать готовое решение == не думать.

Искать решение == думать.

Именно. Я еще предполагал что это очевидно всем. Оказывается не всем.

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

Я ж говорил про весь софт в репозиториях, а не на отдельно взятой машине.

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

Можно попробывать http://portage.perestoroniny.ru/sys-devel/gcc/

ядро 3.8.4, glibc, boost, nginx собрались

nvidia-cuda-toolkit тоже собрался

nvidia-cuda-sdk не собирается ни один пример, вылезла снова ошибка

/usr/lib/gcc/x86_64-pc-linux-gnu/4.8.0/include/g++-v4/cstdlib(178): error: identifier "__int128" is undefined

Традиционный шаманский рецепт годный для gcc-4.7.2:

#undef _GLIBCXX_ATOMIC_BUILTINS

не срабатывает для 4.8.0

Если залезть руками в файл /usr/lib/gcc/x86_64-pc-linux-gnu/4.8.0/include/g++-v4/x86_64-pc-linux-gnu/bits/c++config.h и закомментировать в нем строку

#define _GLIBCXX_USE_INT128 1

то все равно остаются какие-то ошибки.

У кого есть рецептура для gcc-4.8.0 + nvidia-cuda-sdk 5.0.35 прошу поделиться.

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

Плакал. И эти люди типа имеют мнение об Eclipse.

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

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

Мне жаль, что сборка от гугеля вызвала у вас плач.

Не, «сборка от гугеля» у меня ничего не вызвала.

Но может вы потрудитесь пояснить сей феномен?

Да. Меня всегда расстраивают люди, имеющие свое мнение без достаточных оснований.

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

Не, «сборка от гугеля» у меня ничего не вызвала.

Говоря о сборке от гугеля я имел ввиду ADT Bundle:
http://developer.android.com/intl/ru/sdk/index.html

Да. Меня всегда расстраивают люди, имеющие свое мнение без достаточных оснований.

Основание простое - мой неудачный опыт: https://plus.google.com/u/0/115802185572832308010/posts/SfRzXjiHfxj

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

Сейчас GCC написан на C++, а не только собирается компилятором С++.

Сертифицируемость на 3+ уровень по НДВ ку-ку.

Гигантский шаг вперёд в сторону завендузовывания.

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

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

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

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

Субьективную составляющую не стоит сбрасывать со счетов :) У нас есть тим лид, которого нельзя убедить, что под линукс надо разрабатывать под линуксом - он уверен, что «ничего лучше студии нету» :) И «поправить ишуи сборки под линуксом быстрее, а разрабатывать надо в студии»... (Причем пытается это мнение навязывать в каждом проекте... Иногда хочется взять и у5.1ть - ведь сборкой «ишуи под линуксом» не ограничиваются, если прога разрабатывалась в целом не под линуксом) Это, подозреваю, эхо негативного опыта с прежними версиями эклипца. Причем «тормозит и глючит» - одни из основных аргументов. (Чел им просто не хочет пользоваться ни в каком виде... А раньше и на линукс гнал, что он типа «глючит». Сильно похоже на застарелое неосиляторство. Конечно неприятно когда отладчик отваливается - но ничего страшного :))

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

ЧСХ недавно он негативно высказалсо про студию :) Инеллисенц стал слишком задумчивый

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

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

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