Выход системной библиотеки Glibc 2.18
13 августа 2013 года
Увидел свет релиз системной библиотеки 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 - переполнение буфера в коде сопоставления масок в движке обработки регулярных выражений. При обработке специально оформленных строк из многобайтовых символов возможно инициирование краха процесса.
Источники[править]
Любой участник может оформить статью: добавить иллюстрации, викифицировать, заполнить шаблоны и добавить категории.
Любой редактор может снять этот шаблон после оформления и проверки.
Комментарии[править]
Если вы хотите сообщить о проблеме в статье (например, фактическая ошибка и т. д.), пожалуйста, используйте обычную страницу обсуждения.
Комментарии на этой странице могут не соответствовать политике нейтральной точки зрения, однако, пожалуйста, придерживайтесь темы и попытайтесь избежать брани, оскорбительных или подстрекательных комментариев. Попробуйте написать такие комментарии, которые заставят задуматься, будут проницательными или спорными. Цивилизованная дискуссия и вежливый спор делают страницу комментариев дружелюбным местом. Пожалуйста, подумайте об этом.
Несколько советов по оформлению реплик:
- Новые темы начинайте, пожалуйста, снизу.
- Используйте символ звёздочки «*» в начале строки для начала новой темы. Далее пишите свой текст.
- Для ответа в начале строки укажите на одну звёздочку больше, чем в предыдущей реплике.
- Пожалуйста, подписывайте все свои сообщения, используя четыре тильды (~~~~). При предварительном просмотре и сохранении они будут автоматически заменены на ваше имя и дату.
Обращаем ваше внимание, что комментарии не предназначены для размещения ссылок на внешние ресурсы не по теме статьи, которые могут быть удалены или скрыты любым участником. Тем не менее, на странице комментариев вы можете сообщить о статьях в СМИ, которые ссылаются на эту заметку, а также о её обсуждении на сторонних ресурсах.