[#390749] Why are there so many similar/identical methods in core classes — Kassym Dorsel <k.dorsel@...>

Let's look at the Array class and start with method aliases.

14 messages 2011/12/02

[#390755] Inverse Operation of Module#include — Su Zhang <su.comp.lang.ruby@...>

Hi list,

21 messages 2011/12/02
[#390759] Re: Inverse Operation of Module#include — Ryan Davis <ryand-ruby@...> 2011/12/02

[#390764] Re: Inverse Operation of Module#include — Isaac Sanders <isaacbfsanders@...> 2011/12/02

I would suggest an Adapter pattern use here. IF there is something that has

[#390795] Is there a better way to check this array? — Wayne Brissette <wbrisett@...>

I have an array which contains items that need to be renamed. Unfortunately the way things are changed are based on a comparison of if something else exists. For example in this simple array:

9 messages 2011/12/03

[#390876] black magical hash element vivification — Chad Perrin <code@...>

Ruby (1.9.3p0 to be precise, installed with RVM) is not behaving as I

12 messages 2011/12/05

[#390918] WEB SURVEY about Ruby Community — Intransition <transfire@...>

Did any one else get this survey request?

14 messages 2011/12/07

[#390972] Which is the best online document conversion site? — "Maria M." <mariamoore952@...>

Can anyone tell me that which is the best online document conversion

7 messages 2011/12/08

[#390976] Confusing results from string multiplication — Rob Marshall <robmarshall@...>

Hi,

19 messages 2011/12/08

[#391019] How can I do h["foo"] += "bar" if h["foo"] does not exist? — "Andrew S." <andrewinfosec@...>

Hi there,

13 messages 2011/12/09

[#391027] reading from file without end-of-lines — Janko Muzykant <umrzykus@...>

hi,

20 messages 2011/12/09
[#391028] Re: reading from file without end-of-lines — Gavin Sinclair <gsinclair@...> 2011/12/09

> i'm trying to read a few text values from single file:

[#391031] Re: reading from file without end-of-lines — Robert Klemme <shortcutter@...> 2011/12/09

On Fri, Dec 9, 2011 at 9:58 AM, Gavin Sinclair <gsinclair@gmail.com> wrote:

[#391042] Re: reading from file without end-of-lines — Gavin Sinclair <gsinclair@...> 2011/12/09

On Fri, Dec 9, 2011 at 8:18 PM, Robert Klemme

[#391135] I need advice on what to do next. — Nathan Kossaeth <system_freak_2004@...>

I am new to programming. I read the ebook "Learn to Program" by Chris

23 messages 2011/12/12

[#391216] perf optimization using profile results — Chuck Remes <cremes.devlist@...>

I need some help with optimizing a set of libraries that I use. They are ffi-rzmq, zmqmachine and rzmq_brokers (all up on github).

13 messages 2011/12/13
[#391218] Re: perf optimization using profile results — Chuck Remes <cremes.devlist@...> 2011/12/13

On Dec 13, 2011, at 9:57 AM, Chuck Remes wrote:

[#391234] Re: perf optimization using profile results — Charles Oliver Nutter <headius@...> 2011/12/14

A couple quick observations.

[#391238] Re: perf optimization using profile results — Chuck Remes <cremes.devlist@...> 2011/12/14

On Dec 13, 2011, at 7:03 PM, Charles Oliver Nutter wrote:

[#391324] ruby 1.9 threading performance goes non-linear — Joel VanderWerf <joelvanderwerf@...>

12 messages 2011/12/16
[#391325] Re: ruby 1.9 threading performance goes non-linear — Eric Wong <normalperson@...> 2011/12/16

Joel VanderWerf <joelvanderwerf@gmail.com> wrote:

[#391420] Accessing class instance variables from an instance? — "Shareef J." <shareef@...>

Hi there,

26 messages 2011/12/20
[#391454] Re: Accessing class instance variables from an instance? — Khat Harr <myphatproxy@...> 2011/12/21

Actually, now that I'm thinking about it the existing behavior sort of

[#391456] Re: Accessing class instance variables from an instance? — Josh Cheek <josh.cheek@...> 2011/12/21

On Tue, Dec 20, 2011 at 9:42 PM, Khat Harr <myphatproxy@hotmail.com> wrote:

[#391545] Kernel#exit raises an exception? — Khat Harr <myphatproxy@...>

While I was working on embedding an interpreter I wrote a function to

13 messages 2011/12/24

[#391618] rvmsh: An easy installer for RVM — Bryan Dunsmore <dunsmoreb@...>

I have recently begun work on a project called [rvmsh]

12 messages 2011/12/29

[#391783] Mailspam — Gunther Diemant <g.diemant@...>

Is there a way to stop this mailspam of Luca (Mail)?

12 messages 2011/12/29

[#391790] What’s the standard way of implementing #hash for value objects in Ruby? — Nikolai Weibull <now@...>

Hi!

23 messages 2011/12/29
[#391792] Re: What’s the standard way of implementing #hash for value objects in Ruby? — Gunther Diemant <g.diemant@...> 2011/12/29

I think you can't access instance variables from a class method, so

[#391793] Re: What’s the standard way of implementing #hash for value objects in Ruby? — Nikolai Weibull <now@...> 2011/12/29

On Thu, Dec 29, 2011 at 15:52, Gunther Diemant <g.diemant@gmx.net> wrote:

[#391811] Re: What’s the standard way of implementing #hash for value objects in Ruby? — Robert Klemme <shortcutter@...> 2011/12/29

On Thu, Dec 29, 2011 at 4:06 PM, Nikolai Weibull <now@bitwi.se> wrote:

[#391812] Re: What’s the standard way of implementing #hash for value objects in Ruby? — Nikolai Weibull <now@...> 2011/12/29

On Fri, Dec 30, 2011 at 00:26, Robert Klemme <shortcutter@googlemail.com> wrote:

[#391816] Re: What’s the standard way of implementing #hash for value objects in Ruby? — Josh Cheek <josh.cheek@...> 2011/12/30

On Thu, Dec 29, 2011 at 5:47 PM, Nikolai Weibull <now@bitwi.se> wrote:

[#391833] Re: What’s the standard way of implementing #hash for value objects in Ruby? — Robert Klemme <shortcutter@...> 2011/12/30

On Fri, Dec 30, 2011 at 12:47 AM, Nikolai Weibull <now@bitwi.se> wrote:

Re: Garbage collection and define_finalizer

From: Garthy D <garthy_lmkltybr@...>
Date: 2011-12-01 01:25:43 UTC
List: ruby-talk #390726
Hi Robert,

On 30/11/11 23:51, Robert Klemme wrote:
> On Wed, Nov 30, 2011 at 4:11 AM, Garthy D
> <garthy_lmkltybr@entropicsoftware.com>  wrote:
>
>> Thankyou for the detailed reply. :)
>
> You're welcome!
>
>> On 30/11/11 00:07, Robert Klemme wrote:
>>>
>>> On Tue, Nov 29, 2011 at 1:43 PM, Garthy D
>>> <garthy_lmkltybr@entropicsoftware.com>    wrote:
>
>>> What you observe might mean that you
>>> simply haven't created enough Ruby garbage for GC to think it needs to
>>> work.  I have no idea how you allocate texture memory but if it is in
>>> a C extension written by you I would check whether there is a way to
>>> go through MRI's allocation in order to correct MRI's idea of used
>>> memory.  Implementation of Ruby's String might be a good example for
>>> that.
>>
>> Your assumption re the C extension for texture memory is pretty-much spot
>> on. :)
>
> :-)
>
>> Re texture memory, it's a little more complicated than a standard
>> allocation. Some memory will be the standard allocated sort, but some will
>> be on the video card, and they're effectively coming from different "pools"
>> (or heaps), neither of which I'll have direct control over. Unless the Ruby
>> GC directly understands this concept (I don't know if it does, but I'm
>> guessing not), I'm not going to be able to use Ruby to manage that memory.
>> Unfortunately, the problem goes a bit beyond just textures, as I'm wrapping
>> a good chunk of a 3D engine in Ruby objects. That's my problem to worry
>> about though.
>
> Sounds tricky indeed.

It certainly keeps things interesting. ;)

>> And that's assuming I can redirect the allocation calls anyway- I'm not sure
>> if I can. It'd be nice to be able to inform the Ruby GC of allocated memory
>> (or an estimate, if it keeps changing) without actually leaving the GC to
>> allocate it. Please correct me if I'm wrong, but I'm assuming this can't be
>> done, and you must use the ALLOC/ALLOC_N-style functions?
>
> I'm not such a good source for this as the source (or Matz).  So you
> probably better look elsewhere for a definitive answer.

I had a dig around the source (gc.c in particular) to see if I could 
find any answers, but I'm afraid it's beyond me at this point. I'd 
hazard a guess that the functionality doesn't yet exist, but I could 
very well be completely wrong. It's just a guess at this stage.

> Maybe for
> your issue it is sufficient to just reduce the threshold from which on
> Ruby starts considering GC at all.  I can't really tell.

On thinking about it, I really need to solve the problem "properly", 
particularly for large memory-guzzling things such as textures and 3D 
models. As an experiment I set up a means to force an object to drop its 
data ahead of time (where "drop" is defined as deleting the user data, 
but keeping the Ruby object), effectively invalidating it. For textures 
(and similar entities), the plan is to give each entity that requires 
one its own copy of a wrapped smart pointer. Thus the textures will be 
freed once every entity holding a texture object has either manually 
dropped its copy, or the GC has collected any references I've missed 
(and the plan of course is to try not to miss any references!).  I've 
got it working on simple objects at this point. I'll have to recode a 
few things to get it going for textures and models, but this is 
*probably* the solution I'll go for. I'll have to see how it turns out 
in practice.

However, once this is done for the bigger entities, there will still be 
quite a large number of small entities with minimal additional memory 
footprint that Ruby is unaware of. Reducing the threshold may be enough 
to solve the problem for the majority of these small entities- thankyou 
for the suggestion. :)

>> Unfortunately it causes a lot of problems in my case, as I had assumed one
>> thing from general reading on the topic, and observed another. That's my
>> problem to deal with though, not anyone else's. Still, there seems to be lot
>> of information online that talks about Ruby performing mark and sweep,
>> either stating outright that unreferenced objects are freed on first GC, or
>> heavily implying it at least. From your description, and my observations,
>> this information appears to be incorrect. Basically, there seems to be a lot
>> of misinformation about what the GC is doing. Apart from the source, is
>> there some place where the correct behaviour is discussed, that could be
>> referred to instead, particularly if someone is suggesting that the MRI GC
>> implementation should immediately clean up these references on next GC
>> (which, as we've established, isn't accurate)?
>
> I am not aware of any.  I haven't searched extensively though.  But we
> might need to update locations you found to reflect the truth.
> Ideally someone from core team would do a writeup which explains how
> GC works - at least for MRI.  Chances are also that behavior has
> changed between 1.8 and 1.9 as these are quite different internally.

I'll keep an eye out for such a thing if it appears.

Garth

In This Thread