[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: How can Autoconf help with the transition to stricter compilation de

From: Paul Eggert
Subject: Re: How can Autoconf help with the transition to stricter compilation defaults?
Date: Thu, 10 Nov 2022 12:19:23 -0800
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.3.3

On 2022-11-10 09:16, Zack Weinberg wrote:
Changes to handle C23 built-in ‘bool’ better are under development but
the design has not yet been finalized.

[I'm cc'ing this to bug-gnulib too.]

To my mind this is the biggest outstanding issue in Autoconf as far as C23 goes, as the upgrade path for Autoconf's existing bool support is not entirely clear. As Florian mentioned, distros can't assume Autoconf upgrades when building other packages; that being said, we should get Autoconf's bool support fixed sooner rather than later as bool hassles will remain until Autoconf is fixed and these fixes are propagated to Autoconf's users.

Here's the main Autoconf issue issue with bool. Traditionally, Autoconf supported K&R C, C89, C99, etc. At some point (I'm not sure when), Autoconf started requiring C89 or later. Is it now OK for Autoconf to require C99 or later, as far as bool is concerned? If so, that'll considerably simplify the ongoing maintenance hassle for bool.

Requiring C99-or-later bool is the option that Gnulib has taken. Its 'stdbool' module and its gl_C_BOOL macro assumes C99 or later, and as far as I know no Gnulib-using package is using Gnulib's 'stdbool-c99' module which we kept around in case somebody still needed bool to work atop a C89 system. (We considered supporting C23 bool atop C89 but it was too painful.)

If we follow Gnulib's lead, Autoconf will generate a config.h that does "#include <stdbool.h>" on pre-C23 systems, and this config.h will not not work on pre-C99 systems. This of course could in theory break some programs, just as compiling them with C23 can break them. But I don't see any better option at this point. And besides, what package outside of a museum still requires C89 and don't work with C99?

reply via email to

[Prev in Thread] Current Thread [Next in Thread]