Lua
Despite its simplicity, the scripting language Lua [1] offers a remarkable
potential, primarily because of a few "Meta Mechanisms" [2] not found in
other languages.
The following pages give a brief overview of Lua and document the author's
activities with respect to an evaluation of that language in the context
of his Ph.D. thesis.
Please, also consider my "Hints for Reading"
and the "List of Recent Changes".
Overview
The list of topics given below directly guides you to the desired information
- just click on a topic of your choice:
-
Lua in brief - a brief description of the language
and some important extensions
-
Distributions - Lua, TkLua, LuaSockets
compiled for Win32 systems
-
Acquainting - a systematic approach
to Lua programming
-
Modules - scripts for basic Lua
functions
-
Examples - simple and less simple Lua
and TkLua programming examples
-
Applications - stand-alone applications
written in
Lua/TkLua/LuaSocket
-
Miscellaneous - additional Lua
stuff

Lua in brief
Development of Lua [1] began in 1993 by Roberto Ierusalimschy, Waldemar Celes
and Luiz Henrique de Figueiredo at TeCGraf, the "Computer Graphics Technology
Group" of "Departamento de Informática" (DI) at the "Pontifícia
Universidade Católica do Rio de Janeiro" (PUC-Rio)[2]. Originally,
Lua started up as a data description language with the intention to simplify
the construction of parameter files for numerical simulations - meanwhile,
it has become a generally applicable scripting language.
Lua uses a procedural syntax with comfortable mechanisms to describe data
by means of associative arrays ("tables"). Data types are "dynamically" bound:
while "variables" don't have a fixed type associated to them, "values" have.
Prior to its interpretation by a "virtual machine" (VM), Lua source code
will be compiled into an intermediate "byte code" - either explicitly using
a Lua compiler or implicitly at run-time. Memory management is performed
by the run-time system itself, an automatic garbage collection removes values
from memory as soon as they are no longer in use.
A few "Meta Mechanisms" allow the implementation of mechanisms, which the
Lua designers deliberately decided not to provide. E.g., while the language
itself lacks important details of object orientation (such as single or multiple
inheritance), these can be easily added with a few Lua statements. Lua designers
call this feature "extensible semantics".
Lua has been primarily designed as an "extension and configuration language"
and is foreseen to be integrated into a C/C++ application. It has been
implemented in ANSI-C as a set of separately loadable libraries and can be
easily ported to new platforms. An explicit C API (application programmers
interface) allows the smooth interaction between Lua statements and objects
or functions of a run-time environment. Nevertheless, by means of a simple
shell application it is also possible to run "stand-alone" scripts.
The Lua licensing conditions [3] allow the utilization of Lua free of charge
even for commercial applications.
A final note on the name "Lua": "Lua" means "moon" in portuguese - an allusion
to the fact that the language is a successor of "Sol" (Simple Object Language),
the portuguese word for "sun".
Important Extensions
Apart from the language itself, there are a number of important extensions
such as:
-
tolua [12]
based on the "canonicalized" form of a C/C++ header file, tolua automatically
generates any "glue" code required to access C/C++ constants, variables,
functions, classes and methods from within Lua scripts;
-
TkLua [13,14]
allows the utilization of Tk widgets (and Tcl commands in general) from within
Lua programs. Almost all Tk features are available for Lua programmers -
in a (compared to Tcl itself) much more comfortable manner;
-
LuaSocket [15]
extends Lua with a number of important IPv4 functions (DNS, TCP and UDP)
and some higher-level protocols (SMTP, HTTP & FTP).
References
| [1] |
The Programming Language Lua
(see http://www.lua.org)
the given address is the primary starting point for any investigation about
Lua: from here you are directed to Lua distributions, documentation, additional
libraries or tools - and you may get in contact with other Lua users; |
| [2] |
Roberto Ierusalimschy, Luiz Henrique de Figueiredo, Waldemar
Celes
About
(see
http://www.lua.org/about.html)
this web page contains a brief description of the Lua language; |
| [3] |
Lua Copyright notice
(see
http://www.lua.org/copyright.html)
not just for the company's laywer: the Lua licensing conditions; |
| [4] |
Roberto Ierusalimschy, Luiz Henrique de Figueiredo, Waldemar
Celes
Reference Manual of the Programming Language Lua 4.0
(see http://www.lua.org/manual)
the official reference manual contains any relevatn information about the
language itself, the set of standard libraries and its interface to the run-time
environment; |
| [5] |
Roberto Ierusalimschy, Luiz Henrique de Figueiredo, Waldemar
Celes Filho
Lua - an extensible extension language
Software: Practice & Experience (No. 6, Vol. 26, 1996), p. 635-652
(see
http://www.lua.org/spe.html)
this paper describes the fundamental characteristics of Lua (and its integration
into applications written in C/C++), sometimes backed by source code examples; |
| [6] |
Roberto Ierusalimschy, Luiz Henrique de Figueiredo, Waldemar
Celes
Lua: an Extensible Embedded Language
A few metamechanisms replace a host of features
Dr. Dobb's Journal (No. 12, Vol. 21, December 1996), p. 26-33
(see
http://www.lua.org/ddj.html)
this article describes the most important characteristics of Lua and TkLua.
A number of source code examples illustrate the given descriptions; |
| [7] |
Reuben Thomas et al.
Technical Notes
(see http://www.lua.org/notes)
the (extensible) series of "Technical Notes" describes particular language-
and application-specific issues related to Lua; |
| [8] |
Lua 4.0 - Source Code and Platform-specific
Distributions
(see
http://www.lua.org/download.html)
the given page refers to the original source code and a number of binary
distributions for several platforms; |
| [9] |
Win32 Port of Lua 4.0
(see
http://www.tecgraf.puc-rio.br/lua/ftp/binaries/Windows/)
the given ftp directory contains Lua libraries for several C development
systems (Borland, Visual Studio, Watcom) and ready-to-use executables for
execution and compilation of Lua scripts - for Win32 platforms; |
| [10] |
Philippe Lhoste
Lua Page
(see
http://jove.prohosting.com/~philho/softwares/PhiLhoSoft/Lua/index.html)
another Lua distribution (including project files) for Win32 platforms is
provided by Philippe Lhoste; |
| [11] |
Lua Addons
(siehe
http://lua-users.org/wiki/LuaAddons)
this web page refers to a number of additional Lua distributions, libraries
and applications; |
| [12] |
Waldemar Celes
tolua - accessing C/C++ code from Lua
(see
http://www.tecgraf.puc-rio.br/~celes/tolua/)
tolua simplifies the construction of Lua interfaces for existing f C/C++
code. The given web page explains the underlying mechanism of tolua and describes
how to use that tool; |
| [13] |
Waldemar Celes
tklua - Binding Tk to Lua
(see
http://www.tecgraf.puc-rio.br/~celes/tklua/)
TkLua provides support for Tk widgets (allowing to construct graphical user
interfaces) from within Lua scripts. The given web page describes the "basic
concepts" behind TkLua and explains how to use it from within Lua scripts; |
| [14] |
Christian Vogler
TkLua (4.0a1)
(see
http://www.cis.upenn.edu/~cvogler/lua/tklua.html)
since the original distribution of TkLua [13] has been developed for Lua
versions prior to 4.0, Christian Vogler ported TkLua to the new Lua 4.0 API; |
| [15] |
Diego Nehab
LuaSocket - IPv4 Sockets support for the Lua language
(see
http://www.tecgraf.puc-rio.br/~diego/luasocket)
LuaSocket provides support for a number of important IPv4 functions. From
the given web page you will be referred to a description of LuaSocket as
well as to source code and binary distributions; |
| [16] |
Tcl Developer Site
(see http://www.scriptics.com)
you will have to install Tcl/Tk in order to use TkLua. The given web page
is a good starting point for any further investigation of Tcl/Tk; |
| [17] |
Download Tcl/Tk 8.3.4
(see
http://www.scriptics.com/software/tcltk/downloadnow83.tml)
you may download Tcl/Tk 8.3.4 from the given page - this version is needed
for TkLua; |
|