GNU C biblioteka, poznatija pod nazivom glibc, je GNU projekat napravljen od C standardne biblioteke. Uprkos svom imenu, ova biblioteka direktno podrzava i C++ (i indirektno druge programske jezike). Osnovana je 1990-ih od strane fondacije za slobodni softver (FSF) za njihov GNU operativni sistem.

GNU C biblioteka
Programer(i)Roland MekGrat, GNU projekat
Prvo izdanje1987. god.; pre 37 godina (1987)
Repozitorijum Uredi na Vikipodacima
Napisan uC
Operativni sistemJuniks
TipBiblioteka
LicencaGNU Lesser General Public License
Veb-sajtwww.gnu.org/software/libc/
Linuks API je sastavljena od sistema pristupa (interfejs), Linux jezgra, kao i GNU c biblioteke (GNU), libdrm, libalsa i libevdev (od strane freedesktop.org).
GNU c biblioteka je omotač oko sistema koji se zove Linuks jezgro.
Linuks jezgro i GNU c biblioteka  zajedno formiraju Linuks API. Nakon sjedinjavanja, nude binarne fajlove (datoteke)ABI.

Objavljena je od strane GNU Lesser General Public licence, i c biblioteka je slobodni softver.

Istorija uredi

C biblioteku je prvobitno napisao Ronald MekGrat, koji je radio za fondaciju za slobodni softver (FSF) 1980-te.

U februaru 1988, FSF, je opisao C biblioteku kao skoro gotovu i funksionalnu kakvu ju je zahtevao ANSI C.[1] Do 1992, imala je ANSI C-1989 i POSIX.1-1990 implementirane funkcije i rad se obavljao pod POSIX.2.[2]

U septembru 1995 Ulrik Dreper je izvršio svoj prvi doprinos glibc projeku i postepeno postao oko 1990-it glavni saradnik i održavalac glibc-a.[3] Dreper je imao rukovodeću ulogu tokom mnogo godina i do 2012 je nakupio 63% od svih izvšavanja projekta.[4]


Razvoj "Linuks libc-a" uredi

U ranim 1990-im, programeri Linuks jezgra su razvili glibc. Njihov fork koji se zvao "Linuks libc", godinama nije održavan a objavljene su verzijama od 2 do 5.

Kada je FSF objavio glibc verziju 2.0 u Januaru 1997, ona je imala mnogo više kompajlera po kompletnim POSIX standardima, bolju internacionalizacija i višejezične funkcije, IPv6 sposobnosti, 64-bitni pristup podacima, okruženja za višenitne aplikacije, buduće kompatibilne verzije, i kodove veće prenosivosti.[5] U ovom trenutku, programeri Linuks jezgra prekidaju razvoj i nastavljaju sa daljim korišćenjem FSF-ovog glibc-a.[6]

Poslednja verzija Linuks libc-a se koristila pod imenom (soname) libc.so.5. Nadalje, glibc 2.x na Linuksu koristi soname libc.so.6[7] (Alfa i IA64 arhitekture sada koriste libc.so.6.1).*.so ime fajla se često mešalo sa libc6 (na primer u paketu za Debijanom) prateći standardna usvajanja za biblioteke.

Prema Ričardu Stolmanu, promene koje su izvršene u Linuks libc-u ne mogu biti stopljene nazad u glibc jer je status autorstva nejasan, a GNU projekat je veoma strog u vezi rušenja autorskih prava i prava autora.[8]

Postavljanje upravnog odbora uredi

Počevši od 2001. godine razvoja biblioteke je nadgledao odbor,[9] sa Ulrikom Dreperom[10] kao glavnim saradnikom i održivačem. Postavljanje upravnog odbora je podleglo javnoj raspravi i kotroverzi i kako je otvoreno opisao Ulrik Dreper, propalo neprijateljsko preuzimanje od strane Ričarda Stolmana.[11][12][13]

Premeštanje na git uredi

Dok je pre bio u CVS-ovom skladištu, u 2009. glibc je prešao u git-ovo skladište na Sourceware.[14]

