Первоначальный автор (авторы) | Роланд МакГрат |
---|---|
Разработчик (и) | Проект GNU |
Первоначальный выпуск | 1987 г.; 33 года назад (1987) |
Стабильный выпуск | 2.32 (5 августа 2020 г.; 2 месяца назад (2020-08-05)) |
Репозиторий | |
Написано в | C |
Операционная система | Unix-подобная |
Тип | Библиотека времени выполнения |
Лицензия | LGPLv2.1 |
Веб-сайт | www.gnu.org / software / libc / |
Библиотека GNU C, широко известная как glibc, является реализацией проекта GNU Стандартная библиотека C. Несмотря на свое название, теперь она также напрямую поддерживает C ++ (и, косвенно, другие программы минские языки ). Он был запущен в начале 1990-х годов Free Software Foundation (FSF) для своей операционной системы GNU.
Выпущенная на условиях Стандартной общественной лицензии ограниченного применения GNU, glibc является бесплатным программным обеспечением. Проект библиотеки GNU C предоставляет базовые библиотеки для системы GNU и систем GNU / Linux, а также для многих других систем, использующих Linux в качестве ядра. Эти библиотеки предоставляют важные API, включая ISO C11, POSIX.1-2008, BSD, для конкретных ОС API и многое другое. Эти API включают такие базовые возможности, как open, read, write, malloc, printf, getaddrinfo, dlopen, pthread_create, crypt, login, exit и другие.
Первоначально проект glibc был написан в основном подростком, работавшим на Free Software Foundation (FSF) в 1980-х.
В Февраль 1988, FSF описал glibc как почти выполнившую функциональность, требуемую ANSI C. К 1992 году в нем были реализованы функции ANSI C-1989 и POSIX.1-1990, и велась работа над POSIX.2.
В сентябре 1995 года Ульрих Дреппер внес свой первый вклад в проект glibc и Постепенно 1990-е стали основным разработчиком и разработчиком glibc. Drepper занимал позицию сопровождающего в течение многих лет и до 2012 года накопил 63% всех коммитов в проекте.
В начале 1990-х разработчики ядра Linux разветвлен glibc. Их форк «Linux libc» поддерживался отдельно.
Когда в январе 1997 года FSF выпустила glibc 2.0, разработчики ядра прекратили поддержку Linux libc из-за того, что glibc 2.0 полностью соответствует стандартам POSIX. glibc 2.0 также имеет лучшую интернационализацию и более глубокую трансляцию, возможность IPv6, 64-битный доступ к данным, возможности для многопоточных приложений, совместимость с будущими версиями, а также более переносимый код.
Последняя использованная версия Linux libc использовала внутреннее имя (soname ) libc.so.5. Исходя из этого, glibc 2.x в Linux использует soname libc.so.6 (архитектуры Alpha и IA64 теперь используют libc.so.6.1, вместо). Имя файла *.so часто сокращается до libc6 (например, в имени пакета в Debian ) в соответствии с обычными соглашениями для библиотек.
Согласно Ричарду Столлману, FSF не могла объединить изменения, сделанные в Linux libc, в glibc из-за неопределенного авторства. Проект GNU довольно строго относится к регистрации авторских прав и авторов.
Начиная с 2001 года разработка библиотеки контролировалась комитетом, который оставался ведущим участником и сопровождающим.. Установка руководящего комитета была окружена общественными спорами, поскольку Ульрих Дреппер открыто описал ее как неудачный враждебный захват маневром Ричарда Столлмана.
Находясь ранее в репозитории CVS, в 2009 году glibc была перенесена в репозиторий Git (распределенная система контроля версий) на Sourceware.
После долгих споров вокруг стиля руководства Drepper и принятия внешнего вклада Debian публично переключился на форк glibc EGLIBC в 2009 году и вернуться к glibc с выпуском Debian 8.0 (Jessie) в апреле 2015 года.
В марте 2012 года руководящий комитет проголосовал за роспуск и удаление Drepper в пользу сообщества - управляемый процесс разработки, в котором ответили Райан Арнольд, Максим Кувырков, Джозеф Майерс, Карлос О'Донелл и Александр Олива Отсутствие поддержки со стороны GNU (но без дополнительных полномочий для принятия решений).
После изменения системы сопровождения glibc Debian и другие проекты, которые перешли на альтернативы, перешли обратно на glibc. С начала 2014 года форк glibc EGLIBC больше не разрабатывается, так как его «цели теперь решаются непосредственно в GLIBC».
В июле 2017 года, через 30 лет после того, как он начал работать с glibc, Роланд МакГрат объявил о своем уходе, «объявив себя почетным сопровождающим и отказавшись от прямого участия в проекте. За последние несколько месяцев, если не последние несколько лет, доказано, что я вам больше не нужен ».
Для большинства систем версию glibc можно получить, выполнив файл lib (например, / lib / libc.so.6).
Версия | Дата | Примечания | Принятие |
---|---|---|---|
0,1 - 0,6 | Октябрь 1991 г. - февраль 1992 г. | ||
1,0 | февраль 1992 г. | ||
1,01 - 1,09,3 | март 1992 г. - декабрь 1994 г. | ||
1,90 - 1,102 | май 1996 г. - январь 1997 г. | ||
2,0 | Январь 1997 г. | ||
2.0.1 | Январь 1997 г. | ||
2.0.2 | Февраль 1997 г. | ||
2.0.91 | декабрь 1997 г. | ||
2.0.95 | июль 1998 г. | ||
2,1 | февраль 1999 г. | ||
2.1.1 | март 1999 г. | ||
2,2 | ноябрь 2000 г. | ||
2,2.1 | январь 2001 | ||
2.2.2 | февраль 2001 | ||
2.2.3 | март 2001 | ||
2.2.4 | Июль 2001 | ||
2.3 | октябрь 2002 | ||
2.3.1 | октябрь 2002 | ||
2.3.2 | февраль 2003 | Debian 3.1 (Sarge) | |
2.3.3 | декабрь 2003 г. | ||
2.3.4 | декабрь 2004 г. | Стандарт для Linux Standard Base (LSB) 3.0 | RHEL 4 (Обновление 5) |
2.3.5 | апрель 2005 г. | SLES 9 | |
2.3.6 | ноябрь 2005 г. | Debian 4,0 (Etch) | |
2,4 | март 2006 г. | Стандарт для LSB 4.0, начальная inotify поддержка | SLES 10 |
2.5 | сентябрь 2006 г. | Полная inotify support | RHEL 5 |
2.6 | май 2007 | ||
2.7 | октябрь 2007 | Debian 5 (Lenny), Ubuntu 8.04 | |
2.8 | апрель 2008 г. | ||
2,9 | ноябрь 2008 г. | ||
2,10 | май 2009 г. | ||
2,11 | октябрь 2009 г. | SLES 11, Ubuntu 10.04, eglibc используется в Debian 6 (Squeeze) | |
2.12 | май 2010 | RHEL 6 | |
2.13 | январь 2011 | eglibc 2.13 используется в Debian 7 (Wheezy) | |
2.14 | июнь 2011 г. | ||
2,15 | март 2012 г. | Ubuntu 12.04 и 12.10 | |
2.16 | июнь 2012 г. | поддержка x32 ABI, Соответствие ISO C11, SystemTap | |
2.17 | декабрь 2012 г. | Поддержка 64-битного ARM | Ubuntu 13.04, RHEL 7 |
2.18 | Август 2013 г. | Улучшенная поддержка C ++ 11. Поддержка блокировки Intel TSX. Поддержка микроархитектур Xilinx MicroBlaze и IBM POWER8. | Fedora 20 |
2.19 | февраль 2014 г. | SystemTap. для malloc. Поддержка косвенной функции GNU (IFUNC) для ppc32 и ppc64. Новый макрос проверки функций _DEFAULT_SOURCE для замены _SVID_SOURCE и _BSD_SOURCE. Предварительная документация по безопасности для всех функций в руководстве. Изменение ABI в ucontext и jmp_buf для s390 / s390x. | Ubuntu 14.04, eglibc 2.19, используемый в Debian 8 (Jessie), openSUSE 13, SLES 12 |
2.20 | Сентябрь 2014 г. | Поддержка блокировок описания файлов | Fedora 21 |
2.21 | Февраль 2015 г. | Новая реализация семафора | Ubuntu 15.04, Fedora 22 |
2.22 | Август 2015 г. | Поддержка включения Google Native Client (NaCl), который изначально работал на x86, работал на ARMv7-A, Unicode 7.0 | Fedora 23 |
2.23 | Февраль 2016 г. | Unicode 8.0 | Fedora 24, Ubuntu 16.04 |
2.24 | Август 2016 г. | Некоторые устаревшие функции были удалены | Fedora 25, Ubuntu 16.10 и 17.04, Debian 9 (Stretch) |
2.25 | февраль 2017 г. | getentropy и Были добавлены функции getrandom и файл заголовка . | Fedora 26 |
2.26 | август 2017 г. | Улучшено выполнение (поточный кеш для malloc), поддержка Unicode 10 | Fedora 27, Ubuntu 17.10 |
2.27 | февраль 2018 г. | Оптимизация производительности. RISC-V support. | Fedora 28, Ubuntu 18.04 |
2.28 | август 2018 г. | statx , renameat2 , Unicode 11.0.0 | Ubuntu 18.10, RHEL 8.0.0, Debian 10 (Buster), Fedora 29 |
2.29 | февраль 2019 |
| Ubuntu 19.04, Fedora 30 |
2.30 | август 2019 | Unicode 12.1.0, динамический компоновщик принимает аргумент --preload для предварительной загрузки общих объектов, функция gettid была добавлена в Linux, поддержка календаря Minguo (Китайская Республика), новая японская эра добавлена в ja_JP локаль, функции выделения памяти не работают, если общий размер объекта превышает PTRDIFF_MAX ; CVE - 2019-7309 и CVE- 2019-9169 исправлено | Ubuntu 19.10, Fedora 31 |
2.31 | Февраль 2020 | Начальная C2x стандартная поддержка | Ubuntu 20.04, Fedora 32 |
2.32 | Август 2020 | Unicode 13.0, атрибут 'access' для более точных предупреждений в GCC 10, то есть для «помощи в обнаружении переполнения буфера и других выходов за границы» |
glibc обеспечивает функциональность, требуемую Single UNIX Спецификация, POSIX (1c, 1d и 1j) и некоторые функции, требуемые ISO C11, ISO C99, Berkeley Unix (BSD) интерфейсы, определение интерфейса System V (SVID) и X / Open Portability Guide (XPG), Выпуск 4.2, со всеми расширениями, общими для систем, совместимых с XSI (), а также со всеми расширениями X / Open UNIX.
Кроме того, glibc также предоставляет расширения, которые были сочтены полезными или необходимыми при разработке GNU.
glibc используется в системах, в которых работает множество различных ядра и различные аппаратные архитектуры. Чаще всего он используется в системах, использующих ядро Linux на оборудовании x86, однако официально поддерживаемое оборудование включает: 32-битный ARM и его новый 64-битный ISA (AArch64), DEC Alpha, IA-64, Motorola m68k, MicroBlaze, MIPS, Nios II, PA-RISC, PowerPC, RISC-V, s390, SPARC и x86 (старые версии поддерживают TILE ). Он официально поддерживает ядра Hurd и Linux. Кроме того, существуют сильно пропатченные версии, которые работают на ядрах FreeBSD и NetBSD (из которых Debian GNU / kFreeBSD и Debian GNU / NetBSD соответственно), а также разветвленная версия OpenSolaris. Он также используется (в отредактированном виде) и называется libroot.so в BeOS и Haiku.
glibc подвергается критике как «раздутый » и медленнее, чем другие библиотеки в прошлом, например Автор: Линус Торвальдс и программисты встраиваемого Linux. По этой причине было создано несколько альтернативных стандартных библиотек C, которые подчеркивают меньший размер. Тем не менее, многие проекты для небольших устройств используют GNU libc вместо небольших альтернатив из-за поддержки приложений, соответствия стандартам и полноты. Примеры включают Openmoko и для карманных компьютеров iPaq (при использовании программного обеспечения дисплея GPE ).
Существуют уровни совместимости ("shims "), чтобы программы, написанные для других экосистем, могли работать в системах, предлагающих интерфейс glibc. К ним относятся libhybris, уровень совместимости для Android Bionic и Wine, который можно рассматривать как уровень совместимости из Windows. API для glibc и других собственных API, доступных в Unix-подобных системах.
На Викискладе есть материалы, связанные с Библиотека GNU C. |