Can't compile native ruby gems

Good day,

I have quite an usual case of not being able to install native (compiled from C) ruby gems. My digging lead me to following error:
‘bool’ is defined in header ‘<stdbool.h>’; this is probably fixable by adding ‘#include <stdbool.h>’

I’m not sure, why gcc compiled would be missing stdbool. Is it older version or something?

Here is a step-by-step how I reproduced this and what kinf of errors I encountered in the process.

gem install io-event                                                                                                                     ✔ 
Building native extensions. This could take a while...
ERROR:  Error installing io-event:
	ERROR: Failed to build gem native extension.

    current directory: /home/sk/.local/share/mise/installs/ruby/3.4.1/lib/ruby/gems/3.4.0/gems/io-event-1.10.0/ext
/home/sk/.local/share/mise/installs/ruby/3.4.1/bin/ruby extconf.rb
checking for rb_ext_ractor_safe()... *** extconf.rb failed ***
Could not create Makefile due to some reason, probably lack of necessary
libraries and/or headers.  Check the mkmf.log file for more details.  You may
need configuration options.

Provided configuration options:
	--with-opt-dir
	--without-opt-dir
	--with-opt-include=${opt-dir}/include
	--without-opt-include
	--with-opt-lib=${opt-dir}/lib
	--without-opt-lib
	--with-make-prog
	--without-make-prog
	--srcdir=.
	--curdir
	--ruby=/home/sk/.local/share/mise/installs/ruby/3.4.1/bin/$(RUBY_BASE_NAME)
/home/sk/.local/share/mise/installs/ruby/3.4.1/lib/ruby/3.4.0/mkmf.rb:528:in 'MakeMakefile#try_do': The compiler failed to generate an executable file. (RuntimeError)
You have to install development tools first.

	from /home/sk/.local/share/mise/installs/ruby/3.4.1/lib/ruby/3.4.0/mkmf.rb:621:in 'MakeMakefile#try_link0'
	from /home/sk/.local/share/mise/installs/ruby/3.4.1/lib/ruby/3.4.0/mkmf.rb:639:in 'MakeMakefile#try_link'
	from /home/sk/.local/share/mise/installs/ruby/3.4.1/lib/ruby/3.4.0/mkmf.rb:881:in 'MakeMakefile#try_func'
	from /home/sk/.local/share/mise/installs/ruby/3.4.1/lib/ruby/3.4.0/mkmf.rb:1201:in 'block in MakeMakefile#have_func'
	from /home/sk/.local/share/mise/installs/ruby/3.4.1/lib/ruby/3.4.0/mkmf.rb:1070:in 'block in MakeMakefile#checking_for'
	from /home/sk/.local/share/mise/installs/ruby/3.4.1/lib/ruby/3.4.0/mkmf.rb:370:in 'block (2 levels) in MakeMakefile::Logging.postpone'
	from /home/sk/.local/share/mise/installs/ruby/3.4.1/lib/ruby/3.4.0/mkmf.rb:340:in 'MakeMakefile::Logging.open'
	from /home/sk/.local/share/mise/installs/ruby/3.4.1/lib/ruby/3.4.0/mkmf.rb:370:in 'block in MakeMakefile::Logging.postpone'
	from /home/sk/.local/share/mise/installs/ruby/3.4.1/lib/ruby/3.4.0/mkmf.rb:340:in 'MakeMakefile::Logging.open'
	from /home/sk/.local/share/mise/installs/ruby/3.4.1/lib/ruby/3.4.0/mkmf.rb:366:in 'MakeMakefile::Logging.postpone'
	from /home/sk/.local/share/mise/installs/ruby/3.4.1/lib/ruby/3.4.0/mkmf.rb:1069:in 'MakeMakefile#checking_for'
	from /home/sk/.local/share/mise/installs/ruby/3.4.1/lib/ruby/3.4.0/mkmf.rb:1200:in 'MakeMakefile#have_func'
	from extconf.rb:29:in '<main>'

To see why this extension failed to compile, please check the mkmf.log which can be found here:

  /home/sk/.local/share/mise/installs/ruby/3.4.1/lib/ruby/gems/3.4.0/extensions/x86_64-linux/3.4.0/io-event-1.10.0/mkmf.log

extconf failed, exit code 1

Gem files will remain installed in /home/sk/.local/share/mise/installs/ruby/3.4.1/lib/ruby/gems/3.4.0/gems/io-event-1.10.0 for inspection.
Results logged to /home/sk/.local/share/mise/installs/ruby/3.4.1/lib/ruby/gems/3.4.0/extensions/x86_64-linux/3.4.0/io-event-1.10.0/gem_make.out

It says, that You have to install development tools first. but I have the usual suspects for C compilation (like base-devel and gcc).

Here are more errors - gem_make.out file.

current directory: /home/sk/.local/share/mise/installs/ruby/3.4.1/lib/ruby/gems/3.4.0/gems/io-event-1.10.0/ext
/home/sk/.local/share/mise/installs/ruby/3.4.1/bin/ruby extconf.rb
checking for rb_ext_ractor_safe()... *** extconf.rb failed ***
Could not create Makefile due to some reason, probably lack of necessary
libraries and/or headers.  Check the mkmf.log file for more details.  You may
need configuration options.

Provided configuration options:
	--with-opt-dir
	--without-opt-dir
	--with-opt-include=${opt-dir}/include
	--without-opt-include
	--with-opt-lib=${opt-dir}/lib
	--without-opt-lib
	--with-make-prog
	--without-make-prog
	--srcdir=.
	--curdir
	--ruby=/home/sk/.local/share/mise/installs/ruby/3.4.1/bin/$(RUBY_BASE_NAME)