Debijan prelazi na EGLIBC uredi

Nakon mnogih kontroverzi o Dreperovom stilu upravljanja i prihvatanju spoljašnjeg doprinosa,[15][16][17] Debijan je javno prešao na glibc-ov razvoj EGLIBC 2009.godine.[18]

Raspuštanje upravnog odbora uredi

U Martu 2012, upravni odbor je glasao za to da treba da se raspusti a da se ukloni Dreper u korist procesa razvoja zajednice, sa Rajanom Arnoldom, Maksimom Kuvyrkovim, Jozefom Majersom, Karlosom O'Donelom, i Aleksandre Olivom odgovornim za održavanje odnosa sa GNU (ali bez dodatne moći odlučivanja).[19][20]

Nakon promene sektora za održavanje glibc-a Debijan i drugi projekti su se vratili nazad na glibc, koji su se prethodno priključili alternativama.[21] Takođe, od samo početka 2014-te, glibc-ov razvoj EGLIBC se više nije sporvodio, otkako su "ciljevi sada direktno usmereni ka GLIBC-u".

Istorija verzija uredi

Za mnoge sisteme, verzije glibc-a se mogu dobiti izvršavanjem lib fajlova (na primer, /lib/libc.so.6).

Verzije Datum Beleške Prihvatanje
0.1 – 0.6 Okt 1991 – Februar 1992
1.0 Februar 1992
1.01 – 1.09.3 Mart 1992 – Decembar 1994
1.90 – 1.102 Maj 1996 – Januar 1997
2.0 Januar 1997
2.0.1 Januar 1997
2.0.2 Februar 1997
2.0.91 Decembar 1997
2.0.95 Jul 1998
2.1 Februar 1999
2.1.1 Mart 1999
2.2 Novembar 2000
2.2.1 Januar 2001
2.2.2 Februar 2001
2.2.3 Mart 2001
2.2.4 Jul 2001
2.3 Oktobar 2002
2.3.1 Oktobar 2002
2.3.2 Februar 2003 Debijan 3.1 (Sardž)
2.3.3 Decembar 2003
2.3.4 Decembar 2004 Standard za Linuks standardnu bazu (LSB) 3.0 RHEL 4 (Verzija 5)
2.3.5 April 2005 SLES 9
2.3.6 Novembar 2005 Debijan 4.0 (Etch)
2.4 Mart 2006 Standard za LSB 4.0, početna inotify podrška SLES 10
2.5 Septembar 2006 Kompletna inotify podrška RHEL 5
2.6 Maj 2007
2.7 Oktobar 2007 Debijan 5 (Leni), Ubuntu 8.04
2.8 April 2008
2.9 Novembar 2008
2.10 Maj 2009
2.11 Oktobar 2009 SLES 11, Ubuntu 10.04, eglibc korišćen u Debijan 6
2.12 Maj 2010 RHEL 6
2.13 Januar 2011 eglibc 2.13 korišćen u Debijan
2.14 Jun 2011
2.15 Mart 2012 Ubuntu 12.04 i 12.10
2.16 Jun 2012 x32 podržan, ISO C11 pridžavanje, SystemTap
2.17 Decembar 2012 64-bit AR Ubuntu 13.04, RHEL 7
2.18 Avgust 2013 Poboljšan C++11 podržan. Podržan za intel TSH. Podržan za Hiliks MicroBlaze i IBM POWER8 mikroarhitektura. Fedora 20
2.19 Februar 2014 SystemTap probe za malloc. GNU Indirektna funkcija (IFUNC) podrzana za ppc32 i ppc64. Nova moućnost macro _DEFAULT_SOURCE za zamenu _SVID_SOURCE i _BSD_SOURCE. Preliminarna sigurna dokumentacija za sve manuelne funkcije. ABI promena ucontext-a i jmp_buf za s390/s390x. Ubuntu 14.04, eglibc 2.19 korišćen za Debijan 8
2.20 Septembar 2014 Podrška za opis fajla Fedora 21
2.21 Februar 2015 Nova semafor implementacija Ubuntu 15.04, probni Debijan, Fedora 22
2.22 Avgust 2015 Google Native Client (NaCl) za rad na ARMv7-A, Unicode 7.0 Fedora 23

