Lupa 0.13.1 released (Lua in Python)

Stefan Behnel stefan_ml at
Mon Aug 30 14:22:57 CEST 2010

Hi all,

Lupa 0.13.1 was released to fix a major distribution bug in 0.13. Updating 
is recommended.

What is Lupa?

Lupa integrates the LuaJIT2 runtime into CPython. It is a partial rewrite 
of LunaticPython in Cython with some additional features such as proper 
coroutine support.

Why use it?

It complements Python very well. Lua is a language as dynamic as Python, 
but LuaJIT compiles it to very fast machine code, sometimes faster than 
many other compiled languages. The language runtime is extremely small and 
carefully designed for embedding. The complete binary module of Lupa, 
including a statically linked LuaJIT2 runtime, is only some 500KB on a 64 
bit machine.

However, Lua code is harder to write than Python code as the language lacks 
most of the batteries that Python includes. Writing large programs in Lua 
is rather futile, but it provides a perfect backup language when raw speed 
is more important than simplicity, and edit-compile-run cycles are too 
heavy for agile development.

Lupa is a very fast and thin wrapper around LuaJIT. It makes it easy to 
write dynamic Lua code that accompanies dynamic Python code by switching 
between the two languages at runtime, based on the tradeoff between 
simplicity and speed.

Recent Changes

0.13.1 (2010-08-30)

     * fix Cython generated C file using Cython 0.13

0.13 (2010-08-29)

     * fixed undefined behaviour on str(lua_object) when the object's
       __tostring() meta method fails
     * removed redundant "error:" prefix from LuaError messages
     * access to Python's python.builtins from Lua code
     * more generic wrapping rules for Python objects based on supported
       protocols (callable, getitem, getattr)
     * new helper functions as_attrgetter() and as_itemgetter() to specify
       the Python object protocol used by Lua indexing when wrapping Python
       objects in Python code
     * new helper functions python.as_attrgetter(), python.as_itemgetter()
       and python.as_function() to specify the Python object protocol used
       by Lua indexing of Python objects in Lua code
     * item and attribute access for Python objects from Lua code

0.12 (2010-08-16)

     * fix Lua stack leak during table iteration
     * fix lost Lua object reference after iteration

0.11 (2010-08-07)

     * error reporting on Lua syntax errors failed to clean up the stack so
       that errors could leak into the next Lua run
     * Lua error messages were not properly decoded

More information about the Python-announce-list mailing list