What to do about gnulib libio dependencies?
Eric Blake
eblake@redhat.com
Tue Aug 21 18:16:00 GMT 2018
On 08/21/2018 12:54 PM, Paul Eggert wrote:
> Zack Weinberg wrote:
>
>> I think it would clarify this discussion if you gave concrete examples
>> of existing programs that use these functions, and described what they
>> are doing with them that can't be accomplished using the standard
>> interfaces.
>
> No GNU utility cares about wide streams that I know of. Wide streams
> were a mistake as far as I can tell.
Agreed; and libunistring actively documents against using wide functions:
https://www.gnu.org/software/libunistring/manual/libunistring.html#The-wchar_005ft-mess
>
> As I recall, the most important user of the gnulib libio dependencies is
> GNU m4, which uses freadptr and freadseek for efficiency. GNU 'cut' is
> in the same camp, though it's less important.
>
> GNU coreutils uses freadahead when deciding whether to fflush stdin,
> although I think this is a relatively minor optimization and wouldn't be
> a major loss if it went away.
>
> I'll CC: this to Bruno Haible, who has more experience in this area.
> Bruno, the proposal on the table is for glibc to remove the undocumented
> features that let Gnulib implement fbufmode, freadahead, freadptr,
> freadseek, and fseterr; or instead, for glibc to export these features
> somehow in a way that Gnulib can access in a documented way. Please see
> the thread starting here:
>
> https://sourceware.org/ml/libc-alpha/2018-08/msg00412.html
For historical comparison, DragonflyBSD exported __sreadahead as an
interface precisely so that they could make FILE* become more opaque,
while still providing the optimizations that gnulib relies on via these
modules:
https://lists.gnu.org/archive/html/bug-gnulib/2008-04/msg00282.html
--
Eric Blake, Principal Software Engineer
Red Hat, Inc. +1-919-301-3266
Virtualization: qemu.org | libvirt.org
More information about the Libc-alpha
mailing list