GNU C Library
(c) Aurelio A. Heckert, CC BY-SA 2.0 Logo programu | |
Autor | Projekt GNU |
---|---|
Aktualna wersja stabilna | 2.36 (2 sierpnia 2022) [±] |
Platforma sprzętowa | Wieloplatformowy |
System operacyjny | Wieloplatformowy |
Rodzaj | Biblioteka uruchomieniowa |
Licencja | GNU LGPL |
Strona internetowa |
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).
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ż
Linki zewnętrzne
Przypisy
- ↑ 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.
- ↑ Siddhesh Poyarekar - The GNU C Library version 2.25 is now available, sourceware.org [dostęp 2019-06-13] .
- ↑ Siddhesh Poyarekar - The GNU C Library version 2.26 is now available, sourceware.org [dostęp 2019-06-13] .
- ↑ Dmitry V. Levin - The GNU C Library version 2.27 is now available, sourceware.org [dostęp 2019-06-13] .
- ↑ Carlos O'Donell - The GNU C Library version 2.28 is now available, www.sourceware.org [dostęp 2019-06-13] .
- ↑ Siddhesh Poyarekar - The GNU C Library version 2.29 is now available, sourceware.org [dostęp 2019-06-13] .
- ↑ 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
(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