[#122258] [Ruby Misc#21367] Remove link to ruby-doc.org from www.ruby-lang.org/en/documentation/ — "p8 (Petrik de Heus) via ruby-core" <ruby-core@...>
Issue #21367 has been reported by p8 (Petrik de Heus).
11 messages
2025/05/23
[ruby-core:122158] [Ruby Bug#21340] Bump autoconf version to properly handle C23 bool/stdbool defines
From:
"ntkme (Natsuki Natsume) via ruby-core" <ruby-core@...>
Date:
2025-05-16 22:18:02 UTC
List:
ruby-core #122158
Issue #21340 has been updated by ntkme (Natsuki Natsume).
google-protobuf is also failing to compile native extension on windows ruby head with msys2 gcc 15.
```
In file included from
D:/rubyinstaller-head-x64/include/ruby-3.5.0+1/ruby/defines.h:74,
from
D:/rubyinstaller-head-x64/include/ruby-3.5.0+1/ruby/ruby.h:25,
from D:/rubyinstaller-head-x64/include/ruby-3.5.0+1/ruby.h:38,
from protobuf.h:13,
from protobuf.c:8:
D:/a/_temp/msys64/ucrt64/include/stralign.h: In function 'ua_CharUpperW':
D:/rubyinstaller-head-x64/include/ruby-3.5.0+1/ruby/backward/2/bool.h:31:15:
error: 'true' undeclared (first use in this function)
31 | # define TRUE true
| ^~~~
```
----------------------------------------
Bug #21340: Bump autoconf version to properly handle C23 bool/stdbool defines
https://bugs.ruby-lang.org/issues/21340#change-113308
* Author: christo (Chris Alberti)
* Status: Open
* ruby -v: 3.4.3, 3.5.0, any built with GCC 15 (so C23)
* Backport: 3.2: UNKNOWN, 3.3: UNKNOWN, 3.4: UNKNOWN
----------------------------------------
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 <stdbool.h> 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 <stdbool.h> 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/