Documentation
The official definition of the Lua language is its reference manual, which describes the syntax and the semantics of Lua, the standard libraries, and the C API.
The reference manuals for all versions of Lua are available online in English. Some are available in other languages and as a printed book.
The current version is the reference manual for Lua 5.5.
For more technical information, see the Frequently Asked Questions (FAQ) and some old seminar slides. For detailed technical information on specific topics, see our old series of Lua Technical Notes and the wiki at lua-users.org, specially the tutorial. You may also browse the source code. For a tutorial on embedding Lua, see The Lua Integration Guide by Marc Balmer.
There are many papers and theses related to Lua. Here are the main ones written by the Lua team. See also the LabLua publications.
The main academic paper about Lua discusses the philosophy behind its design:
Lua – an extensible extension language by R. Ierusalimschy, L. H. de Figueiredo, W. Celes,
Software: Practice & Experience 26 #6 (1996) 635–652. [doi]This paper was awarded the first prize (technological category) in the II Compaq Award for Research and Development in Computer Science in 1997. This award was a joint venture of Compaq Computer in Brazil, the Brazilian Ministry of Science and Technology, and the Brazilian Academy of Sciences.
For an overview of how Lua is designed, see
A look at the design of Lua by R. Ierusalimschy, L. H. de Figueiredo, W. Celes,
Communications of the ACM 61 #11 (2018) 114–123. [doi · video]
For a short exposition of the API design, see
Passing a language through the eye of a needle by R. Ierusalimschy, L. H. de Figueiredo, W. Celes,
ACM Queue 9 #5 (May 2011) 20–29. [doi · acm]
Communications of the ACM 54 #7 (July 2011) 38–43. [doi · acm]
It is also available in Portuguese:
Passando uma linguagem pelo buraco de uma agulha por R. Ierusalimschy, L. H. de Figueiredo, W. Celes,
ACM Queue 9 #5 (May 2011) 20–29.
For details on the implementation of Lua, see
The implementation of Lua 5.0 by R. Ierusalimschy, L. H. de Figueiredo, W. Celes,
Journal of Universal Computer Science 11 #7 (2005) 1159–1176. [doi · slides]
For details on the role of first-class functions in Lua, see
First-class functions in an imperative world by R. Ierusalimschy,
Journal of Universal Computer Science 23 #1 (2017) 112–126. [doi · slides]
For a discussion of coroutines in Lua, see
Coroutines in Lua by A. L. de Moura, N. Rodriguez, R. Ierusalimschy,
Journal of Universal Computer Science 10 #7 (2004) 910–925. [doi · slides]
For a complete history of Lua, see
The evolution of Lua by R. Ierusalimschy, L. H. de Figueiredo, W. Celes,and its continuation
Proceedings of ACM HOPL III (2007) 2-1–2-26. [doi · slides]
The evolution of Lua, continued by R. Ierusalimschy, L. H. de Figueiredo, W. Celes,
Journal of Computer Languages 83 (2025) 101326. [doi]
For a history of Lua until 2001, see
The evolution of an extension language: a history of Lua by R. Ierusalimschy, L. H. de Figueiredo, W. Celes,
Proceedings of V Brazilian Symposium on Programming Languages (2001) B-14–B-28. [ps]
The first paper describing Lua has some historical interest:
The design and implementation of a language for extending applications by L. H. de Figueiredo, R. Ierusalimschy, W. Celes,
Proceedings of XXI Brazilian Seminar on Software and Hardware (1994) 273–283. [ps]
For an early expository article, see
Lua: an extensible embedded language by L. H. de Figueiredo, R. Ierusalimschy, W. Celes,
Dr. Dobb's Journal 21 #12 (Dec 1996) 26–33. [ddj]
For introductory texts in Portuguese, see
Uma introdu��o � programa��o em Lua by R. Ierusalimschy, JAI 2009 (Jul 2009).See also an interview about Lua in the book Masterminds of Programming (2009).
A linguagem Lua e suas aplica��es em jogos by W. Celes, L. H. Figueiredo, R. Ierusalimschy
WJogos 2004 (Oct 2004). [slides]
Lua books are available at the main online stores and also as e-books at Feisty Duck. When you buy a copy of a book published by Lua.org, you help to support the Lua project.
The official definition of the Lua language:
The reference manuals for later versions of Lua are available online.Lua 5.1 Reference Manual by R. Ierusalimschy, L. H. de Figueiredo, W. Celes,
Lua.org, August 2006
ISBN 8590379833
A detailed and authoritative introduction to all aspects of Lua programming, by Lua's chief architect:
Programming in Lua by R. Ierusalimschy
Lua.org, fourth edition, August 2016
ISBN 8590379868
(also available as an e-book)
The fourth edition is aimed at Lua 5.3 and marks a complete reorganization of the text. The first edition is available online. It was aimed at Lua 5.0 and is still largely relevant.
The third edition was aimed at Lua 5.2 and remains quite relevant. It is available in English, Portuguese, and Russian:
Programming in Lua by Roberto Ierusalimschy
Lua.org, third edition, January 2013
ISBN 859037985X
(also available as e-book)
Programando em Lua por Roberto Ierusalimschy
LTC, January 2015
ISBN 9788521626992
Programmirovanie na iazyke Lua by Roberto Ierusalimschy
DMK-press, 2014
ISBN 5940747671
The second edition remains relevant and is available in German, Korean, Chinese, and Japanese:
Programmieren mit Lua von Roberto Ierusalimschy
Open Source Press, September 2006
ISBN 3937514228
Programming in Lua by Roberto Ierusalimschy
Insight, June 2007
ISBN 9788991268302
Programming in Lua by Roberto Ierusalimschy
Publishing House of Electronic Industry, May 2008
ISBN 9787121061875
Programming in Lua by Roberto Ierusalimschy
ASCII Media Works, Aug 2009
ISBN 9784048677974
A collection of articles recording some of the existing wisdom and practice on how to program well in Lua:
Lua Programming Gems edited by L. H. de Figueiredo, W. Celes, R. Ierusalimschy, Lua.org, December 2008
ISBN 9788590379843
(also available as e-book)
There are also books about Lua written by other authors: