I suggest opposite to transparent: explicit. Users needs to make explicit decisions, otherwise we will always have unsatisfied ones. Those who doesn't want GC will complain why GC transparently kicks in, those who likes GC will complain where is my GC.
I suggest Mark And Sweep GC as an std library, if some support from Nim compiler is required we can leave it or make compiler plugin out of it. IMO, most of the GC can be done in the user space. Memory collection is done at new() call, this is perfectly fine for user space GC . What missing is stack/heap traversing helpers generation, we can leave this functionality in compiler. Sounds like a good candidate for compiler plugin.
