Увидел свет релиз системной библиотеки GNU C Library (glibc) 2.15, которая полностью следует требованиям стандартов ISO C99 и POSIX.1-2008. В подготовке нового выпуска использованы патчи от 32 разработчиков. Новая версия отличается добавлением утилиты pldd, реализацией большой порции оптимизаций для систем x86 и x86-64, а также добавлением поддержки программных интерфейсов, появившихся в последних выпусках ядра Linux.

Glibc является основой большинства Linux-дистрибутивов, за исключением OpenWrt, Debian и Ubuntu, которые перешли на использование системной библиотеки Eglibc. Библиотека Eglibc построена на актуальной кодовой базе Glibc и полностью совместима с ней на уровне API и ABI, отличаясь интеграцией некоторых дополнительных наработок для встраиваемых систем, более низкими системными требованиями (поддерживается сборка с отключенными компонентами для обеспечения совместимости), возможностью гибкой настройки компонентов, улучшенной поддержкой кросс-компиляции и кросс-тестирования.

Из добавленных в Glibc 2.15 улучшений можно отметить:

  • В состав включена утилита pldd для вывода списка загруженных объектов для заданного процесса;
  • Поддержка новых программных интерфейсов:
    • scandirat и scandirat64 - для сканирования директории, связанной с указанным файловым дескриптором;
    • process_vm_readv, process_vm_writev (поддерживаются только ядром Linux начиная с версии 3.2) - для организации прямого обращения к областям памяти других процессов. Главной идеей технологии доступа к внешним областям памяти является решение задачи по предоставлению MPI-приложениям эффективных средств для взаимодействия между процессами внутри одного узла кластера, например, вместо дополнительного копирования сообщения через разделяемую память можно обеспечить прямой доступ к одной копии сообщения;
  • Оптимизации:
    • Для математических функций реализованы многочисленные оптимизиации производительности, специфичные для 64-разрядных систем;
    • С задействованием инструкций SSE2 и SSSE3 оптимизированы функции strcpy, strncpy, stpcpy и stpncpy для архитектур x86-32 и x86-64.
    • Оптимизированы варианты функций strcat и strncat для архитектуры x86-64, а также функций wcscmp, wcslen и strnlen для x86-32 и x86-64;
    • C использованием SSE-инструкций оптимизирваны функции strchr и strrchr для архитектуры x86-32 ;
    • Оптимизированы функции memchr, memrchr, rawmemchr, memcmp, wmemcmp, wcschr, wcscpy для архитектур x86-64 и x86-32;
    • Оптимизированы функции strcasecmp и strncasecmp с использованием инструкций AVX для систем x86-64;
    • Оптимизированы strcasecmp и strncasecmp с использованием инструкций SSSE3 и SSE4.2 для архитектуры x86-32;
    • Для платформы PPC оптимизированы функции nearbyint и strcasecmp;
  • Возобновлена поддержка nss_db, которая теперь избавлена от зависимости от BerkeleyDB и поддерживает выборки через initgroups;
  • В nscd реализовано кэширование базы netgroup;
  • Обеспечение сборки libm с поддержкой опции gcc "-ffinite-math-onlylibm";
  • Добавлена проверка версий FD_SET, FD_CLR и FD_ISSET;
  • Новые локали: bho_IN, unm_US, es_CU, ta_LK;
  • Исправлено 67 ошибок.

В следующей версии Glibc 2.16 ожидается поддержка режима совместимости со стандартом ISO C11 (добавление timespec_get, aligned_alloc, static_assert, at_quick_exit и quick_exit, скрытие gets, поддержка uchar.h); удаление из состава поддержки архитектуры IA-64 и форматов исполняемых файлов, отличных от ELF; продолжение оптимизации производительности для 64-разрядных архитектур.

Источник: http://www.opennet.ru/opennews/art.shtml?num=33418