GNU C library

from Wikipedia, the free encyclopedia
glibc

Heckert GNU white.svg
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
Older version; no longer supported: 1.0 March 1992
Older version; no longer supported: 1.x 1992-1994
Older version; no longer supported: 1.09 November 1994
Older version; still supported: 2.0 February 1997
Older version; still supported: 2.1 May 1999
Older version; still supported: 2.2 January 2001 Large file support .
Older version; still supported: 2.3 October 2002 Native POSIX Thread Library (NPTL)
Older version; still supported: 2.4 March 6, 2006
Older version; still supported: 2.5 September 29, 2006
Older version; still supported: 2.6 May 17, 2007
Older version; still supported: 2.7 October 19, 2007
Older version; still supported: 2.8 April 11, 2008
Older version; still supported: 2.9 March 10, 2009
Older version; still supported: 2.10 May 2009 (?) Date of version 2.10.1
Older version; still supported: 2.11 November 3, 2009
Older version; still supported: 2.12 August 2010 (?) Date of version 2.12.1
Current version: 2.13 February 1, 2011 (?)
Current version: 2.14 June 1, 2011
Current version: 2.15 March 21, 2012
Current version: 2.16 June 30, 2012
Current version: 2.17 December 25, 2012
Current version: 2.18 August 12, 2013
Current version: 2.19 February 8, 2014
Current version: 2.20 September 7, 2014
Current version: 2.21 February 6, 2015
Current version: 2.22 5th August 2015
Current version: 2.23 19th February 2016
Current version: 2.24 4th August 2016
Current version: 2.25 5th February 2017
Current version: 2.26 2nd August 2017
Current version: 2.27 1st February 2018
Current version: 2.28 August 1, 2018
Current version: 2.29 January 31, 2019
Current version: 2.30 August 1, 2019
Current version: 2.31 February 1, 2020

See also

literature

Web links

Individual evidence

  1. Carlos O'Donell: The GNU C Library version 2.32 is now available . August 6, 2020 (accessed August 6, 2020).
  2. Bug 5070 - glibc-2.5: ../sysdeps/unix/sysv/linux/check_pf.c:68: make_request: Assertion fails
  3. 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. "
  4. Linus Torvalds: Posting to the glibc mailing list , January 9, 2002 7:02:37 PM
  5. 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. "
  6. 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."
  7. ^ 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. "
  8. 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). "
  9. rms-accused-of-attempting-glibc-hostile-takeover on slashdot .com on August 19, 2001
  10. Sourceware information on the glibc repo
  11. http://www.eglibc.org/home
  12. http://www.eglibc.org/faq
  13. 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). "
  14. timothy: Debian Switching From Glibc To Eglibc ( English ) Slashdot . May 6, 2009. Retrieved January 14, 2012.
  15. Debian is switching (back) to GLIBC ( English ) Aurélien. June 19, 2014. Retrieved June 19, 2014.
  16. http://www.eglibc.org/news
  17. http://ftp.gnu.org/gnu/glibc/
  18. ^ Andreas Jaeger: Large File Support in Linux . SUSE GmbH. February 15, 2015.