[#27380] [Bug #2553] Fix pthreads slowness by eliminating unnecessary sigprocmask calls — Dan Peterson <redmine@...>

Bug #2553: Fix pthreads slowness by eliminating unnecessary sigprocmask calls

21 messages 2010/01/03

[#27437] [Feature #2561] 1.8.7 Patch reduces time cost of Rational operations by 50%. — Kurt Stephens <redmine@...>

Feature #2561: 1.8.7 Patch reduces time cost of Rational operations by 50%.

9 messages 2010/01/06

[#27447] [Bug #2564] [patch] re-initialize timer_thread_{lock,cond} after fork — Aliaksey Kandratsenka <redmine@...>

Bug #2564: [patch] re-initialize timer_thread_{lock,cond} after fork

18 messages 2010/01/06

[#27635] [Bug #2619] Proposed method: Process.fork_supported? — Hongli Lai <redmine@...>

Bug #2619: Proposed method: Process.fork_supported?

45 messages 2010/01/20
[#27643] [Feature #2619] Proposed method: Process.fork_supported? — Luis Lavena <redmine@...> 2010/01/21

Issue #2619 has been updated by Luis Lavena.

[#27678] Re: [Feature #2619] Proposed method: Process.fork_supported? — Yukihiro Matsumoto <matz@...> 2010/01/22

Hi,

[#27684] Re: [Feature #2619] Proposed method: Process.fork_supported? — Charles Oliver Nutter <headius@...> 2010/01/22

On Thu, Jan 21, 2010 at 11:27 PM, Yukihiro Matsumoto <matz@ruby-lang.org> w=

[#27708] Re: [Feature #2619] Proposed method: Process.fork_supported? — Yukihiro Matsumoto <matz@...> 2010/01/22

Hi,

[#27646] Re: [Bug #2619] Proposed method: Process.fork_supported? — Tanaka Akira <akr@...> 2010/01/21

2010/1/21 Hongli Lai <redmine@ruby-lang.org>:

[#27652] Re: [Bug #2619] Proposed method: Process.fork_supported? — Hongli Lai <hongli@...99.net> 2010/01/21

On 1/21/10 5:20 AM, Tanaka Akira wrote:

[#27653] Re: [Bug #2619] Proposed method: Process.fork_supported? — Tanaka Akira <akr@...> 2010/01/21

2010/1/21 Hongli Lai <hongli@plan99.net>:

[#27662] Re: [Bug #2619] Proposed method: Process.fork_supported? — Vladimir Sizikov <vsizikov@...> 2010/01/21

On Thu, Jan 21, 2010 at 10:53 AM, Tanaka Akira <akr@fsij.org> wrote:

[#27698] [Bug #2629] ConditionVariable#wait(mutex, timeout) should return whether the condition was signalled, not the waited time — Hongli Lai <redmine@...>

Bug #2629: ConditionVariable#wait(mutex, timeout) should return whether the condition was signalled, not the waited time

8 messages 2010/01/22

[#27722] [Feature #2635] Unbundle rdoc — Yui NARUSE <redmine@...>

Feature #2635: Unbundle rdoc

14 messages 2010/01/23

[#27757] [Bug #2638] ruby-1.9.1-p37[68] build on aix5.3 with gcc-4.2 failed to run for me because it ignores where libgcc is located. — Joel Soete <redmine@...>

Bug #2638: ruby-1.9.1-p37[68] build on aix5.3 with gcc-4.2 failed to run for me because it ignores where libgcc is located.

10 messages 2010/01/24

[#27778] [Bug #2641] Seg fault running miniruby during ruby build on Haiku — Alexander von Gluck <redmine@...>

Bug #2641: Seg fault running miniruby during ruby build on Haiku

10 messages 2010/01/25

[#27791] [Bug #2644] memory over-allocation with regexp — Greg Hazel <redmine@...>

Bug #2644: memory over-allocation with regexp

12 messages 2010/01/25

[#27794] [Bug #2647] Lack of testing for String#split — Hugh Sasse <redmine@...>

Bug #2647: Lack of testing for String#split

14 messages 2010/01/25

[#27912] [Bug #2669] mkmf find_executable doesn't find .bat files — Roger Pack <redmine@...>

Bug #2669: mkmf find_executable doesn't find .bat files

11 messages 2010/01/27

[#27930] [Bug:trunk] some behavior changes of lib/csv.rb between 1.8 and 1.9 — Yusuke ENDOH <mame@...>

Hi jeg2, or anyone who knows the implementation of FasterCSV,

15 messages 2010/01/28
[#27931] Re: [Bug:trunk] some behavior changes of lib/csv.rb between 1.8 and 1.9 — James Edward Gray II <james@...> 2010/01/28

On Jan 28, 2010, at 10:51 AM, Yusuke ENDOH wrote:

[ruby-core:27574] Re: better GC?

From: Brent Roman <brent@...>
Date: 2010-01-13 00:57:29 UTC
List: ruby-core #27574
Rick,

1)  Unix, Solaris and Windows all have the necessary user space virtual 
memory management hooks.  Nothing this GC is doing is processor dependent.
What specific platforms concern you here?

2) MRI cannot use a copying GC for the reasons Evan Phoenix explained
    in a previous message.  As a practical matter, there's a huge code base
both in extensions
    and in the core itself that would have to be carefully reengineered to
    cope with moving objects.  And, we're not even considering extensions
    written for corporate applications that most likely not open source.

     However, having said that:

     http://www.engineyard.com/blog/2009/5-things-youll-love-about-rubinius/

    The above explains that Rubinus supports the MRI C-API by passing around
opaque
    object handles.  This appears to work for many 'C' extensions, but,
having looked
    at the MRI core's 'C' code, I doubt handles would work for much there.
    Also, I'm reading hints that those handles represent significant extra
overhead
    the Rubinius VM must maintain for those to remain objects accessible
from 'C'.

    In my mind, in comes down to that fact that, once you start moving
objects
    around, MRI will necessarily start to resemble Rubinius internally.  So,
why
    not work to improve Rubinus if that's the direction you'd like to go?

- brent


Rick DeNatale wrote:
> 
> 
> Well, I've just scanned the paper, but I have a few comments.
> 
> 1) The algorithm they present relies on hooking into the virtual
> memory implementation in order to implement a write barrier by write
> protecting pages, catching the exception caused when a store is done
> into a protected page, marking the page as dirty, and then un-write
> protecting the page.  I'm not sure how portable this is across various
> combinations of operating system and processor.
> 
> 2) IMHO, conservative GCs are compromises which attempt to provide GC
> to languages without a strong 'object model'. And without help from
> the compiler. By object model here, I mean more than just how objects
> are laid out, or how methods are found, but a design which is factored
> so that at the least references to objects vs. non-objects can be
> distinguished, and reference changes can be efficiently tracked,
> usually with some support from the compiler, and/or implementation of
> the 'byte-codes'.
> 
> There's no reason why Ruby couldn't be implemented with such an object
> model, in fact I don't think that it's far from that.
> 
> There are decades of experience in implementing VMs for such languages
> which provide efficient accurate garbage collection, while also
> providing at least, and usually two, interfaces for invoking code not
> generated by the languages compiler:
> 
> 1) An interface for invoking procedural library code which is totally
> unaware which language invoked it.  Such code takes a list of
> parameters and returns result value(s). This code need have no
> interaction with the GC, the interface insures that object references
> don't pass across the interface, all the parameters get converted to
> and result values get converted from basic data types (ints, strings,
> structs ...).  This is what the FFI does.
> 
> 2) An interface for using a low-level language for writing
> 'primitives' which are aware that they need to interact with the VM
> and the garbage collector.  This requires that the interface provides
> macros and/or function calls/call backs and a set of rules to be
> followed in writing the primitives.
> 
> The biggest problem with MRI, is that it started out using one api for
> both of these.  I suspect that a large percentage of Ruby extensions
> are really cases of use case 1.
> 
> If Ruby were to take a path of deprecating using the extension api for
> use case 1 in favor of FFI, and then evolving the extension API to
> support having objects move during GC (which the similar APIs for
> Smalltalk, Java and VM base languages have done), it could actually
> get a competitive VM/GC.
> 
> -- 
> Rick DeNatale
> 
> Blog: http://talklikeaduck.denhaven2.com/
> Twitter: http://twitter.com/RickDeNatale
> WWR: http://www.workingwithrails.com/person/9021-rick-denatale
> LinkedIn: http://www.linkedin.com/in/rickdenatale
> 
> 
> 

-- 
View this message in context: http://old.nabble.com/-ruby-core%3A27135--better-GC--tp26735247p27137841.html
Sent from the ruby-core mailing list archive at Nabble.com.


In This Thread