From: "wsfulton (William Fulton) via ruby-core" Date: 2025-11-02T12:18:29+00:00 Subject: [ruby-core:123647] [Ruby Bug#21659] rstring.h error: missing initializer for field ‘len’ of ‘struct RString’ [-Werror=missing-field-initializers] starting in ruby-3.3.10 Issue #21659 has been updated by wsfulton (William Fulton). Keep code warning free improves the code quality. Fixing this warning, in particular, removes undefined behaviour. Are the core Ruby developers supportive of these goals and consider a patch to fix this warning and possibly even making it a supported warning flag? It will lead to an improved Ruby ecosystem by using the C++ tools available to automatically find time wasting bugs, not just in Ruby itself, but in all the Ruby extensions. ---------------------------------------- Bug #21659: rstring.h error: missing initializer for field ���len��� of ���struct RString��� [-Werror=missing-field-initializers] starting in ruby-3.3.10 https://bugs.ruby-lang.org/issues/21659#change-115030 * Author: wsfulton (William Fulton) * Status: Feedback * ruby -v: ruby 3.3.10 (2025-10-23 revision 343ea05002) [x86_64-linux] * Backport: 3.2: UNKNOWN, 3.3: UNKNOWN, 3.4: UNKNOWN ---------------------------------------- All extensions now have this error when using -Werror -Wmissing-field-initializers: ``` In file included from /home/runner/.rvm/rubies/ruby-3.3.10/include/ruby-3.3.0/ruby/internal/arithmetic/char.h:29, from /home/runner/.rvm/rubies/ruby-3.3.10/include/ruby-3.3.0/ruby/internal/arithmetic.h:24, from /home/runner/.rvm/rubies/ruby-3.3.10/include/ruby-3.3.0/ruby/ruby.h:28, from /home/runner/.rvm/rubies/ruby-3.3.10/include/ruby-3.3.0/ruby.h:38, from example_wrap.c:1008: /home/runner/.rvm/rubies/ruby-3.3.10/include/ruby-3.3.0/ruby/internal/core/rstring.h: In function ���rbimpl_rstring_getmem���: /home/runner/.rvm/rubies/ruby-3.3.10/include/ruby-3.3.0/ruby/internal/core/rstring.h:398:16: error: missing initializer for field ���len��� of ���struct RString��� [-Werror=missing-field-initializers] 398 | struct RString retval = {RBASIC_INIT}; | ^~~~~~~ /home/runner/.rvm/rubies/ruby-3.3.10/include/ruby-3.3.0/ruby/internal/core/rstring.h:206:10: note: ���len��� declared here 206 | long len; | ^~~ ``` Can you please test with warnings turned on as this now breaks all extensions that rely on Ruby.h being warning free. Looks like it is due to commit https://github.com/ruby/ruby/commit/5a8d7642168f4ea0d9331fded3033c225bbc36c5 and expect that ```c++ struct RString retval = {RBASIC_INIT}; ``` should have been changed to: ```c++ struct RString retval = {RBASIC_INIT, 0}; ``` in rstring.h as well as all in the actual Ruby code base. -- 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/