Lua was created by the Computer Graphics Technology Group of the Pontifical Catholic University of Rio de Janeiro in Brazil in 1993. It is released as free software, versions before 5.0 were released under BSD-like license terms, which are non-copyleft. From version 5.0 Lua uses the MIT License.
Lua has been used in many commercial applications (e.g., in LucasArts' Escape from Monkey Island adventure game and robot control software). Its closest relative in the family of programming languages is perhaps the Icon programming language, although it could also be compared to Python in its emphasis on ease of use for non-programmers.
Lua has a compact design, and this is evident from the fact that it supports only one data structure, the table. Tables can be used as arrays, setss, hashtables, lists or records, and can also simulate namespaces. There is a similar level of simplicity in Lua's atomic datatypes -- all arithmetic is done in double-precision floating point, for example (however this can be changed to single precision floating point or integer arithmetic). The language's semantics can be extended by redefining certain built in operations on tables, and Lua also supports higher-order functions and garbage collection. It is possible to write object-oriented programs in Lua by combining all these features.
Lua programs are translated into bytecode and interpreted. Although Lua is useable as a stand-alone language, it is primarily designed to be used as an extension language or scripting language within programs written in C. In this respect, it is similar to Tcl. The Lua interpreter can be accessed through a small C library, which includes both the interpreter and an API for accessing its runtime state from a host C program. The API allows different parts of a program to be written in C and Lua and gives two-way access to variables and functions across the languages (i.e., a function in Lua can call a function in C, and vice versa).