GNU C Library

Standardowa biblioteka C z Projektu GNU

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

GNU C Library
Logo GNU C Library
Logo programu
Autor Projekt GNU
Aktualna wersja stabilna 2.39
(31 stycznia 2024) [±]
Platforma sprzętowa Wieloplatformowy
System operacyjny Wieloplatformowy
Rodzaj Biblioteka uruchomieniowa
Licencja GNU LGPL
Strona internetowa
GNU C Library

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 edytuj

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 edytuj

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 edytuj

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).

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

Linki zewnętrzne edytuj

Przypisy edytuj

  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 [online], sourceware.org [dostęp 2019-06-13].
  3. Siddhesh Poyarekar - The GNU C Library version 2.26 is now available [online], sourceware.org [dostęp 2019-06-13].
  4. Dmitry V. Levin - The GNU C Library version 2.27 is now available [online], sourceware.org [dostęp 2019-06-13].
  5. Carlos O'Donell - The GNU C Library version 2.28 is now available [online], www.sourceware.org [dostęp 2019-06-13].
  6. Siddhesh Poyarekar - The GNU C Library version 2.29 is now available [online], sourceware.org [dostęp 2019-06-13].
  7. Carlos O'Donell, The GNU C Library version 2.30 is now available [online], sourceware.org [dostęp 2019-08-02].