on the irresponsibility of pursuing C language reform (was: [PATCH 1/2] man/man3/{mem,strn}*(): SYNOPSIS, STANDARDS: Document these as provided by <memory.h>)
Joseph Myers
josmyers@redhat.com
Fri Jul 31 22:42:00 GMT 2026
On Sat, 1 Aug 2026, Alejandro Colomar wrote:
> > When an API has been in <string.h> since 1989, that means documenting
> > <string.h> as the main location for that API - not some other location one
> > person thinks is better and that most of the community has never heard of.
>
> FWIW, the APIs have been in <memory.h> since 1986 in 4.3BSD, and in
> System V they go back further to 1983.
In other words, they were in that header for 6 years, and it's been
implicitly obsolescent by virtue of the standard choice for the 37 years
since then.
Standards involve accepting agreed compromises that might not have been
your first choice, rather than endlessly relitigating past disputes
without new evidence or changed circumstances. In this case, the choice
of where to put the functions in C89 was an agreed compromise that
implicitly obsoleted the previous location, and should have put an end to
any arguments that <string.h> was a bad location for those functions in
the absence of clear new evidence. We have plenty of clear evidence for
confusion about strn*; we don't about mem*.
--
Joseph S. Myers
josmyers@redhat.com
More information about the Libc-alpha
mailing list