Ruby 2.1: Frozen String Literals23 Dec 2013
In Ruby 2.1,
"str".freeze is optimized by the compiler to return a single shared frozen strings on every invocation. An alternative
"str"f syntax was implemented initially, but later reverted.
Although the external scope of this feature is limited, internally it is used extensively to de-duplicate strings in the VM. Previously, every
def method_missing(), the symbol
:method_missing and any literal
"method_missing" strings in the code-base would all create their own String objects. With Ruby 2.1, only one string is created and shared. Since many strings are commonly re-used in any given code base, this easily adds up. In fact, large applications can expect up to 30% fewer long-lived strings on their heaps in 2.1.