No: This function or field will be missing in this version.
Yes: This function or field is supported unconditionally in this version.
Maybe: This function or field is behind a LUA_COMPAT_*
define and may or may not be available.
Feature | Lua 5.1 | Lua 5.2 | Lua 5.3 | Lua 5.4 |
---|---|---|---|---|
Base Library | ||||
assert(v, [msg]) |
Yes | Yes | Yes | Yes |
collectgarbage([opt, [arg]]) |
Yes | Yes | Yes | Yes |
dofile([file]) |
Yes | Yes | Yes | Yes |
error(message, [level]) |
Yes | Yes | Yes | Yes |
getfenv([f]) |
Yes | No | No | No |
getmetatable(object) |
Yes | Yes | Yes | Yes |
ipairs(t) |
Yes | Yes | Yes | Yes |
load(chunk, [source, [mode, [env]]])) |
No | Yes | Yes | Yes |
load(func, [name]) |
Yes | Yes | Yes | Yes |
loadfile([file, [mode, [env]]]) |
No | Yes | Yes | Yes |
loadfile([file]) |
Yes | Yes | Yes | Yes |
loadstring(string, [name]) |
Yes | Maybe | Maybe | No |
next(table, [index]) |
Yes | Yes | Yes | Yes |
pairs(t) |
Yes | Yes | Yes | Yes |
pcall(f, [...]) |
Yes | Yes | Yes | Yes |
print(...) |
Yes | Yes | Yes | Yes |
rawequal(v1, v2) |
Yes | Yes | Yes | Yes |
rawget(tbl, k) |
Yes | Yes | Yes | Yes |
rawlen(v) |
No | Yes | Yes | Yes |
rawset(tbl, k, v) |
Yes | Yes | Yes | Yes |
select(index, ...) |
Yes | Yes | Yes | Yes |
setfenv(f, table) |
Yes | No | No | No |
setmetatable(table, metatable) |
Yes | Yes | Yes | Yes |
tonumber(e, [base]) |
Yes | Yes | Yes | Yes |
tostring(e) |
Yes | Yes | Yes | Yes |
type(v) |
Yes | Yes | Yes | Yes |
unpack(list, [i, [j]]) |
Yes | Maybe | Maybe | No |
warn(msg1, ...) |
No | No | No | Yes |
xpcall(f, errf, [...]) |
No | Yes | Yes | Yes |
xpcall(f, errf) |
Yes | Yes | Yes | Yes |
Coroutine Library | ||||
coroutine.close(co) |
No | No | No | Yes |
coroutine.create(f) |
Yes | Yes | Yes | Yes |
coroutine.isyieldable() |
No | No | Yes | Yes |
coroutine.resume(co, [...]) |
Yes | Yes | Yes | Yes |
coroutine.running() |
Yes | Yes | Yes | Yes |
coroutine.status(co) |
Yes | Yes | Yes | Yes |
coroutine.wrap(f) |
Yes | Yes | Yes | Yes |
coroutine.yield(...) |
Yes | Yes | Yes | Yes |
Package Library | ||||
module(name, [...]) |
Yes | Maybe | Maybe | No |
require(modname) |
Yes | Yes | Yes | Yes |
package.config |
Yes | Yes | Yes | Yes |
package.cpath |
Yes | Yes | Yes | Yes |
package.loaded |
Yes | Yes | Yes | Yes |
package.loaders |
Yes | Maybe | Maybe | No |
package.loadlib(libname, funcname) |
Yes | Yes | Yes | Yes |
package.path |
Yes | Yes | Yes | Yes |
package.preload |
Yes | Yes | Yes | Yes |
package.searchers |
No | Yes | Yes | Yes |
package.searchpath(name, path, [sep, [rep]]) |
No | Yes | Yes | Yes |
package.seeall(module) |
Yes | Maybe | Maybe | No |
String Library | ||||
string.byte(s, [i, [j]]) |
Yes | Yes | Yes | Yes |
string.char(...) |
Yes | Yes | Yes | Yes |
string.dump(f) |
Yes | Yes | Yes | Yes |
string.dump(f, [strip]) |
No | No | Yes | Yes |
string.find(s, pattern, [init, [plain]]) |
Yes | Yes | Yes | Yes |
string.format(fmt, ...) |
Yes | Yes | Yes | Yes |
string.gmatch(s, pattern) |
Yes | Yes | Yes | Yes |
string.gsub(s, pattern, repl, [n]) |
Yes | Yes | Yes | Yes |
string.len(s) |
Yes | Yes | Yes | Yes |
string.lower(s) |
Yes | Yes | Yes | Yes |
string.match(s, pattern, [init]) |
Yes | Yes | Yes | Yes |
string.pack(fmt, ...) |
No | No | Yes | Yes |
string.packsize(fmt) |
No | No | Yes | Yes |
string.rep(s, n, [sep]) |
Yes | Yes | Yes | Yes |
string.reverse(s) |
Yes | Yes | Yes | Yes |
string.sub(s, i, [j]) |
Yes | Yes | Yes | Yes |
string.unpack(fmt, s, [pos]) |
No | No | Yes | Yes |
string.upper(s) |
Yes | Yes | Yes | Yes |
Table Library | ||||
table.concat(tbl, [sep, [i, [j]]]) |
Yes | Yes | Yes | Yes |
table.insert(tbl, [pos,] value) |
Yes | Yes | Yes | Yes |
table.pack(...) |
No | Yes | Yes | Yes |
table.move(a1, f, e, t, [a2]) |
No | No | Yes | Yes |
table.maxn(tbl) |
Yes | Maybe | Maybe | No |
table.remove(tbl, [pos]) |
Yes | Yes | Yes | Yes |
table.sort(tbl, [comp]) |
Yes | Yes | Yes | Yes |
table.unpack(list, [i, [j]])) |
No | Yes | Yes | Yes |
Math Library | ||||
math.abs(x) |
Yes | Yes | Yes | Yes |
math.acos(x) |
Yes | Yes | Yes | Yes |
math.asin(x) |
Yes | Yes | Yes | Yes |
math.atan(x) |
Yes | Yes | Yes | Yes |
math.atan(x, [y]) |
No | No | Yes | Yes |
math.atan2(y, x) |
Yes | Yes | Maybe | Maybe |
math.ceil(x) |
Yes | Yes | Yes | Yes |
math.cos(x) |
Yes | Yes | Yes | Yes |
math.cosh(x) |
Yes | Yes | Maybe | Maybe |
math.deg(x) |
Yes | Yes | Yes | Yes |
math.exp(x) |
Yes | Yes | Yes | Yes |
math.floor(x) |
Yes | Yes | Yes | Yes |
math.fmod(x, y) |
Yes | Yes | Yes | Yes |
math.frexp(x) |
Yes | Yes | Maybe | Maybe |
math.huge |
Yes | Yes | Yes | Yes |
math.ldexp(m, e) |
Yes | Yes | Maybe | Maybe |
math.log(x) |
Yes | Yes | Yes | Yes |
math.log(x, [base]) |
No | Yes | Yes | Yes |
math.log10(x) |
Yes | Maybe | Maybe | Maybe |
math.max(x, ...) |
Yes | Yes | Yes | Yes |
math.maxinteger |
No | No | Yes | Yes |
math.min(x, ...) |
Yes | Yes | Yes | Yes |
math.mininteger |
No | No | Yes | Yes |
math.modf(x) |
Yes | Yes | Yes | Yes |
math.pi |
Yes | Yes | Yes | Yes |
math.pow(x, y) |
Yes | Yes | Maybe | Maybe |
math.rad(x) |
Yes | Yes | Yes | Yes |
math.random([m, [n]]) |
Yes | Yes | Yes | Yes |
math.randomseed(x) |
Yes | Yes | Yes | Yes |
math.randomseed([x, [y]]) |
No | No | No | Yes |
math.sin(x) |
Yes | Yes | Yes | Yes |
math.sinh(x) |
Yes | Yes | Maybe | Maybe |
math.sqrt(x) |
Yes | Yes | Yes | Yes |
math.tan(x) |
Yes | Yes | Yes | Yes |
math.tanh(x) |
Yes | Yes | Maybe | Maybe |
math.tointeger(x) |
No | No | Yes | Yes |
math.type(x) |
No | No | Yes | Yes |
math.ult(m, n) |
No | No | Yes | Yes |
Bit Library | ||||
bit32.arshift(x, disp) |
No | Yes | Maybe | No |
bit32.band(x, ...) |
No | Yes | Maybe | No |
bit32.bnot(x) |
No | Yes | Maybe | No |
bit32.bor(x, ...) |
No | Yes | Maybe | No |
bit32.btest(x, ...) |
No | Yes | Maybe | No |
bit32.bxor(x, ...) |
No | Yes | Maybe | No |
bit32.extract(x, field, width) |
No | Yes | Maybe | No |
bit32.replace(x, v, field, width) |
No | Yes | Maybe | No |
bit32.lrotate(x, disp) |
No | Yes | Maybe | No |
bit32.lshift(x, disp) |
No | Yes | Maybe | No |
bit32.rrotate(x, disp) |
No | Yes | Maybe | No |
bit32.rshift(x, disp) |
No | Yes | Maybe | No |
UTF8 Library | ||||
utf8.char(...) |
No | No | Yes | Yes |
utf8.charpattern |
No | No | Yes | Yes |
utf8.codes(s) |
No | No | Yes | Yes |
utf8.codepoint(s, [i, [j]]) |
No | No | Yes | Yes |
utf8.len(s, [i, [j]]) |
No | No | Yes | Yes |
utf8.offset(s, n, [i]) |
No | No | Yes | Yes |
IO Library | ||||
io.close([file]) |
Yes | Yes | Yes | Yes |
io.flush() |
Yes | Yes | Yes | Yes |
io.input([file]) |
Yes | Yes | Yes | Yes |
io.lines([filename]) |
Yes | Yes | Yes | Yes |
io.open(filename, [mode]) |
Yes | Yes | Yes | Yes |
io.output([file]) |
Yes | Yes | Yes | Yes |
io.popen(prog, [mode]) |
Yes | Yes | Yes | Yes |
io.read(...) |
Yes | Yes | Yes | Yes |
io.tmpfile() |
Yes | Yes | Yes | Yes |
io.type(obj) |
Yes | Yes | Yes | Yes |
io.write(...) |
Yes | Yes | Yes | Yes |
file:close() |
Yes | Yes | Yes | Yes |
file:flush() |
Yes | Yes | Yes | Yes |
file:lines() |
Yes | Yes | Yes | Yes |
file:read(...) |
Yes | Yes | Yes | Yes |
file:seek([whence], [offset]) |
Yes | Yes | Yes | Yes |
file:setvbuf(mode, [size]) |
Yes | Yes | Yes | Yes |
file:write(...) |
Yes | Yes | Yes | Yes |
OS Library | ||||
os.clock() |
Yes | Yes | Yes | Yes |
os.date([format, [time]]) |
Yes | Yes | Yes | Yes |
os.difftime(t2, t1) |
Yes | Yes | Yes | Yes |
os.execute([command]) |
Yes | Yes | Yes | Yes |
os.exit([code]) |
Yes | Yes | Yes | Yes |
os.exit([code, [close]]) |
No | Yes | Yes | Yes |
os.getenv(varname) |
Yes | Yes | Yes | Yes |
os.remove(filename) |
Yes | Yes | Yes | Yes |
os.rename(oldname, newname) |
Yes | Yes | Yes | Yes |
os.setlocale([locale, [category]]) |
Yes | Yes | Yes | Yes |
os.time([table]) |
Yes | Yes | Yes | Yes |
os.tmpname() |
Yes | Yes | Yes | Yes |
Debug Library | ||||
debug.debug() |
Yes | Yes | Yes | Yes |
debug.getfenv([object]) |
Yes | No | No | No |
debug.gethook([thread]) |
Yes | Yes | Yes | Yes |
debug.getinfo([thread], f, [what]) |
Yes | Yes | Yes | Yes |
debug.getlocal([thread], f, local) |
Yes | Yes | Yes | Yes |
debug.getmetatable(object) |
Yes | Yes | Yes | Yes |
debug.getregistry() |
Yes | Yes | Yes | Yes |
debug.getupvalue(f, up) |
Yes | Yes | Yes | Yes |
debug.getuservalue(u) |
No | Yes | Yes | Yes |
debug.getuservalue(u, [n]) |
No | No | No | Yes |
debug.setfenv(object, table) |
Yes | No | No | No |
debug.sethook([thread], hook, mask, [count]) |
Yes | Yes | Yes | Yes |
debug.setlocal([thread], level, local, value) |
Yes | Yes | Yes | Yes |
debug.setmetatable(object, table) |
Yes | Yes | Yes | Yes |
debug.setupvalue(f, up, value) |
Yes | Yes | Yes | Yes |
debug.setuservalue(u, value) |
No | Yes | Yes | Yes |
debug.setuservalue(u, value, [n]) |
No | No | No | Yes |
debug.traceback([thread], [message, [level]]) |
Yes | Yes | Yes | Yes |
debug.upvalueid(f, n) |
No | Yes | Yes | Yes |
debug.upvaluejoin(f1, n1, f2, n2) |
No | Yes | Yes | Yes |