Основная цель релиза стабилизация интерфейса и библиотеки С++ компилятора. Других изменений по сравнению с 3.1.1 нет. Да и учтите, что С++ код компилированный версией 3.2 не совместим с предыдущими версиями компилятора.
Несовместим наверное со старой библиотекой C++, а не с самим компилятором.
Это разные вещи, поскольку далеко не все программы на C++ эту библиотеку используют.
Ну, если я не ошибаюсь - практически все. Вроде, ::new берется из нее.
Кстати, а если он поменяли манглинг опять? Тогда будет абсолютная несовместимость объектных файлов от разных компиляторов. А вот чтобы РХ взял именно 3.2 - очень хочется!
> Новая версия - пиздец бинарной совместимости. Я в Win XP все еще
> пользую пару прог из Win 3.11. :0)
Уважаемый аноним, Вы в порыве страсти, по-моему, кое-что не заметили.
Утверждается, что код, сгенерированный более поздней версией (3.2) не
будет работать с более ранними (<3.2). Попробуйте запустить пару прог
из Win XP под Win 3.11.
>Типично по линуксоидски. Новая версия - пиздец бинарной совместимости. Я
>в Win XP все еще пользую пару прог из Win 3.11. :0)
Кто тебе это сказал?
Для виндузячих мозгов поясняю, в линуксе нет проблем с бинарной совместимостью, так как всегда есть компатибл либы, говоря маздайным
языком - нужные dll'ки... Я в RH-7.3 легко запускаю pkzip, собранный
еще во времена libc-5.
Для нервных анонимов поясняю, что значит "бинарная несовместимость".
Это значит то, что код, покомпиляный версией 3.2 не слинкуется
с кодом, покомпиляным версией меньше 3.2. Это значит, что нельзя
мешать объектные файлы, покомпиляные разными версиями, только и всего.
То, что скомпилилось и слинковалось - будет работать без проблем.
2anonymous (*) (2002-08-16 14:36:45.54): Там было сказано - практически. 2 проекта - не показатель (если 2 из 100 не используют, а остальые 98 - используют, то утверждение "практически все" очень даже верно), вот 50 - да, опровержение. Причем размер роли не играет. Так что ошиблись лишь вы - читайте те постинги на которые отвечаете...
Будем считать, что он меня почти уел. Точнее, мне действительно стало интересно, какие же функции экспортирует libstdc++. И где лежит :new? Эй, любители С++, расскажите серому, не дайте дураком помереть. Самому лезть в объектник лень:)))
Чтобы узнать, какие функции экспортирует libstdc++ - берещь mc, ищешь
libstdc++.a (static версия) или libstdc++.so, выделяешь, нажимаешь F3 и
наслаждаешься. Далее, оператор new, насколько я сейчас выяснил,
находится в библиотеке libgcc. По крайней мере без нее new не работает.
Методика - пишется программа с new и только:
main()
{
int *x = new int[10]; // Цикл для проверки (д.быть segfault)
for(unsigned int i = 0; i < 1000000; i++) x[i] = 0;
}
И по шагам выполняется то, что делает gcc (это смотрится с помощью
$gcc 1.cpp -v). На этапе collect отрубаются библиотеки. На какой ld
споткнется - та наша. (да, ругается он так:
/home/const/cpp/1.o: In function `main':
/home/const/cpp/1.o(.text+0xc): undefined reference to `__builtin_vec_new'
collect2: ld returned 1 exit status
Видимо для того, чтобы не делать две библиотеки libgcc и libgcc-c++. В конце-концов в последней функций почти бы не было, а загрузку C++ программ это как-то замедляло бы. Хотя...
2anonymous (*) (2002-08-18 05:41:06.381): А вот это бред или IMHO (насчет 3-х)- for instance in addition к вышеназваным KDE, blackbox/fluxbox, perl и учет того, что KDE - это не одна программа и не часть ядра, как считают некоторые :-)!
> KDE, blackbox/fluxbox, perl и учет того, что KDE - это не одна программа
Не знаю, что там у тебя за perl, но версия 5.6.0 точно еще была написана на ANSI C.
Из всего оставшегося ни одной заслуживающей внимания программы. А я имел в виду именно такие.
Лично меня KDE волнует точно так же, как и ГНОМ, то есть вообще никак.
Я наверное даже погорячился, когда сказал, что их три ;) Третью так и не подобрал...