Вышел (http://sources.redhat.com/glibc/) релиз системной библиотеки GNU C Library (http://ftp.gnu.org/gnu/glibc/) (glibc) 2.11. Из новшеств (http://sourceware.org/ml/libc-alpha/2009-10/msg00063.html) можно отметить:
- Новые функции, определенные в последнем варианте стандарта POSIX: execvpe, pthread_sigqueue, mkstemps, mkstemps64, mkostemps и mkostemps64;- Добавлены специально оптимизированные для архитектуры x86-64 варианты функций: strstr, strcasestr, memcmp, strcspn, strpbrk, strspn, strcpy, stpcpy, strncpy, strcmp (задействованы инструкции SSE2, SSE4.2), strncmp (SSE2, SSE4.2), strchr (SSE4.2), strrchr (SSE4.2), strlen, rawmemchr, strcmp (SSSE3), strncmp (SSSE3);
- Добавлены специально оптимизированные для архитектуры x86 варианты функций: strlen, strcspn, strspn, strpbrk, strstr, strcasestr;
- Выполнение вызова longjmp теперь возвращается с ошибкой, если при его работе будет обнаружено создание инициализированных областей стека;
- STT_GNU_IFUNC теперь по...
URL: http://sourceware.org/ml/libc-alpha/2009-10/msg00063.html
Новость: http://www.opennet.me/opennews/art.shtml?num=24106
У меня есть несколько вопросов к знатокам:
Безопасно ли обновлять эту библиотеку самому? Кто-то мне говорит, что это самое безболезненное из того, что можно обновить в системе. Кто-то - что могут засбоить все программы. Кто-то - что засбоят они только при даунгрейде... Кому верить?
Второй вопрос. бенчмарки говорят мне, что процессор поддерживает MMX+, 3DNOW+, SSE, SSE2, SSE3 и SSE4A. Что такое SSE4A? Ничего что может разъяснить, вроде сисофта сандры, я не нашёл, поиском нашёл только прайс-листы.
SSE4A это альтернативная технология интеловскому SSE4, разаработанная АМД и впервые внедренная в 4-х ядерных Phenom'ах. Межу собой эти реализации несовместимы, в отличие от SSE..SSE3.Насчет обновляться или нет, все зависит от дистрибутива, потому как процесс обновления и восстановления (в случае неполадок) у дистрибутивов с пакетной системой установки будет намного легче от установки из исходников. Я советую подождать пару тройку дней, чтобы, мейнтайнеры смогли внсти изменения в свои пакеты, если обнаружаться косяки.
Что-что, а именно эту библиотеку лучше самому не трогать, т.к. от нее зависят все исполняемые файлы с динамической линковкой. И сделав что-то неверно можно довести систему до состояния полной незагружаемости далее ядра/initrd.
Сначала хотя бы здесь почитайте:
http://www.gnu.org/software/libc/resources.html#buildingЯ бы советовал не трогать.
Моя инсталляция gentoo пережила не одно обновление Glibc.Конечно же, перед массовым обновлением критичных вещей собирается слепок системы в бинарные пакеты, которые можно развернуть загрузившись в /bin/sh на initrd.
У меня как-то возникла нужда в новой glibc (на тот момент 2.7, в системе была 2.4), когда поставил - проги перестали запускаться, перекомпилять мир ни времени, ни желания не было, вернул всё взад.
Интересен вопрос с обновлением. Допустим я запустил гномовский калькулятор, а потом поставил новую версию gtk, причём старая затёрлась. Каким образом в системе решается такая проблема. Что будет если я запущу после этого ещё один калькулятор?
Вы уверены, что "в системе" будет при этом какая-то "проблема"? :-O
>Вы уверены, что "в системе" будет при этом какая-то "проблема"? :-Oцелых ДВА калькулятора? -- нет иксы такое не тянут
Все очень просто. В *nix фактическое удаление с диска происходит в тот момент, когда закрывается последний открытый дескриптор файла, помеченного на удаление (unlink убирает файл из каталога, но не стирает фактически, если он хоть кем-нибудь открыт). Поэтому первый экземпляр калькулятора будет работать как ни в чем не бывало. Когда ты запускаешь второй, то он уже цепляет новую версию библиотеки, так как файлы первой открыть уже нельзя (их просто нет ни в одном каталоге, хотя место на диске под них еще зарезервировано). В итоге, будут работать две версии библиотек одновременно.
Ну это где как. В линуксе можно, а вот попробуйте в солярке libc переписать :p (не надо говорить про глупость ситуации - это реальность, в libc солярки бывают баги и апдейты иногда могут поставить новую версию). Внутренний api для этого есть, а вот попробуйте из командной строки заменить одну версию на другую..