&gt; Is he wrong about Nim not being safe when not using Boehm GC? Does it not segfault when sending GC pointers between threads?<p>If he has said that, yes, then that would be wrong [1, 2] in that you cannot send GCed references between threads in the first place. For example, the following code results in an error:<p><pre><code>  var s = &quot;foo&quot;

  proc foo {.thread.} =
    echo s

  createThread(foo)
</code></pre>
Compiling this results in:<p><pre><code>  test.nim(3, 6) Error: &#x27;foo&#x27; is not GC-safe as it accesses &#x27;s&#x27; which is a global using GC&#x27;ed memory
</code></pre>
The problem here is one of expressiveness in that it is difficult for threads to share data (outside the limited and still experimental `parallel` construct). I&#x27;ve proposed a mechanism (shared, individually lockable heaps) modeled after Eiffel&#x27;s SCOOP approach to remedy this, but so far this is just a proposal.<p>[1] Modulo any remaining compiler bugs, of course, or using explicitly unsafe features.<p>[2] Also, are you maybe confusing this with Go, which does have such a problem?