FACTOID # 59: Venezuela is one of the happiest and most murderous places in the world.
 
 Home   Encyclopedia   Statistics   Countries A-Z   Flags   Maps   Education   Forum   FAQ   About 
 
WHAT'S NEW
RECENT ARTICLES
More Recent Articles »
 

Encyclopedia > Lua (programming language)
Lua
Paradigm Multi-paradigm
Appeared in 1993
Designed by Roberto Ierusalimschy, Waldemar Celes and Luiz Henrique de Figueiredo
Latest release 5.1.3/ January 25th, 2008
Influenced by Scheme, Icon
Influenced Io, Squirrel, Dao
OS Cross-platform
License MIT License
Website www.lua.org

In computing, the Lua (pronounced /ˈluː.a/ LOO-ah) programming language is a lightweight, reflective, imperative and procedural language, designed as a scripting language with extensible semantics as a primary goal. The name means ‘moon’ in Portuguese. A programming paradigm is a paradigmatic style of programming (compare with a methodology, which is a paradigmatic style of doing software engineering). ... This does not cite any references or sources. ... Roberto Ierusalimschy is an associate professor of informatics at PUC-Rio (Pontifical University in Rio de Janeiro). ... A software release refers to the creation and availability of a new version of a computer software product. ... Scheme is a multi-paradigm programming language. ... Icon is a very high-level programming language featuring goal directed execution and excellent facilities for managing strings and textual patterns. ... Io is a pure object-oriented programming language inspired by Smalltalk, Self, Lisp and NewtonScript. ... Squirrel Squirrel Squirrel is a high level imperative/OO programming language, designed to be a light-weight scripting language that fits in the size, memory bandwidth, and real-time requirements of applications like video games. ... Dao is an object-oriented scripting language with dynamically typed variables supporting complex data structures. ... An operating system (OS) is a software that manages computer resources and provides programmers with an interface used to access those resources. ... A cross-platform (or platform independent) programming language, software application or hardware device works on more than one system platform (e. ... A software license is a legal agreement which may take the form of a proprietary or gratuitous license as well as a memorandum of contract between a producer and a user of computer software. ... The MIT License, also called the X License or the X11 License, originated at the Massachusetts Institute of Technology, is a license for the use of certain types of computer software. ... A website (alternatively, Web site or web site) is a collection of Web pages, images, videos or other digital assets that is hosted on one or several Web server(s), usually accessible via the Internet, cell phone or a LAN. A Web page is a document, typically written in HTML... Image File history File links Free_Software_Portal_Logo. ... For the formal concept of computation, see computation. ... A programming language is an artificial language that can be used to control the behavior of a machine, particularly a computer. ... The introduction to this article provides insufficient context for those unfamiliar with the subject matter. ... In computer science, reflection is the process by which a computer program of the appropriate type can be modified in the process of being executed, in a manner that depends on abstract features of its code and its runtime behavior. ... In computer science, imperative programming, as opposed to declarative programming, is a programming paradigm that describes computation in terms of a program state and statements that change the program state. ... This article is about the computer programming paradigm. ... Scripting languages (commonly called script languages) are computer programming languages that are typically interpreted. ... Extension languages allow users, programmers, and third-party developers to add features to a program without having to re-write the program as a whole, and it allows people extending a program to co-operate with each other, without having to expend any extra effort. ... Semantics (Ancient σημαντικός semantikos significant, from semainein to signify, mean, from sema sign, token), is the study of meaning in communication. ...

Contents

History

Lua was created in 1993 by Roberto Ierusalimschy, Luiz Henrique de Figueiredo, and Waldemar Celes, members of the Computer Graphics Technology Group at PUC-Rio, the Pontifical University of Rio de Janeiro, in Brazil. Versions of Lua prior to version 5.0 were released under a license similar to the BSD license. From version 5.0 onwards, Lua has been licensed under the MIT License. Roberto Ierusalimschy is an associate professor of informatics at PUC-Rio (Pontifical University in Rio de Janeiro). ... // Overview Cardeal Leme building The Pontifícia Universidade Católica do Rio de Janeiro (PUC-Rio) is a private non-profit Pontifical University. ... A pontifical university is a Roman Catholic university established by and directly under the authority of the Holy See. ... This article is about the Brazilian city. ... The BSD daemon BSD licenses represent a family of permissive free software licenses. ... The MIT License, also called the X License or the X11 License, originated at the Massachusetts Institute of Technology, is a license for the use of certain types of computer software. ...


Some of its closest relatives include Icon for its design and Python for its ease of use by non-programmers. In an article published in Dr. Dobb's Journal, Lua’s creators also state that Lisp and Scheme with their single, ubiquitous data structure mechanism (the list) were a major influence on their decision to develop the table as the primary data structure of Lua.[1] Icon is a very high-level programming language featuring goal directed execution and excellent facilities for managing strings and textual patterns. ... Python is a general-purpose, high-level programming language. ... Dr. Dobbs Journal (DDJ) is a monthly journal published in the United States by CMP Media. ... “LISP” redirects here. ... Scheme is a multi-paradigm programming language. ... Scheme is a multi-paradigm programming language. ...


Lua has been used in many applications, both commercial and non-commercial. See the Applications section for a detailed list. The Lua (pronounced LOO-ah, or in IPA) programming language is a lightweight, reflective, imperative and procedural language, designed as a scripting language with extensible semantics as a primary goal. ...


Features

Lua is commonly described as a “multi-paradigm” language, providing a small set of general features that can be extended to fit different problem types, rather than providing a more complex and rigid specification to match a single paradigm. Lua, for instance, does not contain explicit support for inheritance, but allows it to be implemented relatively easily with metatables. Similarly, Lua allows programmers to implement namespaces, classes, and other related features using its single table implementation; first class functions allow the employment of many powerful techniques from functional programming; and full lexical scoping allows fine-grained information hiding to enforce the principle of least privilege. This does not cite any references or sources. ... This article or section does not cite any references or sources. ... In many programming languages, a namespace is a context for identifiers. ... In object-oriented programming, a class consists of encapsulated instance variables and subprograms, the methods mentioned below. ... In computer science, a first class function is a programming language construct that allows a function to be treated in many respects like ordinary data objects. ... Functional programming is a programming paradigm that treats computation as the evaluation of mathematical functions and avoids state and mutable data. ... In computer programming, scope is an enclosing context where values and expressions are associated. ... In computer science, the principle of information hiding is the hiding of design decisions in a computer program that are most likely to change, thus protecting other parts of the program from change if the design decision is changed. ... In computer science and other fields the principle of minimal privilege, also known as the principle of least privilege or just least privilege, requires that in a particular abstraction layer of a computing environment every module (such as a process, a user or a program on the basis of the...


In general, Lua strives to provide flexible meta-features that can be extended as needed, rather than supply a feature-set specific to one programming paradigm. As a result, the base language is light —in fact, the full reference interpreter is only about 150kB compiled— and easily adaptable to a broad range of applications. The introduction to this article provides insufficient context for those unfamiliar with the subject matter. ... In computer science, an interpreter is a computer program that executes, or performs, instructions written in a computer programming language. ...


Lua is a dynamically typed language intended for use as an extension or scripting language, and is compact enough to fit on a variety of host platforms. It supports only a small number of atomic data structures such as boolean values, numbers (double-precision floating point by default), and strings. Typical data structures such as arrays, sets, hash tables, lists, and records can be represented using Lua’s single native data structure, the table, which is essentially a heterogeneous map. Extension languages allow users, programmers, and third-party developers to add features to a program without having to re-write the program as a whole, and it allows people extending a program to co-operate with each other, without having to expend any extra effort. ... Scripting languages (commonly called script languages) are computer programming languages that are typically interpreted. ... For use in mathematics, see Boolean algebra (structure). ... For other uses, see Number (disambiguation). ... A floating-point number is a digital representation for a number in a certain subset of the rational numbers, and is often used to approximate an arbitrary real number on a computer. ... In computer programming and formal language theory, (and other branches of mathematics), a string is an ordered sequence of symbols. ... For the microarray in genetics, see SNP array. ... In computer science, the set is a collection of certain values without any particular order. ... In computer science, a hash table is a data structure that speeds up searching for information by a particular aspect of that information, called a key. ... Look up list in Wiktionary, the free dictionary. ... This article is about the data structure. ... In computing, an associative array, also known as a map, lookup table, or dictionary, is an abstract data type very closely related to the mathematical concept of a function with a finite domain. ...


Lua has no built-in support for namespaces and object-oriented programming. Instead, metatable and metamethods are used to extend the language to support both programming paradigms in an elegant and straight-forward manner. Object-oriented programming (OOP) is a computer programming paradigm in which a software system is modeled as a set of objects that interact with each other. ...


Lua implements a small set of advanced features such as first-class functions, garbage collection, closures, proper tail calls, coercion (automatic conversion between string and number values at run time), coroutines (cooperative multitasking) and dynamic module loading. In computer science, a programming language is said to support first-class functions if it treats functions as first-class objects. ... In computer science, garbage collection (GC) is a form of automatic memory management. ... In computer science, a closure is a function that is evaluated in an environment containing one or more bound variables. ... In computer science, tail recursion (or tail-end recursion) is a special case of recursion in which the last operation of the function is a recursive call. ... In computer science, type conversion or typecasting refers to changing an entity of one data type into another. ... In computer science, coroutines are program components that generalize subroutines to allow multiple entry points and suspending and resuming of execution at certain locations. ...


By including only a minimum set of data types, Lua attempts to strike a balance between power and size.


Example code

The classic hello world program can be written as follows: A hello world program is a computer program that prints out Hello, World! on a display device. ...

 print "Hello, World!" 

The factorial is an example of a recursive function: For factorial rings in mathematics, see unique factorisation domain. ... This article is about the concept of recursion. ...

 function factorial(n) if n == 0 then return 1 end return n * factorial(n - 1) -- A comment in Lua starts with a double-hyphen end -- and runs to the end of the line  print([[multiple lines]]) --[[It's possible to write in multiple lines if it's used with following double square brackets]] 

Lua’s treatment of functions as first class variables is shown in the following example, where the print function’s behavior is modified:

 do local oldprint = print -- Store current print function as old print print = function(s) -- Redefine print function if s == "foo" then oldprint("bar") else oldprint(s) end end end 

Any future calls to ‘print’ will now be routed through the new function, and thanks to Lua’s lexical scoping, the old print function will only be accessible by the new, modified print. In computer programming, scope is an enclosing context where values and expressions are associated. ...


Lua also supports closures, as demonstrated below: In computer science, a closure is a function that is evaluated in an environment containing one or more bound variables. ...

 function makeaddfunc(x) -- Return a new function that adds x to the argument return function(y) -- When we refer to the variable x, which is outside of the current -- scope and whose lifetime is shorter than that of this anonymous -- function, Lua creates a closure. return x + y end end plustwo = makeaddfunc(2) print(plustwo(5)) -- Prints 7 

A new closure for the variable x is created every time makeaddfunc is called, so that the anonymous function returned will always access its own x parameter. The closure is managed by Lua’s garbage collector, just like any other object.


Extensible semantics is a key feature of Lua, and the “metatable” concept allows Lua’s tables to be customized in powerful and unique ways. The following example demonstrates an “infinite” table. For any n, fibs[n] will give the nth Fibonacci number using dynamic programming and memoization. A tiling with squares whose sides are successive Fibonacci numbers in length A Fibonacci spiral, created by drawing arcs connecting the opposite corners of squares in the Fibonacci tiling shown above – see golden spiral In mathematics, the Fibonacci numbers form a sequence defined by the following recurrence relation: That is... In mathematics and computer science, dynamic programming is a method of solving problems exhibiting the properties of overlapping subproblems and optimal substructure (described below) that takes much less time than naive methods. ... Memoization is a technique used to speed up computer programs by storing the results of functions for later reuse, rather than recomputing them. ...

 fibs = { 1, 1 } -- Initial values for fibs[1] and fibs[2]. setmetatable(fibs, { -- Give fibs some magic behavior. __index = function(name, n) -- Call this function if fibs[n] does not exist. name[n] = name[n - 1] + name[n - 2] -- Calculate and memoize fibs[n]. return name[n] end }) 

Tables

Tables are the most important data structure (and, by design, the only complex data structure) in Lua, and are the foundation of all user-created types.


The table is a collection of key and data pairs (known also as hashed heterogeneous associative array), where the data is referenced by key. The key (index) can be of any data type except nil. An integer key of 1 is considered distinct from a string key of "1". In computer science, a hash table is a data structure that speeds up searching for information by a particular aspect of that information, called a key. ... Look up Heterogeneous in Wiktionary, the free dictionary. ... An associative array (also map, hash, dictionary, finite map, lookup table, and in query-processing an index or index file) is an abstract data type composed of a collection of keys and a collection of values, where each key is associated with one value. ...


Tables are created using the {} constructor syntax:

 a_table = {} -- Creates a new, empty table 

Tables are always passed by reference:

 -- Creates a new table, with one associated entry. The string x mapping to -- the number 10. a_table = {x = 10} -- Prints the value associated with the string key, -- in this case 10. print(a_table["x"]) b_table = a_table a_table["x"] = 20 -- The value in the table has been changed to 20. print(a_table["x"]) -- Prints 20. -- Prints 20, because a_table and b_table both refer to the same table. print(b_table["x"]) 

Table as structure

Tables are often used as structures (or objects) by using strings as keys. Because such use is very common, Lua features a special syntax for accessing such fields. Example: This article does not cite any references or sources. ... In computer programming and formal language theory, (and other branches of mathematics), a string is an ordered sequence of symbols. ...

 point = { x = 10, y = 20 } -- Create new table print(point["x"]) -- Prints 10 print(point.x) -- Has exactly the same meaning as line above 

Table as namespace

By using a table to store related functions, it can act as a namespace.

 Point = {} Point.new = function (x, y) return {x = x, y = y} end Point.set_x = function (point, x) point.x = x end 

Table as array

By using a numerical key, the table resembles an array data type. Lua arrays are 1-based: the first index is 1 rather than 0 as it is for many programming languages (though an explicit index of 0 is allowed). For the microarray in genetics, see SNP array. ...


A simple array of strings:

 array = { "a", "b", "c", "d" } -- Indices are assigned automatically. print(array[2]) -- Prints "b". Automatic indexing in Lua starts at 1. print(#array) -- Prints 4. # is the length operator for tables and strings. array[0] = "z" -- Zero is a legal index. print(#array) -- Still prints 4, as Lua arrays are 1-based. 

An array of objects:

 function Point(x, y) -- "Point" object [[constructor (computer science)|constructor]] return { x = x, y = y } -- Creates and returns a new object (table) end array = { Point(10, 20), Point(30, 40), Point(50, 60) } -- Creates array of points print(array[2].y) -- Prints 40 

Object-oriented programming

Although Lua does not have a built-in concept of classes, they can be implemented using two language features: first-class functions and tables. By placing functions and related data into a table, an object is formed. Inheritance (both single and multiple) can be implemented via the “metatable” mechanism, telling the object to lookup nonexistent methods and fields in parent object(s). In object-oriented programming, a class is a programming language construct used to group related fields and methods. ... In computer science, a programming language is said to support first-class functions if it treats functions as first-class objects. ... This article or section does not cite any references or sources. ...


There is no such concept as “class” with these techniques, rather “prototypes” are used as in Self programming language or Javascript. New objects are created either with a factory method (that constructs new objects from scratch) or by cloning an existing object. Prototype-based programming is a style of object-oriented programming in which classes are not present, and behavior reuse (known as inheritance in class-based languages) is performed via a process of cloning existing objects that serve as prototypes. ... This article or section does not cite its references or sources. ... JavaScript is a scripting language most often used for client-side web development. ... The factory method pattern is an object-oriented design pattern. ...


Lua provides some syntactic sugar to facilitate object orientation. To declare member functions inside a prototype table, you can use function table:func(args), which is equivalent to function table.func(self, args). Calling class methods also makes use of the colon: object:func(args) is equivalent to object.func(object, args). Syntactic sugar is a term coined by Peter J. Landin for additions to the syntax of a computer language that do not affect its functionality but make it sweeter for humans to use. ... In object-oriented programming, the term method refers to a subroutine that is exclusively associated either with a class (called class methods, static methods, or factory methods) or with an object (called instance methods). ...


Creating a basic vector object: This article is about vectors that have a particular relation to the spatial coordinates. ...

 Vector = { } -- Create a table to hold the class methods function Vector:new(x, y, z) -- The constructor object = { x = x, y = y, z = z } setmetatable(object, { -- Overload the index event so that fields not present within the object are -- looked up in the prototype Vector table __index = Vector }) return object end -- Declare another member function, to determine the -- [[Vector (spatial)#Length of a vector|magnitude]] of the vector function Vector:mag() -- Reference the implicit object using [[This (computer science)|self]] return math.sqrt(self.x * self.x + self.y * self.y + self.z * self.z) end vec = Vector:new(0, 1, 0) -- Create a vector print(vec:mag()) -- Call a member function using ":" print(vec.x) -- Access a member variable using "." 

Internals

Lua programs are not interpreted directly from the textual Lua file, but are compiled into bytecode which is then run on the Lua virtual machine. The compilation process is typically transparent to the user and is performed during run-time, but it can be done offline in order to increase performance or reduce the memory footprint of the host environment by leaving out the compiler. In computer programming, an interpreted language is a programming language whose programs may be executed from source form, by an interpreter. ... A diagram of the operation of a typical multi-language, multi-target compiler. ... Bytecode is a binary representation of an executable program designed to be executed by a virtual machine rather than by dedicated hardware. ... In computer science, a virtual machine is software that creates a virtualized environment between the computer platform and its operating system, so that the end user can operate software on an abstract machine. ... In computer science, runtime describes the operation of a computer program, the duration of its execution, from beginning to termination (compare compile time). ...


This example is the bytecode listing of the factorial function described above (in Lua 5.1.1):

 function <factorial.lua:1,6> (10 instructions, 40 bytes at 003D5818) 1 param, 3 slots, 0 upvalues, 1 local, 3 constants, 0 functions 1 [2] EQ 0 0 -1 ; - 0 2 [2] JMP 2 ; to 5 3 [3] LOADK 1 -2 ; 1 4 [3] RETURN 1 2 5 [5] GETGLOBAL 1 -3 ; factorial 6 [5] SUB 2 0 -2 ; - 1 7 [5] CALL 1 2 2 8 [5] MUL 1 0 1 9 [5] RETURN 1 2 10 [6] RETURN 0 1 

There is also a free, third-party just-in-time compiler for the latest version (5.1) of Lua, called LuaJIT. It’s very small (under 32kB of additional code) and can often improve the performance of a Lua program significantly. [2] See also Just in time for the business technique In computing, just-in-time compilation (JIT), also known as dynamic translation, is a technique for improving the performance of interpreted programs. ...


C API

Lua is intended to be embedded into other applications, and accordingly it provides a robust, easy to use C API. The API is divided into two parts: the Lua core [3], and the Lua auxiliary library [4]. C is a general-purpose, block structured, procedural, imperative computer programming language developed in 1972 by Dennis Ritchie at the Bell Telephone Laboratories for use with the Unix operating system. ... API and Api redirect here. ...


The Lua API is fairly straightforward because its unique design eliminates the need for manual reference management in C code, unlike Python’s API. The API, like the language, is minimalistic. Advanced functionality is provided by the auxiliary library, which consists largely of preprocessor macros which make complex table operations more palatable. In computer science, reference counting is a technique of storing the number of references, pointers, or handles to a resource such as an object or block of memory. ... Python is a general-purpose, high-level programming language. ... In computer science, a preprocessor is a program that processes its input data to produce output that is used as input to another program. ...


The Lua Stack

The Lua API makes extensive use of a global stack which is used to pass parameters to and from Lua and C functions. Lua provides functions to push and pop most simple C data types (integers, floats, etc.) to and from the stack, as well as functions for manipulating tables through the stack. The Lua stack is somewhat different from a traditional stack; the stack can be indexed directly, for example. Negative indices indicate offsets from the top of the stack (for example, −1 is the last element), while positive indices indicate offsets from the bottom. Simple representation of a stack In computer science, a stack is a temporary abstract data type and data structure based on the principle of Last In First Out (LIFO). ...


Marshalling data between C and Lua functions is also done using the stack. To call a Lua function, arguments are pushed onto the stack, and then the lua_call is used to call the actual function. When writing a C function to be directly called from Lua, the arguments are popped from the stack.


Special Tables

The C API also provides several special tables, located at various “pseudo-indices” in the Lua stack. At LUA_GLOBALSINDEX is the globals table, _G from within Lua, which is the main namespace. There is also a registry located at LUA_REGISTRYINDEX where C programs can store Lua values for later retrieval. A namespace is a context in which a group of one or more identifiers might exist. ...


Extension Modules

It is possible to write extension modules using the Lua API. Extension modules are shared objects which can be used to extend the functionality of the interpreter by providing native facilities to Lua scripts. Lua scripts may load extension modules using require [5]. Illustration of an application which may use libvorbisfile. ...


Bindings to Other Languages

  • LuaInterface [6] for CLR based languages.
  • Tao.Lua [7] for .Net and Mono
  • LuaJava [8] for Java.
  • Kahlua [9] for J2ME (CLDC 1.1). This is not a binding, but a reimplementation of the Lua virtual machine.

The Common Language Runtime (CLR) is the virtual machine component of Microsofts . ... Microsoft . ... Mono is a project led by Novell (formerly by Ximian) to create an Ecma standard compliant . ...

Applications

Lua, as a compiled binary is small. Coupled with it being relatively fast and having the MIT license, it has gained a following among game developers for providing a viable scripting interface. The MIT License, also called the X License or the X11 License, originated at the Massachusetts Institute of Technology, is a license for the use of certain types of computer software. ...


Games

Aleph One (formerly known as the Marathon Open Source Project) is an open-source first-person shooter engine based on the source code of Bungie Studios Marathon 2: Durandal. ... Many marathon total conversions have been available for free over the internet. ... Company of Heroes (CoH) is a real-time strategy (RTS) computer game developed for Microsoft Windows by Relic Entertainment. ... For the particle accelerator, see CRYSIS. Crysis is a science fiction first-person shooter computer game developed by German video game developer Crytek and published by Electronic Arts, and is the first game of a planned trilogy. ... This article is about video games. ... This article is about the computer game. ... Warhammer 40,000: Dawn of War is a Real Time Strategy game for the PC developed by Relic Entertainment and published by THQ. Based on Games Workshops popular tabletop wargame, Warhammer 40,000, Dawn of War was released in September 2004. ... Destroy All Humans! is a video game developed by Pandemic Studios and published by THQ. It was released for the Xbox and PlayStation 2 computer entertainment systems on June 21, 2005. ... Destroy All Humans! 2 is a game for PlayStation 2 and Xbox and a sequel to Destroy All Humans!. It was released on October 17, 2006, in North America. ... Escape from Monkey Island (EMI) is a computer adventure game developed and released by LucasArts in 2000. ... This article is about the computer game. ... This article is about video games. ... This article is about the concept of an entity. ... Garrys Mod or GMod is a modification for the first-person shooter computer game Half-Life 2. ... Fortress Forever is a Half-Life 2 mod that uses the games Source Engine. ... For other uses, see Mod. ... Half-Life 2 (commonly abbreviated to HL2) is a science fiction first-person shooter computer game that is the sequel to Half-Life. ... Grim Fandango is a graphical adventure computer game released by LucasArts in 1998. ... Escape from Monkey Island (EMI) is a computer adventure game developed and released by LucasArts in 2000. ... Grime is a sub-genre of urban music which first emerged in London in the early 2000s, primarily a development of UK garage, drum and bass, dancehall and hip hop. ... Gusanos is a free cross-platform multiplayer computer game. ... Homeworld 2 is a real-time strategy (RTS) computer game, the sequel to Relic Entertainments Homeworld from 1999. ... For other uses, see Mod. ... Multi Theft Auto (MTA) is a mod (modification) for the PC version of Rockstar North games Grand Theft Auto III, Grand Theft Auto: Vice City and Grand Theft Auto: San Andreas that adds an otherwise absent online multi-player component. ... Grand Theft Auto may refer to Motor vehicle theft, a crime in many jurisdictions Grand Theft Auto (film), a film directed by Ron Howard Grand Theft Auto (series), a computer and video game series Grand Theft Auto (video game), the first game in this series Category: ... Grand Theft Auto: San Andreas is the fifth video game in the Grand Theft Auto series. ... Painkiller is a first-person shooter PC game released on April 12, 2004. ... The PlayStation Home logo Home (trademarked as Home™ and known more practically as PlayStation Home) is a community-based service for the PlayStation Network which has been in development since early 2007. ... This article for the video game; for other uses, see Psychonaut (disambiguation). ... Ragnarok Online (Korean: ), often referred to as RO, is a massively multiplayer online role-playing game created by GRAVITY Co. ... Destroy your creations with an infinite arsenal of weaponry. ... SimCity 4 (SC4) is a city-building simulation computer game developed by California-based software company Maxis, a subsidiary of Electronic Arts, in 2003. ... Spring (formerly known as TA Spring or Total Annihilation: Spring), is a full 3D open source RTS engine originally created by the Swedish Yankspankers,[1] intended to bring the gameplay experience of Total Annihilation into three dimensions. ... S.T.A.L.K.E.R.: Shadow of Chernobyl is an unreleased FPS computer game. ... StepMania is a rhythm video game for Microsoft Windows, Mac OS, and Linux created by Chris Danford. ... Supreme Commander - Wikipedia, the free encyclopedia /**/ @import /skins-1. ... Toribash is turn-based fighting game utilizing ragdoll physics, created by Hampus Söderström (a. ... Vendetta Online is a twitch-based, science fiction massively multiplayer online role-playing game (MMORPG) developed by Guild Software for the Microsoft Windows, Mac OS X, and Linux operating systems. ... An image from World of Warcraft, one of the largest commercial MMORPGs as of 2004, based on active subscriptions. ... The user interface is the part of a system exposed to users. ... Warhammer Online is a forthcoming MMORPG based on the Warhammer Fantasy universe. ... Advertisement for The Witcher at Gen Con Indy 2007 The Witcher is a computer role-playing game for the PC developed by CD Projekt RED STUDIO and published by CD Projekt in Poland and Atari for the rest of the world. ... World of Warcraft (commonly abbreviated as WoW) is a massive multiplayer online role-playing game (MMORPG) developed by Blizzard Entertainment and is the fourth game in the Warcraft series, excluding expansion packs and the cancelled Warcraft Adventures: Lord of the Clans. ... C++ (pronounced ) is a general-purpose programming language. ...

Other applications

  • Celestia uses Lua to expand its capabilities without recompiling its source code
  • Multimedia Fusion Developer 2 has a Lua extension that allows games and applications created with it to run Lua scripts.
  • Adobe Photoshop Lightroom uses Lua for its user interface
  • Lua Server Pages is a fast server side scripting language(web) suitable for CPU and/or memory constrained systems.
  • The window manager Ion uses Lua for customization and extensibility.
  • The packet sniffer Wireshark uses Lua for scripting and prototyping.
  • The Aegisub subtitles manipulation program uses Lua in its automation module, to generate advanced effects, such as karaoke.
  • Intellipool Network Monitor uses Lua for customization and extensibility.
  • Lua Player is a port designed to run on Sony Computer Entertainment’s PlayStation Portable to allow entry-level programming.
  • CMUcam uses Lua for customization and extensibility as part of the CMUcam 3 scripter
  • lighttpd uses Lua for its Cache Meta Language, a sophisticated way to describe caching behavior.
  • The popular network mapping program nmap uses Lua as the basis for its scripting language, called nse.
  • The version control system Monotone uses Lua for scripting hooks.
  • MySQL Proxy provides Lua scripting hooks.
  • eyeon's Fusion compositor uses embedded Lua for internal and external scripts and also plugin prototyping.
  • The Snort Intrusion Detection/Prevention System version 3.0 uses Lua for its command line interpreter.
  • New versions of SciTE allow Lua to be used to provide additional features.
  • Version 2.01 of the profile management software for Logitech’s G15 gaming keyboard uses Lua as its scripting language.
  • Electro a 3D engine developed by EVL Electronic Visualization Labs (from the University of Illinois at Chicago) is a visualization and game development environment that uses Lua as its core development language ([10]).
  • A new extended version of the TeX typesetting system using Lua as its embedded scripting language is currently under development and reached Beta status in August 2007 (LuaTeX).
  • FEMM, Finite Element Method Magnetics, an application that solves magnetic and electrostatic problems.
  • The Squeezebox Controller, a device controller to manipulate and control the Squeezebox (network music player) product line from Slim Devices/Logitech uses Lua to implement its Graphical user interface.
  • Anime Studio Pro by e frontier (formerly Moho) is a complete vector animation program featuring bones and inverse kinematics and which allows users to use Lua scripting to create and control new functions and effects.
  • Nanoki is a small, full featured wiki engine implemented in Lua.
  • Cisco uses Lua to implement Dynamic Access Policies within the Adaptive Security Appliance.
  • Project Dogwaffle uses Lua to let the end-user create new imaging filters. DogLua is based on a 'gluas' plugin spec developed initially for the GIMP. Lua scripting is also available in other digital painting programs, such as ArtWeaver and Twistedbrush. Some implementations have their respective extensions. When the core GIMP-original gluas syntax is used without proprietary extensions, these imaging filters can be shared and used across these applications for the benefit of other users. Some extensions from Project Dogwaffle have found their way also into others such as ArtWeaver.
  • 3DMLW plugin uses Lua scripting for animating 3D and handling different events.
  • FreePOPs is an extensible mail proxy. It enables checking and downloading of e-mail from webmails from any conventional POP3 client program, avoiding the need to use a Web browser.

For other uses, see Celestia (disambiguation). ... Multimedia Fusion 2 (MF2 or MMF2) is the sequel to Clickteams Multimedia Fusion(MMF). ... Adobe Photoshop Lightroom is a photography software program developed by Adobe Systems for Mac OS X and Microsoft Windows, designed to assist professional photographers in managing thousands of digital images and doing post production work. ... A window manager is computer software that controls the placement and appearance of windows within a windowing system in a graphical user interface; they are typically associated with X Window (see X window manager), but alternative shells for Microsoft Windows have also emerged. ... Categories: Software stubs | Free software | X window managers ... In computing, Wireshark (formerly known as Ethereal) is a free software protocol analyzer, or packet sniffer application, used for network troubleshooting, analysis, software and protocol development, and education. ... In printed material In printed material, a subtitle is an explanatory or alternate title. ... For other uses see Karaoke (disambiguation) Karaoke from Japanese kara(空), empty, and ōkesutora, orchestra) (pronounced ; in Japanese IPA: ;  ) is a form of entertainment in which amateur singers sing along with recorded music using a microphone and public address system. ... Intellipool Network Monitor (INM) is a network, server and performance monitor designed to monitor Windows, Linux, Unix and SNMP enabled devices. ... Lua for the PlayStation Portable is interpreted with Lua Player. ... Sony Computer Entertainment, Incorporated ) (SCEI) is a Japanese video game company specializing in a variety of areas in the video game industry, mostly in video game consoles and is a full subsidiary of Sony Corporation that was established on November 16, 1993 in Tokyo, Japan. ... The PlayStation Portable , officially abbreviated as PSP) is a handheld game console released and currently manufactured by Sony Computer Entertainment. ... A CMUcam is a low cost computer vision device intended for robotics research. ... lighttpd (pronounced lighty) is a web server which is designed to be secure, fast, standards-compliant, and flexible while being optimized for speed-critical environments. ... For the maternity policy see National Maternity Action Plan Nmap is a free security scanner written by Gordon Lyon. ... Monotone is an open source software tool for revision control. ... Fusion (formerly Digital Fusion) is a full-featured, node-based compositing system created by eyeon Software Inc. ... Scripting programming languages (commonly called scripting languages or script languages) are computer programming languages designed for scripting the operation of a computer. ... For other uses, see Plug in. ... Snort is a free software / open source network intrusion detection and prevention system capable of performing packet logging and real-time traffic analysis on IP networks. ... SciTE or SCIntilla based Text Editor is a cross-platform text editor written by Neil Hodgson using the Scintilla editing component. ... This article or section does not cite any references or sources. ... Electro is either (a) a prefix used to indicate a relationship to electricity, as in electro-mechanical, or electro-magnet, or (b) a stand-alone word. ... TeX (IPA: as in Greek, often in English; written with a lowercase e in imitation of the logo) is a typesetting system created by Donald Knuth. ... The Squeezebox is a hardware device from Slim Devices. ... Slim Devices are a consumer electronics company based in Mountain View, California. ... This article or section does not cite any references or sources. ... GUI redirects here. ... e frontier is a developer of 2D & 3D media software best known for Poser, a 3D modeling package. ... Moho may refer to: The Mohorovičić discontinuity, the boundary between the Earths crust and the mantle. ... The Lua (pronounced LOO-ah, or in IPA) programming language is a lightweight, reflective, imperative and procedural language, designed as a scripting language with extensible semantics as a primary goal. ... Cisco may refer to: Cisco Systems, a computer networking company Cisco IOS, an internet router operating system CISCO Security Private Limited, a security company in Singapore Commercial and Industrial Security Corporation, a statutory board in Singapore Abbreviation for San Francisco, California Cisco (wine) The Cisco Kid, a fictional character created... Project Dogwaffle is a Bitmap graphics editor with simple animation capabilities. ... For other uses, see Gimp (disambiguation). ... Look up 3D in Wiktionary, the free dictionary. ... To meet Wikipedias quality standards, this article or section may require cleanup. ... Wikipedia does not yet have an article with this exact name. ... Webmail is a class of web applications that allow users to read and write e-mail using a web browser, or in a more general sense, an e-mail account accessed through such an application. ... In computing, local e-mail clients use the Post Office Protocol version 3 (POP3), an application-layer Internet standard protocol, to retrieve e-mail from a remote server over a TCP/IP connection. ... In computing, a client is a system that accesses a (remote) service on another computer by some kind of network. ... An example of a Web browser (Mozilla Firefox) A web browser is a software application that enables a user to display and interact with text, images, videos, music and other information typically located on a Web page at a website on the World Wide Web or a local area network. ...

Books

External links

  • User projects — list of applications using Lua, compiled by the authors
  • lua-users.org — community website for and by users (and authors) of Lua
  • lua-users wiki — supplementary information and resources
  • lua-l archive — the official list
  • Luai — an alternative interface to the reference manual

  Results from FactBites:
 
Lua programming language (373 words)
Lua is fast compared to most other bytecode interpreted scripting languages, and is suitable for writing stand-alone applications (although there are nowhere near as many libraries available as there are for Perl, Python or Tcl).
Like Tcl, Lua was designed primarily as an extension language which could be linked into C applications and used to extend their functionality by nonprogrammers, and is partially implemented as a small library for C to achieve this goal.
One of the interesting features of the language is that it is both a language and an API for accessing the runtime state of the language's interpreter from a host C program.
  More results at FactBites »

 

COMMENTARY     


Share your thoughts, questions and commentary here
Your name
Your location
Your comments
Please enter the 5-letter protection code


Lesson Plans | Student Area | Student FAQ | Reviews | Press Releases |  Feeds | Contact
The Wikipedia article included on this page is licensed under the GFDL.
Images may be subject to relevant owners' copyright.
All other elements are (c) copyright NationMaster.com 2003-5. All Rights Reserved.
Usage implies agreement with terms.