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