Релиз системной библиотеки Glibc 2.17
26 декабря 2012 года
Увидел свет релиз системной библиотеки GNU C Library (glibc) 2.17, которая полностью следует требованиям стандартов ISO C99, C11 и POSIX.1-2008. В подготовке нового выпуска использованы патчи от 96 разработчиков. Новая версия отличается поддержкой архитектуры AArch64 (ARM64), включением в состав пакета портов для дополнительных архитектур, функцией secure_getenv, прекращением поддержки ядер Linux старее 2.6.16, поддержкой режима FIPS в функции crypt, интеграцией функций "clock_*".
Glibc является основой большинства Linux-дистрибутивов, за исключением OpenWrt, Debian и Ubuntu, которые перешли на использование системной библиотеки Eglibc (Архивная копия от 6 января 2009 на Wayback Machine). Библиотека Eglibc построена на актуальной кодовой базе Glibc и полностью совместима с ней на уровне API и ABI, отличаясь (Архивная копия от 17 марта 2012 на Wayback Machine) интеграцией некоторых дополнительных наработок для встраиваемых систем, более низкими системными требованиями, возможностью гибкой настройки компонентов, улучшенной поддержкой кросс-компиляции и кросс-тестирования.
Из добавленных в Glibc 2.17 улучшений можно отметить:
- Добавлена реализованная консорциумом Linaro поддержка 64-разрядной архитектуры AArch64(ARM64), поддерживаемая в процессорах с набором команд ARMv8. Архитектура AArch64 включает в себя новый набор команд A64, примечательный расширением числа регистров, новыми командами для вычислений с плавающей запятой (FP) и новыми векторными SIMD-инструкциями NEON, такими как инструкции для ускорения работы алгоритмов шифрования AES и SHA-1/SHA-256. В настоящее время устройства на базе ARMv8 пока находятся на стадии тестирования прототипов, поступление в продажу первых ARMv8-систем ожидается в 2013 году;
- Коллекция портов Glibc для дополнительных платформ теперь поставляется в составе основного пакета, в поддиректории "ports";
- Добавлена новая функция secure_getenv, предоставляющая средства для безопасного доступа к переменным окружения (при запуске из процессов с установленным флагом SUID/SGID функция возвращает NULL). Функция secure_getenv создана в результате переименования ранее доступной внутренней функции __secure_getenv;
- Минимально поддерживаемая версия ядра Linux установлена в 2.6.16;
- В функцию crypt добавлена проверка активности режима соответствия требованиям FIPS, проверяемом в Linux через /proc/sys/crypto/fips_enabled. Если режим активен, то crypt будет возвращать ошибку при задании несоответствующих спецификации значений salt, а также при попытке использования алгоритмов MD5 и DES;
- В базовый состав системной библиотеки интегрирован набор функций "clock_*", определённый в заголовочном файле time.h. Ранее, для включения данных функций требовалось использовать отдельную библиотеку (-lrt). Результатом интеграции стало то, что однопоточные программы использующие такие функции, как clock_gettime, и собираемые без опции "-lrt", теперь используют функций "clock_*" из Glibc, а не загружают их из библиотеки pthreads, что позволяет избежать ситуации подключения к однопоточным программам более ресурсоёмкого многопоточного кода в runtime-компонентах;
- Если недоступна ФС /proc при использовании функций ttyname и ttyname_r в Linux теперь поддерживается запасной вариант поиска tty-дескрипторов в /dev/pts и /dev, что позволяет создавать chroot-окружения без монтирования procfs;
- Общая оптимизация строковых функций strstr, strcasestr и memmem;
- Оптимизация строковых функций memchr, wcschr, wcscpy и wcsrchr для процессоров POWER7;
- Оптимизация функции memcpy для архитектуры MIPS;
- Добавлены варианты функций memcpy, memset и memcmp, оптимизированные для платформ System z10 и zEnterprise z196;
- Улучшена поддержка кросс-компиляции, включая средства для кросс-тестирования и сборок bootstrap, выполняемые без необходимости предварительной сборки glibc;
- Новые опции для сборочного скрипта configure: "--disable-nscd" для сборки варианта Glibc, не обращающегося к демону nscd (Name Service Caching Daemon) для разрешения имён; "--disable-build-nscd" для запрета сборки демона nscd;
- Новые опции для сборочного скрипта configure: "--with-bugurl" и "--with-pkgversion" для отражения в выводе "--help" и "--version" кастомизированной информации о методах информирования об ошибках и версии пакета;
- В систему динамического связывания добавлена поддержка статических проверок, необходимых для трассировки приложений при помощи SystemTap;
- Для архитектур s390 и s390x добавлена поддержка задаваемого на этапе динамического связывания ELF-признака STT_GNU_IFUNC (Архивная копия от 8 марта 2014 на Wayback Machine);
- Устранена уязвимость CVE-2011-4609 в реализации функции svc_run(), которая могла использоваться для осуществления DoS-атаки через создание высокой паразитной нагрузки на CPU;
- Исправлено 144 ошибки.
Источники править
Любой участник может оформить статью: добавить иллюстрации, викифицировать, заполнить шаблоны и добавить категории.
Любой редактор может снять этот шаблон после оформления и проверки.
Комментарии
Если вы хотите сообщить о проблеме в статье (например, фактическая ошибка и т. д.), пожалуйста, используйте обычную страницу обсуждения.
Комментарии на этой странице могут не соответствовать политике нейтральной точки зрения, однако, пожалуйста, придерживайтесь темы и попытайтесь избежать брани, оскорбительных или подстрекательных комментариев. Попробуйте написать такие комментарии, которые заставят задуматься, будут проницательными или спорными. Цивилизованная дискуссия и вежливый спор делают страницу комментариев дружелюбным местом. Пожалуйста, подумайте об этом.
Несколько советов по оформлению реплик:
- Новые темы начинайте, пожалуйста, снизу.
- Используйте символ звёздочки «*» в начале строки для начала новой темы. Далее пишите свой текст.
- Для ответа в начале строки укажите на одну звёздочку больше, чем в предыдущей реплике.
- Пожалуйста, подписывайте все свои сообщения, используя четыре тильды (~~~~). При предварительном просмотре и сохранении они будут автоматически заменены на ваше имя и дату.
Обращаем ваше внимание, что комментарии не предназначены для размещения ссылок на внешние ресурсы не по теме статьи, которые могут быть удалены или скрыты любым участником. Тем не менее, на странице комментариев вы можете сообщить о статьях в СМИ, которые ссылаются на эту заметку, а также о её обсуждении на сторонних ресурсах.