Loading AI tools
библиотека Си, реализованая GNU Из Википедии, свободной энциклопедии
glibc (GNU C Library — GNU-библиотека) — библиотека Си, которая обеспечивает системные вызовы и основные функции, такие как open, malloc, printf и т. д. Библиотека C используется для всех динамически скомпонованных программ. Она написана Free Software Foundation для операционных систем GNU. glibc выпущена под лицензией GNU LGPL.
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].
В начале 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.39 | январь 2024 | Из ISO C2X добавлен заголовочный файл stdbit.h. | |
2.38 | август 2023 | Добавлены функции strlcpy и strlcat. Поддержка libmvec для ARM64. | |
2.37 | февраль 2023 | ||
2.36 | август 2022 | ||
2.35 | февраль 2022 | Unicode 14.0, локаль C.UTF-8, перезапускаемые последовательности. Удалена поддержка Intel MPX. | Ubuntu 22.04 |
2.34 | август 2021 | libpthread, libdl, libutil, libanl интегрированы в libc. | |
2.33 | февраль 2021 | HWCAPS. | Ubuntu 20.04 |
2.32 | август 2020 | Unicode 13.0, атрибут 'access' для улучшенных предупреждений в GCC 10, т.е. to "help detect buffer overflows and other out-of-bounds accesses"[12] | |
2.31 | февраль 2020 | Начальная поддержка стандарта C23. | |
2.30 | август 2019 | Unicode 12.1.0, динамический компоновщик принимает аргумент --preload для предварительной загрузки общих объектов, в Linux добавлена функция gettid , поддержка календаря Minguo (Китайская Республика), в локаль ja_JP добавлена новая японская эра, функции выделения памяти не работают если общий размер объекта превышает PTRDIFF_MAX ; исправлены CVE-2019-7309 and CVE-2019-9169[13] |
|
2.29 | февраль 2019 |
|
|
2.28 | август 2018 | statx , renameat2 , Unicode 11.0.0 |
|
2.27 | февраль 2018 | Оптимизации производительности. Поддержка RISC-V. | Ubuntu 18.04 |
2.26 | август 2017 | Улучшена производительность (per-thread cache for malloc), поддержка Unicode 10 | Ubuntu 17.10 |
2.25 | февраль 2017 | Добавлены функции getentropy и getrandom и заголовочный файл <sys/random.h>. | Fedora 26 |
2.24 | август 2016 | Удалены некоторые устаревшие возможности | |
2.23 | февраль 2016 | Unicode 8.0 | Fedora 24, Ubuntu 16.04 |
2.22 | август 2015 | Добавлена библиотека векторных математических функций libmvec. | |
2.21 | февраль 2015 | Поддержка архитектуры Altera Nios II | Ubuntu 15.04, Debian experimental, Fedora 22 |
2.20 | сентябрь 2014 | Fedora 21 | |
2.19 | февраль 2014 | Ubuntu 14.04, eglibc 2.19 в Debian 8 (Jessie), openSUSE 13, SLES 12 | |
2.18 | август 2013 | Улучшена поддержка стандарта ISO C11. Поддержка микроархитектуры Xilinx MicroBlaze и IBM POWER8 | Fedora 20 |
2.17 | декабрь 2012 | Поддержка 64-битной архитектуры ARM | Ubuntu 13.04, RHEL 7 |
2.16 | июнь 2012 | Поддержка x32 ABI, стандарт ISO C11, SystemTap | |
2.15 | март 2012 | Ubuntu 12.04 и 12.10 | |
2.14 | июнь 2011 | ||
2.13 | январь 2011 | eglibc 2.13 в Debian 7 (Wheezy) | |
2.12 | май 2010 | RHEL 6 | |
2.11 | октябрь 2009 | SLES 11, Ubuntu 10.04, eglibc в Debian 6 (Squeeze) | |
2.10 | май 2009 | Минимум для LSB 5.0. Начальная поддержка psiginfo. | |
2.9 | ноябрь 2008 | Ubuntu 9.04 | |
2.8 | апрель 2008 | Ubuntu 8.10 | |
2.7 | октябрь 2007 | Debian 5 (Lenny), Ubuntu 8.04 | |
2.6 | май 2007 | ||
2.5 | сентябрь 2006 | Полная поддержка inotify | RHEL 5 |
2.4 | март 2006 | Стандарт в LSB 4.0, начальная поддержка inotify | SLES 10 |
2.3.6 | ноябрь 2005 | Debian 4.0 (Etch) | |
2.3.5 | апрель 2005 | SLES 9 | |
2.3.4 | декабрь 2004 | Стандарт в LSB 3.0 | RHEL 4 (Update 5) |
2.3.2 | февраль 2003 | Debian 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].
Seamless Wikipedia browsing. On steroids.
Every time you click a link to Wikipedia, Wiktionary or Wikiquote in your browser's search results, it will show the modern Wikiwand interface.
Wikiwand extension is a five stars, simple, with minimum permission required to keep your browsing private, safe and transparent.