This is the mail archive of the mailing list for the glibc project.

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

glibc 2.1

Release 2.1 of the GNU C library is now available at

and all the mirror sites around the globe.

The new files are


People outside the US must *not* download the crypt add-on from this
server.  Instead get the file from

There is no localedata add-on anymore as there was in glibc 2.0.  Don't
use the add-on from glibc 2.0, the necessary data already comes with the
main tar file.

This release of the library runs on the following targets:

	*-*-gnu			GNU Hurd
	i[3456]86-*-linux-gnu	Linux-2.x on Intel
	m68k-*-linux-gnu	Linux-2.x on Motorola 680x0
	alpha-*-linux-gnu	Linux-2.x on DEC Alpha
	powerpc-*-linux-gnu     Linux and MkLinux on PowerPC systems
	sparc-*-linux-gnu	Linux-2.x on SPARC
	sparc64-*-linux-gnu	Linux-2.x on UltraSPARC
	arm-*-none		ARM standalone systems
	arm-*-linux		Linux-2.x on ARM
	arm-*-linuxaout		Linux-2.x on ARM using a.out binaries

Work on ports to mips-*-linux-gnu, sparc-sun-solaris, and mips-sgi-irix6
are under way but need more work.  Help to finish the ports is welcome.

The 2.1 release is the result of two years of work and includes
thousands of changes, improvements, and bug fixes.  It is therefore
advised that all users of glibc 2.0 upgrade to this version.

*BUT*: updating the C library is no trivial task and it is very easy
to damage one's system.  Therefore, persons who do not exactly know
what to do, should consider using a binary distribution instead, when
they become available.  All major Linux distributors will hopefully
base their next release on glibc 2.1.  Don't tell us you haven't been
warned.  Another reason why not everybody should think about compiling
glibc is the disk and CPU requirements: on Intel platforms the full
build requires about 290MB plus the space you need to install it.
This number is probably higher on RISC platforms.  During the
compilation the compiler will need large amounts of virtual memory.
We are talking about 100MB on Intel and 200MB on Alpha.  If using the
`-j' option of make this numbers grow linearly.  Compiling takes more
than 4 hours on a i586@133, and still 45 minutes on a 2xi686@233.  See
the FAQ file for more numbers.

In case you decide to compile glibc yourself you need to read the file
INSTALL.  It will explain among other things which tools are
necessary.  The most important one is the compiler.  Although other
versions might work it is recommended to get egcs 1.1.1 to compile
glibc since it is the only version of gcc which proved to work for all
the supported platforms.  In case of a problem during the compilation
with a compiler other than egcs 1.1.1 get the recommended version
first (at  This is especially true for gcc which (some people believe) is a usable compiler.  But in fact
it is extremely buggy and will definitely fail to compile glibc on
every platform.

The 2.1 release should be binary compatible with the 2.0 release.  All
programs should continue to run.  There are only a few exceptions:

- some shared libraries have to be updated as well.  They are using
  details from the libc.  These libraries include the C++ library
  (libstdc++) and the curses library.  See the FAQ for more information.
  Programs using these libraries are not effected.

- some programs use *internal* symbols of the C library.  These names of
  these symbols all start with an underscore and the reason why these
  symbols are "internal" is because they change or might fall away in
  new versions of the library.  And this did happen a lot.  Don't even
  think about complaining on the libc lists about this, the programmers
  of these applications made the errors.  We have now mechanisms in
  place which will prevent this from happening again even in the presence
  of programmers unwilling to follow the rules.

For people using old pre-2.0 snapshots (this particularly affects
PowerPC users, for a while the standard glibc on powerpc was a 961212
snapshot), note that all 2.x versions are binary incompatible with
pre-2.0 snapshots.  In general, binary compatibility is not guaranteed
if you use unreleased versions of glibc.

Problems should all be reported using the `glibcbug' shell script.  Simply
run this script, fill out the information and you are set.  If at the time
you start the script it complains like this

	/usr/bin/glibcbug: emacs: command not found

simply set one of the environment variables EDITOR and VISUAL (this should
happen on every system automatically):

	env EDITOR=vi glibcbug

