More thorough tests are required but theoretically speaking the determinism can
cost cycles. Most modern GCs do not emit write barriers for stack slots (this
is true for Nim's GC too) but C++ like overloaded assignments/moves do not
distinguish between stack slots and heap slots... The different solutions to
get memory safety are really not all that different, you need to track the
dangerous pointers somehow and most static analysis quickly need to give up.
("Of course things can escape the local scopes, that's why I'm using a **heap**
in the first place.")
The fact that the default allocation strategy changes from "thread local" to
"can be shared between threads" does not help either.