On Sunday, 3 May 2015 at 08:02:37 UTC, Ola Fosheim Grøstad wrote:
On Sunday, 3 May 2015 at 04:46:52 UTC, ketmar wrote:
i don't thing that such pass in general worth the efforts. D
programmers
tend to use structures for local and short-lived objects. if i
did `new`,
chances are that i really want it on heap, and it will not be
optimisable
This is where one have to decide whether to make a low/system
level language with programmer control or a high level language
with compiler control. If you have GC by default, then it
makes a lot of sense to not even have a stack conceptually and
do explicit allocations and stack allocation as an optimization.
But yeah, a system level language should allow threads to be
terminated which would prevent destructors from being called,
and since GC call destructors on another thread it will change
program behaviour to turn GC allocations into stack allocations
in general...
there's no guarantee GC allocated memory will _ever_ have their
destructor ran, it's part of the spec.
The garbage collector is not guaranteed to run the destructor
for all unreferenced objects.