The environment is based on V8, which provides a lot of tools to sandbox javascript code. There's some other pretty cool technology there - we might write a more detailed blog post about it if folks are interested.
In late 2009, I had an idea to create a service that would allow game developers to run JavaScript on the server to drive multiplayer games.
I worked on it for about 6 months and then Apple released Game Center. It was pretty clear that my service would be eclipsed by Game Center so I threw in the towel on it.
At the time, I was targeting Node.js on the server and wrote a fledgling sand-boxing tool called Jefe [1].
I'm using Parse in my current app (Lexatron [2]) and I'm loving it. I'm looking forward to see what I can run on the server side.
Cool. I assume you guys are using an Isolate with multiple contexts/threads to deal with infinite loops and sandboxing restrictions without the overhead of additional processes? We (clay.io) are working on a very similar problem in the game space.
Another question (just curious): why did you cut node out entirely? libev is awesome and it seems like you would basically have to rewrite if you used straight C++.
Comments
How do they secure this?
The environment is based on V8, which provides a lot of tools to sandbox javascript code. There's some other pretty cool technology there - we might write a more detailed blog post about it if folks are interested.
In late 2009, I had an idea to create a service that would allow game developers to run JavaScript on the server to drive multiplayer games.
I worked on it for about 6 months and then Apple released Game Center. It was pretty clear that my service would be eclipsed by Game Center so I threw in the towel on it.
At the time, I was targeting Node.js on the server and wrote a fledgling sand-boxing tool called Jefe [1].
I'm using Parse in my current app (Lexatron [2]) and I'm loving it. I'm looking forward to see what I can run on the server side.
Full circle!
[1] https://github.com/fictorial/jefe
[2] http://fictorial.com/lexatron/
I would love to read that. Having a strong sandbox as a tool makes all kinds of interest things possible.
p.s. My last name is Lackner. Glad to meet someone else with the unfortunate Lack- prefix.
Unfortunate? Psh. When I was a little kid I liked "Lacker" because it rhymes with "Hacker". Then I grew up and became a computer programmer. See also:
http://en.wikipedia.org/wiki/Nominative_determinism
Cool. I assume you guys are using an Isolate with multiple contexts/threads to deal with infinite loops and sandboxing restrictions without the overhead of additional processes? We (clay.io) are working on a very similar problem in the game space.
Another question (just curious): why did you cut node out entirely? libev is awesome and it seems like you would basically have to rewrite if you used straight C++.
This would be very interesting to lots of people. There are lots of half-baked sandbox solutions so seeing what you guys did you be interesting.
Is it node.js?
No. It is built on V8 directly, adding C++ hooks for extra functionality.