Debian is switching (back) to GLIBC
Five years ago Debian and most derivatives switched from the standard GNU C Library (GLIBC) to the Embedded GLIBC (EGLIBC). Debian is now about to take the reverse way switching back to GLIBC, as EGLIBC is now a dead project, the last release being the 2.19 one. At the time of writing the glibc package has been uploaded to experimental and sits in the NEW queue.
EGLIBC is dead for a good reason: the GLIBC development has changed a
lot in the recent years, due to two major events: Ulrich Drepper
leaving Red Hat and the
GLIBC development, and the GLIBC steering committe
self-dissolving.
This has resulted in a much more friendly development based on team work
with good cooperation. The development is now based on peer review,
which results in less buggy code (humans do make mistakes). It has also
resulted in things that were clearly impossible before, like using the
same
repository
for all architectures, and even getting rid of the ports/
directory.
Before we used to have two sets of architectures, the main ones in the
glibc repository with
architectures like x86, SuperH or SPARC, and the secondary ones in the
glibc-ports
repository
with architectures like ARM or MIPS. As you can see the separation was
quite arbitrary, and often leaded to missing changes on the secondary
architectures. We also got real stable branches, with regular fixes.
The most important EGLIBC features have been merged to GLIBC, including
for example the use of non-bash but POSIX shell, or the renaming of
reserved keywords. The notable exception is the support for configurable
components, which we originally planned to use for
Debian-Installer, by
building a smaller flavor using -Os
and without NIS and RPC support.
At the end we never worked on that, and it seems that the hardware
targeted by Debian has grown faster than the GLIBC size, so that is not
really a big loss. At the end, we ended up with only 5 missing patches
from the EGLIBC tree:
- Installation of *_pic.a files for use of mklibs in debian-installer
- Dynamic reload of /etc/resolv.conf
- Installation of headers during bootstrapping
- Workarounds for PowerPC 8xx CPUs
- Access to FPSCR on SH4
The package names are unchanged (except the source package and the binary package containing the sources) so the transition is fully transparent for the users.
I would like to thank all the CodeSourcery employees who worked on EGLIBC, with a special thank to Joseph Myers who spent countless hours to merge the most important EGLIBC changes back to GLIBC, and sent regular emails about the merge status. I would also like to thanks all the people on the GLIBC side that made the change to happen, and all persons participating in the GLIBC development.