int lua_dump (lua_State *L,
lua_Writer writer,
void *data,
@@ -3383,8 +3390,9 @@ to write them.
If strip
is true,
-the binary representation is created without debug information
-about the function.
+the binary representation may not include all debug information
+about the function,
+to save space.
@@ -3661,7 +3669,7 @@ By default this type is long long
,
(usually a 64-bit two-complement integer),
but that can be changed to long
or int
(usually a 32-bit two-complement integer).
-(See LUA_INT
in luaconf.h
.)
+(See LUA_INT_TYPE
in luaconf.h
.)
@@ -3850,7 +3858,7 @@ and 0 otherwise.
The type for continuation-function contexts.
-It must be a numerical type.
+It must be a numeric type.
This type is defined as intptr_t
when intptr_t
is available,
so that it can store pointers too.
@@ -3976,7 +3984,7 @@ passes to the allocator in every call.
-[-0, +1, e]
+[-0, +1, m]
void lua_newtable (lua_State *L);
@@ -3988,7 +3996,7 @@ It is equivalent to lua_createtable(L, 0, 0)
.
-[-0, +1, e]
+[-0, +1, m]
lua_State *lua_newthread (lua_State *L);
@@ -4009,7 +4017,7 @@ like any Lua object.
-[-0, +1, e]
+[-0, +1, m]
void *lua_newuserdata (lua_State *L, size_t size);
@@ -4068,7 +4076,7 @@ the table during its traversal.
-typedef double lua_Number;
+typedef ... lua_Number;
The type of floats in Lua.
@@ -4076,8 +4084,8 @@ The type of floats in Lua.
By default this type is double,
-but that can be changed to a single float.
-(See LUA_REAL
in luaconf.h
.)
+but that can be changed to a single float or a long double.
+(See LUA_FLOAT_TYPE
in luaconf.h
.)
@@ -4133,7 +4141,7 @@ then the error message returned on the stack
is exactly the original error message.
Otherwise, msgh
is the stack index of a
message handler.
-(In the current implementation, this index cannot be a pseudo-index.)
+(This index cannot be a pseudo-index.)
In case of runtime errors,
this function will be called with the error message
and its return value will be the message
@@ -4219,7 +4227,7 @@ Pushes a boolean value with value b
onto the stack.
-[-n, +1, e]
+[-n, +1, m]
void lua_pushcclosure (lua_State *L, lua_CFunction fn, int n);
@@ -4267,25 +4275,16 @@ when called, invokes the corresponding C function.
-Any function to be registered in Lua must
+Any function to be callable by Lua must
follow the correct protocol to receive its parameters
and return its results (see lua_CFunction
).
-
-lua_pushcfunction
is defined as a macro:
-
-
- #define lua_pushcfunction(L,f) lua_pushcclosure(L,f,0)
-
-Note that f
is used twice.
-
-
-[-0, +1, e]
+[-0, +1, m]
const char *lua_pushfstring (lua_State *L, const char *fmt, ...);
@@ -4309,7 +4308,7 @@ The conversion specifiers can only be
'%%
' (inserts the character '%
'),
'%s
' (inserts a zero-terminated string, with no size restrictions),
'%f
' (inserts a lua_Number
),
-'%L
' (inserts a lua_Integer
),
+'%I
' (inserts a lua_Integer
),
'%p
' (inserts a pointer as a hexadecimal numeral),
'%d
' (inserts an int
),
'%c
' (inserts an int
as a one-byte character), and
@@ -4365,20 +4364,19 @@ light userdata with the same C address.
-[-0, +1, e]
+[-0, +1, m]
const char *lua_pushliteral (lua_State *L, const char *s);
-This macro is equivalent to lua_pushlstring
,
-but can be used only when s
is a literal string.
-It automatically provides the string length.
+This macro is equivalent to lua_pushstring
,
+but should be used only when s
is a literal string.
-[-0, +1, e]
+[-0, +1, m]
const char *lua_pushlstring (lua_State *L, const char *s, size_t len);
@@ -4421,7 +4419,7 @@ Pushes a float with value n
onto the stack.
-[-0, +1, e]
+[-0, +1, m]
const char *lua_pushstring (lua_State *L, const char *s);
@@ -4468,7 +4466,7 @@ onto the stack.
-[-0, +1, e]
+[-0, +1, m]
const char *lua_pushvfstring (lua_State *L,
const char *fmt,
va_list argp);
@@ -4563,7 +4561,7 @@ for other values, it is 0.
-[-2, +0, e]
+[-2, +0, m]
void lua_rawset (lua_State *L, int index);
@@ -4575,7 +4573,7 @@ Similar to lua_settable
, but does a raw
-[-1, +0, e]
+[-1, +0, m]
void lua_rawseti (lua_State *L, int index, lua_Integer i);
@@ -4594,13 +4592,13 @@ that is, it does not invoke metamethods.
-[-1, +0, e]
+[-1, +0, m]
void lua_rawsetp (lua_State *L, int index, const void *p);
-Does the equivalent of t[k] = v
,
+Does the equivalent of t[p] = v
,
where t
is the table at the given index,
-k
is the pointer p
represented as a light userdata,
+p
is encoded as a light userdata,
and v
is the value at the top of the stack.
@@ -4672,7 +4670,7 @@ because a pseudo-index is not an actual stack position.
Moves the top element into the given valid index
without shifting any element
-(therefore replacing the value at the given index),
+(therefore replacing the value at that given index),
and then pops the top element.
@@ -4684,7 +4682,7 @@ and then pops the top element.
int lua_resume (lua_State *L, lua_State *from, int nargs);
-Starts and resumes a coroutine in a given thread.
+Starts and resumes a coroutine in the given thread L
.
@@ -4731,12 +4729,16 @@ this parameter can be NULL
.
void lua_rotate (lua_State *L, int idx, int n);
-Rotates the stack elements from idx
to the top n
positions
-in the direction of the top, for a positive n
,
+Rotates the stack elements between the valid index idx
+and the top of the stack.
+The elements are rotated n
positions in the direction of the top,
+for a positive n
,
or -n
positions in the direction of the bottom,
for a negative n
.
The absolute value of n
must not be greater than the size
of the slice being rotated.
+This function cannot be called with a pseudo-index,
+because a pseudo-index is not an actual stack position.
@@ -4993,13 +4995,13 @@ indicates whether the operation succeeded.
-[-0, +0, e]
+[-0, +0, m]
const char *lua_tolstring (lua_State *L, int index, size_t *len);
Converts the Lua value at the given index to a C string.
If len
is not NULL
,
-it also sets *len
with the string length.
+it sets *len
with the string length.
The Lua value must be a string or a number;
otherwise, the function returns NULL
.
If the value is a number,
@@ -5010,7 +5012,7 @@ when lua_tolstring
is applied to keys during a table traversal.)
-lua_tolstring
returns a fully aligned pointer
+lua_tolstring
returns a pointer
to a string inside the Lua state.
This string always has a zero ('\0
')
after its last character (as in C),
@@ -5072,14 +5074,14 @@ There is no way to convert the pointer back to its original value.
-Typically this function is used only for debug information.
+Typically this function is used only for hashing and debug information.
-[-0, +0, e]
+[-0, +0, m]
const char *lua_tostring (lua_State *L, int index);
@@ -5127,7 +5129,7 @@ Returns the type of the value in the given valid index,
or LUA_TNONE
for a non-valid (but acceptable) index.
The types returned by lua_type
are coded by the following constants
defined in lua.h
:
-LUA_TNIL
,
+LUA_TNIL
(0),
LUA_TNUMBER
,
LUA_TBOOLEAN
,
LUA_TSTRING
,
@@ -5618,24 +5620,26 @@ it returns 0.
const char *lua_getupvalue (lua_State *L, int funcindex, int n);
-Gets information about a closure's upvalue.
-(For Lua functions,
-upvalues are the external local variables that the function uses,
-and that are consequently included in its closure.)
-lua_getupvalue
gets the index n
of an upvalue,
-pushes the upvalue's value onto the stack,
+Gets information about the n
-th upvalue
+of the closure at index funcindex
.
+It pushes the upvalue's value onto the stack
and returns its name.
-funcindex
points to the closure in the stack.
-(Upvalues have no particular order,
-as they are active through the whole function.
-So, they are numbered in an arbitrary order.)
+Returns NULL
(and pushes nothing)
+when the index n
is greater than the number of upvalues.
-Returns NULL
(and pushes nothing)
-when the index is greater than the number of upvalues.
For C functions, this function uses the empty string ""
as a name for all upvalues.
+(For Lua functions,
+upvalues are the external local variables that the function uses,
+and that are consequently included in its closure.)
+
+
+
+Upvalues have no particular order,
+as they are active through the whole function.
+They are numbered in an arbitrary order.
@@ -5680,10 +5684,10 @@ that is, they cannot call lua_yieldk
,
Hook functions can yield under the following conditions:
-Only count and line events can yield
-and they cannot yield any value;
-to yield a hook function must finish its execution
-calling lua_yield
with nresults
equal to zero.
+Only count and line events can yield;
+to yield, a hook function must finish its execution
+calling lua_yield
with nresults
equal to zero
+(that is, with no values).
@@ -5748,9 +5752,7 @@ A hook is disabled by setting mask
to zero.
Sets the value of a local variable of a given activation record.
-Parameters ar
and n
are as in lua_getlocal
-(see lua_getlocal
).
-lua_setlocal
assigns the value at the top of the stack
+It assigns the value at the top of the stack
to the variable and returns its name.
It also pops the value from the stack.
@@ -5761,6 +5763,10 @@ when the index is greater than
the number of active local variables.
+
+Parameters ar
and n
are as in function lua_getlocal
.
+
+
@@ -5773,13 +5779,15 @@ Sets the value of a closure's upvalue.
It assigns the value at the top of the stack
to the upvalue and returns its name.
It also pops the value from the stack.
-Parameters funcindex
and n
are as in the lua_getupvalue
-(see lua_getupvalue
).
Returns NULL
(and pops nothing)
-when the index is greater than the number of upvalues.
+when the index n
is greater than the number of upvalues.
+
+
+
+Parameters funcindex
and n
are as in function lua_getupvalue
.
@@ -5792,9 +5800,6 @@ when the index is greater than the number of upvalues.
Returns a unique identifier for the upvalue numbered n
from the closure at index funcindex
.
-Parameters funcindex
and n
are as in the lua_getupvalue
-(see lua_getupvalue
)
-(but n
cannot be greater than the number of upvalues).
@@ -5805,6 +5810,11 @@ Lua closures that share an upvalue
will return identical ids for those upvalue indices.
+
+Parameters funcindex
and n
are as in function lua_getupvalue
,
+but n
cannot be greater than the number of upvalues.
+
+
@@ -5880,7 +5890,7 @@ in alphabetical order.
-[-?, +?, e]
+[-?, +?, m]
void luaL_addchar (luaL_Buffer *B, char c);
@@ -5892,7 +5902,7 @@ Adds the byte c
to the buffer B
-[-?, +?, e]
+[-?, +?, m]
void luaL_addlstring (luaL_Buffer *B, const char *s, size_t l);
@@ -5906,7 +5916,7 @@ The string can contain embedded zeros.
-[-?, +?, e]
+[-?, +?, –]
void luaL_addsize (luaL_Buffer *B, size_t n);
@@ -5919,7 +5929,7 @@ buffer area (see luaL_prepbuffer
).
-[-?, +?, e]
+[-?, +?, m]
void luaL_addstring (luaL_Buffer *B, const char *s);
@@ -5932,7 +5942,7 @@ to the buffer B
-[-1, +?, e]
+[-1, +?, m]
void luaL_addvalue (luaL_Buffer *B);
@@ -6070,7 +6080,7 @@ the buffer must be declared as a variable
-[-?, +?, e]
+[-?, +?, m]
char *luaL_buffinitsize (lua_State *L, luaL_Buffer *B, size_t sz);
@@ -6321,7 +6331,7 @@ as return luaL_error(args)
.
-[-0, +3, e]
+[-0, +3, m]
int luaL_execresult (lua_State *L, int stat);
@@ -6334,7 +6344,7 @@ process-related functions in the standard library
-[-0, +(1|3), e]
+[-0, +(1|3), m]
int luaL_fileresult (lua_State *L, int stat, const char *fname);
@@ -6347,7 +6357,7 @@ file-related functions in the standard library
-[-0, +(0|1), e]
+[-0, +(0|1), m]
int luaL_getmetafield (lua_State *L, int obj, const char *e);
@@ -6362,14 +6372,14 @@ pushes nothing and returns LUA_TNIL
.
-[-0, +1, –]
+[-0, +1, m]
int luaL_getmetatable (lua_State *L, const char *tname);
Pushes onto the stack the metatable associated with name tname
-in the registry (see luaL_newmetatable
).
-If there is no metatable associated with tname
,
-returns false and pushes nil.
+in the registry (see luaL_newmetatable
)
+(nil if there is no metatable associated with that name).
+Returns the type of the pushed value.
@@ -6392,7 +6402,7 @@ and false if it creates a new table.
-[-0, +1, e]
+[-0, +1, m]
const char *luaL_gsub (lua_State *L,
const char *s,
const char *p,
@@ -6527,7 +6537,7 @@ it does not run it.
-[-0, +1, e]
+[-0, +1, m]
void luaL_newlib (lua_State *L, const luaL_Reg l[]);
@@ -6549,7 +6559,7 @@ not a pointer to it.
-[-0, +1, e]
+[-0, +1, m]
void luaL_newlibtable (lua_State *L, const luaL_Reg l[]);
@@ -6570,7 +6580,7 @@ not a pointer to it.
-[-0, +1, e]
+[-0, +1, m]
int luaL_newmetatable (lua_State *L, const char *tname);
@@ -6660,6 +6670,9 @@ Otherwise, raises an error.
If l
is not NULL
,
fills the position *l
with the result's length.
+If the result is NULL
+(only possible when returning d
and d == NULL
),
+its length is considered zero.
@@ -6698,7 +6711,7 @@ Otherwise, raises an error.
-[-?, +?, e]
+[-?, +?, m]
char *luaL_prepbuffer (luaL_Buffer *B);
@@ -6710,7 +6723,7 @@ with the predefined size LUAL_BUFFERSIZE
-[-?, +?, e]
+[-?, +?, m]
char *luaL_prepbuffsize (luaL_Buffer *B, size_t sz);
@@ -6726,7 +6739,7 @@ it to the buffer.
-[-?, +1, e]
+[-?, +1, m]
void luaL_pushresult (luaL_Buffer *B);
@@ -6738,7 +6751,7 @@ the top of the stack.
-[-?, +1, e]
+[-?, +1, m]
void luaL_pushresultsize (luaL_Buffer *B, size_t sz);
@@ -6749,7 +6762,7 @@ Equivalent to the sequence luaL_addsize
-[-1, +0, e]
+[-1, +0, m]
int luaL_ref (lua_State *L, int t);
@@ -6820,7 +6833,7 @@ Leaves a copy of the module on the stack.
-[-nup, +0, e]
+[-nup, +0, m]
void luaL_setfuncs (lua_State *L, const luaL_Reg *l, int nup);
@@ -6884,7 +6897,7 @@ this function receives the file handle as its sole argument and
must return either true (in case of success)
or nil plus an error message (in case of error).
Once Lua calls this field,
-the field value is changed to NULL
+it changes the field value to NULL
to signal that the handle is closed.
@@ -6892,7 +6905,7 @@ to signal that the handle is closed.
-[-0, +0, e]
+[-0, +0, m]
void *luaL_testudata (lua_State *L, int arg, const char *tname);
@@ -6928,7 +6941,7 @@ and uses the result of the call as its result.
-[-0, +1, e]
+[-0, +1, m]
void luaL_traceback (lua_State *L, lua_State *L1, const char *msg,
int level);
@@ -6975,7 +6988,7 @@ If ref
is LUA_NOREF
or
-[-0, +1, e]
+[-0, +1, m]
void luaL_where (lua_State *L, int lvl);
@@ -7333,7 +7346,7 @@ you can use next(t)
to check whether a table is empty.
The order in which the indices are enumerated is not specified,
even for numeric indices.
-(To traverse a table in numeric order,
+(To traverse a table in numerical order,
use a numerical for.)
@@ -7472,7 +7485,8 @@ and select
returns the total number of extra arguments it received.
Sets the metatable for the given table.
-(You cannot change the metatable of other types from Lua, only from C.)
+(To change the metatable of other types from Lua code,
+you must use the debug library (§6.10).)
If metatable
is nil,
removes the metatable of the given table.
If the original metatable has a "__metatable"
field,
@@ -7522,8 +7536,6 @@ the function returns nil.
Receives a value of any type and
converts it to a string in a human-readable format.
-Floats always produce strings with some
-floating-point indication (either a decimal dot or an exponent).
(For complete control of how numbers are converted,
use string.format
.)
@@ -7555,8 +7567,11 @@ and "userdata
".
+
+
+
A global variable (not a function) that
-holds a string containing the current interpreter version.
+holds a string containing the running Lua version.
The current value of this variable is "Lua 5.3
".
@@ -7579,8 +7594,8 @@ except that it sets a new message handler msgh
.
-The operations related to coroutines comprise a sub-library of
-the basic library and come inside the table coroutine
.
+This library comprises the operations to manipulate coroutines,
+which come inside the table coroutine
.
See §2.6 for a general description of coroutines.
@@ -7590,7 +7605,7 @@ See §2.6 for a general description of coroutines.
Creates a new coroutine, with body f
.
-f
must be a Lua function.
+f
must be a function.
Returns this new coroutine,
an object with type "thread"
.
@@ -7674,7 +7689,7 @@ or if it has stopped with an error.
Creates a new coroutine, with body f
.
-f
must be a Lua function.
+f
must be a function.
Returns a function that resumes the coroutine each time it is called.
Any arguments passed to the function behave as the
extra arguments to resume
.
@@ -8073,7 +8088,7 @@ The string library assumes one-byte character encodings.
-Returns the internal numerical codes of the characters s[i]
,
+Returns the internal numeric codes of the characters s[i]
,
s[i+1]
, ..., s[j]
.
The default value for i
is 1;
the default value for j
is i
.
@@ -8082,7 +8097,7 @@ following the same rules of function string.sub<
-Numerical codes are not necessarily portable across platforms.
+Numeric codes are not necessarily portable across platforms.
@@ -8091,12 +8106,12 @@ Numerical codes are not necessarily portable across platforms.
Receives zero or more integers.
Returns a string with length equal to the number of arguments,
-in which each character has the internal numerical code equal
+in which each character has the internal numeric code equal
to its corresponding argument.
-Numerical codes are not necessarily portable across platforms.
+Numeric codes are not necessarily portable across platforms.
@@ -8112,9 +8127,9 @@ of the given function,
so that a later load
on this string returns
a copy of the function (but with new upvalues).
If strip
is a true value,
-the binary representation is created without debug information
-about the function
-(local variable names, lines, etc.).
+the binary representation may not include all debug information
+about the function,
+to save space.
@@ -8138,7 +8153,7 @@ Looks for the first match of
If it finds a match, then find
returns the indices of s
where this occurrence starts and ends;
otherwise, it returns nil.
-A third, optional numerical argument init
specifies
+A third, optional numeric argument init
specifies
where to start the search;
its default value is 1 and can be negative.
A value of true as a fourth, optional argument plain
@@ -8186,16 +8201,23 @@ may produce the string:
Options
-A
and a
(when available),
-E
, e
, f
,
+A
, a
, E
, e
, f
,
G
, and g
all expect a number as argument.
Options c
, d
,
i
, o
, u
, X
, and x
expect an integer.
-Option q
expects a string;
-option s
expects a string without embedded zeros.
-If the argument to option s
is not a string,
+Option q
expects a string.
+Option s
expects a string;
+if its argument is not a string,
it is converted to one following the same rules of tostring
.
+If the option has any modifier (flags, width, length),
+the string argument should not contain embedded zeros.
+
+
+
+When Lua is compiled with a non-C99 compiler,
+options A
and a
(hexadecimal floats)
+do not support any modifier (flags, width, length).
@@ -8344,7 +8366,7 @@ the captures from the pattern;
otherwise it returns nil.
If pattern
specifies no captures,
then the whole match is returned.
-A third, optional numerical argument init
specifies
+A third, optional numeric argument init
specifies
where to start the search;
its default value is 1 and can be negative.
@@ -8385,6 +8407,11 @@ The default value for sep
is the empty string
Returns the empty string if n
is not positive.
+
+(Note that it is very easy to exhaust the memory of your machine
+with a single call to this function.)
+
+
@@ -8499,7 +8526,7 @@ represents the character x itself.
represents the character x.
This is the standard way to escape the magic characters.
Any non-alphanumeric character
-(including all punctuations, even the non-magical)
+(including all punctuation characters, even the non-magical)
can be preceded by a '%
'
when used to represent itself in a pattern.