From: "nobu (Nobuyoshi Nakada) via ruby-core" Date: 2025-01-11T03:24:22+00:00 Subject: [ruby-core:120607] [Ruby master Bug#21024] Ruby including generates compilation warning with GCC 15, header is deprecated in C++17, Issue #21024 has been updated by nobu (Nobuyoshi Nakada). That patch will break C++-11 and C++-14. https://github.com/ruby/ruby/pull/12551 ---------------------------------------- Bug #21024: Ruby including generates compilation warning with GCC 15, header is deprecated in C++17, https://bugs.ruby-lang.org/issues/21024#change-111437 * Author: jprokop (Jarek Prokop) * Status: Open * ruby -v: ruby 3.4.1 (2024-12-25 revision 48d4efcb85) +PRISM [x86_64-linux] * Backport: 3.1: UNKNOWN, 3.2: UNKNOWN, 3.3: UNKNOWN, 3.4: UNKNOWN ---------------------------------------- C++ compiler in GCC 15 now generates a warning when trying to include ``. This file is being included when compiling with C++ compiler from `include/ruby/internal/stdbool.h`. In C++, true, false and bool are keywords so including headers for boolean definitions should not be necessary. Alternatively, just including should be sufficient as that is what the `#include ` results in with GCC. Simplest fix is just deleting the lines that are including the file (see attached patch and comments 2 and 3 from downstream issue linked in the bottom section "Additional info"). Considering the wide array of compilers Ruby aims to support to be compiled with I wanted to make an issue here first to make sure there isn't a supported compiler that wouldn't agree with this approach. Reproduction: Obtain GCC 15, for Fedora Rawhide there is currently a repo of maintainer, I use it in Fedora Rawhide container (podman is replaceable for docker here): ``` host$ podman run -it --rm registry.fedoraproject.org/fedora:rawhide bash container# echo "[gcc_15] name=pre-release GCC 15 Repo baseurl=https://fedorapeople.org/~dmalcolm/gcc/gcc-15-mass-prebuild/$basearch type=rpm-md skip_if_unavailable=True gpgcheck=0 repo_gpgcheck=0 enabled=1 enabled_metadata=1" > /etc/yum.repos.d/gcc_15.repo container# dnf install --assumeyes g++ ruby-devel ``` ^ should install `g++-15.0.0` and `ruby.h` needed for the reproducer. Note: that baseurl is a custom space of a Fedora maintainer. Have a file named for example `main.cpp`: ``` cpp #include int main(void) { return 0; } ``` Compile with GCC 15 ``` $ g++ main.cpp ``` Current behavior: Compiling throws warning: ``` $ g++ main.cpp In file included from /usr/include/ruby/internal/stdbool.h:30, from /usr/include/ruby/backward/2/bool.h:22, from /usr/include/ruby/defines.h:74, from /usr/include/ruby/ruby.h:25, from /usr/include/ruby.h:38, from reproducer.cpp:1: /usr/include/c++/15/cstdbool:48:6: warning: #warning " is deprecated in C++17, remove the #include" [-Wcpp] 48 | # warning " is deprecated in C++17, remove the #include" | ^~~~~~~ ``` Expected: Compilation throws no warnings and compiles the executable: ``` $ g++ reproducer.cpp $ echo $? 0 ``` Additional info: ``` $ g++ --version g++ (GCC) 15.0.0 20241203 (Red Hat 15.0.0-0) Copyright (C) 2024 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. ``` This was met during recompilation of libdnf5 that includes `-Werror` in their compilation flags, See downstream discussion: https://bugzilla.redhat.com/show_bug.cgi?id=2336567 Considering the inclusion of the throws me up to 5 years ago back ( https://github.com/ruby/ruby/blob/9e6e39c3512f7a962c44dc3729c98a0f8be90341/include/ruby/3/stdbool.h ), I assume this warning will be the case with older rubies as well as newest master when using GCC 15. ---Files-------------------------------- 0001-Stop-including-cstdbool-in-include-ruby-internal-std.patch (869 Bytes) -- 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/