From: "k0kubun (Takashi Kokubun) via ruby-core" Date: 2025-07-14T21:11:37+00:00 Subject: [ruby-core:122756] [Ruby Bug#21340] Bump autoconf version to properly handle C23 bool/stdbool defines Issue #21340 has been updated by k0kubun (Takashi Kokubun). Backport changed from 3.2: WONTFIX, 3.3: DONE, 3.4: REQUIRED to 3.2: WONTFIX, 3.3: DONE, 3.4: DONE ruby_3_4 commit:ca1ea9578485c27daac1e16107cb48551a58d8ad. ---------------------------------------- Bug #21340: Bump autoconf version to properly handle C23 bool/stdbool defines https://bugs.ruby-lang.org/issues/21340#change-114035 * Author: christo (Chris Alberti) * Status: Closed * ruby -v: 3.4.3, 3.5.0, any built with GCC 15 (so C23) * Backport: 3.2: WONTFIX, 3.3: DONE, 3.4: DONE ---------------------------------------- Right now if I install a recent release using rbenv or asdf, or manually download the latest release 3.4.3 or the preview 3.5.0, the included `./configure` seems to have been generated by an old version of autoconf. After running `./configure`, I end up with a `config.h` containing `HAVE__BOOL = 1`, but _not_ containing `HAVE_STD_BOOL_H = 1`. If I grab the source from github (latest, or 3.4.3 tag) and run autoconf myself (I'm currently on 2.72), I get a config.h with both `HAVE__BOOL = 1` and `HAVE_STD_BOOL_H = 1` defined. This ends up meaning that in the official releases, Ruby's internal/stdbool.h skips using and moves on to defining bool/true/false itself. This is not valid as of C23 (which is now default in GCC 15). On my end I found this because I was seeing build failures in the geoip2_compat gem related to issues with the bool type definition on GCC 15. I submitted a patch to the gem's repo for a workaround (include before ruby.h), but this might come back to bite other native extension gem compiles as well. It looks like autoconf was patched to fix the HAVE_STD_BOOL_H define for C23 in [this commit](https://git.savannah.gnu.org/gitweb/?p=autoconf.git;a=commitdiff;h=6dcecb780a69bd208088d666b299e92aa7ae7e80;hp=f6657256a37da44c987c04bf9cd75575dfca3b60). I can tell that the ./configure included in the official ruby releases was created with an older version of autoconf because I still see the line: ``` Check for stdbool.h that conforms to C99 ``` rather than the updated version (which appears in my ./configure created with autoconf 2.72) ``` Check for stdbool.h that conforms to C99 or later ``` I'd happily submit a PR if the setup around packaging the official releases is public and someone can point me to it! I wasn't able to find it on a quick search. ---Files-------------------------------- config.h_GCC14 (14.7 KB) config.h_GCC15 (14.7 KB) -- https://bugs.ruby-lang.org/ ______________________________________________ ruby-core mailing list -- ruby-core@ml.ruby-lang.org To unsubscribe send an email to ruby-core-leave@ml.ruby-lang.org ruby-core info -- https://ml.ruby-lang.org/mailman3/lists/ruby-core.ml.ruby-lang.org/