Back in 2016, I evaluated nim. I thought it was wonderful, and I was 
particularly impressed with the metaprogramming features. I used to use Common 
Lisp, and macros were amazing, and I've been waiting for a modern fast language 
to include them. Kudos. I was about to start using nim, when I noticed a 
showstopper flaw: the thread-local heaps made it impossible to pass structured 
data from one thread to another. I made a comment about this in the forum:

[https://forum.nim-lang.org/t/2457](https://forum.nim-lang.org/t/2457)

At the time, I didn't get much response. But I could see that Araq's quite a 
visionary, so I assumed he would eventually see the problem and make a garbage 
collector that allows data structures to be passed between threads. I was 
half-right: in May 2019, he acknowledged the problem:

> I don't think "you cannot easily pass Table[string, string] to a different 
> thread and locks won't help you" is good enough for Nim in the long run. It's 
> high time we address this problem.

However, instead of creating a garbage collector that can handle this, he 
created a non-garbage-collected runtime. That's not what I'm looking for, I 
want a garbage collected language.

So, where things stand is: the lack of a garbage collector that supports 
sharing data structures between threads is still the only showstopper, for me. 
Aside from that, the language is great. I'm still holding out hope that this 
limitation will eventually be fixed. I'm patient, I've been checking in 
periodically since 2016, I'll keep checking in the future. 

Reply via email to