Lua 3.1
Lua 3.1 was released on 11 Jul 1998. Its main new features were anonymous functions and function closures via upvalues. (Lua 5.0 brought full lexical scoping and dropped upvalues.) This brought a flavor of functional programming to Lua. There was also support for multiple global contexts; however, the API was not fully reentrant (this had to wait until Lua 4.0). Lua 3.1 also saw a major code re-organization and clean-up, with much reduced module interdependencies. Lua 3.1 also adopted double precision for the internal representation of numbers.