Issue #20350 has been updated by byroot (Jean Boussier).
To provide some data-point. Our monolith runs with
https://github.com/Shopify/symbol-fstring, which makes the return value of `Symbol#to_s`
frozen without any problem. I think we had to fix a single gem to make it work a few years
back, that's it.
That said, while we run a lot of code (700+ transitive gems), that's not necessarily
fully representative of the code out there.
Also one major difference with chilled string literals is that you can't just set
`RUBYOPT="--disable-frozen-string-literal"` to continue running older code. I
guess you could monkey patch `String#to_s` though, and provide that as a gem to make it
easy to provide backward compatibility.
All this to say that as a Ruby user, I'd like this change to happen, because
`Symbol#to_s` is a major source of allocation, and Ruby performance is very GC dependent.
But as a Ruby committer I think we need to be careful about the rate of deprecation and
backward compatibility breaks. On one hand it would sound logical to ship such change at
the same time as the change for frozen string literals, but on the other hand it makes the
jump bigger and may alienate some users. So it's a fine line to walk.
So I'm positive, but with some reservations.
----------------------------------------
Feature #20350: Return chilled string from Symbol#to_s
https://bugs.ruby-lang.org/issues/20350#change-107337
* Author: Dan0042 (Daniel DeLorme)
* Status: Open
----------------------------------------
During Ruby 2.7 development there was an attempt to return a frozen string from
Symbol#to_s (#16150#note-22)
This had to be rolled back due to incompatibility, but now we have chilled strings
(#20205)
Symbol#to_s can safely return a chilled string, giving developers time to fix warnings
before switching to a frozen string.
--
https://bugs.ruby-lang.org/