6 – Standard Libraries

The standard Lua libraries provide useful functions that are implemented directly through the C API. Some of these functions provide essential services to the language (e.g., type and getmetatable); others provide access to "outside" services (e.g., I/O); and others could be implemented in Lua itself, but are quite useful or have critical performance requirements that deserve an implementation in C (e.g., table.sort).

All libraries are implemented through the official C API and are provided as separate C modules. Currently, Lua has the following standard libraries:

  • basic library (§6.1);
  • coroutine library (§6.2);
  • package library (§6.3);
  • string manipulation (§6.4);
  • basic UTF-8 support (§6.5);
  • table manipulation (§6.6);
  • mathematical functions (§6.7) (sin, log, etc.);
  • input and output (§6.8);
  • operating system facilities (§6.9);
  • debug facilities (§6.10).

Except for the basic and the package libraries, each library provides all its functions as fields of a global table or as methods of its objects.

To have access to these libraries, the C host program should call the luaL_openlibs function, which opens all standard libraries. Alternatively, the host program can open them individually by using luaL_requiref to call luaopen_base (for the basic library), luaopen_package (for the package library), luaopen_coroutine (for the coroutine library), luaopen_string (for the string library), luaopen_utf8 (for the UTF8 library), luaopen_table (for the table library), luaopen_math (for the mathematical library), luaopen_io (for the I/O library), luaopen_os (for the operating system library), and luaopen_debug (for the debug library). These functions are declared in lualib.h.

os.date()
  • References/Lua/Lua/Standard Libraries/Operating System Facilities

os.date ([format [, time]]) Returns a string or a table containing date and time, formatted according to the given string format. If the time

2025-01-10 15:47:30
io.open()
  • References/Lua/Lua/Standard Libraries/Input and Output Facilities

io.open (filename [, mode]) This function opens a file, in the mode specified in the string mode. In case of success, it returns a new file handle. The mode

2025-01-10 15:47:30
string.char()
  • References/Lua/Lua/Standard Libraries/String Manipulation

string.char (···) Numeric codes are not necessarily portable across platforms.

2025-01-10 15:47:30
string.reverse()
  • References/Lua/Lua/Standard Libraries/String Manipulation

string.reverse (s)s

2025-01-10 15:47:30
os.difftime()
  • References/Lua/Lua/Standard Libraries/Operating System Facilities

os.difftime (t2, t1) Returns the difference, in seconds, from time t1 to time t2 (where the times are values returned by

2025-01-10 15:47:30
math.floor()
  • References/Lua/Lua/Standard Libraries/Mathematical Functions

math.floor (x) Returns the largest integral value smaller than or equal to x.

2025-01-10 15:47:30
table.pack()
  • References/Lua/Lua/Standard Libraries/Table Manipulation

table.pack (···) Returns a new table with all parameters stored into keys 1, 2, etc. and with a field "n" with the total number of parameters. Note that the resulting

2025-01-10 15:47:30
io.lines()
  • References/Lua/Lua/Standard Libraries/Input and Output Facilities

io.lines ([filename, ···]) Opens the given file name in read mode and returns an iterator function that works like file:lines(···) over the opened file. When the

2025-01-10 15:47:30
coroutine.isyieldable()
  • References/Lua/Lua/Standard Libraries/Coroutine Manipulation

coroutine.isyieldable () Returns true when the running coroutine can yield. A running coroutine is yieldable if it is not the main thread and it is not inside a non-yieldable

2025-01-10 15:47:30
math.random()
  • References/Lua/Lua/Standard Libraries/Mathematical Functions

math.random ([m [, n]]) When called without arguments, returns a pseudo-random float with uniform distribution in the range [0,1). When called with two integers m

2025-01-10 15:47:30