This paper describes Lua, a language for extending applications. Lua combines procedural features with powerful data description facilities, by using a simple, yet powerful, mechanism of tables. This mechanism implements the concepts of records, arrays and recursive data types (pointers), and adds some objectoriented facilities, such as methods with dynamic dispatching.Lua presents a mechanism offallbacks that allows programmers to extend the semantics of the language in some unconventional ways. As a noteworthy example, fallbacks allow the user to add different kinds of inheritance to the language.Currently, Lua is being extensively used in production for several tasks, including user configuration, general-purpose data-entry, description of user interfaces, storage of structured graphical metafiles, and generic attribute configuration for finite element meshes.its own purposes, typically by providing higher level abstractions. For this, an embedded language has both a syntax for its own programs and an application program interface (API) for communicating with hosts. Unlike simpler configuration languages, which are used to supply parameter values and sequences of actions to hosts, there is a two-way communication between embedded languages and host programs.It is important to note that the requirements on extension languages are different from those on general purpose programming languages. The main requirements for extension languages are:1 . extension languages need good data description facilities, since they are frequently used as configuration languages; 2. extension languages should have a clear and simple syntax, because their main users are not professional programmers; 3. extension languages should be small, and have a small implementation. Otherwise, the cost of adding the library to an application may be too high; 4. extension languages are not for writing large pieces of software, with hundreds of thousands lines. Therefore, mechanisms for supporting programming-in-the large, like static type checking, information hiding, and exception handling, are not essential;