glibc - GNU C Library ( GNU library). Glibc is a C library that provides system calls and basic functions such as open, malloc , printf, and so on. The C library is used for all dynamically linked programs. It is written by the Free Software Foundation for GNU Operating Systems. glibc is released under the GNU LGPL license.
| GNU C Library | |
|---|---|
| Type of | Runtime library |
| Developer | and |
| Written on | |
| operating system | Unix-like |
| First edition | |
| Hardware platform | cross-platform |
| Latest version | |
| Readable File Formats | |
| Generated File Formats | |
| condition | Actual |
| License | |
| Website | |
Content
- 1 History
- 1.1 Glibc temporary fork
- 1.2 Version History
- 2 Supported architectures and kernels
- 3 Criticism
- 4 notes
- 5 Links
History
Glibc was originally written by Roland McGrath , who worked for the FSF in the 1980s. In February 1988, FSF introduced glibc as a library with almost the full functionality required by the ANSI C standard [7] .
Glibc temporary fork
In the early 1990s, Linux kernel developers created the glibc fork . This fork, called "Linux libc", was developed separately for several years, versions 2 through 5 were released.
When FSF released glibc 2.0 in 1996, which supported IPv6 , 64-bit data access, multi-threaded applications, compatibility with future versions, and more portable source code [8] , Linux developers interrupted Linux libc development and started using FSF glibc. [9]
The .so file of the latest Linux libc was named (soname) libc.so.5 . The following glibc 2.x used the name libc.so.6 [10] (on the Alpha and IA64 architectures , the name libc.so.6.1 is used instead ). This name is often shortened to libc6 (for example, in the Debian package name), following the usual conventions for libraries.
According to Richard Stallman, changes from Linux libc cannot be transferred back to glibc, because the authorship of this code is unclear, and the GNU project is very strict about keeping copyright records. [eleven]
Version History
| Version | date of | Notes | Adoption |
|---|---|---|---|
| 2.30 | august 2019 | ||
| 2.29 | february 2019 | ||
| 2.28 | august 2018 | ||
| 2.27 | february 2018 | Performance optimization. RISC-V support. | Ubuntu 18.04 |
| 2.26 | august 2017 | Improved performance (per-thread cache for malloc), Unicode 10 support | Ubuntu 17.10 |
| 2.25 | february 2017 | The getentropy and getrandom functions and the header file <sys / random.h> are added. | Fedora 26 |
| 2.24 | august 2016 | Removed some obsolete features | |
| 2.23 | February 2016 | Unicode 8.0 | Fedora 24, Ubuntu 16.04 |
| 2.22 | august 2015 | A library of vector mathematical functions libmvec has been added. | |
| 2.21 | February 2015 | Altera Nios II architecture support | Ubuntu 15.04, Debian experimental, Fedora 22 |
| 2.20 | september 2014 | Fedora 21 | |
| 2.19 | February 2014 | Ubuntu 14.04, eglibc 2.19 on Debian 8 (Jessie), openSUSE 13, SLES 12 | |
| 2.18 | August 2013 | Improved support for the ISO C11 standard . Xilinx MicroBlaze and IBM POWER8 microarchitecture support | Fedora 20 |
| 2.17 | December 2012 | Support for 64-bit ARM architecture | Ubuntu 13.04, RHEL 7 |
| 2.16 | June 2012 | Support x32 ABI , ISO C11 standard , SystemTap | |
| 2.15 | March 2012 | Ubuntu 12.04 and 12.10 | |
| 2.14 | June 2011 | ||
| 2.13 | January 2011 | eglibc 2.13 on Debian 7 (Wheezy) | |
| 2.12 | May 2010 | RHEL 6 | |
| 2.11 | October 2009 | SLES 11, Ubuntu 10.04, eglibc on Debian 6 (Squeeze) | |
| 2.10 | May 2009 | ||
| 2.9 | November 2008 | Ubuntu 9.04 | |
| 2.8 | April 2008 | Ubuntu 8.10 | |
| 2.7 | October 2007 | Debian 5 (Lenny), Ubuntu 8.04 | |
| 2.6 | May 2007 | ||
| 2.5 | September 2006 | Full inotify support | RHEL 5 |
| 2.4 | March 2006 | Standard in LSB 4.0, initial inotify support | SLES 10 |
| 2.3.6 | November 2005 | Debian 4.0 (Etch) | |
| 2.3.5 | April 2005 | SLES 9 | |
| 2.3.4 | December 2004 | Standard in LSB 3.0 | RHEL 4 (Update 5) |
| 2.3.2 | February 2003 | Debian 3.1 (Sarge) | |
| 2.3 | October 2002 | ||
| 2.2.4 | July 2001 | ||
| 2.2 | November 2000 | ||
| 2.1.1 | March 1999 | ||
| 2.1 | February 1999 | ||
| 2.0.95 | July 1998 | ||
| 2.0 | January 1997 | ||
| 1.90 - 1.102 | May 1996 - January 1997 | ||
| 1.01 - 1.09.3 | March 1992 - December 1994 | ||
| 1.0 | February 1992 | ||
| 0.1 - 0.6 | October 1991 - February 1992 |
Supported architectures and kernels
Glibc is used on systems that run many different operating systems, and on different architectures. Glibc is most commonly used on x86 Linux machines . The following architectures are also officially supported: SPARC , Motorola 68k , DEC Alpha , PowerPC , ARM , s390 [12] .
Criticism
glibc is often criticized for its "bloated" and low speed compared to other past libraries [13] . Therefore, several alternative standard C libraries were created ( dietlibc , uClibc , Newlib , musl , Klibc ). Also, the maintainer Ulrich Drapper and his attitude to errors in Glibc are criticized [14] .
In 2009, in popular distributions such as Debian [15] , Ubuntu, and ArkLinux [16], glibc was replaced with an alternative eglibc library, which was initially oriented to embedded systems . Eglibc is a variant of glibc that is more friendly with receiving third-party patches. However, on June 18, 2014, one of the Debian distribution package maintainers announced the reverse replacement of the eglibc library with the glibc library [17] .
Notes
- ↑ https://sourceware.org/ml/libc-announce/2019/msg00001.html
- ↑ https://sourceware.org/git/?p=glibc.git;a=blob_plain;f=timezone/tzfile.h;hb=HEAD
- ↑ 1 2 A. Olson , P. Eggert , K. Murchison 8.1 // The Time Zone Information Format (TZif) - Internet Engineering Task Force , 2019 .-- P. 18. - 34 p. - doi: 10.17487 / RFC8536
- ↑ 1 2 A. Olson , P. Eggert , K. Murchison 8.2 // The Time Zone Information Format (TZif) - Internet Engineering Task Force , 2019 .-- P. 19. - 34 p. - doi: 10.17487 / RFC8536
- ↑ https://sourceware.org/git/?p=glibc.git;a=blob_plain;f=timezone/zic.c;hb=HEAD
- ↑ https://sourceware.org/git/?p=glibc.git;a=blob;f=COPYING.LIB;h=4362b49151d7b34ef83b3067a8f9c9f877d72a0e;hb=1c9a5c270d8b66f30dcfaf1cb2dc18
- ↑ Free Software Foundation. GNU's Bulletin, vol. 1 no. February 4, 1988 .
- ↑ Elliot Lee. A Technical Comparison of glibc 2.x With Legacy System Libraries (English) (2001). Archived on April 11, 2004.
- ↑ 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." Archived January 21, 2013.
- ↑ Fear of Forking essay, see "6. glibc -> Linux libc -> glibc" (inaccessible link) . Date of treatment January 12, 2013. Archived July 18, 2014.
- ↑ Fear of Forking, footnote on Stallman's merge comments . Archived January 21, 2013.
- ↑ MAINTAINERS - glibc wiki . sourceware.org. Date of treatment December 16, 2016.
- ↑ Torvalds, Linus Re: [libc-alpha] Re: [open-source] Re: Wish for 2002 . Mailing List libc-alpha@sources.redhat.com (January 9, 2002). Date of treatment December 16, 2016.
- ↑ Debian Switching From Glibc To Eglibc - Slashdot . linux.slashdot.org. Date of treatment December 16, 2016.
- ↑ Debian is switching to EGLIBC Aurelien's weblog, May 5th 2009
- ↑ Ark Linux switches to eglibc Ark Linux weblog, May 13 2009
- ↑ Debian is switching (back) to GLIBC Aurelien's weblog, June 18th 2014