I have used Nim for many small experiments, but the main reason why I am not 
using Nim as my main programming language is that it is not popular enough. I 
know this is circular, but where I work I am the Nim person. If anything should 
go wrong on a project where Nim fails to deliver on some points, the burden of 
having chose that lies on me. If a project goes well, I am bound to maintain it 
indefinitely because I am the local Nim expert. All this means that using Nim 
in anger is too risky for me now, although I like to use it for experiments of 
many kinds.

Other than that, I am worried about the new runtime. Starting to plan the move 
to a new runtime just before 1.0 is... well, not a good sign. I also don't 
especially like that this new runtime requires a complex set of lifetime 
annotations (sink, move, owned...), which makes code less understandable, while 
before that Nim could be considered a benchmark of readability. Finally, the 
new runtime doe not seem to be based on sound research on formal type systems 
(there's just Bacon and Dingle, but it seems an abandoned approach) and new 
special cases that evade the analyses done so far keep popping out. I think if 
one wants to really follow such an approach, it must be tried on paper and 
**proved correct** with an actual demonstration before jumping to the 
implementation.

Reply via email to