It seems GC_ref doesn't help. If you use ORC, it'll still fail.
$ nim c --gc:orc --app:lib --outdir:. ext.nim
Hint: used config file
'/Users/gcao/.choosenim/toolchains/nim-1.6.0/config/nim.cfg' [Conf]
Hint: used config file
'/Users/gcao/.choosenim/toolchains/nim-1.6.0/config/config.nims' [Conf]
..............................................................................
/private/tmp/app.nim(1, 8) Warning: imported and not used: 'dynlib'
[UnusedImport]
Hint: [Link]
Hint: gc: orc; opt: none (DEBUG BUILD, `-d:release` generates faster code)
40615 lines; 0.821s; 60.824MiB peakmem; proj: /private/tmp/ext.nim; out:
/private/tmp/libext.dylib [SuccessX]
$ nim c --gc:orc -r app.nim
Hint: used config file
'/Users/gcao/.choosenim/toolchains/nim-1.6.0/config/nim.cfg' [Conf]
Hint: used config file
'/Users/gcao/.choosenim/toolchains/nim-1.6.0/config/config.nims' [Conf]
.............................................................................
Hint: [Link]
Hint: gc: orc; opt: none (DEBUG BUILD, `-d:release` generates faster code)
40608 lines; 0.797s; 60.742MiB peakmem; proj: /private/tmp/app.nim; out:
/private/tmp/app [SuccessX]
Hint: /private/tmp/app [Exec]
true
No stack traceback available
SIGSEGV: Illegal storage access. (Attempt to read from nil?)
Error: execution of an external program failed: '/private/tmp/app '
Run