The "no gc" crowd
Michel Fortin
michel.fortin at michelf.ca
Wed Oct 9 11:34:32 PDT 2013
On 2013-10-09 18:14:31 +0000, Andrei Alexandrescu
<SeeWebsiteForEmail at erdani.org> said:
>> 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.
>
> I don't think that's on the reject list. Yah, call a function that may
> either be an inline lightweight refcount manipulation, or forward to a
> virtual method etc. It's up to the class.
Are we talking about the same thing? You say "it's up to the class",
but it should be obvious that *everything* being reference counted (as
I wrote above) means every pointer, not only those to classes. Having
only classes being reference counted is not very helpful if one wants
to avoid the garbage collector.
And that discussion with Johannes Pfau a few minutes ago about
exceptions shows that if you disable the GC, exceptions can't depend on
the GC anymore to be freed, which is a problem too. (Should we create
another ref-counted exception root type? Hopefully no.)
In my opinion, trying to segregate between reference-counted and
garbage-collected types just makes things awfully complicated. And it
doesn't help much someone who wants to avoid the GC. To be useful,
reference counting should be a replacement for the garbage collector
(while still keeping the current GC to free cycles).
--
Michel Fortin
michel.fortin at michelf.ca
http://michelf.ca
More information about the Digitalmars-d
mailing list