On Thursday, 18 March 2021 at 12:27:56 UTC, Petar Kirov
[ZombineDev] wrote:
Just implementation deficiency. I think it is fixable with some
refactoring of the GC pipeline. One approach would be, (similar
to other language implementations - see below), that
GC-allocated objects with destructors should be placed on a
queue and their destructors be called when the GC has finished
the collection. Afterwards, the GC can release their memory
during the next collection.
As I understand, finalizers in D are run because the GC needs
more memory *now*. Deferring release of memory until the next
collection would defeat the purpose. We would need to decouple
collection cycles from allocation. Am I missing something?