Paul and Jim, feel free to correct this where I'm wrong...
2024-05-02 Bruno Haible <br...@clisp.org> doc: Add appendix about Gnulib history. * doc/gnulib-history.texi: New file. * doc/gnulib.texi: Include it. diff --git a/doc/gnulib.texi b/doc/gnulib.texi index aa0eb57f62..55cf6ebcc9 100644 --- a/doc/gnulib.texi +++ b/doc/gnulib.texi @@ -89,6 +89,7 @@ * Build Infrastructure Files:: Non-modules files for the build system. * Release Management Files:: Non-modules files for preparing releases. * GNU Free Documentation License:: Copying and sharing this manual. +* Gnulib history:: * Index:: @end menu @@ -7364,6 +7365,12 @@ @include fdl-1.3.texi +@node Gnulib history +@appendix Gnulib history + +@include gnulib-history.texi + + @node Index @unnumbered Index =========================== doc/gnulib-history.texi =========================== @c Gnulib history @c Copyright 2024 Free Software Foundation, Inc. @c Permission is granted to copy, distribute and/or modify this document @c under the terms of the GNU Free Documentation License, Version 1.3 or @c any later version published by the Free Software Foundation; with no @c Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A @c copy of the license is at <https://www.gnu.org/licenses/fdl-1.3.en.html>. In the beginning, Richard Stallman maintained the regular expression engine of GNU and made it available to other GNU packages, such as @code{sed}, @code{awk}, @code{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 @samp{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 @code{stdint.h} in 2004, for @code{stdarg.h}, @code{sys/socket.h}, @code{sys/stat.h} in 2006, for @code{sys/time.h}, @code{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 (@code{<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 @code{posix_spawn} facility was brought to completion on native Windows in 2022, providing the world's first @code{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 @code{mbrtoc32}, were added in 2023. Modules for manipulating the floating-point environment (@code{fenv.h}) were added in 2023. The @samp{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.