- Non-thread-safe GC is unsafe. The way to make it safe is to make it thread-safe. Thread-safe GC does not have negligible performance overhead. (Actually, non-thread-safe GC doesn&#x27;t either, not by a long shot, but it won&#x27;t show up in small benchmarks as easily.)<p>- Just being able to allocate on the stack is not enough. You need to be able to freely make pointers to those stack objects. The ways to do that are to either (a) accept the lack of safety and admit dangling pointers; (b) use an imprecise escape analysis; (c) lifetimes and borrowing. Every choice has costs.<p>- Safety with runtime checks is not equivalent to what Rust does. Rust provides the safety without runtime checks. That yields better performance than safety with checks.<p>I&#x27;m not intending to spread FUD about Nim specifically. The more interesting question is whether it&#x27;s possible to have a safe language with the same performance as C&#x2F;C++ without any cognitive overhead. I strongly believe, after working in this space for over five years, it is not.<p>That&#x27;s not to say Nim is a bad language. There are lots of things I like about Nim. It&#x27;s just that it won&#x27;t escape the basic tradeoff between cognitive overhead and safety&#x2F;performance.