Разработчики Ubuntu провели (https://lists.ubuntu.com/archives/ubuntu-devel-announce/2011...) эксперимент по пересборке пакетов репозитория main при помощи тестовой версии набора компиляторов GCC 4.6 (http://gcc.gnu.org/gcc-4.6/). Несмотря на то, что будущий выпуск Ubuntu 11.04 будет базироваться на ветке и GCC 4.5, эксперимент по пересборке более новой веткой GCC, нацелен на ранее выявление регрессивных изменений.
В процессе сборки выявлена всего одна внутренняя ошибка компилятора. Из более чем семи тысяч пакетов из репозитория main, проблемы со сборкой зафиксированы для 174 пакетов (http://people.ubuntuwire.org/~wgrant/rebuild-ftbfs-test/test...), среди которых apt, python, bacula, debian-installer, digikam, evolution, freetype, fuse, grub, emacs23, inkscape, kde4libc, linux-ядро, network-manager, openoffice.org, subversion, thunderbird, xen, firefox, mysql, qt4 и т.п.
Большинство проблем связано (https://wiki.ubuntu.com/GCC4.6...URL: https://lists.ubuntu.com/archives/ubuntu-devel-announce/2011...
Новость: http://www.opennet.me/opennews/art.shtml?num=29320
В чем, собственно, новость? Убунтовщики тут не пионеры, непрерывные тесты на пригодность пакетов и компиляторов делают все ведущие дистрибутиводелы.
Как по мне так вполне интересно посмотреть на то что ждет в свежей версии компилера и насколько много грабель ожидается. Не вижу чем это плохо.
А предыдущий оратор спрашивал: "а новость то в чем?". Многие так делают.
В "и Убутнта -- тоже!". Она _смогла.
а когда релиз 4,6 ?
> а когда релиз 4,6 ?when its ready (c) то ли Ричард Гюнтер , то ли Якуб Елинек
когда доведут критические ошибки до нуля.
Впрочем там уже сейчас фаза исправления ошибок, берите, тестируйте, в багзиллу отписывайтесь, компилятор фактически к релизу готов ( в плане реализации новых возможностей и базового QA )
>В процессе сборки выявлена всего одна внутренняя ошибка компилятора.Зато шаг в сторону от x86, так сыплются как из рога изобилия и всем наплевать.
> Зато шаг в сторону от x86, так сыплются как из рога изобилия
> и всем пох.А вам либо пох также как и всем, либо вы сами виноваты потому что НИХРЕНА не сделали.
>А вам либо пох также как и всем, либо вы сами виноваты потому что НИХРЕНА не сделали.Ты серьёзно считаешь, что все подряд могут внести что-то в разработку компиляторов?
Я, положим, простой быдлокодер. С теорией постороения компиляторов знаком весьма отдалённо, в институте её не изучал. Тоже самое относительно околоассемблерных и архитектурных вещей. Баг отрепортил. Чем я ещё могу помочь? Это же не обычная программа, чтобы тут же приступить к написанию патчей нужно долго и упорно готовиться.
пишите в багзиллу хотя бы,
если никто не напишет , то никто и не посмотрит, сейчас до релиза самое время заваливать разрабов багрепортами, а вот потом уже и правда никто ничего делать не станет, в 4.6.1 наиболее очевидные ляпы исправят, а дальше основные разработчики уйдут в 4.7.х, останутся только те, кто могут поковырять, но если не справятся, напишут примерно такое -
"мы очень старались, но не можем найти где ошибка, да и вообще нам уже не интересно, мы занимаемся несколько иными вещами" (почти с) Мартин Джамбор.
Что-то я в вашем вбросе логики не вижу - не могу сопоставить, как связана ошибка в коде написанном человеком и платформа, успешно выполняющая миллионы программ.
> Что-то я в вашем вбросе логики не вижу - не могу сопоставить, как связана ошибка в коде написанном человеком и платформа, успешно выполняющая миллионы программ.В коде конкретной программы для конкретной платформы дофига ошибок. Вот и всё.
Хм... "из-за чего некоторые бывшие предупреждения в GCC 4.6 воспринимаются как ошибки"
Сам не проверял, но думал, что main собирается с -Wall. Оказалось, что нет, а жаль.
И что с -Wall компилятор выдаст предупреждения и дальше поедет. :) Вот -pedantic -pedantic-errors это да. :)
ещё -ansi добавь, ни одна прога ни соберётся :)
ах да, про -Werror забыл. Без него действительно от -Wall мало толку. Сам пилю свои проги как минимум до тех пор, пока они с этими опциями не скомпилируются :)
А чужие библиотеки вы, видимо, принципиально не используете?
Любая моя программа при компиляции с этим флагом до моего кода просто не доходит - слишком много "ошибок" в библиотечных файлах... В основном ошибки типа "так до сих пор можно писать, но не модно же!"
Любопытно, что на i386 ошибок больше, чем на amd64. Разработчики сидят на 64 бит.
к сожалению совсем не любопытно, а факт, причем если речь идет о GCC, то где-то начиная с 4.4 ошибкам специфичным для x86 уделяется мало внимания, многие вещи не исправляются, например 4.5.x до сих пор не может собрать себя с PGO, баг висит..
Неприоритетная платформа стала
Типа ошибка в ядре:
> linux-2.6.37/drivers/scsi/aha152x.c:2239:9: warning: variable 'data' set but not used [-Wunused-but-set-variable]Открываем, видим
while(fifodata>0) {
int data;
data=GETPORT(DATAPORT);
DPRINTK(debug_datai, DEBUG_LEAD "data=%02x\n", CMDINFO(CURRENT_SC), data);
fifodata--;
DATA_LEN++;
}Где, ГЦЦ увидел "Unused but set variable"
ну дык DPRINTK работает только под дебагом
> ну дык DPRINTK работает только под дебагомдык, присваивание NULL в OpenSSL тоже нифига не давало, а какой эффект был :)
Но с другой стороны, конечно правильней было бы сделать
while(fifodata>0) {
#ifdef AHA152X_DEBUG
int data;
data=GETPORT(DATAPORT);
DPRINTK(debug_datai, DEBUG_LEAD "data=x\n", CMDINFO(CURRENT_SC), data);
#endif
fifodata--;
DATA_LEN++;
}
> Где, ГЦЦ увидел "Unused but set variable"Вы слепой? print не использует data, в форматной строке только один параметр.
>> Где, ГЦЦ увидел "Unused but set variable"
> Вы слепой? print не использует data, в форматной строке только один параметр.
#define LEAD "(scsi%d:%d:%d) "
#define DEBUG_LEAD KERN_DEBUG LEAD
#define CMDINFO(cmd) \
(cmd) ? ((cmd)->device->host->host_no) : -1, \
(cmd) ? ((cmd)->device->id & 0x0f) : -1, \
(cmd) ? ((cmd)->device->lun & 0x07) : -1
http://lxr.linux.no/#linux+v2.6.37/drivers/scsi/aha152x.c#L321
>[оверквотинг удален]
> data=GETPORT(DATAPORT);
>
> DPRINTK(debug_datai, DEBUG_LEAD "data=%02x\n", CMDINFO(CURRENT_SC),
> data);
>
> fifodata--;
>
> DATA_LEN++;
> }
>
PS. Пипец, это во всём ядре такой yблюдочный стиль кода?
Действительно!
Где километровые структуры с нигде не использующимися полями, перегоняемые из функции в функцию?
Они что, WinAPI не видели никогда, ламеры?!
> Где километровые структуры с нигде не использующимися полями, перегоняемые из функции в
> функцию?Как выдно из кода ядра, километровые структуры совершенно необязательны.
> PS. Пипец, это во всём ядре такой yблюдочный стиль кода?Если исключить тебя из большинства использующих этот код,
тогда ты и есть ублюдок, так как большинство всегда право. :)
> Если исключить тебя из большинства использующих этот код,
> тогда ты и есть yблюдок, так как большинство всегда право. :)Большинство пользуется виндовс, так что отдыхай, лaмeрок :))
>> Если исключить тебя из большинства использующих этот код,
>> тогда ты и есть yблюдок, так как большинство всегда право. :)
> Большинство пользуется виндовс, так что отдыхай, лaмeрок :))О великий гуру, тебе дали посмотреть код ядра венды!
Аргументируйте, интересно послушать зачем.
А ты раньше не смотрел что ли?
а они только собрали или и работоспособность проверяли?
на x86 собирается (даже с безопасными флагами) gawk, но работает нестабильно, иногда падает с ошибками выделения памяти,а без работающего awk собрать что-либо еще уже сложно )
ну и в целом учитывая ретивость и энтузиазм Doko (Маттиас Клосе), ничуть не удивительно что он попытался этот эксперимент провести, тем более что фаза разработки 4.6 - исправление ошибок и регрессий перед тем как будет определена готовность к релизу.
Меня интересует вот что - Ubuntu уже на ld gold перешла? Или они "просто тестируют"?
пока нет, вообще проще всего что-то протестировать - пособирать gentoo,
gold иногда выдает странности, хотя в целом как замена ld работать и способен
модули ядра с gold опять же собирать не надо, он это не поддерживает нормально, nvidia.ko например начинает в паре с virtualbox выдавать oopsывпрочем, в 4.6 полностью переработали LTO, и в binutils теперь разделили бинарники ld на ld.bfd и ld.gold, раньше --enable-gold вместо ld устанавливала gold
Мне интересно, когда graphite доведут до нормального состояния? Во-первых, на 64-битных системах он только ухудшает быстродействие. Во-вторых, gcc 4.5.2 всё ещё приводит к ICE при использовании графита в ряде случаев (для ~500 пакетов гентушки 4 ICE из-за графита).