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.time()
  • References/Lua/Lua/Standard Libraries/Operating System Facilities

os.time ([table]) Returns the current time when called without arguments, or a time representing the local date and time specified by the given table. This table must have fields

2025-01-10 15:47:30
select()
  • References/Lua/Lua/Standard Libraries/Basic Functions

select (index, ···) If index is a number, returns all arguments after argument number index; a negative number indexes from the end (-1 is the last argument)

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

coroutine.running () Returns the running coroutine plus a boolean, true when the running coroutine is the main one.

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

table.concat (list [, sep [, i [, j]]]) Given a list where all elements are strings or numbers, returns the string list[i]..sep..list[i+1] ··· sep..list[j]. The default

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

coroutine.create (f) Creates a new coroutine, with body f. f must be a function. Returns this new coroutine, an object with type "thread"

2025-01-10 15:47:30
assert()
  • References/Lua/Lua/Standard Libraries/Basic Functions

assert (v [, message]) Calls error if the value of its argument v

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

table.sort (list [, comp]) Sorts list elements in a given order, in-place, from list[1] to list[#list]. If comp is given, then

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

file:write (···) Writes the value of each of its arguments to file. The arguments must be strings or numbers. In case of success, this function returns file

2025-01-10 15:47:30
type()
  • References/Lua/Lua/Standard Libraries/Basic Functions

type (v)nilnilnumberstringbooleantablefunctionthreaduserdata

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

os.remove (filename) Deletes the file (or empty directory, on POSIX systems) with the given name. If this function fails, it returns nil, plus a string describing the error

2025-01-10 15:47:30