Issue #16803 has been updated by Eregon (Benoit Daloze). ko1 (Koichi Sasada) wrote in #note-12: > Please respect current convention `rb_`/`RB_` are called in ruby interpreter (such as `rb_str_new()`) and `ruby_`/`RUBY_` can be called from outside of ruby interpreter (such as `ruby_xmalloc()`). `RUBY3_...` are already renamed, but I want to note it here. I think very few people know this, is this documented somewhere? It would be nice to document it e.g., in `ruby.h` or `ruby/ruby.h`. > PS. I like `rb_internal_` because it is clearer. `rb_internal_` functions are not exposed, so I don't think the length is important. `rb_internal_` looks nice, but it also begins with `rb_` which gives a "public API" feeling. So `rbimpl_` seems better visually as "don't use (externally)". ---------------------------------------- Misc #16803: Discussion: those internal macros reside in public API headers https://bugs.ruby-lang.org/issues/16803#change-85621 * Author: shyouhei (Shyouhei Urabe) * Status: Open * Priority: Normal ---------------------------------------- A while ago I merged https://github.com/ruby/ruby/pull/2991 ("Split ruby.h"). This seems working. But the changeset raised several questions. The biggest one relates to those newly publicised macros and inline functions. For instance `RUBY3_STATIC_ASSERT` is a macro that expands to either `_Static_assert` (for C) or `static_assert` (for C++). A similar mechanism has been implemented inside of our repository for a while. The pull request moved the definition around to be visible outside. #### Discussion #1 #### Is it a good idea or a bad idea, to make them visible worldwide? #### Discussion #2 #### Why not publicise everything? For instance debuggers could benefit from ruby internal symbols. #### Discussion #3 #### It is relatively hard for us to change public APIs (doing so could break 3rd party gems). We don't want that happen for internal APIs. How do we achieve future flexibility? -- https://bugs.ruby-lang.org/ Unsubscribe: <mailto:ruby-core-request / ruby-lang.org?subject=unsubscribe> <http://lists.ruby-lang.org/cgi-bin/mailman/options/ruby-core>