Go 1.5

Ola Fosheim Grøstad via Digitalmars-d-announce digitalmars-d-announce at puremagic.com
Tue Sep 29 01:09:37 PDT 2015


On Sunday, 27 September 2015 at 16:54:52 UTC, Martin Nowak wrote:
> On 09/24/2015 03:49 AM, Ola Fosheim Grøstad wrote:
>> I haven't read the paper, but how does this solve collecting 
>> things like strings, or other "leaf types" when you use 
>> separate compilation units?
>
> We'd use runtime typeinfo.

But doesn't that imply a full scan when you are scanning for 
common types that live on leaf nodes in the graph?

>> The easy thing to do is to use GC locally (like for a fiber) 
>> and use
>> move semantics for moving objects from one locality to the 
>> other
>> (between fibers).
>
> Though it's challenging to efficiently manage all the GC 
> structures for a small scope. Doing this per thread is a proven 
> technology (see 
> https://trello.com/c/K7HrSnwo/28-thread-cache-for-gc).

That's a good start, but hardware threads range from 1-32 threads 
on current CPUs, so it is likely to affect modelling more than 
doing it on an actor/fiber level. If you could group N actors on 
a single GC heap you could run a simulation across many threads 
and then collect inbetween.

Btw, C++ appears to get the semi-stackless co-routines (no state 
on stack when yielding), which also appears to be the model used 
in Pony-lang. D really should consider a move in that direction 
combined with it's GC strategy.



More information about the Digitalmars-d-announce mailing list