Before sending a bug report make sure you have read the BUGS and the
FAQ file which come with the glibc sources.  You won't even get an
answer if it is obvious you haven't read these files.  It is also
helpful to scan the appropriate newsgroups and mailing lists to see
whether somebody else already had this problem.  There is another
thing we don't want to hear about: the size.  glibc is big, but this
is necessary for a multi-platform Unix library.

Over the last two years many people helped by contributing code,
reporting bugs, sending patches.  I cannot mention them all here but
sure want to mention those who continuously helped all the time.  In
purely random order:

	Andreas Jaeger
	Andreas Schwab
	H.J. Lu
	Philip Blundell
	Richard Henderson
	Geoff Keating
	Zack Weinberg
	Roland McGrath
	Mark Kettenis
	Thorsten Kukuk
	Christian Gafton

The list with the changes below contains a few more names.  Please
remember those names for the day you have the opportunity to thank

Finally, the (certainly incomplete) list of changes:

* Richard Henderson corrected size of struct timeval on Linux/Alpha to
  conform to POSIX member type requirements.  Symbol versions have been
  adjusted as needed within the library, and for direct use by applications,
  but there is potential for problems if third-party libraries use
  struct timeval as part of their interface.  This does not present
  a problem for X and other "essential" system libraries.

* An additional locale model to support C++ Standard Library locale
  model and probably more was implemented by Ulrich Drepper.

* Eric Youngdale and Ulrich Drepper implemented versioning of objects on
  symbol level.

* Miles Bader provided the `argp' function family to support hierachical
  command line argument parsing, layered on top of getopt.

* strtod accepts new hexadecimal floating-point format from ISO C 9X.

* printf has two new specifiers %a and %A to print hexadecimal flaoting-point

* scanf recognizes the %a and %A format for scanning floating point numbers.

* the new headers <stdint.h> and <inttypes.h> from ISO C 9X provides
  information and interfaces for the available integer types.

* about 130 new math functions were added to implement the ISO C9x math

* the new header <complex.h> contains definitions of the complex math
  functions from ISO C 9X.

* the new header <tgmath.h> defines generic macros to use complex or
  real valued functions.

* Thorsten Kukuk provided an implementation for NIS+, securelevel 0, 1 and 2.

* Andreas Jaeger provided a test suite for the math library.

* Mark Kettenis implemented the utmpx interface and an utmp daemon.

* Ulrich Drepper added character set conversion functions (iconv).

* Optimized string functions have been added.

* The localedata addon is now part of glibc.

* An implementation of profiling shared libraries was added by Ulrich Drepper.

* Thorsten Kukuk and Ulrich Drepper provided an implementation for a caching
  daemon for NSS (nscd).

  Missing a better place here are some numbers on improvements.  Under
  Linux 2.1.125 un-tar-ing the kernel sources takes

				  user	system	   wall

    using local files		12.19s	 6.88s	 22.91s

    using NIS			13.92s	 8.91s	 26.34s

    using NIS & nscd		10.37s	 7.34s	 25.30s

    using NIS+			27.57s	30.37s  640.46s

    using NIS+ & nscd           10.25s   7.83s   26.51s

    using NIS & old nscd [1]	13.83s	 8.32s	 29.60s

  Keep in mind that non-namelookup related operations dominate above times.
  It was just a common complain that using NIS+ unpacking the kernel is
  horribly slow.

  [1] The old nscd implementation is not available anymore since it was
  distributed with glibc up to version 2.0.98 and thus is now replaced.

* Tim Waugh provided an implementation of the POSIX.2 wordexp function family.

* Mark Kettenis provided a Hesiod NSS module.

* The ELF dynamic loader knows how to process dynamic string tokens ($ORIGIN
  and $PLATFORM) in RPATHs and similar strings (Ulrich Drepper).

* rcmd can now handle netgroups (Dick Streefland).

* A port to the ARM was contributed by Phil Blundell, Pat Beirne and Scott

* Support for the IPv6 protocol has been added to the socket API, as per the
  latest draft standards.

* Support for Linux 2.2 has been added.

---------------.      drepper at  ,-.   1325 Chesapeake Terrace
Ulrich Drepper  \    ,-------------------'   \  Sunnyvale, CA 94089 USA
Cygnus Solutions `--' drepper at   `------------------------

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]