* [ruby-core:120601] [Ruby master Bug#21024] Ruby including <cstdbool> generates compilation warning with GCC 15, header is deprecated in C++17,
@ 2025-01-10 16:55 jprokop (Jarek Prokop) via ruby-core
2025-01-11 3:24 ` [ruby-core:120607] " nobu (Nobuyoshi Nakada) via ruby-core
2025-01-14 17:34 ` [ruby-core:120667] " jaruga (Jun Aruga) via ruby-core
0 siblings, 2 replies; 3+ messages in thread
From: jprokop (Jarek Prokop) via ruby-core @ 2025-01-10 16:55 UTC (permalink / raw)
To: ruby-core; +Cc: jprokop (Jarek Prokop)
Issue #21024 has been reported by jprokop (Jarek Prokop).
----------------------------------------
Bug #21024: Ruby including <cstdbool> generates compilation warning with GCC 15, header is deprecated in C++17,
https://bugs.ruby-lang.org/issues/21024
* 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 `<cstdbool>`.
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 <stdbool.h> should be sufficient as that is what the `#include <cstdbool>` 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 <ruby.h>
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 "<cstdbool> is deprecated in C++17, remove the #include" [-Wcpp]
48 | # warning "<cstdbool> 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 <cstdbool> 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/
^ permalink raw reply [flat|nested] 3+ messages in thread
* [ruby-core:120607] [Ruby master Bug#21024] Ruby including <cstdbool> generates compilation warning with GCC 15, header is deprecated in C++17,
2025-01-10 16:55 [ruby-core:120601] [Ruby master Bug#21024] Ruby including <cstdbool> generates compilation warning with GCC 15, header is deprecated in C++17, jprokop (Jarek Prokop) via ruby-core
@ 2025-01-11 3:24 ` nobu (Nobuyoshi Nakada) via ruby-core
2025-01-14 17:34 ` [ruby-core:120667] " jaruga (Jun Aruga) via ruby-core
1 sibling, 0 replies; 3+ messages in thread
From: nobu (Nobuyoshi Nakada) via ruby-core @ 2025-01-11 3:24 UTC (permalink / raw)
To: ruby-core; +Cc: nobu (Nobuyoshi Nakada)
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 <cstdbool> 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 `<cstdbool>`.
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 <stdbool.h> should be sufficient as that is what the `#include <cstdbool>` 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 <ruby.h>
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 "<cstdbool> is deprecated in C++17, remove the #include" [-Wcpp]
48 | # warning "<cstdbool> 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 <cstdbool> 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/
^ permalink raw reply [flat|nested] 3+ messages in thread
* [ruby-core:120667] [Ruby master Bug#21024] Ruby including <cstdbool> generates compilation warning with GCC 15, header is deprecated in C++17,
2025-01-10 16:55 [ruby-core:120601] [Ruby master Bug#21024] Ruby including <cstdbool> generates compilation warning with GCC 15, header is deprecated in C++17, jprokop (Jarek Prokop) via ruby-core
2025-01-11 3:24 ` [ruby-core:120607] " nobu (Nobuyoshi Nakada) via ruby-core
@ 2025-01-14 17:34 ` jaruga (Jun Aruga) via ruby-core
1 sibling, 0 replies; 3+ messages in thread
From: jaruga (Jun Aruga) via ruby-core @ 2025-01-14 17:34 UTC (permalink / raw)
To: ruby-core; +Cc: jaruga (Jun Aruga)
Issue #21024 has been updated by jaruga (Jun Aruga).
For the record, nobu sent the following PR, and merged.
https://github.com/ruby/ruby/pull/12573
----------------------------------------
Bug #21024: Ruby including <cstdbool> generates compilation warning with GCC 15, header is deprecated in C++17,
https://bugs.ruby-lang.org/issues/21024#change-111492
* Author: jprokop (Jarek Prokop)
* Status: Closed
* 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 `<cstdbool>`.
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 <stdbool.h> should be sufficient as that is what the `#include <cstdbool>` 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 <ruby.h>
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 "<cstdbool> is deprecated in C++17, remove the #include" [-Wcpp]
48 | # warning "<cstdbool> 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 <cstdbool> 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/
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2025-01-14 17:34 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2025-01-10 16:55 [ruby-core:120601] [Ruby master Bug#21024] Ruby including <cstdbool> generates compilation warning with GCC 15, header is deprecated in C++17, jprokop (Jarek Prokop) via ruby-core
2025-01-11 3:24 ` [ruby-core:120607] " nobu (Nobuyoshi Nakada) via ruby-core
2025-01-14 17:34 ` [ruby-core:120667] " jaruga (Jun Aruga) via ruby-core
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).