Выход системной библиотеки Glibc 2.18

Увидел свет релиз системной библиотеки GNU C Library (glibc) 2.18, которая полностью следует требованиям стандартов ISO C99, C11 и POSIX.1–2008. В подготовке нового выпуска использованы патчи от 66 разработчиков. Новая версия отличается добавлением фреймворка для оценки производительности функций, оптимизациями для архитектуры ARM, поддержкой платформ POWER8 и Xilinx MicroBlaze, улучшением поддержки C++11 и поддержкой блокировок с задействованием расширения Intel TSX. Glibc является основой большинства Linux-дистрибутивов, за исключением OpenWrt, Debian и Ubuntu, которые перешли на использование системной библиотеки Eglibc. Библиотека Eglibc построена на актуальной кодовой базе Glibc и полностью совместима с ней на уровне API и ABI, отличаясь интеграцией некоторых дополнительных наработок для встраиваемых систем, более низкими системными требованиями, возможностью гибкой настройки компонентов, улучшенной поддержкой кросс-компиляции и кросс-тестирования.

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

Добавлен фреймворк для отслеживания производительности функций, доступных в glibc; Задействование в реализация мьютексов pthread для архитектур i386 и x86–64 аппаратных механизмов проведения транзакций в памяти, представленных в процессорах серии Haswell в форме инструкций HLE (Hardware Lock Elision), входящих в состав набора расширений Intel TSX (Transactional Synchronization Extensions). Внесённое улучшение позволяет увеличить масштабируемость блокировок для существующих программ, при их запуске на системах, поддерживающих расширения TSX. Для включения поддержки TSX библиотека glibc должна быть собрана с указанием configure-опции »--enable-lock-elision=yes»; Поддержка платформы POWER8; Портирование для программных процессоров Xilinx MicroBlaze; Поддержка нового набора полей AT_HWCAP2 (HardWare CAPabilities), используемых в бинарном формате ELF для определения области использования машинных команд, привязанных к специфичной архитектуре; Расширение поддержки C++11: вызов деструкторов объекта thread_local при завершении работы нити и программы; Увеличена точность в функциях вывода времени, за счёт использования нового системного вызова ядра Linux — clock_gettime; Добавлены новые функции pthread_getattr_default_np и pthread_setattr_default_np для вывода и установки pthread-атрибутов по умолчанию; Оптимизации: Улучшена производительность математических функций из состава libm, принимающих и выводящих результат с типом double; Оптимизация работы строковых функций для архитектур ARM и AArch64; Расширение областей glibc, собираемых для платформы ARM с использованием кода Thumb-2; Оптимизация работы математических функций libm для архитектуры SPARC; Поддержка сборки glibc для MIPS с использованием кода MIPS16; Исправлено 147 ошибок, в том числе устранено три уязвимости: CVE-2013–1914 — переполнение стека через передачу некорректных аргументов функции getaddrinfo (). При успешной эксплуатации возможно инициирование краха приложения; CVE-2013–2207 — возможность назначения владельца и привилегий для чужого псевдотерминала через использование функции pt_chown; CVE-2013–0242 — переполнение буфера в коде сопоставления масок в движке обработки регулярных выражений. При обработке специально оформленных строк из многобайтовых символов возможно инициирование краха процесса.

© OpenNet