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.

rawlen()
  • References/Lua/Lua/Standard Libraries/Basic Functions

rawlen (v)v__len

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

io.input ([file]) When called with a file name, it opens the named file (in text mode), and sets its handle as the default input file. When called with a file handle, it simply

2025-01-10 15:47:30
package.config
  • References/Lua/Lua/Standard Libraries/Modules

package.config A string describing some compile-time configurations for packages. This string is a sequence of lines: The first line is the directory separator string

2025-01-10 15:47:30
require()
  • References/Lua/Lua/Standard Libraries/Modules

require (modname) Loads the given module. The function starts by looking into the package

2025-01-10 15:47:30
utf8.charpattern
  • References/Lua/Lua/Standard Libraries/UTF-8 Support

utf8.charpattern[\0-\x7F\xC2-\xF4][\x80-\xBF]*§6.4.1

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

coroutine.resume (co [, val1, ···]) Starts or continues the execution of coroutine co. The first time you resume a coroutine, it starts running its body. The values

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

coroutine.status (co) Returns the status of coroutine co, as a string: "running", if the coroutine is running (that is, it called status);

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

file:lines (···) Returns an iterator function that, each time it is called, reads the file according to the given formats. When no format is given, uses "l" as a

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

io.write (···) Equivalent to io.output():write(···).

2025-01-10 15:47:30
utf8.offset()
  • References/Lua/Lua/Standard Libraries/UTF-8 Support

utf8.offset (s, n [, i])nsiniin#s + 1utf8.offset(s, -n)nnil

2025-01-10 15:47:30