On Thu, 29 May 2014 13:07:17 -0400, safety0ff <[email protected]> wrote:

On Thursday, 29 May 2014 at 16:13:40 UTC, Ary Borenszweig wrote:

If you add reference counting or a GC to the compiler, it will make those large projects compile, but it will inevitably be slower than now. That's why Walter disabled GC completely in the compiler (turning it on made the compiler really slow).

AFAIK, he was talking about a whole compiler GC and not a CTFE only GC/RC. AFAIK, before the data structures created by CTFE join the AST, they get "scrubbed" which could help us implement a self-contained memory managing strategy for CTFE.

If by "he" you mean me, I was talking only about CTFE, not the whole compiler.

In general, any data the compiler generates while actually compiling is stored for later reference. Using a GC is not going to help, because the compiler doesn't generally create much garbage.

But CTFE is full of code that expects to have a GC running, e.g. string concatenation for mixins, etc. Not only that, CTFE functions are generally run under the same (or even more strict) rules as strong-pure functions. It would be entirely conceivable to just throw away all memory it allocates except for the return value. But I don't know how that would fare.

But it does REALLY stupid things with memory management within CTFE functions. I think this is where RC would help. That bug you referred to doesn't even use something that would normally allocate in normal code!

-Steve

Reply via email to