> Note: we already have optimizations for immutable strings
> starting with Ruby 2.1+
>
> Ruby 2.1 - introduced opt_str_freeze
>            "literal string".freeze in source code dedupe,
>            fine-grained, conservative, but verbose and ugly
>
> Ruby 2.2 - introduced opt_aset_with/opt_aref_with
>            Hash#[] and Hash#[]= with literal string args have
>            implicit freeze applied to them.  This only affects
>            base Hash objects and not subclasses; but is mostly
>            transparent.
>
> Ruby 2.3 - frozen_string_literal magic comment supported per-source
>            file.  All literal strings in a source file with the magic
>            comment can behave like "literal string".freeze from 2.1+
>            This needs to be carefully applied to existing source,
>            as it is easy to introduce incompatibilities.
>
> For Ruby 3, I do not support frozen_string_literal becoming the
> default.  I am 100% against breaking existing code.  Too much
> 1.8 code was broken when 1.9 came out and Ruby lost users as a
> result.  But it's not my decision...

I thought it was already agreed that it would be the case.
Are you saying Ruby 3 may not break backwards compatibility?

>
>> Performance wise will Immutable Strings be similar to Symbols?
>
> Maybe, I haven't checked in a while.  Sometimes, things can be
> faster since there's no intermediate (mutable) string object:
>
> `puts :foo` causes mutable "foo" to be created, but
> `puts "foo".freeze` will not.
>
> I was going to say Strings have better known hashing algorithms
> so you may get better hash distribution; but Symbols use
> the hash value based on the underlying string nowadays (r51410)
>
>> If we put the hypothesis of removing Symbols from ruby would that have
>> any negative impact on performance?
>
> Fundamentally they are different things, and I am not a
> semantics person.  Performance should not change much if at all.
> The performance of most other languages is fine without symbols,
> including Perl5 which I consider a close relative of Ruby.
>
>> What other side effects could we envision?
>
> But again, I don't support breaking production code.  We may
> need to support symbols in the language forever.  Anyways, I
> enjoy typing symbols since they take less keystrokes and require
> less screen space, especially with 1.9+ JSON-like Hash syntax.

Can you read my reply to Rodrigo? Does it make sense to you what I
wrote there? Thanks.

> However, symbols do take up more memory, since every symbol has
> an immutable fstring is attached to them along with
> symbol-specific data.  Immutable strings only have extra
> overhead from being in the fstring table.
>
> Unsubscribe: <mailto:ruby-core-request / ruby-lang.org?subject=unsubscribe>
> <http://lists.ruby-lang.org/cgi-bin/mailman/options/ruby-core>

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