/home/sk/.local/share/mise/installs/ruby/3.4.1/lib/ruby/3.4.0/mkmf.rb:528:in 'MakeMakefile#try_do': The compiler failed to generate an executable file. (RuntimeError)
You have to install development tools first.

	from /home/sk/.local/share/mise/installs/ruby/3.4.1/lib/ruby/3.4.0/mkmf.rb:621:in 'MakeMakefile#try_link0'
	from /home/sk/.local/share/mise/installs/ruby/3.4.1/lib/ruby/3.4.0/mkmf.rb:639:in 'MakeMakefile#try_link'
	from /home/sk/.local/share/mise/installs/ruby/3.4.1/lib/ruby/3.4.0/mkmf.rb:881:in 'MakeMakefile#try_func'
	from /home/sk/.local/share/mise/installs/ruby/3.4.1/lib/ruby/3.4.0/mkmf.rb:1201:in 'block in MakeMakefile#have_func'
	from /home/sk/.local/share/mise/installs/ruby/3.4.1/lib/ruby/3.4.0/mkmf.rb:1070:in 'block in MakeMakefile#checking_for'
	from /home/sk/.local/share/mise/installs/ruby/3.4.1/lib/ruby/3.4.0/mkmf.rb:370:in 'block (2 levels) in MakeMakefile::Logging.postpone'
	from /home/sk/.local/share/mise/installs/ruby/3.4.1/lib/ruby/3.4.0/mkmf.rb:340:in 'MakeMakefile::Logging.open'
	from /home/sk/.local/share/mise/installs/ruby/3.4.1/lib/ruby/3.4.0/mkmf.rb:370:in 'block in MakeMakefile::Logging.postpone'
	from /home/sk/.local/share/mise/installs/ruby/3.4.1/lib/ruby/3.4.0/mkmf.rb:340:in 'MakeMakefile::Logging.open'
	from /home/sk/.local/share/mise/installs/ruby/3.4.1/lib/ruby/3.4.0/mkmf.rb:366:in 'MakeMakefile::Logging.postpone'
	from /home/sk/.local/share/mise/installs/ruby/3.4.1/lib/ruby/3.4.0/mkmf.rb:1069:in 'MakeMakefile#checking_for'
	from /home/sk/.local/share/mise/installs/ruby/3.4.1/lib/ruby/3.4.0/mkmf.rb:1200:in 'MakeMakefile#have_func'
	from extconf.rb:29:in '<main>'

To see why this extension failed to compile, please check the mkmf.log which can be found here:

  /home/sk/.local/share/mise/installs/ruby/3.4.1/lib/ruby/gems/3.4.0/extensions/x86_64-linux/3.4.0/io-event-1.10.0/mkmf.log

extconf failed, exit code 1

And mkmf.log.

LD_LIBRARY_PATH=.:/home/sk/.local/share/mise/installs/ruby/3.4.1/lib ASAN_OPTIONS=detect_leaks=0 "gcc -o conftest -I/home/sk/.local/share/mise/installs/ruby/3.4.1/include/ruby-3.4.0/x86_64-linux -I/home/sk/.local/share/mise/installs/ruby/3.4.1/include/ruby-3.4.0/ruby/backward -I/home/sk/.local/share/mise/installs/ruby/3.4.1/include/ruby-3.4.0 -I.    -fstack-protector-strong -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=2  -O3 -fno-fast-math -ggdb3 -Wall -Wextra -Wdeprecated-declarations -Wdiv-by-zero -Wduplicated-cond -Wimplicit-function-declaration -Wimplicit-int -Wpointer-arith -Wwrite-strings -Wold-style-definition -Wimplicit-fallthrough=0 -Wmissing-noreturn -Wno-cast-function-type -Wno-constant-logical-operand -Wno-long-long -Wno-missing-field-initializers -Wno-overlength-strings -Wno-packed-bitfield-compat -Wno-parentheses-equality -Wno-self-assign -Wno-tautological-compare -Wno-unused-parameter -Wno-unused-value -Wsuggest-attribute=format -Wsuggest-attribute=noreturn -Wunused-variable -Wmisleading-indentation -Wundef  -fPIC -Wall -Wno-unknown-pragmas -std=c99 conftest.c -L. -L/home/sk/.local/share/mise/installs/ruby/3.4.1/lib -Wl,-rpath,/home/sk/.local/share/mise/installs/ruby/3.4.1/lib -L. -fstack-protector-strong -L/home/linuxbrew/.linuxbrew/Cellar/gmp/6.3.0/lib -Wl,-rpath,/home/linuxbrew/.linuxbrew/Cellar/gmp/6.3.0/lib -rdynamic -Wl,-export-dynamic -Wl,--no-as-needed     -Wl,-rpath,/home/sk/.local/share/mise/installs/ruby/3.4.1/lib -L/home/sk/.local/share/mise/installs/ruby/3.4.1/lib -lruby  -lm -lpthread  -lc"
In file included from /home/sk/.local/share/mise/installs/ruby/3.4.1/include/ruby-3.4.0/ruby/internal/arithmetic/long.h:42,
                 from /home/sk/.local/share/mise/installs/ruby/3.4.1/include/ruby-3.4.0/ruby/internal/arithmetic/int.h:26,
                 from /home/sk/.local/share/mise/installs/ruby/3.4.1/include/ruby-3.4.0/ruby/internal/arithmetic/char.h:23,
                 from /home/sk/.local/share/mise/installs/ruby/3.4.1/include/ruby-3.4.0/ruby/internal/arithmetic.h:24,
                 from /home/sk/.local/share/mise/installs/ruby/3.4.1/include/ruby-3.4.0/ruby/ruby.h:28,
                 from /home/sk/.local/share/mise/installs/ruby/3.4.1/include/ruby-3.4.0/ruby.h:38,
                 from conftest.c:1:
/home/sk/.local/share/mise/installs/ruby/3.4.1/include/ruby-3.4.0/ruby/internal/special_consts.h:137:15: error: unknown type name ‘bool’
  137 | static inline bool
      |               ^~~~
/home/sk/.local/share/mise/installs/ruby/3.4.1/include/ruby-3.4.0/ruby/internal/special_consts.h:31:1: note: ‘bool’ is defined in header ‘<stdbool.h>’; this is probably fixable by adding ‘#include <stdbool.h>’
   30 | #include "ruby/internal/attr/enum_extensibility.h"
  +++ |+#include <stdbool.h>
   31 | #include "ruby/internal/stdbool.h"
/home/sk/.local/share/mise/installs/ruby/3.4.1/include/ruby-3.4.0/ruby/internal/special_consts.h:172:15: error: unknown type name ‘bool’
  172 | static inline bool
      |               ^~~~
/home/sk/.local/share/mise/installs/ruby/3.4.1/include/ruby-3.4.0/ruby/internal/special_consts.h:172:15: note: ‘bool’ is defined in header ‘<stdbool.h>’; this is probably fixable by adding ‘#include <stdbool.h>’
/home/sk/.local/share/mise/installs/ruby/3.4.1/include/ruby-3.4.0/ruby/internal/special_consts.h:188:15: error: unknown type name ‘bool’
  188 | static inline bool
      |               ^~~~
/home/sk/.local/share/mise/installs/ruby/3.4.1/include/ruby-3.4.0/ruby/internal/special_consts.h:188:15: note: ‘bool’ is defined in header ‘<stdbool.h>’; this is probably fixable by adding ‘#include <stdbool.h>’
/home/sk/.local/share/mise/installs/ruby/3.4.1/include/ruby-3.4.0/ruby/internal/special_consts.h:205:15: error: unknown type name ‘bool’
  205 | static inline bool
      |               ^~~~
/home/sk/.local/share/mise/installs/ruby/3.4.1/include/ruby-3.4.0/ruby/internal/special_consts.h:205:15: note: ‘bool’ is defined in header ‘<stdbool.h>’; this is probably fixable by adding ‘#include <stdbool.h>’
/home/sk/.local/share/mise/installs/ruby/3.4.1/include/ruby-3.4.0/ruby/internal/special_consts.h:246:15: error: unknown type name ‘bool’
  246 | static inline bool
      |               ^~~~
/home/sk/.local/share/mise/installs/ruby/3.4.1/include/ruby-3.4.0/ruby/internal/special_consts.h:246:15: note: ‘bool’ is defined in header ‘<stdbool.h>’; this is probably fixable by adding ‘#include <stdbool.h>’
/home/sk/.local/share/mise/installs/ruby/3.4.1/include/ruby-3.4.0/ruby/internal/special_consts.h:266:15: error: unknown type name ‘bool’
  266 | static inline bool
      |               ^~~~
/home/sk/.local/share/mise/installs/ruby/3.4.1/include/ruby-3.4.0/ruby/internal/special_consts.h:266:15: note: ‘bool’ is defined in header ‘<stdbool.h>’; this is probably fixable by adding ‘#include <stdbool.h>’
/home/sk/.local/share/mise/installs/ruby/3.4.1/include/ruby-3.4.0/ruby/internal/special_consts.h:287:15: error: unknown type name ‘bool’
  287 | static inline bool
      |               ^~~~
/home/sk/.local/share/mise/installs/ruby/3.4.1/include/ruby-3.4.0/ruby/internal/special_consts.h:287:15: note: ‘bool’ is defined in header ‘<stdbool.h>’; this is probably fixable by adding ‘#include <stdbool.h>’
/home/sk/.local/share/mise/installs/ruby/3.4.1/include/ruby-3.4.0/ruby/internal/special_consts.h:310:15: error: unknown type name ‘bool’
  310 | static inline bool
      |               ^~~~
/home/sk/.local/share/mise/installs/ruby/3.4.1/include/ruby-3.4.0/ruby/internal/special_consts.h:310:15: note: ‘bool’ is defined in header ‘<stdbool.h>’; this is probably fixable by adding ‘#include <stdbool.h>’
/home/sk/.local/share/mise/installs/ruby/3.4.1/include/ruby-3.4.0/ruby/internal/special_consts.h:326:15: error: unknown type name ‘bool’
  326 | static inline bool
      |               ^~~~
/home/sk/.local/share/mise/installs/ruby/3.4.1/include/ruby-3.4.0/ruby/internal/special_consts.h:326:15: note: ‘bool’ is defined in header ‘<stdbool.h>’; this is probably fixable by adding ‘#include <stdbool.h>’
/home/sk/.local/share/mise/installs/ruby/3.4.1/include/ruby-3.4.0/ruby/internal/arithmetic/long.h:215:15: error: unknown type name ‘bool’
  215 | static inline bool
      |               ^~~~
/home/sk/.local/share/mise/installs/ruby/3.4.1/include/ruby-3.4.0/ruby/internal/arithmetic/long.h:43:1: note: ‘bool’ is defined in header ‘<stdbool.h>’; this is probably fixable by adding ‘#include <stdbool.h>’
   42 | #include "ruby/internal/special_consts.h"      /* FIXNUM_FLAG */
  +++ |+#include <stdbool.h>
   43 | #include "ruby/internal/value.h"
In file included from /home/sk/.local/share/mise/installs/ruby/3.4.1/include/ruby-3.4.0/ruby/internal/fl_type.h:38,
                 from /home/sk/.local/share/mise/installs/ruby/3.4.1/include/ruby-3.4.0/ruby/internal/core/rstring.h:30,
                 from /home/sk/.local/share/mise/installs/ruby/3.4.1/include/ruby-3.4.0/ruby/internal/arithmetic/char.h:29:
/home/sk/.local/share/mise/installs/ruby/3.4.1/include/ruby-3.4.0/ruby/internal/value_type.h:203:15: error: unknown type name ‘bool’
  203 | static inline bool
      |               ^~~~
/home/sk/.local/share/mise/installs/ruby/3.4.1/include/ruby-3.4.0/ruby/internal/value_type.h:34:1: note: ‘bool’ is defined in header ‘<stdbool.h>’; this is probably fixable by adding ‘#include <stdbool.h>’
   33 | #include "ruby/internal/error.h"
  +++ |+#include <stdbool.h>
   34 | #include "ruby/internal/has/builtin.h"
/home/sk/.local/share/mise/installs/ruby/3.4.1/include/ruby-3.4.0/ruby/internal/value_type.h: In function ‘rb_integer_type_p’:
/home/sk/.local/share/mise/installs/ruby/3.4.1/include/ruby-3.4.0/ruby/internal/value_type.h:207:16: error: ‘true’ undeclared (first use in this function)
  207 |         return true;
      |                ^~~~
/home/sk/.local/share/mise/installs/ruby/3.4.1/include/ruby-3.4.0/ruby/internal/value_type.h:207:16: note: ‘true’ is defined in header ‘<stdbool.h>’; this is probably fixable by adding ‘#include <stdbool.h>’
/home/sk/.local/share/mise/installs/ruby/3.4.1/include/ruby-3.4.0/ruby/internal/value_type.h:207:16: note: each undeclared identifier is reported only once for each function it appears in
/home/sk/.local/share/mise/installs/ruby/3.4.1/include/ruby-3.4.0/ruby/internal/value_type.h:210:16: error: ‘false’ undeclared (first use in this function)
  210 |         return false;
      |                ^~~~~
