forcing "@nogc" on class destructors
via Digitalmars-d
digitalmars-d at puremagic.com
Fri Jan 23 00:58:10 PST 2015
On Friday, 23 January 2015 at 06:16:21 UTC, Jakob Ovrum wrote:
> Classes don't have to be designed to be allocated on the GC
> heap. Class instances can be allocated on the stack, the C
> heap, or anywhere else.
…and this is a badly typed design if you don't embed ownership in
reference types.
But, GC should not call destructors, because classes using RAII
will then fail.
> D is a systems-programming language and should cater to a wide
> variety of use patterns, including users who wish to use
> classes in non-GC memory locations.
There are way too many weaknesses in current D semantics to make
it suitable for systems programming. By systems programming I
mean programming that push the hardware to the limits and take
advantage of hardware specific properties.
The fact that you cannot gracefully recover from low-memory
conditions is a bad sign.
A good reason for not acquiring resources in destructors is that
you can then throw exceptions and recover when you run out of
resources. Which is important on high load and/or low memory
devices.
> Perhaps splitting class destructors into two separate concepts,
> a destructor and a finalizer, with the latter being @nogc,
> could be a more satisfactory solution.
How about banning GC-allocation of classes with destructors?
More information about the Digitalmars-d
mailing list