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