/home/sk/.local/share/mise/installs/ruby/3.4.1/include/ruby-3.4.0/ruby/internal/value_type.h:210:16: note: ‘false’ is defined in header ‘<stdbool.h>’; this is probably fixable by adding ‘#include <stdbool.h>’
/home/sk/.local/share/mise/installs/ruby/3.4.1/include/ruby-3.4.0/ruby/internal/value_type.h: At top level:
/home/sk/.local/share/mise/installs/ruby/3.4.1/include/ruby-3.4.0/ruby/internal/value_type.h:263:15: error: unknown type name ‘bool’
  263 | static inline bool
      |               ^~~~
/home/sk/.local/share/mise/installs/ruby/3.4.1/include/ruby-3.4.0/ruby/internal/value_type.h:263:15: note: ‘bool’ is defined in header ‘<stdbool.h>’; this is probably fixable by adding ‘#include <stdbool.h>’
/home/sk/.local/share/mise/installs/ruby/3.4.1/include/ruby-3.4.0/ruby/internal/value_type.h: In function ‘RB_FLOAT_TYPE_P’:
/home/sk/.local/share/mise/installs/ruby/3.4.1/include/ruby-3.4.0/ruby/internal/value_type.h:267:16: error: ‘true’ undeclared (first use in this function)
  267 |         return true;
      |                ^~~~
/home/sk/.local/share/mise/installs/ruby/3.4.1/include/ruby-3.4.0/ruby/internal/value_type.h:267:16: note: ‘true’ is defined in header ‘<stdbool.h>’; this is probably fixable by adding ‘#include <stdbool.h>’
/home/sk/.local/share/mise/installs/ruby/3.4.1/include/ruby-3.4.0/ruby/internal/value_type.h:270:16: error: ‘false’ undeclared (first use in this function)
  270 |         return false;
      |                ^~~~~
/home/sk/.local/share/mise/installs/ruby/3.4.1/include/ruby-3.4.0/ruby/internal/value_type.h:270:16: note: ‘false’ is defined in header ‘<stdbool.h>’; this is probably fixable by adding ‘#include <stdbool.h>’
/home/sk/.local/share/mise/installs/ruby/3.4.1/include/ruby-3.4.0/ruby/internal/value_type.h: At top level:
/home/sk/.local/share/mise/installs/ruby/3.4.1/include/ruby-3.4.0/ruby/internal/value_type.h:286:15: error: unknown type name ‘bool’
  286 | static inline bool
      |               ^~~~
/home/sk/.local/share/mise/installs/ruby/3.4.1/include/ruby-3.4.0/ruby/internal/value_type.h:286:15: note: ‘bool’ is defined in header ‘<stdbool.h>’; this is probably fixable by adding ‘#include <stdbool.h>’
/home/sk/.local/share/mise/installs/ruby/3.4.1/include/ruby-3.4.0/ruby/internal/value_type.h: In function ‘RB_DYNAMIC_SYM_P’:
/home/sk/.local/share/mise/installs/ruby/3.4.1/include/ruby-3.4.0/ruby/internal/value_type.h:290:16: error: ‘false’ undeclared (first use in this function)
  290 |         return false;
      |                ^~~~~
/home/sk/.local/share/mise/installs/ruby/3.4.1/include/ruby-3.4.0/ruby/internal/value_type.h:290:16: note: ‘false’ is defined in header ‘<stdbool.h>’; this is probably fixable by adding ‘#include <stdbool.h>’
/home/sk/.local/share/mise/installs/ruby/3.4.1/include/ruby-3.4.0/ruby/internal/value_type.h: At top level:
/home/sk/.local/share/mise/installs/ruby/3.4.1/include/ruby-3.4.0/ruby/internal/value_type.h:306:15: error: unknown type name ‘bool’
  306 | static inline bool
      |               ^~~~
/home/sk/.local/share/mise/installs/ruby/3.4.1/include/ruby-3.4.0/ruby/internal/value_type.h:306:15: note: ‘bool’ is defined in header ‘<stdbool.h>’; this is probably fixable by adding ‘#include <stdbool.h>’
/home/sk/.local/share/mise/installs/ruby/3.4.1/include/ruby-3.4.0/ruby/internal/value_type.h:325:8: error: unknown type name ‘bool’
  325 | static bool
      |        ^~~~
/home/sk/.local/share/mise/installs/ruby/3.4.1/include/ruby-3.4.0/ruby/internal/value_type.h:325:8: note: ‘bool’ is defined in header ‘<stdbool.h>’; this is probably fixable by adding ‘#include <stdbool.h>’
/home/sk/.local/share/mise/installs/ruby/3.4.1/include/ruby-3.4.0/ruby/internal/value_type.h: In function ‘rbimpl_RB_TYPE_P_fastpath’:
/home/sk/.local/share/mise/installs/ruby/3.4.1/include/ruby-3.4.0/ruby/internal/value_type.h:350:16: error: ‘false’ undeclared (first use in this function)
  350 |         return false;
      |                ^~~~~
/home/sk/.local/share/mise/installs/ruby/3.4.1/include/ruby-3.4.0/ruby/internal/value_type.h:350:16: note: ‘false’ is defined in header ‘<stdbool.h>’; this is probably fixable by adding ‘#include <stdbool.h>’
/home/sk/.local/share/mise/installs/ruby/3.4.1/include/ruby-3.4.0/ruby/internal/value_type.h:353:16: error: ‘true’ undeclared (first use in this function)
  353 |         return true;
      |                ^~~~
/home/sk/.local/share/mise/installs/ruby/3.4.1/include/ruby-3.4.0/ruby/internal/value_type.h:353:16: note: ‘true’ is defined in header ‘<stdbool.h>’; this is probably fixable by adding ‘#include <stdbool.h>’
/home/sk/.local/share/mise/installs/ruby/3.4.1/include/ruby-3.4.0/ruby/internal/value_type.h: At top level:
/home/sk/.local/share/mise/installs/ruby/3.4.1/include/ruby-3.4.0/ruby/internal/value_type.h:375:15: error: unknown type name ‘bool’
  375 | static inline bool
      |               ^~~~
