Am 06.05.2014 05:40, schrieb Manu via Digitalmars-d:

Does ~this() actually work, or just usually work?
Do you call your destructors manually like C#?

Back when I actually used D's GC, it did usually work. There were a few workarounds because destructors would be called in the wrong thread, but other than that it did work for me.

By now I call my destructors manually like in C++. I do full manual memory management (I have a modified version of druntime that does not even contain the GC anymore). I always liked D because of its metaprogramming capabilities and not because of the automatic memory management. So I use D as a C++ with better meta programming. But this also means that I do not use phobos. I actually tried using only parts of phobos, but the dependency hell in phobos results in all modules being pulled in as soon as you use one central one, so I stopped using most of phobos alltogether. The annoying part, as you already pointed out, is that I can't use any third party libraries. So I'm living in my own little D world.

So I would be disappointed if classes suddently don't have destructors anymore. Most annoying would be the lack of compiler generated field destructors (e.g. automatically calling the destructor of each struct in the class). I could work around that, but it would be another anoyance over C++ and as they are piling up it becomes more and more viable to just go back to C++.

I support the notion that if the GC isn't removed as a foundational
feature of D, then destructors should probably be removed from D.
That said, I really want my destructors, and would be very upset to
see them go. So... ARC?


I think ARC could work, but should be extended with some sort of ownership notation. Often a block of memory (e.g. an array of data) is exclusivly owned by a single object. So it would be absolutly uneccessary to reference count that block of memory. Instead I would want something like Rust has, borrowed pointers. (We actually already have that, "scope" but its not defined nor implemented for anything but delegates)

Kind Regards
Benjamin Thaut

Reply via email to