Next: , Previous: , Up: GNU Gnulib   [Contents][Index]


Appendix B Gnulib history

In the beginning, Richard Stallman maintained the regular expression engine of GNU and made it available to other GNU packages, such as sed, awk, grep, so that they could use the same engine. Recall that there was no GNU C library at the time.

A couple of years later, Jim Meyering, who was maintaining the shell utilities, the file utilities, and the text processing utilities, collected the common parts of these three packages in the same repository. Paul Eggert joined in, with code coming from a few GNU packages that he maintained, and so did Bruno Haible, with reusable code from the GNU gettext package.

As they cared for portability, many changes in the C code were accompanied by changes in the build infrastructure. Copying these changes into packages — it was all done manually — became cumbersome. So they wrote a program, called ‘gnulib-tool’, that does this job of copying the requested shared code into a particular package. This was in 2002.

Providing a substitute / override for a system function was relatively easy. Providing a substitute / override for a system header file was significantly harder, but was done successively: for stdint.h in 2004, for stdarg.h, sys/socket.h, sys/stat.h in 2006, for sys/time.h, wchar.h in 2007, and the development of the corresponding idioms took until 2010.

Unicode string modules (that make up GNU libunistring) were added in 2007–2009.

Modules for numeric functions (<math.h>) were added in 2010–2011.

Modules for container data structures were added between 2006 and 2018.

Versatile bit-set modules were added in 2018.

POSIX threads on non-POSIX platforms, as well as ISO C threads on all platforms, were added in 2019.

The posix_spawn facility was brought to completion on native Windows in 2022, providing the world’s first posix_spawn implementation for this platform.

Support for Android was added in 2023 and immediately used by GNU Emacs for Android.

Functions for working with Unicode characters in multibyte representation, based on mbrtoc32, were added in 2023.

Modules for manipulating the floating-point environment (fenv.h) were added in 2023.

The ‘gnulib-tool’ rewrite in Python, that was started by Dmitry Selyutin in 2012 but lay unfinished for many years, was completed by Collin Funk and Bruno Haible in 2024.


Next: Index, Previous: GNU Free Documentation License, Up: GNU Gnulib   [Contents][Index]