/home/sk/.local/share/mise/installs/ruby/3.4.1/include/ruby-3.4.0/ruby/internal/value_type.h:375:15: note: ‘bool’ is defined in header ‘<stdbool.h>’; this is probably fixable by adding ‘#include <stdbool.h>’
/home/sk/.local/share/mise/installs/ruby/3.4.1/include/ruby-3.4.0/ruby/internal/value_type.h:419:15: error: unknown type name ‘bool’
  419 | static inline bool rbimpl_rtypeddata_p(VALUE obj);
      |               ^~~~
/home/sk/.local/share/mise/installs/ruby/3.4.1/include/ruby-3.4.0/ruby/internal/value_type.h:419:15: note: ‘bool’ is defined in header ‘<stdbool.h>’; this is probably fixable by adding ‘#include <stdbool.h>’
/home/sk/.local/share/mise/installs/ruby/3.4.1/include/ruby-3.4.0/ruby/internal/fl_type.h:443:8: error: unknown type name ‘bool’
  443 | static bool
      |        ^~~~
/home/sk/.local/share/mise/installs/ruby/3.4.1/include/ruby-3.4.0/ruby/internal/fl_type.h:41:1: note: ‘bool’ is defined in header ‘<stdbool.h>’; this is probably fixable by adding ‘#include <stdbool.h>’
   40 | #include "ruby/defines.h"
  +++ |+#include <stdbool.h>
   41 | 
/home/sk/.local/share/mise/installs/ruby/3.4.1/include/ruby-3.4.0/ruby/internal/fl_type.h: In function ‘RB_FL_ABLE’:
/home/sk/.local/share/mise/installs/ruby/3.4.1/include/ruby-3.4.0/ruby/internal/fl_type.h:447:16: error: ‘false’ undeclared (first use in this function)
  447 |         return false;
      |                ^~~~~
/home/sk/.local/share/mise/installs/ruby/3.4.1/include/ruby-3.4.0/ruby/internal/fl_type.h:447:16: note: ‘false’ is defined in header ‘<stdbool.h>’; this is probably fixable by adding ‘#include <stdbool.h>’
/home/sk/.local/share/mise/installs/ruby/3.4.1/include/ruby-3.4.0/ruby/internal/fl_type.h:453:16: error: ‘true’ undeclared (first use in this function)
  453 |         return true;
      |                ^~~~
/home/sk/.local/share/mise/installs/ruby/3.4.1/include/ruby-3.4.0/ruby/internal/fl_type.h:453:16: note: ‘true’ is defined in header ‘<stdbool.h>’; this is probably fixable by adding ‘#include <stdbool.h>’
/home/sk/.local/share/mise/installs/ruby/3.4.1/include/ruby-3.4.0/ruby/internal/fl_type.h: At top level:
/home/sk/.local/share/mise/installs/ruby/3.4.1/include/ruby-3.4.0/ruby/internal/fl_type.h:517:15: error: unknown type name ‘bool’
  517 | static inline bool
      |               ^~~~
/home/sk/.local/share/mise/installs/ruby/3.4.1/include/ruby-3.4.0/ruby/internal/fl_type.h:517:15: note: ‘bool’ is defined in header ‘<stdbool.h>’; this is probably fixable by adding ‘#include <stdbool.h>’
/home/sk/.local/share/mise/installs/ruby/3.4.1/include/ruby-3.4.0/ruby/internal/fl_type.h:533:15: error: unknown type name ‘bool’
  533 | static inline bool
      |               ^~~~
/home/sk/.local/share/mise/installs/ruby/3.4.1/include/ruby-3.4.0/ruby/internal/fl_type.h:533:15: note: ‘bool’ is defined in header ‘<stdbool.h>’; this is probably fixable by adding ‘#include <stdbool.h>’
/home/sk/.local/share/mise/installs/ruby/3.4.1/include/ruby-3.4.0/ruby/internal/fl_type.h:551:15: error: unknown type name ‘bool’
  551 | static inline bool
      |               ^~~~
/home/sk/.local/share/mise/installs/ruby/3.4.1/include/ruby-3.4.0/ruby/internal/fl_type.h:551:15: note: ‘bool’ is defined in header ‘<stdbool.h>’; this is probably fixable by adding ‘#include <stdbool.h>’
/home/sk/.local/share/mise/installs/ruby/3.4.1/include/ruby-3.4.0/ruby/internal/fl_type.h:567:15: error: unknown type name ‘bool’
  567 | static inline bool
      |               ^~~~
/home/sk/.local/share/mise/installs/ruby/3.4.1/include/ruby-3.4.0/ruby/internal/fl_type.h:567:15: note: ‘bool’ is defined in header ‘<stdbool.h>’; this is probably fixable by adding ‘#include <stdbool.h>’
/home/sk/.local/share/mise/installs/ruby/3.4.1/include/ruby-3.4.0/ruby/internal/fl_type.h:755:15: error: unknown type name ‘bool’
  755 | static inline bool
      |               ^~~~
/home/sk/.local/share/mise/installs/ruby/3.4.1/include/ruby-3.4.0/ruby/internal/fl_type.h:755:15: note: ‘bool’ is defined in header ‘<stdbool.h>’; this is probably fixable by adding ‘#include <stdbool.h>’
/home/sk/.local/share/mise/installs/ruby/3.4.1/include/ruby-3.4.0/ruby/internal/fl_type.h: In function ‘RB_OBJ_TAINTABLE’:
/home/sk/.local/share/mise/installs/ruby/3.4.1/include/ruby-3.4.0/ruby/internal/fl_type.h:759:12: error: ‘false’ undeclared (first use in this function)
  759 |     return false;
      |            ^~~~~
/home/sk/.local/share/mise/installs/ruby/3.4.1/include/ruby-3.4.0/ruby/internal/fl_type.h:759:12: note: ‘false’ is defined in header ‘<stdbool.h>’; this is probably fixable by adding ‘#include <stdbool.h>’
/home/sk/.local/share/mise/installs/ruby/3.4.1/include/ruby-3.4.0/ruby/internal/fl_type.h: In function ‘RB_OBJ_TAINTED_RAW’:
/home/sk/.local/share/mise/installs/ruby/3.4.1/include/ruby-3.4.0/ruby/internal/fl_type.h:777:12: error: ‘false’ undeclared (first use in this function)
  777 |     return false;
      |            ^~~~~
