[pypy-dev] Continuations and sandboxing

Nathanael D. Jones nathanael.jones at gmail.com
Mon Jan 10 05:24:09 CET 2011


Hi folks,
I've got a challenging set of requirements that I think PyPy may be able to
meet, but I'd like to get some feedback before I jump in.

I'm developing a collaboratively edited game. It's not a MUD, but similar in
concept, and also text based in nature.
HogwartsLive.com and lotgd.ne <http://www.lotgd.net/home.php?>t are examples
of the genre I'm going for.

I believe if a game of that genre makes user modification simple and
rewarding enough, it could be self-sustaining and grow quickly enough to
keep users interested perpetually, like Wikipedia.

It's also a fascinating computer science challenge, because it requires a
LOT from a computer language.

1) Sandboxing. To allow users to make changes to the game without being able
to "cheat" at it or escalate privileges.
2) Serializeable continuations. With gameplay being based on good plot and
story flow, continuations are critical to allow straightforward
implementation of 'workflows' that depend on user choice at every turn.
3) Tail-call elimination.  By nature, players will accumulate a very large
call stack. While this isn't terribly bad a first glance, the following
issue combines with it to cause a very big problem:
When code changes underneath a continuation, we need to determine how to
resume flow. One option is annotating a checkpoint method in each code
'file'. However, if a user's call stack includes every file in the system,
each change will cause them to restart.
Tail-call elimination would help eliminate unneeded stack frames and
minimize re-spawning.
3) Dynamic, strong typing and metaprogramming are key for keeping the API
simple.
4) Dynamic code loading. Users will be able to 'branch' their own version of
the world and share it with others. There may be thousands of versions of a
class, and they need to be able to execute in separate sandboxes at the same
time. Source code will be pulled from a Git repository or some kind of
versioning database.

I'm interested in knowing which of these PyPy already does, and which of
them I can make it do.

I appreciate your help!

Nathanael Jones
http://nathanaeljones.com/
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/pypy-dev/attachments/20110109/55ef7d24/attachment.html>


More information about the Pypy-dev mailing list