Who Created the Lua Language at PUC-Rio?
Lua was created in 1993 at the Pontifical Catholic University of Rio de Janeiro (PUC-Rio) in Brazil by Roberto Ierusalimschy, Luiz Henrique de Figueiredo, and Waldemar Celes. Developed within the university’s Computer Graphics Technology Group (Tecgraf), the language emerged from a practical necessity to build a lightweight, embeddable configuration and scripting tool for engineering software. Today, Lua is celebrated globally for its high performance, minimal memory footprint, and straightforward C API, powering everything from game engines to embedded devices.
The Core Creators
The creation of Lua was a collaborative effort among three Brazilian computer scientists working at Tecgraf/PUC-Rio:
- Roberto Ierusalimschy: A professor of computer science at PUC-Rio, Ierusalimschy served as the chief architect of the language. He led the design of Lua’s syntax, semantics, and virtual machine, and has authored several foundational texts on the language, including Programming in Lua.
- Luiz Henrique de Figueiredo: A researcher and mathematician with deep expertise in algorithms and numerical computing, Figueiredo contributed heavily to language design, documentation, and the clean, minimalist structure of the runtime environment.
- Waldemar Celes: An expert in computer graphics and software engineering, Celes focused on integrating the language into complex engineering workflows, ensuring Lua could communicate seamlessly with native C libraries.
Why Lua Was Created
Between 1977 and 1992, Brazil maintained strict market barriers on computer hardware and software under a protectionist policy known as the "market reserve." Because importing commercial software was costly and bureaucratic, Brazilian institutions frequently developed in-house solutions.
Tecgraf was contracted by Petrobras, the Brazilian state oil company, to develop graphical engineering applications. Petrobras engineers needed ways to configure simulations and customize data-entry pipelines without recompiling massive C and Fortran codebases.
The team originally designed two separate, specialized domain-specific languages:
- SOL (Simple Object Language): A declarative configuration language used for describing complex structures.
- DEL (Data Entry Language): A language intended to specify data-entry interfaces.
Recognizing that users continuously demanded more procedural power, such as loops, conditional statements, and arithmetic, the team decided against continually bolting features onto SOL and DEL. Instead, in mid-1993, they unified these concepts into a single, clean procedural language designed from scratch to be embedded inside host programs. They named it Lua, meaning "Moon" in Portuguese, echoing the name of its predecessor, SOL, which means "Sun."
Architectural Philosophy and Legacy
The creators designed Lua with several guiding principles that remain intact today:
- Embeddability First: Lua was never intended as a standalone scripting environment, but rather as an extension library meant to be embedded into host applications written in C or C++.
- Minimal Mechanism: Instead of providing an extensive set of specialized language features, Lua provides a few powerful, general-purpose mechanisms. For example, associative tables serve as Lua’s sole data-structuring mechanism, representing arrays, records, sets, and objects.
- Portability and Speed: Written in clean ANSI C, Lua compiles out of the box on virtually any platform that possesses a standard C compiler.
Through the work of Ierusalimschy, Figueiredo, and Celes, Lua grew from a localized corporate utility into one of the most widely used embedded languages in the global computing industry.