Меню
Главная
Случайная статья
Настройки
|
glibc (GNU C Library — GNU-библиотека) — библиотека Си, которая обеспечивает системные вызовы и основные функции, такие как open, malloc, printf и т. д. Библиотека C используется для всех динамически скомпонованных программ. Она написана Free Software Foundation для операционных систем GNU. glibc выпущена под лицензией GNU LGPL.
Содержание
История
Первоначально 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 |
февраль 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 |
getcpu wrapper
- build and install all locales as directories with files
- optimized trigonometric 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 |
август 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].
Примечания
- Httel A. K. The GNU C Library version 2.42 is now available (англ.) — 2025.
- https://sourceware.org/git/?p=glibc.git;a=blob_plain;f=timezone/tzfile.h;hb=HEAD
- 1 2 Olson A., Eggert P., Murchison K. 8.1 // The Time Zone Information Format (TZif) (англ.) — IETF, 2019. — P. 18. — 34 p. — doi:10.17487/RFC8536
- https://sourceware.org/git/?p=glibc.git;a=blob_plain;f=timezone/zic.c;hb=HEAD
- 1 2 3 Free Software Directory
- https://sourceware.org/git/?p=glibc.git;a=commit;h=41bdb6e20c5d2df34a740cbd70e11c05025dfd12
- Free Software Foundation. GNU's Bulletin, vol. 1 no. 4, February, 1988 (неопр.). Дата обращения: 16 декабря 2016. Архивировано 16 апреля 2016 года.
- Elliot Lee. A Technical Comparison of glibc 2.x With Legacy System Libraries (англ.) (2001). Архивировано из оригинала 11 апреля 2004 года.
- Forking: it could even happen to you (англ.). — «the split between GNU LIBC and the Linux LIBC -- it went on for years while Linux stabilized, and then the forks re-merged into one project». Архивировано из оригинала 21 января 2013 года.
- Fear of Forking essay, see "6. glibc --> Linux libc --> glibc" (англ.). Дата обращения: 12 января 2013. Архивировано из оригинала 18 июля 2014 года.
- Fear of Forking, footnote on Stallman's merge comments (англ.). Архивировано из оригинала 21 января 2013 года.
- The GNU C Library version 2.32 is now available (неопр.). sourceware.org. Дата обращения: 13 августа 2020. Архивировано 28 сентября 2020 года.
- sourceware.org Git – glibc.git/blob – NEWS (неопр.). Дата обращения: 6 февраля 2024. Архивировано 26 сентября 2019 года.
- sourceware.org Git – glibc.git/blob – NEWS (неопр.). Дата обращения: 6 февраля 2024. Архивировано 21 марта 2022 года.
- MAINTAINERS - glibc wiki (неопр.). sourceware.org. Дата обращения: 16 декабря 2016. Архивировано 18 апреля 2016 года.
- Torvalds, Linus (9 января 2002). Re: [libc-alpha] Re: [open-source] Re: Wish for 2002 (Mailing list). Архивировано 12 октября 2015. Дата обращения: 16 декабря 2016.
- Debian Switching From Glibc To Eglibc - Slashdot (неопр.). linux.slashdot.org. Дата обращения: 16 декабря 2016. Архивировано 20 декабря 2016 года.
- Debian is switching to EGLIBC Архивная копия от 7 октября 2011 на Wayback Machine Aurelien’s weblog, May 5th 2009 (англ.)
- Ark Linux switches to eglibc Архивная копия от 24 февраля 2012 на Wayback Machine Ark Linux weblog, May 13 2009 (англ.)
- Debian is switching (back) to GLIBC Архивная копия от 29 марта 2016 на Wayback Machine Aurelien’s weblog, June 18th 2014 (англ.)
- Критическая «дыра» в фундаментальной библиотеке позволяет взломать Ubuntu, Fedora и Debian и другие дистрибутивы Linux Архивная копия от 2 февраля 2024 на Wayback Machine // CNews, 2 февраля 2024
Ссылки
|
|