On 08/29/2015 04:45 PM, rsw0x wrote:
On Saturday, 29 August 2015 at 14:32:27 UTC, Timon Gehr wrote:
On 08/29/2015 04:20 PM, cym13 wrote:
On Saturday, 29 August 2015 at 14:17:10 UTC, rsw0x wrote:
On Saturday, 29 August 2015 at 13:14:26 UTC, ponce wrote:
...
All of this could be fixed by not letting the GC call destructors.
It's a bad, error-prone design to begin with and I guarantee any
semi-large D program is probably abusing undefined behavior due to it.
After reading all that, I too am convinced that the GC shouldn't call
the destructor.
But then classes with destructors shouldn't be allowed to be allocated
on the GC heap in the first place, which is a PITA as well. (Note that
classes/arrays can have destructors because some component structs
have them; structs generally assume that their destructors will be
called.)
make classes with destructors(and structs allocated via new) have RC
semantics.
RC is an especially eager form of GC, that does not deal with cycles by
default. Why does it help?