Представлен релиз системной библиотеки GNU C Library (glibc) 2.16, которая полностью следует требованиям стандартов ISO C99, C11 и POSIX.1-2008. Новая версия примечательна реализацией поддержки стандарта C11, поддержкой X32 ABI, проведением чистки кода (оставлена только поддержки EABI для ARM, из бинарных форматов сохранена только поддержка ELF, убран код совместимости со старыми ядрами Linux), перемещением в порты архитектуры IA-64, ревизией математических функций, поддержкой архитектур TILE-Gx и TILEPro.

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

В новой версии Glibc произошли следующие изменения:

  • Для архитектуры x86-64 добавлена поддержка X32 ABI, позволяющего использовать на 64-разрядных системах 32-разрядную модель адресации памяти. ABI X32 позволяет приложениям использовать все преимущества архитектуры x86_64, такие как дополнительные регистры и более быстрые инструкции, PIC ABI. В то же время ABI X32 даёт возможность работать с 32-разрядными указателями памяти, что позволяет экономить память, способствует более эффективному наполнению процессорного кэша и положительно сказывается на общей скорости исполнения кода;
  • Реализована поддержка нового стандарта языка Си - C11 (ISO / IEC 9899:2011):
    • Добавлена поддержка статических утверждений static_assert;
    • В режиме совместимости с C11 удалена функция gets();
    • Добавлены функции at_quick_exit() и quick_exit();
    • Добавлена функция aligned_alloc();
    • Реализована возможность управления выравниванием выделяемой памяти через функцию aligned_alloc();
    • Добавлены функции преобразования Unicode-строк uchar.h;
    • Добавлены комплексные функции CMPLX, CMPLXF, CMPLXL;
  • Поддержка архитектуры IA-64 перемещена из основной ветки в порты;
  • Убрана поддержка всех бинарных форматов, кроме ELF;
  • Добавлена проверка версий для вызовов poll() и ppoll();
  • Увеличена скорость выполнения некоторых математических функций в режиме x86-64;
  • Добавлен флаг компиляции "--enable-obsolete-rpc", который включает поддержку устаревших RPC-функций, которые присутствовали в glibc 2.14 и ранее;
  • Убран код совместимости с ядрами Linux до версии 2.4. Разработчики предупреждают, что glibc 2.16 гарантирует совместимость только с ядрами 2.6.x и более поздними;
  • Добавлен новый заголовок sys/auxv.h и функция getauxval() для лёгкого доступа к информации пар параметр/значение AT_* ядра Linux;
  • Оптимизирована функция expf() для платформ x86 и x86-64. Работа выполнена Любовью Дмитриевой, российским разработчиком из Intel;
  • Улучшена поддержка кросс-компиляции;
  • Добавлена поддержка процессорных архитектур TILE-Gx и TILEPro;
  • Убрана поддержка старых версий ARM ABI, теперь поддерживается только EABI;
  • Обеспечена совместимость конфигурационных заголовочных файлов между архитектурами x86 и x86-64;
  • Добавлена сборочная опция "--enable-systemtap" для включения статических проверок setjmp в libc и longjmp в libpthread, необходимых для трассировки приложений при помощи SystemTap;
  • Добавлены новые оптимизированные варианты функций для архитектур SPARC и PowerPC;
  • Проведён аудит работы математических функций, устранены многие проблемы, приводившие к появлению неточных результатов;
  • В поставку больше не входят файлы с данными по часовым поясам, базу часовых поясов теперь нужно устанавливать отдельно;
  • Исправлено 253 ошибки.


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