digitalmars.D - Automatic reference counting
- Robert Clipsham (15/15) Aug 29 2011 Hey all,
- Michel Fortin (22/37) Aug 29 2011 It all depends on what you want.
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? There are obviously a few issues that would need looking at, a way of marking weak references for example. -- Robert http://octarineparrot.com/
Aug 29 2011
On 2011-08-29 11:44:46 +0000, Robert Clipsham <robert 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 michelf.com http://michelf.com/
Aug 29 2011