The "no gc" crowd

Jonathan M Davis jmdavisProg at gmx.com
Tue Oct 8 21:24:12 PDT 2013


On Tuesday, October 08, 2013 20:46:16 Andrei Alexandrescu wrote:
> On 10/8/13 8:31 PM, Walter Bright wrote:
> > On 10/8/2013 8:18 PM, deadalnix wrote:
> >> We also badly need to be able to use type qualifier. We must
> >> stop the world when collecting thread local data or immutable one.
> >> That do not
> >> make any sense.
> > 
> > Making this work is fraught with difficulty. It is normal behavior in D
> > to create local data with new(), build a data structure, and then cast
> > it to shared so it can be transferred to another thread.
> 
> Stop right there. NO. That is NOT normal behavior, and if we require it
> in order to work we have made a mistake.
> 
> There should be NO casting required to get work done in client code.

Except that for the most part, that's the only way that immutable objects can 
be created - particularly if you're talking about arrays or AAs. It's _very_ 
common to do what Walter is describing. On top of that, we're forced to cast 
to immutable or shared to pass anything via std.concurrency, which causes 
pretty much the same problem. We're not even vaguely set up at this point to 
have type qualifiers indicate how something was constructed or what thread it 
comes from.

- Jonathan M Davis


More information about the Digitalmars-d mailing list