/home/sk/.local/share/mise/installs/ruby/3.4.1/include/ruby-3.4.0/ruby/internal/fl_type.h:777:12: note: ‘false’ is defined in header ‘<stdbool.h>’; this is probably fixable by adding ‘#include <stdbool.h>’
/home/sk/.local/share/mise/installs/ruby/3.4.1/include/ruby-3.4.0/ruby/internal/fl_type.h: At top level:
/home/sk/.local/share/mise/installs/ruby/3.4.1/include/ruby-3.4.0/ruby/internal/fl_type.h:791:15: error: unknown type name ‘bool’
  791 | static inline bool
      |               ^~~~
/home/sk/.local/share/mise/installs/ruby/3.4.1/include/ruby-3.4.0/ruby/internal/fl_type.h:791:15: note: ‘bool’ is defined in header ‘<stdbool.h>’; this is probably fixable by adding ‘#include <stdbool.h>’
/home/sk/.local/share/mise/installs/ruby/3.4.1/include/ruby-3.4.0/ruby/internal/fl_type.h: In function ‘RB_OBJ_TAINTED’:
/home/sk/.local/share/mise/installs/ruby/3.4.1/include/ruby-3.4.0/ruby/internal/fl_type.h:795:12: error: ‘false’ undeclared (first use in this function)
  795 |     return false;
      |            ^~~~~
/home/sk/.local/share/mise/installs/ruby/3.4.1/include/ruby-3.4.0/ruby/internal/fl_type.h:795:12: note: ‘false’ is defined in header ‘<stdbool.h>’; this is probably fixable by adding ‘#include <stdbool.h>’
/home/sk/.local/share/mise/installs/ruby/3.4.1/include/ruby-3.4.0/ruby/internal/fl_type.h: At top level:
/home/sk/.local/share/mise/installs/ruby/3.4.1/include/ruby-3.4.0/ruby/internal/fl_type.h:897:15: error: unknown type name ‘bool’
  897 | static inline bool
      |               ^~~~
/home/sk/.local/share/mise/installs/ruby/3.4.1/include/ruby-3.4.0/ruby/internal/fl_type.h:897:15: note: ‘bool’ is defined in header ‘<stdbool.h>’; this is probably fixable by adding ‘#include <stdbool.h>’
/home/sk/.local/share/mise/installs/ruby/3.4.1/include/ruby-3.4.0/ruby/internal/fl_type.h: In function ‘RB_OBJ_FROZEN’:
/home/sk/.local/share/mise/installs/ruby/3.4.1/include/ruby-3.4.0/ruby/internal/fl_type.h:901:16: error: ‘true’ undeclared (first use in this function)
  901 |         return true;
      |                ^~~~
/home/sk/.local/share/mise/installs/ruby/3.4.1/include/ruby-3.4.0/ruby/internal/fl_type.h:901:16: note: ‘true’ is defined in header ‘<stdbool.h>’; this is probably fixable by adding ‘#include <stdbool.h>’
In file included from /home/sk/.local/share/mise/installs/ruby/3.4.1/include/ruby-3.4.0/ruby/internal/core/rarray.h:32,
                 from /home/sk/.local/share/mise/installs/ruby/3.4.1/include/ruby-3.4.0/ruby/internal/core.h:23,
                 from /home/sk/.local/share/mise/installs/ruby/3.4.1/include/ruby-3.4.0/ruby/ruby.h:29:
/home/sk/.local/share/mise/installs/ruby/3.4.1/include/ruby-3.4.0/ruby/internal/gc.h: At top level:
/home/sk/.local/share/mise/installs/ruby/3.4.1/include/ruby-3.4.0/ruby/internal/gc.h:705:15: error: unknown type name ‘bool’
  705 | static inline bool
      |               ^~~~
/home/sk/.local/share/mise/installs/ruby/3.4.1/include/ruby-3.4.0/ruby/internal/gc.h:27:1: note: ‘bool’ is defined in header ‘<stdbool.h>’; this is probably fixable by adding ‘#include <stdbool.h>’
   26 | # include <stddef.h>                       /* size_t */
  +++ |+#include <stdbool.h>
   27 | #endif
/home/sk/.local/share/mise/installs/ruby/3.4.1/include/ruby-3.4.0/ruby/internal/gc.h:725:15: error: unknown type name ‘bool’
  725 | static inline bool
      |               ^~~~
/home/sk/.local/share/mise/installs/ruby/3.4.1/include/ruby-3.4.0/ruby/internal/gc.h:725:15: note: ‘bool’ is defined in header ‘<stdbool.h>’; this is probably fixable by adding ‘#include <stdbool.h>’
/home/sk/.local/share/mise/installs/ruby/3.4.1/include/ruby-3.4.0/ruby/internal/gc.h: In function ‘RB_OBJ_PROMOTED’:
/home/sk/.local/share/mise/installs/ruby/3.4.1/include/ruby-3.4.0/ruby/internal/gc.h:729:16: error: ‘false’ undeclared (first use in this function)
  729 |         return false;
      |                ^~~~~
/home/sk/.local/share/mise/installs/ruby/3.4.1/include/ruby-3.4.0/ruby/internal/gc.h:729:16: note: ‘false’ is defined in header ‘<stdbool.h>’; this is probably fixable by adding ‘#include <stdbool.h>’
In file included from /home/sk/.local/share/mise/installs/ruby/3.4.1/include/ruby-3.4.0/ruby/internal/core.h:25:
/home/sk/.local/share/mise/installs/ruby/3.4.1/include/ruby-3.4.0/ruby/internal/core/rbignum.h: At top level:
/home/sk/.local/share/mise/installs/ruby/3.4.1/include/ruby-3.4.0/ruby/internal/core/rbignum.h:60:15: error: unknown type name ‘bool’
   60 | static inline bool
      |               ^~~~
