Working with the C API
The Lua C API is efficient and lightweight. There are a few important header files we need to be familiar with before writing any C code. These files are the following:
lua.h
: Provides all the functions needed to work with Lua. All functions in this file are prefixed withlua_
.luaxlib.h
: Uses the public API exposed inlua.h
to provide higher levels of abstraction for common tasks. All functions in this file are prefixed withluaL_
.lualib.h
: Provides the standard Lua libraries. All functions in this file are also prefixed withluaL_
.
Lua does not allocate any global memory. Instead it stores all of its states in a structure called lua_State
. This structure contains everything that the Lua runtime needs to operate. Putting a mutex lock around your lua_State
object is a fast and easy way to make sure any Lua instance is thread safe. It's perfectly valid to create multiple states and therefore multiple Lua runtimes in one application, though the use cases for this are scarce...