glob2-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [glob2-devel] Glob2 and Lua


From: Linus Probert
Subject: Re: [glob2-devel] Glob2 and Lua
Date: Sun, 28 Dec 2014 12:02:09 +0100

From my experience LUA is the way to go when it comes to c++ embedding. This will also allow user mods in an eventual future :D

A nice solid clean core implementation in c++ and then lua for behaviour and expermentation is a good base to work from.



2014-12-28 11:55 GMT+01:00 Stéphane Magnenat <address@hidden>:
Hello,

I'm usually not a big fan of Lua as a language, but I have to admit
this is pretty impressive.

I would also prefer a Pythonic syntax, but I did not find any Python
implementation that was as embeddable (i.e. easy to use from host code
and to modify) and mature as Lua.

I just don't understand why you say glob would require recompiling
Lua with integer instead of doubles. Is it only for performance, or
is there another reason?

In Glob2's network, all clients run the same code and only exchange
orders from the players, so the execution of the code must be
deterministic. Floating point execution is not fully specified (in IEEE 754 the least-significant bits are left to the implementation), and so the same code executed on different computers will produce in different results after a while, leading to a de-synchronisation. This can even appear with two similar CPUs but with different microcode versions.

As a comparison, a lot of things can be serialized in Python, but it
is not to not being trustable (see the warning at [1]). And
sandboxing is far from being usable. Actually, there has been an
attempt to make a sandbox for CPython (the main Python interpreter),
but the author gave up. [2] Pypy (a Python interpreter written in a
subset of Python that can be compiled) also has a sandbox mode, but
it is not yet ready to be embedded. [3]

[1] https://docs.python.org/3/library/pickle.html
> [2] https://lwn.net/Articles/574215/
[3] http://pypy.readthedocs.org/en/latest/sandbox.html

Yes, that was my impression as well. The Python bytecode in CPython looks more complex to interact with from the host code than Lua, plus the code base of CPython seems harder to read and modify. There are smaller Python implementations around, but none seems really mature (no documentation, etc.). On the contrary, Lua was designed for embedding and thus seems nicely structured for being modified. Thus my strategy is to go modify the Lua standard libraries to provide hard sandboxing, as we have a responsibility to ensure that no user-created content can get out of the game and spy or do harm to the player's computer. The main element is to route all IO operations through glob2's virtual file system and maybe to remove some calls that give information on the underlying system such as os.tmpname.

kind regards,

Stéphane

--
http://stephane.magnenat.net


_______________________________________________
glob2-devel mailing list
address@hidden
https://lists.nongnu.org/mailman/listinfo/glob2-devel


reply via email to

[Prev in Thread] Current Thread [Next in Thread]