/home/sk/.local/share/mise/installs/ruby/3.4.1/include/ruby-3.4.0/ruby/internal/core/rbignum.h:1:1: note: ‘bool’ is defined in header ‘<stdbool.h>’; this is probably fixable by adding ‘#include <stdbool.h>’
  +++ |+#include <stdbool.h>
    1 | #ifndef RBIMPL_RBIGNUM_H                             /*-*-C++-*-vi:se ft=cpp:*/
/home/sk/.local/share/mise/installs/ruby/3.4.1/include/ruby-3.4.0/ruby/internal/core/rbignum.h:73:15: error: unknown type name ‘bool’
   73 | static inline bool
      |               ^~~~
/home/sk/.local/share/mise/installs/ruby/3.4.1/include/ruby-3.4.0/ruby/internal/core/rbignum.h:73:15: note: ‘bool’ is defined in header ‘<stdbool.h>’; this is probably fixable by adding ‘#include <stdbool.h>’
In file included from /home/sk/.local/share/mise/installs/ruby/3.4.1/include/ruby-3.4.0/ruby/internal/core.h:34:
/home/sk/.local/share/mise/installs/ruby/3.4.1/include/ruby-3.4.0/ruby/internal/core/rtypeddata.h:518:15: error: unknown type name ‘bool’
  518 | static inline bool
      |               ^~~~
/home/sk/.local/share/mise/installs/ruby/3.4.1/include/ruby-3.4.0/ruby/internal/core/rtypeddata.h:27:1: note: ‘bool’ is defined in header ‘<stdbool.h>’; this is probably fixable by adding ‘#include <stdbool.h>’
   26 | # include <stddef.h>
  +++ |+#include <stdbool.h>
   27 | #endif
/home/sk/.local/share/mise/installs/ruby/3.4.1/include/ruby-3.4.0/ruby/internal/core/rtypeddata.h:561:15: error: unknown type name ‘bool’
  561 | static inline bool
      |               ^~~~
/home/sk/.local/share/mise/installs/ruby/3.4.1/include/ruby-3.4.0/ruby/internal/core/rtypeddata.h:561:15: note: ‘bool’ is defined in header ‘<stdbool.h>’; this is probably fixable by adding ‘#include <stdbool.h>’
/home/sk/.local/share/mise/installs/ruby/3.4.1/include/ruby-3.4.0/ruby/internal/core/rtypeddata.h:578:15: error: unknown type name ‘bool’
  578 | static inline bool
      |               ^~~~
/home/sk/.local/share/mise/installs/ruby/3.4.1/include/ruby-3.4.0/ruby/internal/core/rtypeddata.h:578:15: note: ‘bool’ is defined in header ‘<stdbool.h>’; this is probably fixable by adding ‘#include <stdbool.h>’
In file included from /home/sk/.local/share/mise/installs/ruby/3.4.1/include/ruby-3.4.0/ruby/ruby.h:42:
/home/sk/.local/share/mise/installs/ruby/3.4.1/include/ruby-3.4.0/ruby/internal/memory.h:420:5: error: unknown type name ‘bool’
  420 |     bool left;                  /**< Whether overflow happened or not. */
      |     ^~~~
/home/sk/.local/share/mise/installs/ruby/3.4.1/include/ruby-3.4.0/ruby/internal/memory.h:65:1: note: ‘bool’ is defined in header ‘<stdbool.h>’; this is probably fixable by adding ‘#include <stdbool.h>’
   64 | #include "ruby/internal/stdckdint.h"
  +++ |+#include <stdbool.h>
   65 | #include "ruby/internal/xmalloc.h"
/home/sk/.local/share/mise/installs/ruby/3.4.1/include/ruby-3.4.0/ruby/internal/memory.h: In function ‘rbimpl_size_mul_overflow’:
/home/sk/.local/share/mise/installs/ruby/3.4.1/include/ruby-3.4.0/ruby/internal/memory.h:574:49: error: ‘false’ undeclared (first use in this function)
  574 |     struct rbimpl_size_mul_overflow_tag ret = { false,  0, };
      |                                                 ^~~~~
/home/sk/.local/share/mise/installs/ruby/3.4.1/include/ruby-3.4.0/ruby/internal/memory.h:574:49: note: ‘false’ is defined in header ‘<stdbool.h>’; this is probably fixable by adding ‘#include <stdbool.h>’
In file included from /home/sk/.local/share/mise/installs/ruby/3.4.1/include/ruby-3.4.0/ruby/ruby.h:46:
/home/sk/.local/share/mise/installs/ruby/3.4.1/include/ruby-3.4.0/ruby/internal/scan_args.h: At top level:
/home/sk/.local/share/mise/installs/ruby/3.4.1/include/ruby-3.4.0/ruby/internal/scan_args.h:252:15: error: unknown type name ‘bool’
  252 | static inline bool
      |               ^~~~
/home/sk/.local/share/mise/installs/ruby/3.4.1/include/ruby-3.4.0/ruby/internal/scan_args.h:39:1: note: ‘bool’ is defined in header ‘<stdbool.h>’; this is probably fixable by adding ‘#include <stdbool.h>’
   38 | #include "ruby/internal/intern/proc.h"  /* rb_block_proc */
  +++ |+#include <stdbool.h>
   39 | #include "ruby/internal/iterator.h"     /* rb_block_given_p / rb_keyword_given_p */
/home/sk/.local/share/mise/installs/ruby/3.4.1/include/ruby-3.4.0/ruby/internal/scan_args.h: In function ‘rb_scan_args_keyword_p’:
/home/sk/.local/share/mise/installs/ruby/3.4.1/include/ruby-3.4.0/ruby/internal/scan_args.h:259:16: error: ‘true’ undeclared (first use in this function)
  259 |         return true;
      |                ^~~~
/home/sk/.local/share/mise/installs/ruby/3.4.1/include/ruby-3.4.0/ruby/internal/scan_args.h:259:16: note: ‘true’ is defined in header ‘<stdbool.h>’; this is probably fixable by adding ‘#include <stdbool.h>’
/home/sk/.local/share/mise/installs/ruby/3.4.1/include/ruby-3.4.0/ruby/internal/scan_args.h:263:16: error: ‘false’ undeclared (first use in this function)
  263 |         return false;
      |                ^~~~~
