When Was Lua First Developed and Released?
The Lua programming language was first developed and released internally in 1993, followed by its initial public release to the global software community in 1994. Designed at the Pontifical Catholic University of Rio de Janeiro (PUC-Rio) in Brazil, Lua emerged as an efficient, lightweight extension language intended to embed seamlessly within larger software systems. This article covers the origins, development timeline, and initial releases that established Lua as an industry-standard embedded scripting tool.
Origins and Development in 1993
Between 1977 and 1992, Brazil enforced stringent trade barriers on computer hardware and commercial software imports. Because local institutions could rarely afford or legally import expensive foreign software tools, development teams were forced to build in-house solutions tailored to their specific needs.
In 1993, software engineers Roberto Ierusalimschy, Luiz Henrique de Figueiredo, and Waldemar Celes began work at Tecgraf, an interactive computer graphics laboratory at PUC-Rio. They were tasked with building customizable data-entry and configuration tools for Petrobras, Brazil's national oil company. Prior to Lua, the team had experimented with two separate domain-specific languages: DEL (Data Entry Language) and SOL (Simple Object Language). Recognizing that maintaining two specialized languages was inefficient, the trio set out in mid-1993 to merge the best aspects of both into a single, general-purpose extension language. They named the language "Lua," the Portuguese word for "Moon," as a nod to SOL (which means "Sun").
First Functional Implementation (Lua 1.0)
The first functional version, Lua 1.0, was completed and deployed internally in late 1993. Lua was engineered from the beginning with a clear set of design goals:
- Extreme Portability: Written in clean, standard ANSI C to ensure it could compile out of the box on virtually any platform.
- Minimal Footprint: A tiny memory and binary overhead, making it practical to embed into memory-constrained host applications.
- Simple C Integration: A straightforward foreign function interface (API) that allowed two-way communication between C programs and Lua scripts.
- Dynamic Flexibility: First-class functions, associative arrays as a universal data-structuring mechanism (tables), and automatic memory management.
Public Release Timeline
While version 1.0 served internal projects at Tecgraf throughout 1993, Lua was not immediately distributed outside Brazil. The first public release occurred with Lua 1.1 in July 1994, distributed via anonymous FTP.
Lua 1.1 came with documentation that outlined its capabilities as an extensible configuration language. The authors followed this with the release of Lua 2.1 in 1995, accompanied by an academic paper titled Lua—an extensible extension language, published in Software: Practice and Experience. This publication introduced Lua to the broader international software development community, setting the stage for its widespread adoption in video games, networking appliances, and embedded device firmware.