I have been using luaproc for about three years.
Thank you for sharing your experience. This is very valuable.
I have noticed that you write "mostly reliable" followed by the scary note "occasionally computations locks up on mysterious ways"... do you mean dead-locks?
I also noticed that you mention upvalues as a way to pass data between threads, but based on the documentation one could also use the send/receive methods, right?
(searching the internet, I found that someone mention the fact that if there is a table as an upvalue then newproc fails, and this may not be immediately clear to the developer, is this correct?)
Why do you write that the concurrently model is at the same time "simple" but "it took a while to figure it out how to use it effectively?"...it seems it is not simple after all or maybe it is "too simple" and you bumped into some unintended behavior?
Yes I guess serialization (of tables) is one of the most required functionalities :) It would be useful to have such a method in the table library for that.... I guess it is not there because of the choices one can make (shallow vs deep copies, etc - the mesh of references can be really complex)
Thank you very much for your answer.