Lua is an embeddable programming language library to extend your programs, with the idea of offering only a few "meta-mechanisms" for creating domain-specific languages to give flexibility. It offers functions as first-class values, and also has support for object-oriented programming, using either prototype or class based inheritance. It allows any function in the global environment to be changed and all access into C functions is controlled by the host application, which allows the application to run anonymous untrusted code in safe "sandboxes". The interpreter is always referenced by pointer rather than using global variables, so multiple interpreters can be used in the one process and developers need not worry about symbol conflicts using libraries with multiple versions of the lua code statically linked, or multiple instantiations of the interpreter. The interpreter is faster than other similar libraries such as Guile.

It has a very simple Pascal-like syntax and its constructor syntax allows it to be used for data as well as code. Its simple syntax means it is useful for allowing non-programmers to use it.

It is heavily tied to the C world and is probably one of most portable and unintrusive coding tools around in the C world. Compiled up it comes to about 100k or so. As such it can be a nice way to add a functional/dynamic programming layer on top of C, if you are forced to operate in the C world, and are not able or wishing to dictate the top-level environment for any of your code and/or hack another interpreter to suit you.

This page is linked from: Flua   Io   Python