Podržani hardveri i jezgra uredi

Glibc se koristi u sistemima koji koriste mnogo različitih jezgara i različite hardverske arhitekture. Njegova najčešća upotreba je u sistemima koji koriste Linuks jezgro na x86 hardveru, međutim, zvanično podržavani hardveri[22] uključuju: ARM arhitektura, DEC AlphaPA-RISCIA-64, Motorola m68kMicroBlaze, MIPS, Nios II, PowerPC, s390, SPARC, TILE, i x86. Ona takođe zvanično podržava Hurd i Linuks jezgra. Pored toga, postoje zakrpljene verzije koje rade na jezgrima FreeBSD i NetBSD (od kojih se Debijan GNU /kFreeBSD i Debijan GNU/NetBSD sistemi grade, respektivno), kao i razvojna-verzija OpenSolaris.[23] On se takođe koristi (u obliku editora), a nazvan je  libroot.so u BeOS-u i Haiku-u.[24]

Funkcionalnost uredi

Glibc obezbeđuje potrebnu funkcionalnost od strane  Single UNIX Specification-a, Posiks-a (1c, 1d, i 1j) i neke funkcionalnosti bazirane na ISO-u C11, ISO C99, Berkli Juniks (BSD) okruženja, System V Interface Definition (SVID) i X/Open Portability Guide (XPG), izdanje 4.2, sa svim nastavcima zajedničkih XSI (X/Open System Interface) u skladu sistema sa svim X/Open UNIX ekstenzijama.

Takođe, glibc omogućava i ekstenzije koje su bile neophodne prilikom stvaranja GNU-a.

Korišćenje u mali uređajima uredi

Glibc je kritikovan kao "napumpan" i sporiji je od drugih biblioteka koje su korišćene u prošlosti, na primer, kritikovan je od strane Linusa Torvaldsa[25] i programera ugrađenog Linuksa. Iz tog razloga, stvoreno je nekoliko alternativnih C standarda koji ostavljaju manje posledice. Alternativne biblioteke su Bionic (bazirana uglavnom na bibliotekama iz BSD i korišćenim u Androidu[26]), dietlibc, uClibc, Newlib, Klibc, i musl.

Međutim, mnogi projekti manjih uređaja pre koriste GNU libc nad manjim alternativama zbog podrške aplikacija, usklađenosti sa standardima i zbog kompletnosti. Primer uključuje Openmoko[27] i Familiar Linux za iPaq diktafone (kada koriste GPE grafiku softvera).[28]

Vidi još uredi

