"The key is to unhinge the gameplay thread from the render/physics threads."
Many simple games don't need it, by the way. A lot of 2D indie games don't do complex enough rendering/physics to warrant a separate thread. This, in turn, makes everything much simpler if your entire game only uses one thread.
Indeed. I have no credentials to speak about such hard problems, my experience is working with high QPS servers written in Lua and a bunch of small indie games. :)
This in practice means you have to use Array of 64 byte Structure for your shared data.
Lua is not going to change that. You can hot-deploy C with a .so/.dll without losing performance.