I've been using ORC ever since it arrived in the stable release channel, and 
generally have had few problems, but every once in a while I run into some 
severe bug that causes a crash, usually via SIGSEGV, and usually related to 
multithreading. Given this is not the default memory management strategy at the 
moment, it can't be expected to be as stable as refc, but I've run into enough 
issues frequently enough to be unsure of it.

Since ORC will become the default memory management strategy in Nim 2.0, I'm 
wondering how much focus there is on it, and what the consensus is. I know that 
there are a lot of projects right now that crash under ORC, including Prologue 
with threads on (I think the same is true for Jester), which already will cause 
loads of issues when Nim 2.0 is released.

I also find that ORC's cycle collector seems to need some manual help to be 
called sometimes, and I get better memory usage when manually calling 
`GC_runOrc` periodically. In general, I'm pretty clueless as to how it actually 
behaves, and what I should do to coax it into collecting more reliably. There 
is very little documentation on its behavior.

This post isn't to complain, but as someone who isn't a compiler engineer, I'd 
to hear what some other people think about the state of ORC and its readiness 
for use, especially in the context of multithreading and general stability.

Reply via email to