Reference uredi

  1. ^ "https://www.gnu.org/bulletins/bull4.html".
  2. ^ "GNU's Bulletin, vol. 1 no. 12".
  3. ^ glibc changelog[mrtva veza] on github.com
  4. ^ Corbet, Jonathan (28. 3. 2012). „A turning point for GNU libc”. LWN.net. „'Of the nearly 19,000 commits found in the project's git repository (which contains changes back to 1995), over 12,000 were made by Ulrich.' 
  5. ^ Lee, Elliot (2001).
  6. ^ "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
  7. ^ "Fear of Forking essay, see "6. glibc --> Linux libc --> glibc"".
  8. ^ "Fear of Forking, footnote on Stallman's merge comments".
  9. ^ „glibc homepage”. „In 2001 The GNU C Library Steering Committee ..., was formed and currently consists of Mark Brown, Paul Eggert, Andreas Jaeger, Jakub Jelinek, Roland McGrath and Andreas Schwab. 
  10. ^ „Ulrich Drepper”. LinkedIn. Pristupljeno 13. 6. 2012. 
  11. ^ Drepper, Ulrich (26. 6. 2000). „RMS is at it again”. sourceware.org. Pristupljeno 20. 11. 2015. „'A few weeks ago RMS started the next attack on me (a single mail, followed by indirect tries to take influence, followed by another mail today). The essence is that he complains I am not following "GNU policies" and therefore have to be replaced by a steering committee of which I could be a part. Some of you (namely Roland and Andreas S.) probably know about this since he proposed both as other members of the committee. In addition there was Mark Brown listed (I know somebody of this name at IBM who would also fit in this group but I'm not sure whether it is really him.) Anyhow, I completely reject this. It is not helping at all, the opposite is true. First, I am not aware of any essential policies I'm violating. The only ones are that I'm not following orders from RMS which clearly have political intends (which is of course a sacrilege) and possibly that I do not care about Winblowz (if the latter counts at all). None of this will change in any way.' 
  12. ^ Drepper, Ulrich (15. 8. 2001). „glibc 2.2.4”. sourceware.com. Pristupljeno 29. 11. 2015. „'And now for some not so nice things. Stallman recently tried what I would call a hostile takeover of the glibc development. He tried to conspire behind my back and persuade the other main developers to take control so that in the end he is in control and can dictate whatever pleases him. This attempt failed but he kept on pressuring people everywhere and it got really ugly. In the end I agreed to the creation of a so-called "steering committee" (SC).' 
  13. ^ rms-accused-of-attempting-glibc-hostile-takeover on slashdot.com on August 19, 2001
  14. ^ glibc repo on Sourceware.com
  15. ^ Ulrich Drepper 2007-10-03 06:13:55 UTC "This has nothing to do with "x86 only". All ABIs designed by people who have a bit of understanding require no change. Any change will negatively impact well designed architectures for the sole benefit of this embedded crap. But your own version of the file in the add-on."
  16. ^ Drepper, Ulrich (25. 5. 2005). „Dictatorship of the Minorities”. udrepper.livejournal.com. Pristupljeno 15. 1. 2012. „'Which architectures are worthwhile supporting? [...]. Not only do we have to look for irrelevance (what percentage cares about Vax, PArisc) support, we also have to look at the level of added complexity the support requires. Some ABIs are just deliberately defined to be different from others (see IA-64) which requires huge amounts of effort to be spent. There are also significantly diverging capabilities (e. g., the lack of atomic operations in too many architectures). This far too often causes to unnecessarily crippled code since writing code in a way which allows optimal use in all situations is very difficult. The solution must be to restrict support to only a handful of architectures which are supported in the project. All other support must happen outside the tree and therefore all the work has to be done by the special interest groups. I don't want to say we follow all these points perfectly, but for a big project glibc certainly comes closest to this.' 
  17. ^ Jarno, Aurélien (5. 5. 2009). „Debian is switching to EGLIBC”. aurel32.net. Pristupljeno 15. 1. 2012. „'More friendly upstream (especially with regard to embedded architectures): “Encourage cooperation, communication, civility, and respect among developers” (as opposed to this).' 
  18. ^ timothy (6. 5. 2009). „Debian Switching From Glibc To Eglibc”. Slashdot. Pristupljeno 14. 1. 2012. 
  19. ^ McGrath, Roland (26. 3. 2012). „glibc steering committee dissolving”. Sourceware.org. Pristupljeno 13. 6. 2012. 
  20. ^ Myers, Joseph S. (26. 3. 2012). „GNU C Library development and maintainers”. Sourceware.org. Pristupljeno 13. 6. 2012. 
  21. ^ „Debian is switching (back) to GLIBC”. Aurélien. 19. 6. 2014. Pristupljeno 19. 6. 2014. 
  22. ^ "The GNU C Library machine maintainers."
  23. ^ Bartley, David; Spang, Michael.
  24. ^ "Haiku Source". libroot.so is not part of GNU project and is included in Haiku source code.
  25. ^ Torvalds, Linus (9 January 2002).
  26. ^ "Bionic libc README".
  27. ^ "OpenMoko components" Arhivirano na sajtu Wayback Machine (22. april 2016).
  28. ^ "Re: [Familiar] Which glibc for Familiar 0.8.4 ?"

Spoljašnje veze uredi