Roberto I
0465c23b3e
Cleaning 'luaP_isIT' and 'luaP_isOT'
...
- 'luaP_isOT' is only used for tests, so it is defined as a macro to avoid
wasting space with an unused function.
- 'luaP_isIT' must include OP_VARARGPREP.
2026-05-28 15:10:17 -03:00
Roberto I
53b41d0cdd
Avoid warning in some compilers
...
In function 'funcargs', some compilers can complain that 'args' can be
used unitialized, due to the default case (syntax error).
2026-05-08 15:01:59 -03:00
Roberto I
36c1f6d949
Small correction in luaP_opmodes
...
OP_VARARGPREP neither sets nor uses L->top.
2026-04-29 15:17:55 -03:00
Roberto Ierusalimschy
0da6d320f7
Details
2026-04-28 13:44:29 -03:00
Roberto I
ae23e72601
new macro 'setnilvalue2s'
2026-04-23 18:00:23 -03:00
Roberto I
4c5d5063a5
'load' reader function doesn't need to preserve stack
2026-04-23 17:58:55 -03:00
Roberto I
3228a97c6a
Bug: 'lua_load' does not preserve the stack
...
'lua_load' does not preserve the stack through the calls to the
reader function, as it should. Immediately after the first call (to
detect whether chunk is binary) it adds stuff, and it also adds a new
table when starting the compilation of each new function.
2026-04-23 17:57:42 -03:00
Roberto I
0c16a42d61
Details
...
Added compiler option LUA_NODEBUGLIB to make Lua with no open debug
library + small improvements in the manual.
2026-04-21 15:27:22 -03:00
Roberto I
d0bd25d2e7
Better error messages for vararg-table fields
2026-04-13 14:06:23 -03:00
Roberto I
29cf284089
Avoid macros luaL_loadbuffer and luaL_loadfile
...
Use luaL_loadbufferx and luaL_loadfilex instead, being explicit about
whether to accept binary chunks.
2026-04-07 13:42:34 -03:00
Roberto I
c037162a1a
Stricter test for use of '__builtin_expect'
...
GCC introduced this macro in version 3.
2026-04-01 15:09:07 -03:00
Roberto Ierusalimschy
efddc2309c
Bug: wrong initialization in result from 'gmatch'
...
Function returned by 'string.gmatch' can be left in an inconsistent
state after an error.
2026-04-01 15:01:58 -03:00
Roberto I
f1bb2773bb
Bug: Loading a binary chunk does not run the GC
2026-04-01 14:59:41 -03:00
Roberto I
51269bd783
Adjustment in useless parameter L in macros luai_num*
2026-03-15 15:14:14 -03:00
Roberto I
377cbea61b
'table.tunpack' using 'aux_getn' like the others
...
'table.tunpack' was not checking its first argument, which could
result in error messages generated inside the API, without location
information.
2026-03-09 16:24:49 -03:00
Roberto I
36d5d2b284
Details
2026-03-09 16:24:06 -03:00
Roberto I
9e501d9855
Slightly better documentation for LUAI_MAXALIGN
2026-03-09 16:23:03 -03:00
Roberto I
10eb89d114
BUG: shift overflow in utf-8 decode
...
An initial byte \xFF will ask for 7 continuation bytes, and then the
shift by (count * 5) will try to shift 35 bits.
2026-02-18 13:24:04 -03:00
Roberto Ierusalimschy
7c40c5edb2
Details
...
Spaces + added initialization to the documentation of global
declarations.
2026-02-10 16:41:02 -03:00
Roberto Ierusalimschy
b60e2bcd7c
Avoid an assignment of values that overlap
...
The original code was like this, where t->u.ind.t and t->u.info overlap:
t->u.ind.t = cast_byte((t->k == VLOCAL) ? t->u.var.ridx: t->u.info);
2026-02-09 13:44:27 -03:00
Roberto I
c6b4848238
Environment variable for readline library name
...
The name of the readline library can be changed from its default value
through environment variable LUA_READLINELIB.
2026-01-30 16:47:33 -03:00
Roberto I
efbc297545
New year and (eventual) new release
2026-01-29 14:24:25 -03:00
Roberto I
cfcaa9493b
Explanation about char* parameters in the C API
2026-01-23 16:25:18 -03:00
Roberto I
3360710bd3
Another way to handle option -E
...
A pointer to function 'l_getenv' can point to the regular 'getenv' or
to a dumb function (that always returns NULL) to ignore environment
variables.
2026-01-22 13:47:10 -03:00
Roberto Ierusalimschy
e992c6a959
Some compilation options configurable from makefile
...
Compilation options LUA_COMPAT_GLOBAL, LUA_COMPAT_LOOPVAR, and
LUA_READLINELIB do not affect the API, so they can be changed
through the make file.
2026-01-20 13:06:16 -03:00
Roberto I
f5d1e8639b
New compile option LUA_COMPAT_LOOPVAR
...
When on, this option makes for-loop control variables not read only.
2026-01-16 16:38:44 -03:00
Roberto I
2a7cf4f319
More effort in avoiding errors in finalizers
...
Before calling a finalizer, Lua not only checks stack limits, but
actually ensures that a minimum number of slots are already allocated
for the call. (If it cannot ensure that, it postpones the finalizer.)
That avoids finalizers not running due to memory errors that the
programmer cannot control.
2026-01-11 15:36:03 -03:00
Roberto I
5cfc725a8b
Special case for 'string.rep' over an empty string
2026-01-04 16:39:22 -03:00
Roberto I
45c7ae5b1b
BUG: Possible overflow in 'string.packsize'
...
'string.packsize' can overflow result in 32-bit machines using 64-bit
integers, as LUA_MAXINTEGER may not fit into size_t.
2026-01-04 16:31:17 -03:00
Roberto I
962f444a75
Details
...
In an assignment like 'a = &b', is looks suspicious if 'a' has a scope
larger than 'b'.
2026-01-04 16:27:54 -03:00
Roberto I
c4e2c91973
Details
...
Some comments still talked about bit 'isrealasize', which has been
removed.
2025-12-30 10:50:49 -03:00
Roberto I
632a71b24d
BUG: Arithmetic overflow in 'collectgarbage"step"'
...
The computation of a new debt could overflow when we give a too large
step to 'collectgarbage"step"' and the current debt was already
negative. This is only an issue if your platform cares for it or if you
compile Lua with an option like '-fsanitize=undefined'.
2025-12-27 16:22:13 -03:00
Roberto I
578ae5745c
Details
...
typo in comment + formatting + logical 'and' was written as a bitwise
operation (makes code more fragile)
2025-12-23 14:44:06 -03:00
Roberto I
a5522f06d2
GC checks stack space before running finalizer
...
If the stack does not have some minimum available space, the GC defers
calling a finalizer until the next cycle. That avoids errors while
running a finalizer that the programmer cannot control.
v5.5.0
2025-12-13 16:16:59 -03:00
Roberto I
3d03ae5bd6
'luaL_newstate' starts state with warnings on
...
It is easier to forget to turn them on then to turn them off.
2025-12-13 11:00:30 -03:00
Roberto I
82d721a855
Format adjust in the manual
...
Lists in inline code don't get a space after commas. (That keeps the
code more compact and avoids line breaks in the middle of the code.)
2025-12-10 10:35:05 -03:00
Roberto I
104b0fc700
Details
...
- Avoid fixing name "_ENV" in the code
- Small improvements in the manual
2025-12-08 13:09:47 -03:00
Roberto I
8164d09338
Wrong assert in 'luaK_indexed'
2025-12-08 11:08:12 -03:00
Roberto I
985ef32248
In luaB_close, running coroutines do not go to default
...
This should had been corrected in commit fd897027f1 .
rc
2025-12-01 10:25:44 -03:00
Roberto I
a07f6a8241
Functions with vararg tables don't need hidden args.
...
Vararg functions with vararg tables don't use the arguments hidden in
the stack; therfore, it doesn't need to build/keep them.
2025-11-28 15:12:51 -03:00
Roberto I
f33cc4ddec
New conceptual model for vararg
...
Conceptually, all functions get their vararg arguments in a vararg
table. The storing of vararg arguments in the stack is always treated
as an optimization.
2025-11-26 11:18:29 -03:00
Roberto I
d94f7ba304
Details
...
Comments, capitalization in the manual, globals in test 'heady.lua'
2025-11-24 11:39:46 -03:00
Roberto I
4cf498210e
'__pairs' can also return a to-be-closed object
2025-11-11 15:11:06 -03:00
Roberto I
5b7d998764
External strings are as good as internal ones
...
A '__mode' metafield and an "n" key both can be external strings.
2025-11-11 14:40:30 -03:00
Roberto I
81f4def54f
Correction in line info for semantic errors
...
Semantic errors should refer the last used token, not the next one.
2025-11-11 14:36:16 -03:00
Roberto I
e44f3a2ffc
Global initialization checks name conflict
...
Initialization "global a = 10" raises an error if global 'a' is already
defined, that is, it has a non-nil value.
2025-11-08 11:43:42 -03:00
Roberto I
f791bb6906
Details
...
- New macro l_strcoll to ease changing 'strcoll' to something else.
- MAXINDEXRK==1 in 'ltests.h' is enough to run test 'code.lua'.
- Removed unused '#include' in 'lutf8lib.c'.
2025-10-31 14:48:55 -03:00
Roberto I
d342328e5b
Vertical bar removed from syntax of vararg table
...
The syntax 'function foo (a, b, ...arg)' is already used by JavaScript
for this same semantics, so it seems natural to use the same notation in
Lua.
2025-10-30 11:07:01 -03:00
Roberto Ierusalimschy
0149b781d4
Case VVARGIND added to luaK_storevar
...
In a global initialization, the variable does not pass through
'check_readonly', and therefore a VVARGIND is not normalized to a
VINDEXED.
2025-10-30 10:39:55 -03:00
Roberto I
d4eff00234
Fixed initialization of global variables
...
When calling 'luaK_storevar', the 'expdesc' for the variable must be
created before the one for the expression, to satisfy the assumptions
for register allocation. So, in a statement like 'global a = exp', where
'a' is actually '_ENV.a', this variable must be handled before the
initializing expression 'exp'.
2025-10-29 13:14:48 -03:00