Destructors vs. Finalizers
Mike Parker via Digitalmars-d
digitalmars-d at puremagic.com
Tue Jul 25 19:58:00 PDT 2017
Regarding the issue with `destroy` not being @nogc, I my
understanding is it comes down to `rt_finalize` not being @nogc.
I haven't dug too deeply into the discussions around it, but I'm
wondering if it's possible to separate the concept of destruction
from finalization in the implementation?
Externally, we can do it with the existing language:
class {
~this() {} // Finalizer
~this @nogc {} // Destructor
}
Internally, the runtime will treat each differently. an
rt_destruct would call all every __dtor in a hierarchy and
rt_finalize would be changed to call every __finalizer (a new
addition) in a hierarchy. When cleaning up, the GC will ensure
that all destructors are run where they exist, followed by all
finalizers. And destroy would be changed to call rt_destruct
instead of rt_finalize.
Thoughts?
More information about the Digitalmars-d
mailing list