GNU C Library

GNU C Library
Logo GNU C Library
(c) Aurelio A. Heckert, CC BY-SA 2.0

Logo programu
AutorProjekt GNU
Aktualna wersja stabilna2.36
(2 sierpnia 2022) [±]
Platforma sprzętowaWieloplatformowy
System operacyjnyWieloplatformowy
RodzajBiblioteka uruchomieniowa
LicencjaGNU LGPL
Strona internetowa
(c) Shmuel Csaba Otto Traian, CC BY-SA 3.0
GNU C Library

GNU libc (glibc lub libc6) – wersja standardowej biblioteki języka C, stworzona w ramach projektu GNU.

Udostępnia funkcjonalność wymaganą przez UNIX 98, Single UNIX Specification, POSIX (1c, 1d i 1j) oraz część funkcjonalności wymaganej przez normę ISO C99, a dodatkowo rozszerzenia uznane za konieczne lub użyteczne w trakcie tworzenia GNU.

Historia

Glibc została napisana przez Rolanda McGratha pracującego dla FSF w latach 80. XX wieku.

W lutym 1988 roku FSF określiła glibc jako prawie spełniającą funkcjonalność wymaganą przez ANSI C. W roku 1992 miała zaimplementowane funkcje ANSI C-1989 i POSIX.1-1990.

Linuksowy fork

We wczesnych latach 90. XX wieku programiści jądra Linux – po tym jak FSF zbyt wolno reagowała na ich prośby o dodanie nowych funkcji[1] – zrobili rozgałęzienie glibc, nazywając je „Linux C Library”. Przez lata rozwoju doszli oni do wersji 5 (libc5).

Gdy w roku 1996 FSF wydała glibc 2.0, okazało się, że w większym stopniu spełnia standard POSIX, ma lepsze wsparcie wielojęzykowości, IPv6, a jej kod był bardziej przenośny. W takiej sytuacji programiści jądra Linux zdecydowali się nie kontynuować swojego rozgałęzienia i z powrotem używać GNU libc, zaś sama biblioteka została oznaczona wersją 6 (libc6).

Historia wersji

Dla większości systemów, wersję biblioteki standardowej języka C można otrzymać poprzez uruchomienie pliku biblioteki (na przykład, /lib/libc.so.6).

WersjaDataUwagiZastosowanie
0.1 – 0.6październik 1991 – luty 1992
1.0luty 1992
1.01 – 1.09.3marzec 1992 – grudzień 1994
1.90 – 1.102maj 1996 – styczeń 1997
2.0styczeń 1997
2.0.1styczeń 1997
2.0.2luty 1997
2.0.91grudzień 1997
2.0.95lipiec 1998
2.1luty 1999
2.1.1marzec 1999
2.2listopad 2000
2.2.1styczeń 2001
2.2.2luty 2001
2.2.3marzec 2001
2.2.4lipiec 2001
2.3październik 2002
2.3.1październik 2002
2.3.2luty 2003Debian 3.1 (Sarge)
2.3.3grudzień 2003
2.3.4grudzień 2004Standard dla Linux Standard Base (LSB) 3.0RHEL 4 (Update 5)
2.3.5kwiecień 2005SLES 9
2.3.6listopad 2005Debian 4.0 (Etch)
2.4marzec 2006Standard dla LSB 4.0SLES 10
2.5wrzesień 2006RHEL 5
2.6maj 2007
2.7październik 2007Debian 5 (Lenny), Ubuntu 8.04
2.8kwiecień 2008
2.9listopad 2008
2.10maj 2009
2.11październik 2009SLES 11, Ubuntu 10.04, eglibc użyto w Debian 6 (Squeeze)
2.12maj 2010RHEL 6
2.13styczeń 2011eglibc 2.13 użyto w Debian 7 (Wheezy)
2.14czerwiec 2011
2.15marzec 2012Ubuntu 12.04 and 12.10
2.16czerwiec 2012Wsparcie dla x32 ABI, zastosowanie ISO C11, SystemTap
2.17grudzień 2012Wsparcie dla 64-bitowej architektury ARMUbuntu 13.04, RHEL 7
2.18sierpień 2013Udoskonalono wsparcie dla C++11. Wsparcie dla mikroarchitektur MicroBlaze i POWER8
2.19luty 2014Ubuntu 14.04
2.20wrzesień 2014
2.21luty 2015
2.22sierpień 2015
2.23luty 2016
2.24sierpień 2016Fedora 25, Ubuntu 16.10 i 17.04, Debian 9
2.25luty 2017[2]Dodany plik nagłówkowy <sys/random.h> (w nim funkcje getentropy i getrandom)Fedora 26
2.26sierpień 2017[3]Fedora 27, Ubuntu 17.10
2.27luty 2018[4]Wsparcie dla architektury RISC-VFedora 28, Ubuntu 18.04
2.28sierpień 2018[5]Unikod w wersji 11.0.0Ubuntu 18.10, Debian 10, Fedora 29, RHEL 8
2.29luty 2019[6]Dodana funkcja getcpu (specyficzna dla Linuksa), optymalizacje funkcji matematycznych (m.in. exp, log), poprawki bezpieczeństwa i wiele innychUbuntu 19.04, Fedora 30
2.30sierpień 2019[7]Wsparcie dla Unikodu w wersji 12.1.0; szereg nowych funkcji (większość spec. dla Linuksa), dodatkowe zabezpieczenia funkcji przydzielających pamięć (z rodziny malloc), wsparcie dla kalendarzy chińskich i wybranych japońskich znaków z nowej wersji Unikodu, i wiele innych

Zobacz też

Linki zewnętrzne

Przypisy

  1. Sam Williams – W obronie wolności – Rozdział 10.. stallman.helion.pl. [zarchiwizowane z tego adresu (2008-03-14)]. W latach 1993–1994 glibc była „wąskim gardłem” Linuksa. Ponieważ wielu użytkowników dodawało do jądra swe własne funkcje, ludzie pracujący w projekcie GNU nad utrzymaniem glibc zostali wkrótce przytłoczeni nadmiarem żądań. Część użytkowników Linuksa, sfrustrowanych opóźnieniami i szerzącym się przekonaniem o rozlazłości projektu GNU, domagała się „rozwidlenia” działań i stworzenia równoległej do glibc biblioteki C.
  2. Siddhesh Poyarekar - The GNU C Library version 2.25 is now available, sourceware.org [dostęp 2019-06-13].
  3. Siddhesh Poyarekar - The GNU C Library version 2.26 is now available, sourceware.org [dostęp 2019-06-13].
  4. Dmitry V. Levin - The GNU C Library version 2.27 is now available, sourceware.org [dostęp 2019-06-13].
  5. Carlos O'Donell - The GNU C Library version 2.28 is now available, www.sourceware.org [dostęp 2019-06-13].
  6. Siddhesh Poyarekar - The GNU C Library version 2.29 is now available, sourceware.org [dostęp 2019-06-13].
  7. Carlos O'Donell, The GNU C Library version 2.30 is now available, sourceware.org [dostęp 2019-08-02].

Media użyte na tej stronie

Heckert GNU white.svg
(c) Aurelio A. Heckert, CC BY-SA 2.0
A bold GNU head.
Linux kernel System Call Interface and glibc.svg
(c) Shmuel Csaba Otto Traian, CC BY-SA 3.0
The GNU C Library is a wrapper around the system calls of the Linux kernel