
Issue #21316 has been updated by fxn (Xavier Noria). Main problem here is that there are many programs that depend on that name. They may store it somewhere for later `const_get` (for example polymorphic Active Record associations), passed to a callback (for example `on_load` callbacks in Zeitwerk), etc. That the name matches the constant path of the class or module being defined is a strong property of the language people rely on. ---------------------------------------- Bug #21316: Namespaces leak with permanent names https://bugs.ruby-lang.org/issues/21316#change-113080 * Author: fxn (Xavier Noria) * Status: Open * Backport: 3.2: UNKNOWN, 3.3: UNKNOWN, 3.4: UNKNOWN ---------------------------------------- Namespaces are not transparent for this program ```ruby C = Class.new C.name == 'C' ``` because under a non-main user namespace, the name of `C` has the namespace as a prefix. -- https://bugs.ruby-lang.org/