Ahh, so mb.jump() is like fork()? If it succeeds you're now running on
a completely different machine?
If you will, yes, it is like 'fork' - in the way of being a 'magic' function that modifies the structure of the program itself.
The content of the structure modification is of course different. It is technally, if you will, a fork as the program is duplicated as it travels.
Hold on, we are entering the realm of the philosophical.
Because...
There could be rare circumstances where a program meets itself on the net. A copy of itself. This is when something goes wrong in a move and the program continues to run in two places.
Which is not really a problem anyway - you would just prepare for that and take care of it appropriately. Mobile Lua is very flexible like that: It is very easy to augment, inspect and modify scripts that are already running.
I think we can achieve what with this system the holy grail of orthogonal persistence: fully automatic persistence together with effortless schema evolution. ("Schema evolution" is the changing of code that is already running.)
There are OP systems in Java that typically have this problem. Persistent Java code is just a bitch I guess. There's too much involved, the class definitions, visibility rules and so on.
Lua is much more easy in that. You could just dump the global variables in a process, read them in in your new process and you might be done with the transfer of data.
Because that what it's about: Copying all the data from an older process over to a newer one. If you have that - you have achieved orthogonal persistence.
I think Mobile Lua is quite close to that. It might get there in just about no time. This is significant. It's a revolution! :]
Cheers,
Stefan