On 2013-06-24 17:53:40 +0000, Walter Bright <newshou...@digitalmars.com> said:

On 6/24/2013 6:27 AM, Michel Fortin wrote:
Finally, there is a couple of features that were added to Objective-C since then
that should be added to the todo list to keep feature parity. Some of those, if
implemented right, could benefit the rest of D too. For instance: ARC (automatic
reference counting) which is becoming a must in Objective-C.

Arc has very serious problems - I don't see how it can be done and be memory safe without adding extensive pointer annotations. The general problem is someone taking the address of a member of the reference counted object. The rc goes to zero, the objects gets deleted, and there's that dangling pointer to it.

That's not a so big problem: just disallow taking pointers to member variables inside of reference-counted memory blocks. At least in SafeD. This is a quite rare thing to do in Objective-C anyway, I'd be surprised if it bothered anyone.

And I don't think it is very common in D either. Either way, if D was to implement ARC for its own memory allocator instead of the current GC (which would be great) there's noting to prevent implementing it so that reference counts could be incremented from the middle address of a memory block, it'd be quite easy in fact, and quite necessary too because of the way arrays work.

Usually, the most annoying part of ARC is retain cycles, especially implicit ones created by blocks (Objective-C's delegate literals).

--
Michel Fortin
michel.for...@michelf.ca
http://michelf.ca/

Reply via email to