[#14696] Inconsistency in rescuability of "return" — Charles Oliver Nutter <charles.nutter@...>

Why can you not rescue return, break, etc when they are within

21 messages 2008/01/02
[#14699] Re: Inconsistency in rescuability of "return" — Gary Wright <gwtmp01@...> 2008/01/02

[#14738] Enumerable#zip Needs Love — James Gray <james@...>

The community has been building a Ruby 1.9 compatibility tip list on

15 messages 2008/01/03
[#14755] Re: Enumerable#zip Needs Love — Martin Duerst <duerst@...> 2008/01/04

Hello James,

[#14772] Manual Memory Management — Pramukta Kumar <prak@...>

I was thinking it would be nice to be able to free large objects at

36 messages 2008/01/04
[#14788] Re: Manual Memory Management — Marcin Raczkowski <mailing.mr@...> 2008/01/05

I would only like to add that RMgick for example provides free method to

[#14824] Re: Manual Memory Management — MenTaLguY <mental@...> 2008/01/07

On Sat, 5 Jan 2008 15:49:30 +0900, Marcin Raczkowski <mailing.mr@gmail.com> wrote:

[#14825] Re: Manual Memory Management — "Evan Weaver" <evan@...> 2008/01/07

Python supports 'del reference', which decrements the reference

[#14838] Re: Manual Memory Management — Marcin Raczkowski <mailing.mr@...> 2008/01/08

Evan Weaver wrote:

[#14911] Draft of some pages about encoding in Ruby 1.9 — Dave Thomas <dave@...>

Folks:

24 messages 2008/01/10

[#14976] nil encoding as synonym for binary encoding — David Flanagan <david@...>

The following just appeared in the ChangeLog

37 messages 2008/01/11
[#14977] Re: nil encoding as synonym for binary encoding — Yukihiro Matsumoto <matz@...> 2008/01/11

Hi,

[#14978] Re: nil encoding as synonym for binary encoding — Dave Thomas <dave@...> 2008/01/11

[#14979] Re: nil encoding as synonym for binary encoding — David Flanagan <david@...> 2008/01/11

Dave Thomas wrote:

[#14993] Re: nil encoding as synonym for binary encoding — Dave Thomas <dave@...> 2008/01/11

[#14980] Re: nil encoding as synonym for binary encoding — Gary Wright <gwtmp01@...> 2008/01/11

[#14981] Re: nil encoding as synonym for binary encoding — Yukihiro Matsumoto <matz@...> 2008/01/11

Hi,

[#14995] Re: nil encoding as synonym for binary encoding — David Flanagan <david@...> 2008/01/11

Yukihiro Matsumoto writes:

[#15050] how to "borrow" the RDoc::RubyParser and HTMLGenerator — Phlip <phlip2005@...>

Core Rubies:

17 messages 2008/01/13
[#15060] Re: how to "borrow" the RDoc::RubyParser and HTMLGenerator — Eric Hodel <drbrain@...7.net> 2008/01/14

On Jan 13, 2008, at 08:54 AM, Phlip wrote:

[#15062] Re: how to "borrow" the RDoc::RubyParser and HTMLGenerator — Phlip <phlip2005@...> 2008/01/14

Eric Hodel wrote:

[#15073] Re: how to "borrow" the RDoc::RubyParser and HTMLGenerator — Eric Hodel <drbrain@...7.net> 2008/01/14

On Jan 13, 2008, at 20:35 PM, Phlip wrote:

[#15185] Friendlier methods to compare two Time objects — "Jim Cropcho" <jim.cropcho@...>

Hello,

10 messages 2008/01/22

[#15194] Can large scale projects be successful implemented around a dynamic programming language? — Jordi <mumismo@...>

A good article I have found (may have been linked by slashdot, don't know)

8 messages 2008/01/24

[#15248] Symbol#empty? ? — "David A. Black" <dblack@...>

Hi --

24 messages 2008/01/28
[#15250] Re: Symbol#empty? ? — Yukihiro Matsumoto <matz@...> 2008/01/28

Hi,

Re: Manual Memory Management

From: Kurt Stephens <ks@...>
Date: 2008-01-09 01:09:51 UTC
List: ruby-core #14873
MenTaLguY wrote:
> On Tue, 8 Jan 2008 14:35:28 +0900, Marcin Raczkowski <mailing.mr@gmail.com> wrote:
>> I had idea of reference counting GC for a moment, I'm not sure how hard
>> it would be to implement and if it's actually usable.
> 
> Perl has a reference-counting GC without cycle-detection (except on thread
> termination), as does TCL (though it isn't really possible to create real GC
> cycles in TCL anyway).  Python has a reference-counting GC with cycle detection.
> Microsoft's JScript (JavaScript) is also purely reference-counted.  So it's
> certainly done in practice.
> 
> However, more mature garbage-collected languages (i.e. smalltalk, lisp dialects,
> java, other JavaScript implementations, etc.) with garbage collection almost
> universally use some variant of mark-and-sweep instead.  There are a lot of
> reasons for this, including nice handling of reference cycles (Microsoft's
> JavaScript implementation is notorious for memory leaks) and minimal overhead
> for common reference operations.  Generally the amortized cost of mark-and-sweep
> is lower too.
> 
> I think the real problem that needs to be addressed is that Ruby's mark-and-sweep
> implementation is not actually very good, in terms of heap sizing/reclaimation
> and collection heuristics.
> 
> -mental
> 
> 

  Copying-compacting collectors perform better in time and space than
mark-sweep collectors in almost all cases, esp. better than conservative
mark-sweep.  Allocation in a copying-compacting collector simply
requires incrementing a pointer until the end of the free space is reached.

  For example, see the Chicken Scheme compiler. It's GC allocates via
alloca() from the C stack and copies objects to the heap if they survive
collection from stack.  Essentially, the C stack is the nursery for a
two-generation collector.

  Copying has the nice side-effect of grouping closely referenced
objects together, improving CPU-cache-memory locality.

  But since Ruby internals cater to a very naive foreign-function
interface to C extensions, implementing a copying collector is going to
be difficult and will require major changes to all C extensions.

  AFIAK, Sun's JVM implementation is not mark-sweep, it is a copying
collector with indirection handles to support C extensions.  Mark-sweep
is an architectural dead-end for long-running processes, because of
fragmentation.  Consider that the biggest draw to Ruby is Rails.

  See my previous posts about why the Bohem GC might be a better
replacement, until Ruby could support copying-compacting GC.

  Boehm GC should be easy to drop in, if we can get rid of
ObjectSpace.each_object, which, IMHO, is a bad language feature.  It
would be better if Ruby implemented efficient weak Arrays and Hashes.
Scanning a heap from user space leads to race conditions and contention,
if Ruby implemented native threads.

  Anybody want to work with me on trying the Boehm GC?

  What scripts are used for benchmarking Ruby?

Kurt Stephens
http://kurtstephens.com



In This Thread