On Wednesday, 30 April 2014 at 20:21:33 UTC, Andrei Alexandrescu
wrote:
Walter and I have had a long chat in which we figured our
current offering of abstractions could be improved. Here are
some thoughts. There's a lot of work ahead of us on that and I
wanted to make sure we're getting full community buy-in and
backup.
First off, we're considering eliminating destructor calls from
within the GC entirely. It makes for a faster and better GC,
but the real reason here is that destructors are
philosophically bankrupt in a GC environment. I think there's
no need to argue that in this community. The GC never
guarantees calling destructors even today, so this decision
would be just a point in the definition space (albeit an
extreme one).
An extreme one indeed, it would break a lot of my code. Every D
project I wrote that does networking manages memory using a class
that resides on the managed heap, but holds the actual wrapped
data in the unmanaged heap. It has a number of advantages over
other approaches, and I've posted it to the announce group, but
the idea didn't seem to catch on.
https://github.com/CyberShadow/ae/blob/master/sys/data.d
I could migrate the concept to use reference counting (it was
implemented in D1, before reference counting was possible), but
that's my situation regarding breaking existing code.