More radical ideas about gc and reference counting

w0rp via Digitalmars-d digitalmars-d at puremagic.com
Sun May 11 07:55:41 PDT 2014


On Sunday, 11 May 2014 at 12:52:29 UTC, Michel Fortin wrote:
> On 2014-05-11 08:29:13 +0000, Walter Bright 
> <newshound2 at digitalmars.com> said:
>
>> Again, O-C and C++/CX ARC are not memory safe because in order 
>> to make it perform they provide unsafe escapes from it.
>
> But D could provide memory-safe escapes. If we keep the current 
> GC to collect cycles, we could also allow raw pointers managed 
> by the GC alongside ARC.
>
> Let's say we have two kinds of pointers: rc+gc pointers (the 
> default) and gc_only pointers (on demand). When assigning from 
> a rc+gc pointer to a gc_only pointer, the compiler emits code 
> that disables destruction via the reference counting. This 
> makes the GC solely responsible for destructing and 
> deallocating that memory block. You can still assign the 
> pointer to a rc+gc pointer later on, but the reference count is 
> no longer reliable which is why RC-based destruction has been 
> disabled.

You know, this doesn't sound that far off from what Python does, 
unless I'm completely wrong about it. I believe that Python uses 
reference counting and uses GC to collect cycles in a way like 
you have described. I'm not sure how efficient it is. Python 
people don't tend to talk about speed that much.


More information about the Digitalmars-d mailing list