/home/sk/.local/share/mise/installs/ruby/3.4.1/include/ruby-3.4.0/ruby/internal/scan_args.h:263:16: note: ‘false’ is defined in header ‘<stdbool.h>’; this is probably fixable by adding ‘#include <stdbool.h>’
/home/sk/.local/share/mise/installs/ruby/3.4.1/include/ruby-3.4.0/ruby/internal/scan_args.h: At top level:
/home/sk/.local/share/mise/installs/ruby/3.4.1/include/ruby-3.4.0/ruby/internal/scan_args.h:268:8: error: unknown type name ‘bool’
  268 | static bool
      |        ^~~~
/home/sk/.local/share/mise/installs/ruby/3.4.1/include/ruby-3.4.0/ruby/internal/scan_args.h:268:8: note: ‘bool’ is defined in header ‘<stdbool.h>’; this is probably fixable by adding ‘#include <stdbool.h>’
/home/sk/.local/share/mise/installs/ruby/3.4.1/include/ruby-3.4.0/ruby/internal/scan_args.h:282:8: error: unknown type name ‘bool’
  282 | static bool
      |        ^~~~
/home/sk/.local/share/mise/installs/ruby/3.4.1/include/ruby-3.4.0/ruby/internal/scan_args.h:282:8: note: ‘bool’ is defined in header ‘<stdbool.h>’; this is probably fixable by adding ‘#include <stdbool.h>’
/home/sk/.local/share/mise/installs/ruby/3.4.1/include/ruby-3.4.0/ruby/internal/scan_args.h:303:8: error: unknown type name ‘bool’
  303 | static bool
      |        ^~~~
/home/sk/.local/share/mise/installs/ruby/3.4.1/include/ruby-3.4.0/ruby/internal/scan_args.h:303:8: note: ‘bool’ is defined in header ‘<stdbool.h>’; this is probably fixable by adding ‘#include <stdbool.h>’
/home/sk/.local/share/mise/installs/ruby/3.4.1/include/ruby-3.4.0/ruby/internal/scan_args.h:334:8: error: unknown type name ‘bool’
  334 | static bool
      |        ^~~~
/home/sk/.local/share/mise/installs/ruby/3.4.1/include/ruby-3.4.0/ruby/internal/scan_args.h:334:8: note: ‘bool’ is defined in header ‘<stdbool.h>’; this is probably fixable by adding ‘#include <stdbool.h>’
/home/sk/.local/share/mise/installs/ruby/3.4.1/include/ruby-3.4.0/ruby/internal/scan_args.h:349:8: error: unknown type name ‘bool’
  349 | static bool
      |        ^~~~
/home/sk/.local/share/mise/installs/ruby/3.4.1/include/ruby-3.4.0/ruby/internal/scan_args.h:349:8: note: ‘bool’ is defined in header ‘<stdbool.h>’; this is probably fixable by adding ‘#include <stdbool.h>’
/home/sk/.local/share/mise/installs/ruby/3.4.1/include/ruby-3.4.0/ruby/internal/scan_args.h:390:18: error: unknown type name ‘bool’
  390 |                  bool f_var, bool f_hash, bool f_block,
      |                  ^~~~
/home/sk/.local/share/mise/installs/ruby/3.4.1/include/ruby-3.4.0/ruby/internal/scan_args.h:390:18: note: ‘bool’ is defined in header ‘<stdbool.h>’; this is probably fixable by adding ‘#include <stdbool.h>’
/home/sk/.local/share/mise/installs/ruby/3.4.1/include/ruby-3.4.0/ruby/internal/scan_args.h:390:30: error: unknown type name ‘bool’
  390 |                  bool f_var, bool f_hash, bool f_block,
      |                              ^~~~
/home/sk/.local/share/mise/installs/ruby/3.4.1/include/ruby-3.4.0/ruby/internal/scan_args.h:390:30: note: ‘bool’ is defined in header ‘<stdbool.h>’; this is probably fixable by adding ‘#include <stdbool.h>’
/home/sk/.local/share/mise/installs/ruby/3.4.1/include/ruby-3.4.0/ruby/internal/scan_args.h:390:43: error: unknown type name ‘bool’
  390 |                  bool f_var, bool f_hash, bool f_block,
      |                                           ^~~~
/home/sk/.local/share/mise/installs/ruby/3.4.1/include/ruby-3.4.0/ruby/internal/scan_args.h:390:43: note: ‘bool’ is defined in header ‘<stdbool.h>’; this is probably fixable by adding ‘#include <stdbool.h>’
In file included from /home/sk/.local/share/mise/installs/ruby/3.4.1/include/ruby-3.4.0/ruby/intern.h:41,
                 from /home/sk/.local/share/mise/installs/ruby/3.4.1/include/ruby-3.4.0/ruby/ruby.h:194:
/home/sk/.local/share/mise/installs/ruby/3.4.1/include/ruby-3.4.0/ruby/internal/intern/load.h:234:25: error: unknown type name ‘bool’
  234 | void rb_ext_ractor_safe(bool flag);
      |                         ^~~~
/home/sk/.local/share/mise/installs/ruby/3.4.1/include/ruby-3.4.0/ruby/internal/intern/load.h:1:1: note: ‘bool’ is defined in header ‘<stdbool.h>’; this is probably fixable by adding ‘#include <stdbool.h>’
  +++ |+#include <stdbool.h>
    1 | #ifndef  RBIMPL_INTERN_LOAD_H                        /*-*-C++-*-vi:se ft=cpp:*/
cc1: note: unrecognized command-line option ‘-Wno-self-assign’ may have been intended to silence earlier diagnostics
cc1: note: unrecognized command-line option ‘-Wno-parentheses-equality’ may have been intended to silence earlier diagnostics
cc1: note: unrecognized command-line option ‘-Wno-constant-logical-operand’ may have been intended to silence earlier diagnostics
checked program was:
/* begin */
1: #include "ruby.h"
2: 
3: int main(int argc, char **argv)
4: {
5:   return !!argv[argc];
6: }
/* end */

I’m all out ideas. Maybe someone has some ideas why this could be happening? I have a KDE version of Manjaro on different machine and everything is just there.

After more investigation, this seems to be related to recent update to GCC 15 and it’s a problem of io-events gem. Will be raising issue with them!

This topic was automatically closed 3 days after the last reply. New replies are no longer allowed.