Glibc

библиотека Си, реализованая GNU Из Википедии, свободной энциклопедии

Glibc

glibc (GNU C Library — GNU-библиотека) — библиотека Си, которая обеспечивает системные вызовы и основные функции, такие как open, malloc, printf и т. д. Библиотека C используется для всех динамически скомпонованных программ. Она написана Free Software Foundation для операционных систем GNU. glibc выпущена под лицензией GNU LGPL.

Краткие факты Тип, Разработчик ...
Glibc
Логотип программы Glibc
Тип C POSIX library, Библиотека времени исполнения и пакет GNU[вд]
Разработчик Проект GNU
Написана на Си
Операционные системы GNU/Linux[1], GNU/Hurd[вд][1] и BSD[вд][1]
Первый выпуск 1987
Последняя версия
Репозиторий sourceware.org/git/glibc…
Лицензия LGPLv2.1+[вд][6]
Сайт gnu.org/software/… (англ.)
 Медиафайлы на Викискладе
Закрыть

История

Суммиров вкратце
Перспектива

Первоначально glibc была написана Роландом Макгратом, работавшим в FSF в 1980-x годах. В феврале 1988 года FSF представил glibc как библиотеку, имеющую почти полную функциональность, требуемую стандартом ANSI C[7].

Временный форк glibc

В начале 1990-х годов разработчики ядра Linux создали форк glibc. Этот форк, названный «Linux libc», разрабатывался отдельно в течение нескольких лет, были выпущены версии с 2 до 5.

Когда FSF выпустила в 1996 году glibc 2.0, которая поддерживала IPv6, 64-битный доступ к данным, многопотоковые приложения, совместимость с будущими версиями и более переносимый исходный код[8], разработчики Linux прервали разработку Linux libc и начали использовать glibc от FSF.[9]

Файл .so последней версии Linux libc имел имя (soname) libc.so.5. Следующая после неё glibc 2.x использовала имя libc.so.6[10] (на архитектурах Alpha и IA64 вместо этого используется имя libc.so.6.1). Это имя зачастую сокращается до libc6 (например, в имени пакета Debian), следуя обычным соглашениям для библиотек.

По словам Ричарда Столлмана изменения из Linux libc нельзя перенести обратно в glibc, потому что авторство этого кода неясно, а проект GNU очень строго относится к сохранению записей об авторских правах.[11]

История версий

Подробнее Версия, Дата ...
ВерсияДатаПримечанияПринятие
2.41январь 2025Добавлены функции sinpi, cospi, tanpi.
2.40июль 2024Частичная поддержка стандарта ISO C23, новая настройка для тестирования программ setuid, улучшенная поддержка 64-битных векторов ARM.
2.39январь 2024Из ISO C2X добавлен заголовочный файл stdbit.h.
2.38август 2023Добавлены функции strlcpy и strlcat. Поддержка libmvec для ARM64.
2.37 февраль 2023
2.36 август 2022
2.35февраль 2022Unicode 14.0, локаль C.UTF-8, перезапускаемые последовательности. Удалена поддержка Intel MPX.Ubuntu 22.04
2.34август 2021libpthread, libdl, libutil, libanl интегрированы в libc.
2.33февраль 2021HWCAPS.Ubuntu 20.04
2.32август 2020Unicode 13.0, атрибут 'access' для улучшенных предупреждений в GCC 10, то есть to «help detect buffer overflows and other out-of-bounds accesses»[12]
2.31февраль 2020Начальная поддержка стандарта C23.
2.30август 2019Unicode 12.1.0, динамический компоновщик принимает аргумент --preload для предварительной загрузки общих объектов, в Linux добавлена функция gettid, поддержка календаря Minguo (Китайская Республика), в локаль ja_JP добавлена новая японская эра, функции выделения памяти не работают если общий размер объекта превышает PTRDIFF_MAX; исправлены CVE-2019-7309 and CVE-2019-9169[13]
2.29февраль 2019
  • getcpu wrapper
  • build and install all locales as directories with files
  • optimized trigonomical functions
  • Transactional Lock Elision for powercp64le ABI
  • posix_spawn_file_actions_addchdir_np and posix_spawn_file_actions_addfchdir_np
  • popen and system do not run atfork handlers anymore
  • support for the C-SKY ABIV2 running on Linux
  • strftime’s default formatting of a locale’s alternative year; the '_' and '-' flags can now be applied to its «%EY»[14]
