This manual is the official definition of Lua 5.1. It covers Lua's syntax and semantics, the full API with C, and the standard libraries. 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, and is highly portable, being written in clean C (that is, in the common subset of ANSI C and C++).