LWN.net Logo

GNU C library 2.16 released

From:  Carlos O'Donell <carlos_odonell-AT-mentor.com>
To:  libc-alpha <libc-alpha-AT-sourceware.org>, <libc-announce-AT-sourceware.org>, <info-gnu-AT-gnu.org>
Subject:  The GNU C Library version 2.16 is now available.
Date:  Sat, 30 Jun 2012 16:14:38 -0400
Message-ID:  <4FEF5E2E.30005@mentor.com>
Archive-link:  Article, Thread

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

The GNU C Library
=================

The GNU C Library version 2.16 is now available.

The GNU C Library is used as *the* C library in the GNU systems 
and most systems with the Linux kernel. 

The GNU C Library is primarily designed to be a portable 
and high performance C library.  It follows all relevant 
standards including ISO C99 and POSIX.1-2008.  It is also 
internationalized and has one of the most complete 
internationalization interfaces known. 

The GNU C Library webpage is at http://www.gnu.org/software/libc/

Packages for the 2.16 release may be downloaded from:
        http://ftpmirror.gnu.org/libc/
        http://ftp.gnu.org/gnu/libc/

The mirror list is at http://www.gnu.org/order/ftp.html

NEWS for version 2.16
=====================

* The following bugs are resolved with this release:

  174, 208, 350, 369, 411, 706, 766, 887, 2074, 2541, 2547, 2548, 2550,
  2551, 2552, 2553, 2554, 2562, 2563, 2565, 2566, 2570, 2576, 2636, 2678,
  3335, 3440, 3748, 3768, 3866, 3868, 3906, 3976, 3992, 4026, 4108, 4596,
  4822, 5077, 5461, 5805, 5993, 6471, 6486, 6578, 6649, 6730, 6770, 6794,
  6884, 6890, 6894, 6895, 6907, 6911, 6959, 7064, 9739, 9902, 10110, 10135,
  10140, 10153, 10210, 10254, 10346, 10375, 10545, 10716, 10846, 11174,
  11322, 11365, 11451, 11494, 11521, 11677, 11837, 11959, 12047, 12097,
  12193, 12194, 12297, 12298, 12301, 12340, 12354, 12416, 12495, 13058,
  13223, 13361, 13525, 13526, 13527, 13528, 13529, 13530, 13531, 13532,
  13533, 13547, 13551, 13552, 13553, 13555, 13556, 13559, 13563, 13566,
  13576, 13579, 13583, 13592, 13594, 13613, 13618, 13637, 13656, 13658,
  13673, 13691, 13695, 13704, 13705, 13706, 13718, 13726, 13738, 13739,
  13743, 13750, 13758, 13760, 13761, 13775, 13786, 13787, 13792, 13806,
  13824, 13840, 13841, 13844, 13846, 13848, 13851, 13852, 13854, 13871,
  13872, 13873, 13879, 13882, 13883, 13884, 13885, 13886, 13892, 13895,
  13908, 13910, 13911, 13912, 13913, 13914, 13915, 13916, 13917, 13918,
  13919, 13920, 13921, 13922, 13923, 13924, 13926, 13927, 13928, 13938,
  13941, 13942, 13954, 13955, 13956, 13963, 13967, 13968, 13970, 13973,
  13979, 13983, 13986, 13996, 14012, 14027, 14033, 14034, 14036, 14040,
  14043, 14044, 14048, 14049, 14050, 14053, 14055, 14059, 14064, 14075,
  14080, 14083, 14103, 14104, 14109, 14112, 14117, 14122, 14123, 14134,
  14153, 14183, 14188, 14199, 14210, 14218, 14229, 14241, 14273, 14277,
  14278

* Support for the x32 ABI on x86-64 added.  The x32 target is selected by
  configuring glibc with:
        BUILD_CC='gcc' CC='gcc -mx32' CXX='g++ -mx32'
  Visit <http://sites.google.com/site/x32abi/> for more x32 ABI info.
  Implemented by H.J. Lu.
  
* ISO C11 support:

  + define static_assert

  + do not declare gets

  + declare at_quick_exit and quick_exit also for ISO C11

  + aligned_alloc.  NB: The code is deliberately allows the size parameter
    to not be a multiple of the alignment.  This is a moronic requirement
    in the standard but it is only a requirement on the caller, not the
    implementation.

  + timespec_get added

  + uchar.h support added

  + CMPLX, CMPLXF, CMPLXL added

  Implemented by Ulrich Drepper.

* Support for the IA-64 has been moved to ports.

* Remove support for anything but ELF binary format

* Checking versions of poll, ppoll added.
  Implemented by Ulrich Drepper.

* More generic and 64-bit performance optimizations to math functions.
  Implemented by Ulrich Drepper.

* New configure option --enable-obsolete-rpc makes the deprecated RPC
  headers and functions available at compile time as they were before
  version 2.14.  This option will be removed at some time in the future
  after the TI-RPC library becomes fully sufficient for the needs of
  existing applications.

* Compatibility code for Linux kernel versions before 2.4 has been removed.
  Note that glibc is not expected to work with any Linux kernel version
  before 2.6.

* New header <sys/auxv.h> and function getauxval allowing easy access to
  the AT_* key-value pairs passed from the Linux kernel.  The header also
  defines the HWCAP_* bits associated with the AT_HWCAP key.

* New locales: mag_IN

* New configure option --enable-systemtap builds SystemTap static probes
  into libc for setjmp and longjmp and into libpthread for various operations.
  So far the setjmp/longjmp probes and some of the libpthread probes are
  provided only for i*86 and x86_64.
  Implemented by Roland McGrath and Rayson Ho.

* Optimized expf for x86-32 and x86-64.  Implemented by Liubov Dmitrieva.

* More optimized functions for PowerPC.  Implemented by Adhemerval Zanella
  and Will Schmidt.

* More optimized functions for SPARC.  Implemented by David S. Miller.

* Improved support for cross-compilation, especially bootstrap builds
  without a previously built glibc.

* Ports for the TILE-Gx and TILEPro families of processors.  Contributed by
  Chris Metcalf from Tilera.

* Support for the old ARM ABI has been removed from ports.  Only the EABI is
  now supported for ARM processors.

* The hard-float variant of the ARM EABI now uses /lib/ld-linux-armhf.so.3
  as the name of the dynamic linker, to distinguish it from the
  /lib/ld-linux.so.3 dynamic linker used for the base EABI.

* Support for CRIS has been removed from ports.

* A new class of installed header has been documented for low-level
  platform-specific functionality.  PowerPC added the first instance with a
  function to provide time base register access.  Contributed by Tulio
  Magno Quites Machado Filho.

* ix86 configurations now install header files that are consistent with
  what x86-64 configurations install.  These same header files can be used
  for -m32, -m64, or -mx32 builds.
  Contributed by H.J. Lu.

* Math library bug fixes.  A thorough audit of all open math library bugs was
  conducted by Joseph Myers.  Significant progress was made on many math
  library bugs resulting in more accurate exceptions and function results.
  Many thanks to all those that contributed including Andreas Jaeger for his
  patch review and work on the x87 trigonometric instruction issues.

* Timezone data is no longer installed.  Timezone-related binaries and scripts
  will continue to be installed.  Users should obtain their timezone data from
  their distribution provider or from the tzdata package at
  <ftp://munnari.oz.au/pub/>.

Contributors
============

This release was made possible by the contributions of many people.
The maintainers are grateful to everyone who has contributed
changes or bug reports.  These include:

Adhemerval Zanella
Allan McRae
Andreas Jaeger
Andreas Krebbel
Andreas Schwab
Antoine Balestrat
Anton Blanchard
Aurelien Jarno
Carlos O'Donell
Carlos Sánchez de La Lama
Chandan Kumar
Chris Demetriou
Chris Leonard
Chris Metcalf
Chung-Lin Tang
Cyril Hrubis
David S. Miller
Dwayne Grant McConnell
Fabrice Bauzac
H.J. Lu
Ian Wienand
Jakub Jelinek
Jan Kratochvil
Jeff Law
Jim Meyering
Joseph Myers
Kai Tietz
Kaz Kojima
Kees Cook
Liubov Dmitrieva
Marek Polacek
Markus Trippelsdorf
Maxim Kuvyrkov
Michael Matz
Mike Frysinger
Nick Bowler
Nicolas Boulenguez
Nix
Paul Bolle
Paul Eggert
Paul Pluzhnikov
Petr Baudis
Pino Toscano
Rafe Kettler
Rayson Ho
Richard Henderson
Robert Millan
Roland Mc Grath
Roland McGrath
Ryan S. Arnold
Samuel Thibault
Serkan Kaba
Siddhesh Poyarekar
Simon Josefsson
Stanislav Brabec
Stephen Compall
Thomas Schwinge
Tom de Vries
Tulio Magno Quites Machado Filho
Ulrich Drepper
Will Schmidt

Cheers,
Carlos.
- -- 
Carlos O'Donell
Mentor Graphics / CodeSourcery
carlos_odonell@mentor.com
carlos@codesourcery.com
+1 (613) 963 1026

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.9 (MingW32)

iQEcBAEBAgAGBQJP714uAAoJECXvCkNsKkr/hjoH/1qW1xdBaeN84tmYJj8yLCgS
mUPahFOjcaKoyPeEpl2teZz4GgKMsFYO5JflKn8u5xsgO8WPf1lyM3Dyj15QcJf7
3n80KeaN/ZUv/nxlQbTcjlGai0pmOacZz8/9VjAhLboHl5wSeifVI4T4+9vOdh3K
YDLs/O+S4nA3VOzX7ictr2L5QBTYaVj4P228PYA3olescVznbGOwV+1KrmlCN2eN
LtH5q/qR5Ae0/xERmsBgOSQ3A+16P1DY5Ss2FnUwnU+6bHTb9uLd55BDbKiP1VsT
0HTURjjzKWAQFD4wxe+/bjGjVZSwF73F2Ulol7id/GPP4rkmKQAugsOw5sCgtMs=
=r7E7
-----END PGP SIGNATURE-----

_______________________________________________
GNU Announcement mailing list <info-gnu@gnu.org>
https://lists.gnu.org/mailman/listinfo/info-gnu



(Log in to post comments)

GNU C library 2.16 released

Posted Jul 1, 2012 16:11 UTC (Sun) by scientes (guest, #83068) [Link]

> "and most systems with the Linux kernel. "

Like the line I pointed out in the GTK+ release, this one also seems like it should be dropped. While glibc remains the best C library out there, there *are* a great number of Linux kernel devices running android, that are *not* using it.

GNU C library 2.16 released

Posted Jul 1, 2012 18:16 UTC (Sun) by khim (subscriber, #9252) [Link]

And don't forget routers with uClibc-based firmware! It's hard to say how many of them out there, but this number is probably larger then number of GLibC-based systems (but probably smaller then number of Android-based systems).

GNU C library 2.16 released

Posted Jul 2, 2012 1:41 UTC (Mon) by fjf33 (subscriber, #5768) [Link]

I guess it depends on how one defines the word ´most´. Most by quantity deployed? Most by distribution?

GNU C library 2.16 released

Posted Jul 2, 2012 17:19 UTC (Mon) by drag (subscriber, #31333) [Link]

If you define 'most' by 'what C library is used by the largest number of computers running Linux', which would be the common use of the term.

It may not be true anymore.

The best guess for numbers of Android devices out there is by people activating their Google Apps (which is separate from Android OS proper) with Google. Which is about 1,000,000 per day.

Then there are any number of embedded devices using Android. Previously Linux + Java was the premier embedded development stack for embedded development with Linux, but I am sure that has already been eclipsed by people moving to Android, since it's very similar and you don't have to deal with the crap Oracle inflicts on java customers.

Traditionally speaking embedded use of computers have always dwarfed the use of computers in the enterprise or at home.

So it's a tough call to make.

I expect, not counting Linux embedded, that Android sales within a week outstrip the total number of Linux desktop/workstation users currently in existence. And within a month or two the new users of Android outstrip Linux usage in enterprise servers. Maybe. Just guestimating.

But all in all it is clear that running away from GNU politics and completely abandoning all pretense of using the traditional Linux distribution model was a HUGE win for Google and all Android developers in a very practical manner.

And before we get all equivocating about what is 'Linux' and how Android isn't really 'Linux', keep in mind that the GNU folks have always maintained a strict definition of Linux as a 'kernel'. A kernel that Android certainly uses.

GNU C library 2.16 released

Posted Jul 1, 2012 17:27 UTC (Sun) by simlo (subscriber, #10866) [Link]

> Compatibility code for Linux kernel versions before 2.4 has been removed.
> Note that glibc is not expected to work with any Linux kernel version
> before 2.6.

Damn! So you need to upgrade to a 2.6 kernel to use C++11? 2.4 is still used in many embedded applications.

GNU C library 2.16 released

Posted Jul 1, 2012 17:58 UTC (Sun) by istenrot (subscriber, #69564) [Link]

Almost a decade has passed. I suppose there is no more reasons not to upgrade embedded systems to Linux 2.6/3.x. If somebody has not yet proted their proprietary user space code to 2.6 kernel, it's solely theirs fault.

GNU C library 2.16 released

Posted Jul 2, 2012 6:27 UTC (Mon) by simlo (subscriber, #10866) [Link]

The problem is not user space code - it is drivers. It takes a lot of work to move drivers to a newer kernel series when they are not included in Linus' source tree.

An why run new user space code on old systems? To share code between old and new projects, unless you want to keep the new systems stuck at old standards, you also have to upgrade the old systems. And upgrading the kernel is a lot of work, upgrading libc isn't as there should be no problem in recompiling the user space programs.

And yes, C++11 != C11 as commented by others, but I guess it will get difficult to compile a new gcc against an old libc very soon.

GNU C library 2.16 released

Posted Jul 2, 2012 14:19 UTC (Mon) by jwakely (subscriber, #60262) [Link]

Why would gcc want to do that? You guess wrong.

GNU C library 2.16 released

Posted Jul 1, 2012 20:40 UTC (Sun) by rgmoore (subscriber, #75) [Link]

Who is seriously planning on running a bleeding-edge userspace on top of an ancient kernel? Is there ever any justification for trying to maintain kernel stability while upgrading libc that much? Or is this just a sign that I shouldn't keep trying to run my sarcasmometer on Fedora Core 1?

GNU C library 2.16 released

Posted Jul 2, 2012 21:32 UTC (Mon) by mathstuf (subscriber, #69389) [Link]

> Or is this just a sign that I shouldn't keep trying to run my sarcasmometer on Fedora Core 1?

I run mine on a two-headed coin. Boot up time in the microseconds too.

GNU C library 2.16 released

Posted Jul 1, 2012 21:06 UTC (Sun) by engla (guest, #47454) [Link]

ISO C11 is not C++11. C, not C++.

GNU C library 2.16 released

Posted Jul 1, 2012 21:56 UTC (Sun) by nix (subscriber, #2304) [Link]

In practice kernels before 2.4 were already not working. This was just admitting the already-existing state of affairs in the release notes, and starting the fairly long process of ripping out significant quantities of incredibly obsolete and broken 2.0--2.4 support code.

GNU C library 2.16 released

Posted Jul 1, 2012 22:46 UTC (Sun) by slashdot (guest, #22014) [Link]

Well, in the announcement they say that they removed code for kernels *BEFORE* 2.4, not for 2.4.

So it appears that there's still code for 2.4, but nobody cares enough to test it, and thus it's probably broken.

Or they got the announcement wrong perhaps.

Anyway, I'm not sure what this has to do with C++11, which is distinct from C11.

GNU C library 2.16 released

Posted Jul 1, 2012 23:49 UTC (Sun) by jzbiciak (✭ supporter ✭, #5246) [Link]

Compatibility code for Linux kernel versions before 2.4 has been removed. Note that glibc is not expected to work with any Linux kernel version before 2.6.

I read that as "2.4 might work, might not. You're on your own." That is, compatibility code for kernels prior to 2.4 is simply gone, breaking those ancient releases explicitly. Additionally anything before 2.6 is not really supported or expected to work, though it might. They haven't gone to pains to explicitly break that yet.

At least, that's how I read it.

GNU C library 2.16 released

Posted Jul 2, 2012 9:25 UTC (Mon) by nix (subscriber, #2304) [Link]

It's more that the code for 2.4 is more difficult to remove, so that removal was put off until after the 2.16 release.

GNU C library 2.16 released

Posted Jul 2, 2012 6:17 UTC (Mon) by simlo (subscriber, #10866) [Link]

C++11 != C11 ofcouse. Sorry, I missread the anouncement.

Copyright © 2012, Eklektix, Inc.
Comments and public postings are copyrighted by their creators.
Linux is a registered trademark of Linus Torvalds