[#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: "Rick DeNatale" <rick.denatale@...>
Date: 2008-01-08 20:34:27 UTC
List: ruby-core #14861
On Jan 8, 2008 12:35 AM, Marcin Raczkowski <mailing.mr@gmail.com> wrote:
> Evan Weaver wrote:
> > Python supports 'del reference', which decrements the reference
> > counter by one and removes the variable name from scope. I would
> > really like to see that in Ruby.
> >
> > Evan
> >
> 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.
>
> Mental: isn't reference on c-stack still REFERENCE ? what's the problem
> with traversing ruby and c stack, finding every reference to object -
> changing it to Qnil. then collecting object ?

Let me start to answer with a story.

Way back in the last century when I was at University we had a strange
phenomenon occuring on our mainframe computer.  Programs would give
strange results which couldn't  be explained, and every few days the
whole system would crash.

It turns out that one of the system programmers had introduced a new
feature which would automatically log off users from the timesharing
system on that machine.  It would scan the memory area where the
timesharing system kept an array of pointers to the data structures
which represented logged in users, and when it found a user who was
inactive for some set time logged him off by freeing the datastructure
and depositing a zero in the pointer, effectively nilling the
reference.

The bug was that this programmer wasn't properly checking for the end
of that array, so every so often it would free some random memory, and
dump a word of zeros somewhere 'random'.   If it affected the user
area then we saw the strange unexplained bugs, but if it clobbered a
crucial part of system memory then the system might crash, perhaps
sometime quite a bit later.

Now this situation is quite similar to how the Ruby GC treats the
C-stack which is just effectively an array of words which might be
pointers, integers, structs etc. The GC has no way of knowing how the
C code actually interprets any particular word, so it has to treat any
word which looks like a reference to an object, as a reference to an
object.  This is what makes it a conservative GC.

So, it's quite possible that a word on the stack might LOOK like a
reference to an object you want to 'manually' GC.  In this case
arbitrarily storing QNil in that word, might not be a good idea.

-- 
Rick DeNatale

My blog on Ruby
http://talklikeaduck.denhaven2.com/

In This Thread