После шести месяцев разработки опубликован (https://sourceware.org/ml/libc-alpha/2019-08/msg00029.html) релиз системной библиотеки GNU C Library (http://ftp.gnu.org/gnu/glibc/) (glibc) 2.30 (http://sourceware.org/glibc/wiki/Release/2.30), которая полностью следует требованиям стандартов ISO C11 и POSIX.1-2008. В состав нового выпуска включены исправления от 48 разработчиков.Из реализованных в Glibc 2.30 улучшений (http://sourceware.org/git/?p=glibc.git;a=blob_plain;f=NEWS;h...) можно отметить:
- В динамическом компоновщике обеспечена поддержка опции "--preload" для предзагрузки разделяемых объектов (аналог переменной окружения LD_PRELOAD);
- Добавлена функция twalk_r, похожая на уже существующую функцию twalk, но позволяющая передать дополнительный аргумент в заданную callback-функцию;- Для Linux добавлены новые функции getdents64, gettid и tgkill;
- Обеспечено завершение с кодом ошибки функций управления памятью malloc, calloc, realloc, reallocarray, valloc, pvalloc, memalign и posix_memalign, в ситуации, когда общий размер объекта превышает значение PTRDIFF_MAX. Указанное изменение позволяет избежать неопределённого поведения, когда результат манипуляции с указателями приводит к переполнению типа ptrdiff_t;
- Добавлены предложенные в POSIX функции pthread_cond_clockwait, pthread_mutex_clocklock,
pthread_rwlock_clockrdlock, pthread_rwlock_clockwrlock и sem_clockwait, похожие на эквиваленты "timed", но дополнительно принимающие параметр clockid_t для выбора таймера;- Данные кодировок, информация о типах символов и таблицы транслитерации обновлены для поддержки спецификации Unicode 12.1.0;
- В библиотеке librt для новых приложений больше не предоставляются функции clock_gettime, clock_getres, clock_settime, clock_getcpuclockid и clock_nanosleep, вместо которых автоматически используются определения в libc;
- В /etc/resolv.conf прекращена поддержка опции "inet6". Из resolv.h удалены устаревшие флаги RES_USE_INET6, RES_INSECURE1 и RES_INSECURE2;
- При указании опции "--enable-bind-now" устанавливаемые программы теперь связываются с использованием флага BIND_NOW;
- Объявлены устаревшими специфичные для Linux заголовочный файл sys/sysctl.h и функция sysctl, вместо которых приложениям следует использовать псевдо-ФС /proc;
- Для сборки Glibc теперь требуется GCC 6.2 или более новая версия (для сборки приложений могут использоваться любые компиляторы);
- Устранена уязвимость CVE-2019-7309 (https://security-tracker.debian.org/tracker/CVE-2019-7309) в реализации функции memcmp для устаревшей (https://www.opennet.me/opennews/art.shtml?num=49772) субархитектуры x32 (не путать с x86 IA-32), в результате которой функция некорректно могла возвращать значение 0 для несовпадающих строк;
- Устранена уязвимость CVE-2019-9169 (https://security-tracker.debian.org/tracker/CVE-2019-9169), которая может привести к чтению данных из области вне границ буфера при обработке определённых регулярных выражений.
URL: https://sourceware.org/ml/libc-alpha/2019-08/msg00029.html
Новость: https://www.opennet.me/opennews/art.shtml?num=51205
не по теме, но на общую производительность больший эффект производит перекомпиляция именно glibc, а не ядра. Лучше,конечно, пересобрать и то и то.
И как часто надо пересобирать "и то и то", чтобы поднялась производительность?
Шуточный ответ: каждое полнолуние
Разумный ответ: с каждой сменой процессора, а вообще надо подумать есть ли вообще разница (там если что и оптимизируеться так это SSE, MMX, и т.д. какой смысл пересобирать вообще не ясно.
я использую -mtune-native вместо generic, а там gcc сам разберется что куда.
Например, в моем случае, hdparm показывает частоты шины и линейную скорость с рэйда примерно на 10% больше.
Всего 10?!
А я использую -march-native, и у меня + 146%
ты забыл -O6 !
Зачем ты это написал?
Здесь любят дураков и хейтят всех остальных. Священные коровы: systemd, python, js-фреймворки
При смене железа.
При мажорном релизе.
И перед сменой железа не забыть поставить версии пакетов из реп дистра, иначе есть шанс нарваться на "invalid instruction"
А что за дистрибутив? LFS?
Arch c linux-zen
and gentoo too =)
пять минут назад прочитал про LFS и надо бегом бежать шутить везде?
> И как часто надо пересобирать "и то и то", чтобы поднялась производительность?Пересобирать, пока не поднимется же.
А чем заняться если от пересборки уже не поднимается?
удлинять, яснопонятно
> А чем заняться если от пересборки уже не поднимается?Если уже не поднимается, тогда единственное развлечение - пересборка.
Нуу мне вот было полезно новым lcc пересобрать да с -O3. Причём да, от такой glibc даже 401 эльбрус в целом отчётливо взбодрился.
как это glibc связан с линковщиком, переменной PATH (LD_PRELOAD...), /etc/hosts и libc?
Наверное тем, что glibc и есть реализация libc
/lib/ld-linux.so часть glibc.
погугли, если интересно что это такое.
man ld-linux.so
Musl rulezzzz
В embedded. А на десктопе все эти урезанные libc... Вероятно, найдутся приложения, которые с ними не соберутся.
хуже - они соберутся, и в общем и целом будут работать - только иногда глючить и падать.И не потому что урезанные, а потому что количество багов в том и другом перестало быть четно.
Когда я пользуюсь версией 2.12 из CentOS 6, или 2.17 из Ubuntu 14.04, я что-нибудь теряю?
нет
во втором случае - либо ты теряешь деньги, либо приобретаешь неустраняемые уязвимости - причем что-нибудь может оказаться и remote, как в приснопамятном случае с dns. И ты об этом можешь не узнать, поскольку далеко не всегда такие уязвимости раскрывают.
Поскольку твоей 14й уже EOL, а за extended support надо башлять.
> Для Linux добавлены новые функцииМожно подумать, оно кроме Линукса еще где-то заводится (ранее - не без большой кучи патчей, костылей и правок, как сейчас - не знаю, но есть некоторые подозрения) или тем более, используется серьезно.
Хотя вру:
https://sourceware.org/glibc/wiki/HomePage
> 5.12. Project Ports
> Currently GLIBC only works with Linux and the Hurd,
>> Для Linux добавлены новые функции
> Можно подумать, оно кроме Линукса еще где-то заводится (ранее - не без
> большой кучи патчей, костылей и правок, как сейчас - не знаю,
> но есть некоторые подозрения)Говорят, недавно hurd [опять, да] догнал и запустился без патчей... Бывает иногда.