GNU C library
glibc
|
|
---|---|
Basic data
|
|
developer | Free Software Foundation |
Publishing year | 1987 |
Current version |
2.32 ( August 5, 2020 ) |
operating system | Unix , Linux |
programming language | C. |
category |
Runtime library Standard library |
License | LGPL |
German speaking | Yes |
gnu.org/software/libc/ |
glibc , the GNU C library , is a free implementation of the C standard library developed by the GNU Project together with the GNU Compiler Collection .
The glibc is under the LGPL , which enables the library to be used with non-free software. The glibc library is one of the most fundamental and important libraries of Unix operating systems.
properties
One of the design goals of glibc is portability across different software platforms, so it is also available for a number of operating systems. Some operating systems, including GNU / Linux , use glibc as their official standard C library. Most of the glibc libraries are also written in C, but runtime-critical routines use assembler code.
Functionality
The glibc provides the functionality required in the Single UNIX Specification , POSIX (1c, 1d, and 1j), as well as parts of the ISO C99 , Berkeley Unix (BSD) Interface, the System V Interface Definition (SVID) and the X / Open Portability Guide (XPG) , Issue 4.2, with all extensions usual for XSI (X / Open System Interface) -compliant systems with all X / Open-Unix extensions.
In addition to the functions required by the C standards, it also offers a number of (non-standardized) extensions.
criticism
Its universality and its focus on the x86 - hardware platform is also the most damning criticism of the glibc. Due to the amount of code to be integrated, programs linked against glibc become unnecessarily large and thus potentially slow, other platforms are not supported at all. A number of projects have therefore dedicated themselves to the idea of developing alternatives to glibc, the best known are uClibc and diet libc . By restricting them to the - from the critics' point of view - "essential things", these implementations are significantly smaller for the finished binary programs, but not every glibc program can also be linked against these alternative libraries (e.g. because they use glibc functions, which are missing in the other libraries), or it behaves unexpectedly during execution. The lean libc implementations are particularly useful for embedded systems .
history
Maintainer
The glibc CVS repository has been hosted by Red Hat since 2001 and maintained almost exclusively by Ulrich Drepper ( maintainer ). In addition, current snapshots were made available in the FTP archives and their mirror servers . This was a good match for the community, as one z. B. due to restrictive firewalls cannot access the Internet from anywhere via CVS.
Around 2001 a steering committee was set up for the glibc project, about which there was public controversy. Ulrich Drepper publicly described the process as an attempt at a " hostile takeover " by Richard Stallman , which had failed.
Since May 2009, glibc has been maintained as a Git repository at Sourceware .
glibc 2.3
A number of improvements have been integrated with glibc 2.3, the most important of which is the replacement of the old Linux threading extension linuxthreads with the Native POSIX Thread Library (NPTL), which, like glibc itself, was developed by Red Hat . In cooperation with Linux kernel 2.6 and higher, the NPTL enables a significant increase in threading performance and is POSIX- compliant. Since you wanted to be downward compatible , Linux threads are still available for programs that are dependent on non-POSIX-compliant behavior of the old implementation, but you now have to request it explicitly via a linker directive (e.g. LD_ASSUME_KERNEL=2.4.22
). The glibc itself is also backwards compatible in the most important functions. The lowest common denominator is the functionality of libc6 , which is why the terms glibc and libc6 are often used synonymously for each other (on Alpha and IA-64 architectures, the libraries are called libc6.1 for historical reasons, but offer the same functionality).
EGLIBC fork
Due to a lack of focus of glibc compatibility with embedded systems , especially ARM processors , and problems with the handling of the project manager, Ulrich Drepper in bug reports and submitted corrections one was split off ( fork ) of the project called eglibc created. According to the self-assessment of the developers, however, eglibc is not a classic fork. Instead, the developers want to adopt the changes made by glibc, but also want to accept patches that have not found their way into glibc. With this, eglibc is pursuing the goal of maintaining a friendlier relationship with developers and better supporting embedded processors. Debian was the first major Linux distribution to switch to this implementation, but switched back to glibc in June 2014, as the EGLIBC project considered its mission accomplished and disbanded. Ubuntu uses EGLIBC from version 9.10.
history
As far as possible, the publication dates were taken from the official FTP server.
version | date | Remarks |
---|---|---|
1.0 | March 1992 | |
1.x | 1992-1994 | |
1.09 | November 1994 | |
2.0 | February 1997 | |
2.1 | May 1999 | |
2.2 | January 2001 | Large file support . |
2.3 | October 2002 | Native POSIX Thread Library (NPTL) |
2.4 | March 6, 2006 | |
2.5 | September 29, 2006 | |
2.6 | May 17, 2007 | |
2.7 | October 19, 2007 | |
2.8 | April 11, 2008 | |
2.9 | March 10, 2009 | |
2.10 | May 2009 (?) | Date of version 2.10.1 |
2.11 | November 3, 2009 | |
2.12 | August 2010 (?) | Date of version 2.12.1 |
2.13 | February 1, 2011 (?) | |
2.14 | June 1, 2011 | |
2.15 | March 21, 2012 | |
2.16 | June 30, 2012 | |
2.17 | December 25, 2012 | |
2.18 | August 12, 2013 | |
2.19 | February 8, 2014 | |
2.20 | September 7, 2014 | |
2.21 | February 6, 2015 | |
2.22 | 5th August 2015 | |
2.23 | 19th February 2016 | |
2.24 | 4th August 2016 | |
2.25 | 5th February 2017 | |
2.26 | 2nd August 2017 | |
2.27 | 1st February 2018 | |
2.28 | August 1, 2018 | |
2.29 | January 31, 2019 | |
2.30 | August 1, 2019 | |
2.31 | February 1, 2020 |
See also
literature
- Sandra Loosemore et al .: The GNU C Library: Application Fundamentals (for GNU C Libraries Version 2.3.x) (PDF; 2.8 MB) . GNU Press, Boston, 2004. ISBN 978-1-8821142-2-1 .
Web links
- Official website of the GNU project on glibc
- The GNU C Library Reference Manual (Engl.)
- The glibc wiki
- Comparison of C / POSIX standard library implementations for Linux - glibc 2.19 compared to compact alternatives
Individual evidence
- ↑ Carlos O'Donell: The GNU C Library version 2.32 is now available . August 6, 2020 (accessed August 6, 2020).
- ↑ Bug 5070 - glibc-2.5: ../sysdeps/unix/sysv/linux/check_pf.c:68: make_request: Assertion fails
- ↑ a b Ulrich Drepper: Dictatorship of the Minorities ( English ) udrepper.livejournal.com. May 25, 2005. Retrieved January 15, 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. "
- ↑ Linus Torvalds: Posting to the glibc mailing list , January 9, 2002 7:02:37 PM
- ↑ Jonathan Corbet: A turning point for GNU libc . LWN.net. March 28, 2012 .: " 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. "
- ↑ 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."
- ^ Ulrich Drepper: RMS is at it again . sourceware.org. June 26, 2000. Retrieved November 20, 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 knowabout 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. "
- ↑ Ulrich Drepper: glibc 2.2.4 . sourceware.com. August 15, 2001. Retrieved November 29, 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). "
- ↑ rms-accused-of-attempting-glibc-hostile-takeover on slashdot .com on August 19, 2001
- ↑ Sourceware information on the glibc repo
- ↑ http://www.eglibc.org/home
- ↑ http://www.eglibc.org/faq
- ↑ Aurélien Jarno: Debian is switching to EGLIBC ( English ) aurel32.net. May 5, 2009. Retrieved January 15, 2012: “ More friendly upstream (especially with regard to embedded architectures):“ Encourage cooperation, communication, civility, and respect among developers ”(as opposed to this). "
- ↑ timothy: Debian Switching From Glibc To Eglibc ( English ) Slashdot . May 6, 2009. Retrieved January 14, 2012.
- ↑ Debian is switching (back) to GLIBC ( English ) Aurélien. June 19, 2014. Retrieved June 19, 2014.
- ↑ http://www.eglibc.org/news
- ↑ http://ftp.gnu.org/gnu/glibc/
- ^ Andreas Jaeger: Large File Support in Linux . SUSE GmbH. February 15, 2015.