From 8d42dedb15b94c1b10aaa34f5b21243ef225893b Mon Sep 17 00:00:00 2001 From: Bruno Haible Date: Thu, 2 May 2024 20:10:14 +0200 Subject: [PATCH] doc: Add appendix about Gnulib history. * doc/gnulib-history.texi: New file. * doc/gnulib.texi: Include it. --- ChangeLog | 6 ++++ doc/gnulib-history.texi | 64 +++++++++++++++++++++++++++++++++++++++++ doc/gnulib.texi | 7 +++++ 3 files changed, 77 insertions(+) create mode 100644 doc/gnulib-history.texi diff --git a/ChangeLog b/ChangeLog index 2257857847..8192b43aa7 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2024-05-02 Bruno Haible + + doc: Add appendix about Gnulib history. + * doc/gnulib-history.texi: New file. + * doc/gnulib.texi: Include it. + 2024-05-02 Collin Funk gnulib-tool.py: Don't leave temporary directories on exit. diff --git a/doc/gnulib-history.texi b/doc/gnulib-history.texi new file mode 100644 index 0000000000..ed8e0ac3ee --- /dev/null +++ b/doc/gnulib-history.texi @@ -0,0 +1,64 @@ +@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 . + +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{}) 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. 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 @@ Documentation License''. * 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 @@ This is a helper program that mimics the @code{ncftpput} program used by @include fdl-1.3.texi +@node Gnulib history +@appendix Gnulib history + +@include gnulib-history.texi + + @node Index @unnumbered Index -- 2.39.5