Gnulib contains some groups of modules that are not of
"workaround"/"override" type but just regular, platform-independent
library code.

The classical way of distributing such code is through shared
libraries, so that any package can use it — regardless whether
such a package uses gnulib-tool (or even the GNU Build System at all).

* libunistring: This way of deploying library functionality is
  successful. libunistring exists since 2009.

We plan to apply the same principle, creating three new shared
libraries, for use on GNU and non-GNU platforms:

* libargp: This is meant to be the 'argp' module, as a standalone library,
  making this glibc functionality available portably (similar to libintl
  and libiconv).
  Already proposed in
  <https://lists.gnu.org/archive/html/bug-gnulib/2025-11/msg00104.html>.

* libzprintf: is for the *z*printf modules (not glibc functionality).
  The main purpose is to allow any package to make use of *printf
  without INT_MAX limitation, and thus — in many cases — with ENOMEM
  being the only possible cause of failure.

* libgldata: shall contain the container data types
  https://www.gnu.org/software/gnulib/manual/html_node/Ordinary-containers.html
  which have proven to allow optimizing algorithmic code with just tiny
  code changes.

Git repositories for these libraries are already created; see
https://savannah.gnu.org/projects/gnulib/ . They "just" need to be filled;
which is pretty straightforward when looking at libunistring as a template.
Collin has volunteered to take a stab at libargp; I will work on libzprintf
and libgldata.

Bruno




Reply via email to