[#27003] [Bug #2422] splat operator fails on array of 1 element — Raul Parolari <redmine@...>

Bug #2422: splat operator fails on array of 1 element

12 messages 2009/12/02

[#27025] [Backport #2431] StringIO#{gets,readlines} with "" (paragraph mode) trims last "\n" — Hiroshi NAKAMURA <redmine@...>

Backport #2431: StringIO#{gets,readlines} with "" (paragraph mode) trims last "\n"

8 messages 2009/12/04

[#27086] [Feature #2454] OpenSSL has no maintainer — Yui NARUSE <redmine@...>

Feature #2454: OpenSSL has no maintainer

16 messages 2009/12/07

[#27120] #to_enum ignores block? — Roger Pack <rogerdpack@...>

Is #to_enum ignoring its block expected?

11 messages 2009/12/09

[#27135] better GC? — Roger Pack <rogerdpack@...>

Could I put in a small plea for a better GC?

56 messages 2009/12/10
[#27136] Re: better GC? — Yukihiro Matsumoto <matz@...> 2009/12/11

Hi,

[#27476] Re: better GC? — Paul Brannan <pbrannan@...> 2010/01/07

On Fri, Dec 11, 2009 at 09:07:16AM +0900, Yukihiro Matsumoto wrote:

[#27477] Re: better GC? — Eero Saynatkari <ruby-ml@...> 2010/01/07

Excerpts from Paul Brannan's message of Thu Jan 07 21:53:34 +0200 2010:

[#27563] Re: better GC? — Brent Roman <brent@...> 2010/01/12

[#27199] [Backport #2488] thread usage can result in bad HANDLE — Roger Pack <redmine@...>

Backport #2488: thread usage can result in bad HANDLE

12 messages 2009/12/16

[#27286] [Bug #2515] Array#select! — Roger Pack <redmine@...>

Bug #2515: Array#select!

17 messages 2009/12/22

[#27327] [Bug #2531] Ruby 1.8.7-p248 fails to cross-compile same version — Luis Lavena <redmine@...>

Bug #2531: Ruby 1.8.7-p248 fails to cross-compile same version

9 messages 2009/12/25

[#27360] [Feature #2542] URI lib should be updated to RFC 39886 — Marc-Andre Lafortune <redmine@...>

Feature #2542: URI lib should be updated to RFC 39886

15 messages 2009/12/31

[ruby-core:26988] Re: Caching #to_s for immutables (and a possible future for constant-folding) [with patch v2]

From: Kurt Stephens <ks@...>
Date: 2009-12-01 23:53:55 UTC
List: ruby-core #26988
Yusuke ENDOH wrote:
> Hi,
> 
> 2009/12/1 Kurt Stephens <ks@kurtstephens.com>:
>>  I fixed issues uncovered by running make test-all.  There were a few tests
>> and modules that assumed Symbol#to_s was mutable -- #method_missing appears
>> to be a hot-bed for this assumption.  There were 7 common failures between
>> the patched code and the svn trunk:
>>
>> WITHOUT THE PATCH:
>>
>> real    5m19.335s
>> user    2m15.804s
>> sys     0m35.850s
>>
>> WITH THE PATCH:
>>
>> real    4m37.127s
>> user    1m51.243s
>> sys     0m33.454s
>>
>> Approx 14% faster.
> 
> 
> This is really interesting result, but the impact of the spec change seems
> not to be small.  I guess that it may be acceptable for Ruby 2.0, but NG
> for 1.8 and 1.9.
> 
> How about if #to_s returns, instead of a frozen String itself, a mutable
> String that is duplicated from the cached frozen String?  Become less
> effective than now?
> 

Another alternative would be to leave #to_s alone and introduce 
#to_s_maybe_frozen and change all the internals (IO methods, any_to_s, 
string interpolation) to use #to_s_maybe_frozen.  Others can adopt it as 
they please.

I don't think it we'll get the 15% improvement because 3rd party code 
wont get the improvement (but they wont get a runtime error either). 
The improvement comes from not creating garbage and constructing new 
objects unless necessary.

This is a pretty simple change, but I could use some help identifying 
how string interpolation is handled by the parser.

While were at it, I propose we add Object#dup_if_frozen to support 
things like:

   SOME_FROZEN_STRING = 'frozen string'.freeze
   SOME_STRING = 'string'
   def func_with_side_effects x
     x = x.to_s.dup_if_frozen
     x.sub!("str", "STR")
     x
   end
   func_with_side_effect SOME_FROZEN_STRING
   func_with_side_effect SOME_STRING

#dup_if_frozen should return self on immutables and immediates (Floats, 
Fixnums, Symbols, etc.)  This would make defining generic deep copy 
semantics much easier to write.

Kurt

In This Thread