[#99868] [Ruby master Bug#17144] Tempfile.open { ... } does not unlink the file — eregontp@...
Issue #17144 has been reported by Eregon (Benoit Daloze).
15 messages
2020/09/03
[ruby-core:99817] [Ruby master Feature#17104] Do not freeze interpolated strings when using frozen-string-literal
From:
mame@...
Date:
2020-09-01 15:39:53 UTC
List:
ruby-core #99817
Issue #17104 has been updated by mame (Yusuke Endoh).
Eregon (Benoit Daloze) wrote in #note-17:
> I'll try to make a PR for this change: https://github.com/ruby/ruby/pull/3488
Thanks, I've given it a try.
I found `"foo#{ "foo" }"` frozen because it is optimized to `"foofoo"` at the parser. What do you think?
```
$ ./miniruby --enable-frozen-string-literal -e 'p "foo#{ "foo" }".frozen?'
true
```
----------------------------------------
Feature #17104: Do not freeze interpolated strings when using frozen-string-literal
https://bugs.ruby-lang.org/issues/17104#change-87341
* Author: bughit (bug hit)
* Status: Open
* Priority: Normal
* Assignee: Eregon (Benoit Daloze)
----------------------------------------
I think the point of frozen string literals is to avoid needless allocations. Interpolated strings are allocated each time, so freezing them appears pointless.
```rb
#frozen_string_literal: true
def foo(str)
"#{str}"
end
fr1 = 'a'
fr2 = 'a'
fr1_1 = foo(fr1)
fr2_1 = foo(fr2)
puts fr1.__id__, fr2.__id__, fr1_1.__id__, fr2_1.__id__
puts fr1_1 << 'b'
```
--
https://bugs.ruby-lang.org/
Unsubscribe: <mailto:[email protected]?subject=unsubscribe>
<http://lists.ruby-lang.org/cgi-bin/mailman/options/ruby-core>