Релиз системной библиотеки Glibc 2.16 с поддержкой ISO C11 и X32

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

В новой версии 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 ошибки.

© OpenNet