glibc

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

Glibc
Тип C POSIX library
Разработчик Проект GNU
Написана на Си
Операционная система GNU/Linux[1], GNU/Hurd[1] и BSD[1]
Первый выпуск 1987
Последняя версия
Читаемые форматы файлов Time Zone Information Format[d][3][4][5]
Создаваемые форматы файлов Time Zone Information Format[d][6][4][5]
Лицензия LGPLv2.1+[d][7]
Сайт gnu.org/software/… (англ.)
 Медиафайлы на Викискладе

История

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

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

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

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

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

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

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

ВерсияДатаПримечанияПринятие
2.33 февраль 2021 Ubuntu 20.04
2.32 август 2020
2.31 февраль 2020
2.30 август 2019
2.29 февраль 2019
2.28 август 2018
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
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[13].

Критика

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

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

Примечания

  1. Free Software Directory
  2. O'Donell C. The GNU C Library version 2.35 is now available (англ.) — 2022.
  3. https://sourceware.org/git/?p=glibc.git;a=blob_plain;f=timezone/tzfile.h;hb=HEAD
  4. Olson A., Eggert P., Murchison K. 8.1 // The Time Zone Information Format (TZif) (англ.)IETF, 2019. — P. 18. — 34 p. — doi:10.17487/RFC8536
  5. Olson A., Eggert P., Murchison K. 8.2 // The Time Zone Information Format (TZif) (англ.)IETF, 2019. — P. 19. — 34 p. — doi:10.17487/RFC8536
  6. https://sourceware.org/git/?p=glibc.git;a=blob_plain;f=timezone/zic.c;hb=HEAD
  7. https://sourceware.org/git/?p=glibc.git;a=commit;h=41bdb6e20c5d2df34a740cbd70e11c05025dfd12
  8. Free Software Foundation. GNU's Bulletin, vol. 1 no. 4, February, 1988.
  9. Elliot Lee. A Technical Comparison of glibc 2.x With Legacy System Libraries (англ.) (недоступная ссылка) (2001). Архивировано 11 апреля 2004 года.
  10. 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 года.
  11. Fear of Forking essay, see "6. glibc --> Linux libc --> glibc" (англ.) (недоступная ссылка). Дата обращения: 12 января 2013. Архивировано 18 июля 2014 года.
  12. Fear of Forking, footnote on Stallman's merge comments (англ.) (недоступная ссылка). Архивировано 21 января 2013 года.
  13. MAINTAINERS - glibc wiki. sourceware.org. Дата обращения: 16 декабря 2016.
  14. Torvalds, Linus Re: [libc-alpha] Re: [open-source] Re: Wish for 2002. Список рассылки libc-alpha@sources.redhat.com (9 января 2002). Дата обращения: 16 декабря 2016.
  15. Debian Switching From Glibc To Eglibc - Slashdot. linux.slashdot.org. Дата обращения: 16 декабря 2016.
  16. Debian is switching to EGLIBC Aurelien’s weblog, May 5th 2009 (англ.)
  17. Ark Linux switches to eglibc Ark Linux weblog, May 13 2009 (англ.)
  18. Debian is switching (back) to GLIBC Aurelien’s weblog, June 18th 2014 (англ.)

Ссылки

This article is issued from Wikipedia. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.