I'm not concerned.

Firstly, every living language requires occasional code updates, Python is at 
version 3, Lua at 5.3, Swift at 5.0, C++20 seems to get module support (!)...

Secondly, the proposed mechanisms are all not fundamentally incompatible with a 
mark&sweep GC that can clean up your messes occasionally. However, I'm not 
thinking too hard about this problem because it's further away and also because 
I'm not a fan of luring people into keeping their old way of thinking.

What many don't understand is that whenever they run `nim c ...` they pay the 
costs of a `ref`-heavy design: The compiler is hard to parallelize because the 
GC is attached to a thread. It's hard to optimize its memory consumption 
because potentially every tree node can be freed individually and shared across 
ASTs (!). It's hard to make incremental because the IR cannot be stored to disk 
easily and efficiently. And finally, a fair share of the compiler's bugs are a 
result of this design decision.

Reply via email to