Issue #15836 has been updated by ahorek (Pavel Rosick=FD).


@byroot thanks for sharing the benchmark!

IMO module names should be frozen

even if it's easy to fix, this change could definitely break existing apps =
that depend on it, see
https://github.com/jruby/jruby/issues/5229

----------------------------------------
Feature #15836: [Proposal] Make Module#name and Symbol#to_s return their in=
ternal fstrings
https://bugs.ruby-lang.org/issues/15836#change-77958

* Author: byroot (Jean Boussier)
* Status: Feedback
* Priority: Normal
* Assignee: =

* Target version: =

----------------------------------------
# Why ?

In many codebases, especially Rails apps, these two methods are the source =
of quite a lot of object allocations.

`Module#name` is often accessed for various introspection features, autoloa=
ding etc.

`Symbol#to_s` is access a lot by HashWithIndifferentAccess other various AP=
Is accepting both symbols and strings. =


Returning fstrings for both of these methods could significantly reduce all=
ocations, as well as sligthly reduce retention as it would reduce some dupl=
ications.

Also, more and more Ruby APIs are now returning fstrings. `frozen_string_li=
teral`AFAIK should become the default some day, string used as hash keys ar=
e now automatically interned as well.

### Backward compatibilty =


Of course this is not fully backward compatible, it's inevitable that some =
code in the wild is mutating the strings returned by these methods, but I d=
o believe it's a rare occurence, and easy to fix. =


### Implementation

I implemented it here: https://github.com/ruby/ruby/pull/2175



-- =

https://bugs.ruby-lang.org/

Unsubscribe: <mailto:ruby-core-request / ruby-lang.org?subject=3Dunsubscribe>
<http://lists.ruby-lang.org/cgi-bin/mailman/options/ruby-core>