2.28август 2018statx, renameat2, Unicode 11.0.0
2.27февраль 2018Оптимизации производительности. Поддержка RISC-V.Ubuntu 18.04
2.26август 2017Улучшена производительность (per-thread cache for malloc), поддержка Unicode 10Ubuntu 17.10
2.25февраль 2017Добавлены функции getentropy и getrandom и заголовочный файл <sys/random.h>.Fedora 26
2.24август 2016Удалены некоторые устаревшие возможности
2.23февраль 2016Unicode 8.0Fedora 24, Ubuntu 16.04
2.22август 2015Добавлена библиотека векторных математических функций libmvec.
2.21февраль 2015Поддержка архитектуры Altera Nios IIUbuntu 15.04, Debian experimental, Fedora 22
2.20сентябрь 2014Fedora 21
2.19февраль 2014Ubuntu 14.04, eglibc 2.19 в Debian 8 (Jessie), openSUSE 13, SLES 12
2.18август 2013Улучшена поддержка стандарта ISO C11. Поддержка микроархитектуры Xilinx MicroBlaze и IBM POWER8Fedora 20
2.17декабрь 2012Поддержка 64-битной архитектуры ARMUbuntu 13.04, RHEL 7
2.16июнь 2012Поддержка x32 ABI, стандарт ISO C11, SystemTap
2.15март 2012Ubuntu 12.04 и 12.10
2.14июнь 2011
2.13январь 2011eglibc 2.13 в Debian 7 (Wheezy)
2.12май 2010RHEL 6
2.11октябрь 2009SLES 11, Ubuntu 10.04, eglibc в Debian 6 (Squeeze)
2.10май 2009Минимум для LSB 5.0. Начальная поддержка psiginfo.
2.9ноябрь 2008Ubuntu 9.04
2.8апрель 2008Ubuntu 8.10
2.7октябрь 2007Debian 5 (Lenny), Ubuntu 8.04
2.6май 2007
2.5сентябрь 2006Полная поддержка inotifyRHEL 5
2.4март 2006Стандарт в LSB 4.0, начальная поддержка inotifySLES 10
2.3.6ноябрь 2005Debian 4.0 (Etch)
2.3.5апрель 2005SLES 9
2.3.4декабрь 2004Стандарт в LSB 3.0RHEL 4 (Update 5)
2.3.2февраль 2003Debian 3.1 (Sarge)
2.3октябрь 2002
2.2.4июль 2001
2.2ноябрь 2000
2.1.1март 1999
2.1февраль 1999
2.0.95июль 1998
2.0январь 1997
1.90 — 1.102май 1996 — январь 1997
1.01 — 1.09.3март 1992 — декабрь 1994
1.0февраль 1992
0.1 — 0.6октябрь 1991 — февраль 1992
Закрыть

Поддерживаемые архитектуры и ядра

Glibc используется в системах, на которых работает много разных ОС, и на разных архитектурах. Наиболее часто glibc используется на x86-машинах с ОС Linux. Также официально поддерживаются следующие архитектуры: SPARC, Motorola 68k, DEC Alpha, PowerPC, ARM, s390[15].

Критика

glibc часто критикуют за её «раздутость» и низкую скорость работы по сравнению с другими прошлыми библиотеками[16]. Поэтому были созданы несколько альтернативных стандартных библиотек языка Си (dietlibc, uClibc, Newlib, musl, Klibc). Также под критику попадает мейнтейнер Ульрих Дреппер и его отношение к ошибкам в Glibc[17].

В 2009 году в таких популярных дистрибутивах, как Debian[18], Ubuntu и ArkLinux[19] glibc был заменён на альтернативную библиотеку eglibc, изначально ориентированную на встраиваемые системы. Eglibc — это вариант glibc, более дружелюбно относящийся к приёму сторонних патчей. Однако 18 июня 2014 года один из мэйнтейнеров пакетов дистрибутива Debian объявил об обратной замене библиотеки eglibc на библиотеку glibc[20].

2024: выявлена критическая уязвимость в GNU C Library (glibc), открывающую возможность для повышения привилегий до уровня root[21].

Примечания

Ссылки

Loading related searches...

Wikiwand - on

Seamless Wikipedia browsing. On steroids.