Lua is an extension programming language designed to support general procedural programming with data description facilities. It also offers good support for object-oriented programming, functional programming, and data-driven programming. Lua is intended to be used as a powerful, light-weight scripting language for any program that needs one. Lua is implemented as a library, written in clean C (that is, in the common subset of ANSI C and C++).

Being an extension language, Lua has no notion of a “main” program: it only works embedded in a host client, called the embedding program or simply the host. This host program can invoke functions to execute a piece of Lua code, can write and read Lua variables, and can register C functions to be called by Lua code. Through the use of C functions, Lua can be augmented to cope with a wide range of different domains, thus creating customized programming languages sharing a syntactical framework. The Lua distribution includes a sample host program called lua, which uses the Lua library to offer a complete, stand-alone Lua interpreter.

The primary web site for Lua is; the reference manual is available from that site. Roberto Ierusalimshy, the primary designer of Lua, has written the definitive book about Lua, Programming in Lua; an earlier but still useful version of the book is available at Another book, Lua Programming Gems, by Luiz Henrique de Figueiredo, Waldemar Celes, and Roberto Ierusalimshy, provides a useful collection of articles on programming with Lua.

There are several other web sites of interest to those who program with Lua. Lua-users provides a wiki with community-maintained information and resources. LuaForge hosts projects written in Lua. The Kepler Project provides an open-source web development platform written in Lua. Metalua gives Lua a macro system similar to lisp. Lua has an active mailing list that is one of the focal points of the Lua community.


Get every new post delivered to your Inbox.

Join 574 other followers

%d bloggers like this: