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