Roberto Ierusalimschy
14e416355f
Added suport for Fixed Buffers
...
A fixed buffer keeps a binary chunk "forever", so that the program
does not need to copy some of its parts when loading it.
2023-09-05 15:30:45 -03:00
Roberto Ierusalimschy
f33cda8d6e
New macro 'getlstr'
...
Accesses content and length of a 'TString'.
2023-08-30 11:26:16 -03:00
Roberto Ierusalimschy
96f7714237
Field 'Proto.is_vararg' uses only one bit
...
So that the other bits can be used for other purposes.
2023-08-30 10:44:28 -03:00
Roberto Ierusalimschy
0554581605
Opcode in dumps is stored properly aligned
2023-08-25 17:40:20 -03:00
Roberto Ierusalimschy
c815c2f0eb
Merge branch 'master' into nextversion
2023-08-23 15:14:03 -03:00
Roberto Ierusalimschy
9363a8b990
Documentation for "LUA_NOENV"
...
Registry field "LUA_NOENV" (that signals to libraries that option -E
is on) now part of the "official" API of Lua stand-alone.
2023-08-23 13:50:38 -03:00
Roberto Ierusalimschy
5ab6a5756b
Bug: Wrong line number for function calls
2023-08-23 13:49:27 -03:00
Roberto Ierusalimschy
9b4f39ab14
More disciplined use of 'getstr' and 'tsslen'
...
We may want to add other string variants in the future; this change
documents better where the code may need to handle those variants.
2023-08-17 15:59:28 -03:00
Roberto Ierusalimschy
f4211a5ea4
More control over encoding of test files
...
The few UTF-8 test files are commented as such, and there is only one
non UTF-8 test file (to test non UTF-8 sources).
2023-08-17 10:42:56 -03:00
Roberto Ierusalimschy
1b3f507f62
Bug: Call hook may be called twice when count hook yields
...
Took the opportunity and moved the code that controls call hooks
in 'luaV_execute' into a function.
2023-07-25 16:50:44 -03:00
Roberto Ierusalimschy
6b51133a98
Thread stacks resized in the atomic phase
...
Although stack resize can be a little expensive, it seems unusual to
have too many threads needing resize during one GC cycle. On the other
hand, the change allows full collections to skip the propagate phase,
going straight from a pause to the atomic phase.
2023-07-13 14:55:46 -03:00
Roberto Ierusalimschy
cbae016202
Details
2023-07-03 14:12:54 -03:00
Roberto Ierusalimschy
ab6a949522
Merge branch 'master' into nextversion
2023-06-22 11:41:48 -03:00
Roberto Ierusalimschy
ea39042e13
Removed redundancy in definitions of version/release
...
String rendering now derived from the numeric original definitions.
2023-06-21 15:04:24 -03:00
Roberto Ierusalimschy
05ec55f16b
Avoid inclusion loop in 'ltm.h'
2023-06-16 11:52:14 -03:00
Roberto Ierusalimschy
f623b96932
Bug: read overflow in 'l_strcmp'
...
Equality according to 'strcoll' does not imply that strings have
the same length.
2023-06-14 14:38:07 -03:00
Roberto Ierusalimschy
9be74ccc21
Several functions turned 'static'
...
Several functions that were already being used only inside their
own file have been declared as 'static'.
2023-05-22 14:47:54 -03:00
Roberto Ierusalimschy
09f3c2372f
Option '-l' discards version sufix from file name
...
Like 'require', the command-line option '-l' discards an optional
version suffix (everything after an hyphen) from a file name when
creating the module name.
2023-05-15 13:46:38 -03:00
Roberto Ierusalimschy
c197885cb0
Small improvements in tests
2023-05-15 10:20:13 -03:00
Roberto Ierusalimschy
934e77a286
Details
...
- Better comments about short strings in opcodes.
- luaH_newkey made static.
2023-05-15 10:07:25 -03:00
Roberto Ierusalimschy
6443185167
"Emergency" new version 5.4.6
...
'lua_resetthread' is back to its original signature, to avoid
incompatibilities in the ABI between releases of the same version.
New function 'lua_closethread' added with the "correct" signature.
2023-05-02 16:41:43 -03:00
Roberto Ierusalimschy
e15f1f2bb7
Details
...
Typos in comments and details in the manual.
2023-04-18 09:44:10 -03:00
Roberto Ierusalimschy
b5c65705ca
New year (2023)
...
Also, small tweak in makefile. (-Wsign-compare is already enabled by
-Wextra.)
2023-03-31 11:47:31 -03:00
Roberto Ierusalimschy
7ca8105a2e
More orderliness in casts of enumerations
2023-03-27 16:29:39 -03:00
Roberto Ierusalimschy
94689ac3ad
More regularity in uses of enums in 'lcode.c'
2023-03-24 15:52:03 -03:00
Roberto Ierusalimschy
86e8039a72
Clock component removed from 'luaL_makeseed'
...
'clock' can be quite slow on some machines.
2023-03-23 16:01:16 -03:00
Roberto Ierusalimschy
5a04f1851e
New function 'luaL_makeseed'
...
This function unifies code from 'lua_newstate', 'math.randomseed',
and 'table.sort' that tries to create a value with a minimum level
of randomness.
2023-03-20 16:13:17 -03:00
Roberto Ierusalimschy
ab859fe59b
Bug: Loading a corrupted binary file can segfault
...
The size of the list of upvalue names are stored separated from the
size of the list of upvalues, but they share the same array.
2023-03-17 15:52:09 -03:00
Roberto Ierusalimschy
c4b71b7ba0
Details
...
Comments in 'onelua.c'
2023-03-09 11:12:11 -03:00
Roberto Ierusalimschy
1de2f31694
Corrected support for 16-bit systems
...
We still need access to a 16-bit system to correctly test
these changes.
2023-03-09 11:10:04 -03:00
Roberto Ierusalimschy
02bab9fc25
Bug: Wrong line in error message for arith. errors
...
It also causes 'L->top' to be wrong when the error happens,
triggering an 'assert'.
2023-02-08 14:15:41 -03:00
Roberto Ierusalimschy
5e08b41567
Simpler definition for LUA_STRFTIMEOPTIONS
...
There is no need for those intermediate definitions.
2023-02-07 10:48:39 -03:00
Roberto Ierusalimschy
8c064fdc23
Merge branch 'master' into nextversion
2023-02-02 13:47:28 -03:00
Roberto Ierusalimschy
cf08915d62
New macro LUA_USE_IOS
...
Do not try to detect automatically whether system is iOS; it is
simpler and more reliable to let the programmer inform that.
2023-02-02 13:43:41 -03:00
Roberto Ierusalimschy
c888ae0aea
Small changes in hash of pointers
...
When converting from pointer to integer, use 'uintptr_t' if available;
otherwise try 'uintmax_t', and use 'size_t' as last resource.
2023-02-02 13:37:11 -03:00
Roberto Ierusalimschy
d69789da1c
Fix absence of 'system' in iOS
...
Despite claiming to be ISO, the C library in some Apple platforms
does not implement 'system'.
2023-01-24 15:04:17 -03:00
Roberto Ierusalimschy
8dea54877a
Do not avoid major collections when GCdebt is zero
...
'collectgarbage("step")' (without an argument) does not have any
special meaning, it means "do a step with some default size".
2022-12-29 15:41:07 -03:00
Roberto Ierusalimschy
b5ab31a475
Merge branch 'master' into nextversion
2022-12-28 18:38:20 -03:00
Roberto Ierusalimschy
314745ed84
Avoid excessive name pollution in test files
...
Test files are more polite regarding the use of globals when locals
would do, and when globals are necessary deleting them after use.
2022-12-28 18:34:11 -03:00
Roberto Ierusalimschy
140cdcced5
Merge branch 'master' into nextversion
2022-12-23 11:30:07 -03:00
Roberto Ierusalimschy
0825cf237d
Detail in make file for testes/libs
...
Everything depends on the Lua version (as given by 'lua.h')
2022-12-23 11:28:11 -03:00
Roberto Ierusalimschy
7d4c7ae2af
Changes in opcodes for generic 'for'
...
Again, as the control variable is read only, the code doesn't need
to keep an internal copy of it.
2022-12-22 13:52:53 -03:00
Roberto Ierusalimschy
873588dc5f
Simplification in opcodes for numerical 'for'
...
As the control variable is read only, the code doesn't need to keep
an internal copy of it.
2022-12-21 15:35:40 -03:00
Roberto Ierusalimschy
b2f7b3b79f
Control variables in for loops are read only
2022-12-21 12:04:59 -03:00
Roberto Ierusalimschy
540d805226
Towards Lua 5.5
2022-12-20 13:24:43 -03:00
Roberto Ierusalimschy
7d6a97e42b
Dump doesn't need to reuse 'source'
...
All strings are being reused now, including 'source'.
2022-12-20 11:14:52 -03:00
Roberto Ierusalimschy
d70a0c91ad
Dump/undump reuse strings
...
A repeated string in a dump is represented as an index to its first
occurence, instead of another copy of the string.
2022-12-15 16:44:22 -03:00
Roberto Ierusalimschy
3e6818ca87
Merge branch 'master' into nextversion
2022-12-15 14:23:59 -03:00
Roberto Ierusalimschy
f874d37fa2
Small change in barrier macros
...
Reuse macros for objects when defining the macros for values.
2022-12-15 14:18:03 -03:00
Roberto Ierusalimschy
88e5c6b80b
Merge branch 'master' into nextversion
2022-12-15 10:51:04 -03:00
Roberto Ierusalimschy
35e01ed21d
Small improvements in 'lmem.c'
...
Added some auxiliary macros + fixed a bug in compilation option
EMERGENCYGCTESTS. (It should not try to force an emergency collection
when it cannot run one.)
2022-12-15 10:44:55 -03:00
Roberto Ierusalimschy
e33e1bda97
Merge branch 'master' into nextversion
2022-12-14 16:22:43 -03:00
Roberto Ierusalimschy
6aabf4b15e
Details in some header files
...
Identifier LUA_NUMTAGS was deprecated (changed to LUA_NUMTYPES) +
better handling of some inclusion loops.
2022-12-14 16:20:39 -03:00
Roberto Ierusalimschy
5d8b5b9290
Changed signal of GC debt
...
Positive debts seems more natural then negative ones.
2022-12-13 15:45:57 -03:00
Roberto Ierusalimschy
40565b4a08
Revamp of GC parameters
...
More uniformity when handling GC parameters + avoid divisions by 100
when applying them.
2022-12-13 11:55:14 -03:00
Roberto Ierusalimschy
ff106c028c
Merge branch 'master' into nextversion
2022-12-12 14:08:55 -03:00
Roberto Ierusalimschy
fa2f294dd1
Reduce calls to 'luaC_step' when GC is stopped
2022-12-09 16:35:19 -03:00
Roberto Ierusalimschy
d738c8d18b
New function 'luaL_openselectedlibs'
...
Makes it easier to start Lua with only some standard libraries.
2022-12-07 15:12:52 -03:00
Roberto Ierusalimschy
0270c204c2
Simplification in handling of GC debt
...
Each incremental step has always the same size (stepsize), and the
debt for next step also is always the same.
2022-12-06 12:02:34 -03:00
Roberto Ierusalimschy
82fae58e25
Details
...
Parentheses and comments.
2022-12-02 11:33:09 -03:00
Roberto Ierusalimschy
efc7c5d503
Merge branch 'master' into nextversion
2022-12-01 09:51:07 -03:00
Roberto Ierusalimschy
d324a0ccf9
Simpler control for major collections
2022-11-29 10:37:08 -03:00
Roberto Ierusalimschy
152b51955a
Removed GC checks from function calls
...
Function calls do not create new objects. (It may use memory with
stack reallocation, but now that is irrelevant to the GC.)
2022-11-24 10:20:15 -03:00
Roberto Ierusalimschy
ec61be9a7e
'l_mem' renamed to 'l_obj' to count objects
2022-11-23 17:29:03 -03:00
Roberto Ierusalimschy
f356d5acdd
First version of GC counting objects for control
...
Still needs to review generational mode.
2022-11-23 17:17:20 -03:00
Roberto Ierusalimschy
9a77f57edc
Stop GC while building initial state
2022-11-23 14:17:28 -03:00
Roberto Ierusalimschy
be908a7d4d
Removed unused field 'UpVal.tbc'
2022-11-08 10:15:10 -03:00
Roberto Ierusalimschy
76953316d1
Added a counter of the total number of existing objects
...
It may simplify the control of the garbage collector.
2022-11-03 16:37:13 -03:00
Roberto Ierusalimschy
3d2bd1359d
Merge branch 'master' into nextversion
2022-11-01 17:17:21 -03:00
Roberto Ierusalimschy
9ede317c70
Threads are created like other objects
...
Using a version of 'luaC_newobj' that allows offsets (extra space
before the object itself).
2022-11-01 17:14:01 -03:00
Roberto Ierusalimschy
8047b2d03e
Tables have a 'lastfree' information only when needed
...
Only tables with some minimum number of entries in their hash part
have a 'lastfree' field, kept in a header before the node vector.
2022-11-01 15:42:08 -03:00
Roberto Ierusalimschy
ee645472eb
Stack reallocation done with a single realloc
...
To avoid the need of both the old and the new stack addresses valid
at the same time, to correct the pointers to the stack, these pointers
are changed to offsets before the reallocation and then changed back
to pointers after the reallocation.
2022-10-31 15:06:20 -03:00
Roberto Ierusalimschy
413a393e62
Stack indices changed to union's
...
That will allow to change pointers to offsets while reallocating
the stack.
2022-10-29 12:06:37 -03:00
Roberto Ierusalimschy
ba089bcb08
Details
...
Added comments in the makefile about other useful '-fsanitize' options.
2022-10-26 10:15:09 -03:00
Roberto Ierusalimschy
1e64c1391f
Bug: stack overflow with nesting of coroutine.close
2022-10-25 16:44:06 -03:00
Roberto Ierusalimschy
b85816b9a8
Removed test function 'luaH_isdummy'
...
It was not being used anywhere.
2022-10-21 09:18:13 -03:00
Roberto Ierusalimschy
c954db3924
Option '-l g=mod' added to the manual
...
Plus some other improvements in the manual.
2022-10-19 16:30:39 -03:00
Roberto Ierusalimschy
14d2803e55
Details
...
Some cast operations rewritten to use respective macros.
2022-10-19 16:29:54 -03:00
Roberto Ierusalimschy
7f12bf40c4
Portability issue in a test for 'string.format'
2022-10-19 16:20:11 -03:00
Roberto Ierusalimschy
26be27459b
Negation in constant folding of '>>' may overflow
2022-09-23 11:08:10 -03:00
Roberto Ierusalimschy
cfbe378f90
Small simplification in overflow check in 'getfield'
...
Subtracting a small non-negative int from a non-negative int cannot
overflow, and adding a non-negative int to INT_MIN cannot overflow.
2022-09-23 10:57:35 -03:00
Roberto Ierusalimschy
a1089b415a
Bug: 'utf8.codes' accepts spurious continuation bytes
2022-09-23 10:41:16 -03:00
Roberto Ierusalimschy
f8c4c4fcf2
New test for table rehash
2022-09-16 17:05:22 -03:00
Roberto Ierusalimschy
71bc69c2af
Note in the manual about using '...' as an expression
2022-09-08 17:21:02 -03:00
Roberto Ierusalimschy
cd56f222b7
Corrected error message in 'table.remove'
2022-09-07 12:21:46 -03:00
Roberto Ierusalimschy
69b77b6fde
Changed the growth rate of string buffers
...
The growth rate of string buffers was reduced from 2 to 1.5 (3/2).
As string buffers start larger (256~1024 bytes), they don't need to
grow that fast. Moreover, a lower rate allows multiplicative growth up
to larger sizes (3/2 of the maximum). (After that, the growth becomes
linear, which is mostly useless.)
2022-09-06 10:58:55 -03:00
Roberto Ierusalimschy
997f11f543
Bug: 'break' may not properly close variable in a 'for' loop
...
Function 'leaveblock' was generating "break" label before removing
variables from the closing block. If 'createlabel' created a 'close'
instruction (which it did when matching a goto/break that exited
the scope of an upvalue), that instruction would use the wrong level.
2022-08-24 17:36:47 -03:00
Roberto Ierusalimschy
02060b7a37
Simpler handling of Byte Order Mark (BOM)
2022-08-23 16:08:53 -03:00
Roberto Ierusalimschy
a1f77a234a
Bug: set correct pause when (re)entering gen. collection.
2022-08-23 16:06:23 -03:00
Roberto Ierusalimschy
c6cea857a4
Better documentation for 'multires' expressions
...
Manual has a new section explaining multires expressions, lists of
expressions, and adjustments. This commit also corrects some comments
in the code.
2022-08-19 14:10:18 -03:00
Roberto Ierusalimschy
d61b0c6028
More checks and documentation for uses of EXTRA_STACK
2022-05-26 15:14:54 -03:00
Roberto Ierusalimschy
196bb94d66
Bug: 'lua_settop' may use an invalid pointer to stack
2022-05-25 17:41:39 -03:00
Roberto Ierusalimschy
603b2c64ad
'luaV_concat' can use invalidated pointer to stack
...
Bug introduced in commit 42d40581 .
2022-05-23 17:50:47 -03:00
Roberto Ierusalimschy
4a00f61276
'lua_checkstack' doesn't need to check stack overflow
...
'luaD_growstack' already checks that. This commit also fixes an
internal bug in 'luaD_growstack': a large 'n' could cause an arithmetic
overflow when computing 'needed'.
2022-05-23 10:38:03 -03:00
Roberto Ierusalimschy
42d40581dd
Save stack space while handling errors
...
Because error handling (luaG_errormsg) uses slots from EXTRA_STACK,
and some errors can recur (e.g., string overflow while creating an
error message in 'luaG_runerror', or a C-stack overflow before calling
the message handler), the code should use stack slots with parsimony.
This commit fixes the bug "Lua-stack overflow when C stack overflows
while handling an error".
2022-05-20 13:14:33 -03:00
Roberto Ierusalimschy
e435aaabef
Details (identation and typos)
2022-05-10 11:13:39 -03:00
Roberto Ierusalimschy
315639d3bb
Factoring out common parts of 'codearith' and 'codebitwise'
2022-05-06 17:52:46 -03:00
Roberto Ierusalimschy
c764ca71a6
Bug: Wrong code generation in bitwise operations
2022-04-25 14:42:51 -03:00
Roberto Ierusalimschy
295cde9454
New release number (5.4.5)
2022-04-07 10:52:15 -03:00
Roberto Ierusalimschy
f3cfd5bf2b
Details
...
Comments + manual + identation + asserts about stack limits that were
not allowing the use of the full stack
2022-04-01 13:55:44 -03:00