Automatic reference counting

Michel Fortin michel.fortin at michelf.com
Mon Aug 29 11:47:55 PDT 2011


On 2011-08-29 11:44:46 +0000, Robert Clipsham <robert at octarineparrot.com> said:

> Hey all,
> 
> For those of you that doesn't know, Objective-C primarily uses 
> reference counting to manage memory. With the latest releases of clang, 
> it also supports automatic reference counting, whereby the compiler 
> automatically inserts retain/release messages ("calls" if you don't 
> know Obj-C) into the code.
> 
> There's a complete spec for it at:
> http://clang.llvm.org/docs/AutomaticReferenceCounting.html
> 
> My main reason for posting is curiosity - how feasible would it be to 
> have something like this in D?

It all depends on what you want.

Note that you can already create a struct that wraps any type while 
doing automatic reference counting. RefCounted in std.typecons is meant 
to work with non-class types (or so I think), but a similar version 
could be made to work with classes.

Or you might want to create a class hierarchy which is automatically 
reference counted by the compiler. Any class in that hierarchy would 
see the compiler create 'retain' and 'release' calls as necessary to 
manage the reference counter, the rest of D would still use the GC.

Or you might want to entirely replace the GC with a reference-counted 
scheme. Everything on the heap would be reference counted instead of 
garbage collected, from arrays to classes.

Each of these have their advantages, but the further down you go the 
more complicated it becomes to implement.


> There are obviously a few issues that would need looking at, a way of 
> marking weak references for example.

Weak references are already a weak spot in D… even with a GC you 
sometime want weak references. Although the need for them is weaker 
with a GC than with reference counting.


-- 
Michel Fortin
michel.fortin at michelf.com
http://michelf.com/



More information about the Digitalmars-d mailing list