For one reason or the other, the only GC that works (and very efficiently in terms of speed - aside from too much average memory consumption in some cases) with my current project is "regions".
The thing is I decided to go with that only because it works.
However, I'm still not sure how it's working.
I'm trying to optimize my code as much as possible and I would love to know what I could do make it work even better (especially reducing memory usage would be ideal). Are there any specific things to have in mind?
My code makes heavy use of ref objects, sequences, string, pretty much everything. However, I'm pretty sure some memory isn't freed when it should (while with some of the other GCs, memory usage is usually much lower)
It doesn't work (see the open bugs about it), it's not a GC and we don't work on it, see https://github.com/nim-lang/RFCs/issues/177
You're better off understanding Nim's memory management, why you cannot interface with Flex/Bison in the way you do and pick a different, real GC. Like the default one. I'll announce once --gc:arc is ready for a test drive.
re: "why you cannot interface with Flex/Bison in the way you do and pick a different, real GC"
I would be grateful if you could give me some... pointers to the right direction. Even the integration of Flex/Bison was a hit'n'miss mission.
The weird thing is that - given that I've been running tons of different benchmarks - most of the tests do work with any GC. But all of them, do run only with --gc:regions turned on. That's what I find perplexing.
Also, for the tests that are running fine, regardless of the GC option being used, how is it possible that all different gc options result in more-or-less slower execution times?