The "no gc" crowd

qznc qznc at web.de
Wed Oct 9 09:40:15 PDT 2013


On Wednesday, 9 October 2013 at 13:38:12 UTC, Michel Fortin wrote:
> On 2013-10-09 11:58:33 +0000, Jacob Carlborg <doob at me.com> said:
>
>> On 2013-10-09 09:33, Manu wrote:
>> 
>>> It sounds pretty easy to reach to me. Compiler generating 
>>> inc/dec ref
>>> calls can't possibly be difficult. An optimisation that 
>>> simplifies
>>> redundant inc/dec sequences doesn't sound hard either... :/
>>> Is there more to it? Cleaning up circular references I 
>>> guess... what
>>> does Apple do?
>>> It's an uncommon edge case, so there's gotta be heaps of room 
>>> for
>>> efficient solutions to that (afaik) one edge case. Are there 
>>> others?
>> 
>> See my reply to one of your other posts:
>> 
>> http://forum.dlang.org/thread/bsqqfmhgzntryyaqrtky@forum.dlang.org?page=10#post-l33gah:24ero:241:40digitalmars.com
>
> I
>> 
>> don't recall the exact issues but there were several issues 
>> that were brought up in the email conversation.
>
> Here's a quick summary:
>
> Walter's idea was to implement ARC for classes implementing 
> IUnknown. So if you wanted a ARC'ed class, you implement 
> IUnknown and you're done. Problems were on the edges of 
> ARC-controlled pointers and GC-controlled ones (which cannot be 
> allowed to be mixed), and also with wanting to use the GC to 
> free cycles for these objects (which would make COM AddRef and 
> Release unusable when called from non-D code). I think the only 
> way to make that work sanely is to create another root object 
> for ref-counted classes.
>
> Another idea was to make *everything* in D ref-counted. ARC 
> simply becomes another GC implementation. There can be no 
> confusion between what's ref-counted and what isn't (everything 
> is). It's much simpler really. But Walter isn't keen on the 
> idea of having to call a function at every pointer assignment 
> to keep the reference count up to date (for performance 
> reasons), so that idea was rejected. This makes some sense, 
> because unlike Objective-C ARC where only Objective-C object 
> pointers are ref-counted, in D you'd have to do that with all 
> pointers, and some will point to external data that does not 
> need to be ref-counted at all.
>
> It was also pointed out that concurrent GCs require some work 
> to be done on pointer assignment (and also when moving a 
> pointer). So it seems to me that advances on the GC front are 
> going to be limited without that.
>
> And now, things seems to have stalled again. It's a little 
> disappointing.

I found no summary and stuff seems to get lost,
so I created a page on the wiki.

http://wiki.dlang.org/Versus_the_garbage_collector


More information about the Digitalmars-d mailing list