Roberto Ierusalimschy
faaf7e481f
Removed use of 'rl_inhibit_completion' in 'lua.c'
...
Some old systems (e.g., Mac OS X 10.4) do not define
'rl_inhibit_completion', even when line history is available.
Anyway, the user can configure this option externally, using '~/.inputrc'.
2018-08-16 14:38:05 -03:00
Roberto Ierusalimschy
3d838f635c
Added "emergency collection" to 'io.tmpfile' and 'os.tmpname'
...
These operations also can give errors for lack of resources, so they
also will try "emergency collections" in case of resource errors.
Because there are now two libraries with that kind of handling,
'resourcetryagain' was moved to the auxiliary library to be shared
by the libraries.
2018-07-27 15:50:53 -03:00
Roberto Ierusalimschy
aa4c5cf190
Added directory to test file names in '$Id:'
...
From the point of view of 'git', all names are relative to the root
directory of the project. So, file names in '$Id:' also should be
relative to that directory: the proper name for test file 'all.lua'
is 'testes/all.lua'.
2018-07-25 15:31:04 -03:00
Roberto Ierusalimschy
b47f2cd068
Small improvements in the manual
2018-07-25 14:56:42 -03:00
Roberto Ierusalimschy
e885dee5ab
File operations try an "emergency collection" when failing
...
If a file operation fails do to lack of resources (too many open
files or not enough memory), it does a full garbage collection and
tries the operation again. Lack of resources are "too many open
files" (process wise and system wise) and "not enough memory".
The code is full of '#if's because error codes are not part
of the standard ISO C.
2018-07-25 11:44:46 -03:00
Roberto Ierusalimschy
ccae0f5aad
Comments about OLD0/OLD1 ages
...
Improved the comments in file 'lgc.c' explaining the roles of "ages"
OLD0 and OLD1 in the generacional collector.
2018-07-18 11:43:45 -03:00
Roberto Ierusalimschy
2e297d6ab3
Fixed bug in generational collection of userdata
...
During generational collection, a userdatum must become gray and
go to a gray list after being traversed (like tables), so that
'correctgraylist' can handle it to its next stage.
This commit also added minimum tests for the generational collector,
including one that would detect this bug.
2018-07-13 15:43:02 -03:00
Roberto Ierusalimschy
fb18346ddd
Avoid using 'int' for UTF-8 values
...
An 'int' may have only 16 bits, so it may not be big enough for UTF-8
values. The new type 'utfint' (in the utf8 library) ensures at least
21 bits for those values.
2018-07-12 15:56:44 -03:00
Roberto Ierusalimschy
96f9643f33
Bug: wrong 'nCcalls' when resuming a coroutine
...
The counter 'nCcalls' now includes the number of CallInfo structures
pre-allocated (so that these "potential" C calls can be made without
checking 'nCcalls'). So, when copying this value from a thread to
another, in 'lua_resume', it must be corrected to the number of
CallInfo structures in the thread being resumed.
2018-07-11 16:11:50 -03:00
Roberto Ierusalimschy
84058b1506
Added definition for LUA_VERSION_RELEASE_NUM
...
LUA_VERSION_RELEASE_NUM is set to the release number of the Lua
interpreter (e.g., 5.4.0 becomes the integer 50400).
2018-07-11 13:17:46 -03:00
Roberto Ierusalimschy
4d5de1c1fb
Fixed bug in line info. when using 'not' operator
...
When creating code for a jump on a 'not' condition, the code generator
was removing an instruction (the OP_NOT) without adjusting its
corresponding line information.
This fix also added tests for this case and extra functionality in
the test library to debug line info. structures.
2018-07-11 12:53:23 -03:00
Roberto Ierusalimschy
9a825f6bb9
In tests of opcodes, avoid coercion in bitwise operation
2018-07-10 14:55:16 -03:00
Roberto Ierusalimschy
941b189d98
Improvements in the manual
...
- More precise use of 'argument' x 'parameter'.
- Clarification about what the lexer considers 'letter', 'space',
and 'digit'.
2018-07-10 13:48:19 -03:00
Roberto Ierusalimschy
21f663d29f
Added missing $Id$ to file 'ljumptab.h'
2018-07-10 13:40:30 -03:00
Roberto Ierusalimschy
626cf0581b
Generational mode may wait longer after a major collection
...
When Lua is building large long-duration structures, frequent small
minor collections just waste time. Trying to avoid this, the
collector will do a larger pause after a major collection when it
does not collect enough garbage (which is a hint that memory is
being used for long-lasting objects).
2018-07-09 14:22:09 -03:00
Roberto Ierusalimschy
ccf6d098f6
'searchpath' creates less temporary strings
...
When creating error messages, package loaders may create dozens of
temporary strings (one or more for each tried template). This change
reduces the number of these strings, and avoid creating some of
them if the search is successful.
2018-07-09 13:29:08 -03:00
Roberto Ierusalimschy
de2caf7ee4
Bit-library file removed from the project (as it was deprecated)
...
This commit only removed the file 'lbitlib.c' from the project; the
makefile already was not using it.
2018-07-09 12:54:51 -03:00
Roberto Ierusalimschy
b08c9079c5
Opcode names moved to a new header file
...
The array with the names of the opcodes was moved to a header file
('lopnames.h'), as it is not used by the Lua kernel. Files that need
that array ('luac.c' and 'ltests.c') include the header file to get
a private (static) copy.
2018-07-09 12:50:51 -03:00
Roberto Ierusalimschy
06e08c6d05
Fixed bug in OP_IDIVI
...
Opocode was using 'luai_numdiv' (float division) instead of
'luai_numidiv' (integer division).
2018-07-09 12:41:24 -03:00
Roberto Ierusalimschy
7c519dfbd0
Added manual and tests for version 5.4-w2
2018-07-09 12:33:01 -03:00
Roberto Ierusalimschy
f59e6a93c0
opening functions must be exported!
2018-06-19 16:23:57 -03:00
Roberto Ierusalimschy
6683f83b51
several details
2018-06-18 15:25:19 -03:00
Roberto Ierusalimschy
a314409dba
in generational mode, an emergency collection can turn any object black
...
during any memory allocation +
'luaT_getvarargs' may reallocate the stack, and therefore the top must
be correct.
2018-06-18 14:58:21 -03:00
Roberto Ierusalimschy
15ce8d0904
in generational mode, an emergency collection can turn any object black
...
during any memory allocation.
2018-06-18 14:57:20 -03:00
Roberto Ierusalimschy
b43300c14f
change in 'LUAI_DDEC' to allow variables to be static in 'onelua'
...
+ change in 'LUAMOD_API' as opening functions do not need to be global
2018-06-18 09:51:05 -03:00
Roberto Ierusalimschy
af70905246
no need to check whether libraries and host use the same kernel;
...
Lua should work correctly with several copies of the kernel
2018-06-18 09:08:10 -03:00
Roberto Ierusalimschy
b95e466218
new field 'nilvalue' in struct 'global_State' to avoid the use of
...
addresses of static variables
2018-06-15 16:31:22 -03:00
Roberto Ierusalimschy
d406d3d05f
removed unused macros 'isstackindex'/'api_checkstackindex' +
...
macro 'api_checkvalidindex' (used only once) expanded and removed
2018-06-15 14:30:52 -03:00
Roberto Ierusalimschy
b6780ee41b
detail (removed unused definition for 'LUA_QS')
2018-06-15 12:49:28 -03:00
Roberto Ierusalimschy
2c107e13a8
warning (comparison between signed and unsigned integers)
2018-06-15 11:18:40 -03:00
Roberto Ierusalimschy
6e600695f8
field 'sizearray' in struct 'Table' changed to 'alimit', which can
...
be used as a hint for '#t'
2018-06-15 11:14:20 -03:00
Roberto Ierusalimschy
06127927ff
new macro 'ispow2'
2018-06-15 11:13:45 -03:00
Roberto Ierusalimschy
aedcfb9414
type 'Rand64' may not be long long, so it should not use 'LL' in its
...
constants
2018-06-14 15:47:22 -03:00
Roberto Ierusalimschy
992b6d2712
no more 'TESTGRAYBIT' (to free this bit for real uses)
2018-06-11 11:19:50 -03:00
Roberto Ierusalimschy
588dfa4ce5
detail in comment
2018-06-08 16:07:27 -03:00
Roberto Ierusalimschy
6f2b8e21c4
added 'const' to 'Proto*' when possible
2018-06-08 16:06:59 -03:00
Roberto Ierusalimschy
c5dc521d65
added patch for bug 5.3.4-7
2018-06-08 13:23:18 -03:00
Roberto Ierusalimschy
505fc91222
no more 'luaO_nilobject' to avoid comparison of global variable addresses
...
(now uses static variables)
2018-06-01 14:40:38 -03:00
Roberto Ierusalimschy
fb8fa66136
no more 'luaH_emptyobject' and comparisons of addresses of global variables
...
(instead, use a different kind of nil to signal the fake entry returned
when a key is not found in a table)
2018-06-01 13:51:34 -03:00
Roberto Ierusalimschy
b397064955
avoid craches when loading tampered code with NULL as a string constant
2018-06-01 13:45:58 -03:00
Roberto Ierusalimschy
34aa0c5bd7
new macros 'likely'/'unlikely' with hints for jump predictions
...
(used only in errors for now)
2018-05-30 11:25:52 -03:00
Roberto Ierusalimschy
97e394ba18
macro 'luai_makeseed' now controls the whole process of making the seed
2018-05-29 15:02:51 -03:00
Roberto Ierusalimschy
950fbcb971
detail ('l_castU2S' should only be used over lua_Unsigned values)
2018-05-29 15:01:50 -03:00
Roberto Ierusalimschy
b2d4d06428
avoid possible overflows when checking sizes in 'string.unpack'
2018-05-25 10:39:32 -03:00
Roberto Ierusalimschy
3b8dba5279
added patches for two bugs (5.3.4-2 and 5.3.4-3)
2018-05-24 17:25:14 -03:00
Roberto Ierusalimschy
892aff2a07
avoid circular inclusion between ltm.h <-> lstate.h
2018-05-23 11:41:20 -03:00
Roberto Ierusalimschy
02ed0b2c30
in 'luaD_poscall', there is no need to compute 'firstResult' when 'nres==0'
2018-05-22 09:02:36 -03:00
Roberto Ierusalimschy
de53c2ec7e
using some weak "randomness" (time and memory address) to initialize
...
seeds for the PRNG
2018-05-16 08:27:59 -03:00
Roberto Ierusalimschy
80bd4a8940
correction on xoshiro256** algorithm
...
(should use state[1] instead of state[0] for output)
2018-05-09 11:54:37 -03:00
Roberto Ierusalimschy
3e7415e846
reorganization of '#if's for sellecting a type for 'Rand64' +
...
comments
2018-05-04 17:01:45 -03:00
Roberto Ierusalimschy
e64e20ac81
minimizing the code ran by 'vmfetch' + no more 'vra'
...
(the code is simpler without 'vra' and conversion is a no-op)
2018-05-02 15:17:59 -03:00
Roberto Ierusalimschy
deb807837c
'luaO_pushvfstring' does not need to reallocate stack
...
(less error cases in the API)
2018-04-25 13:26:20 -03:00
Roberto Ierusalimschy
26eb144541
no need to define 'luaP_opnames' in regular builds
2018-04-19 12:42:41 -03:00
Roberto Ierusalimschy
f9c3d6fdbe
use test mode to test the interpreter without jump tables
2018-04-11 13:49:36 -03:00
Roberto Ierusalimschy
762baf0548
detail (trim constants are unsigned)
2018-04-06 14:52:42 -03:00
Roberto Ierusalimschy
b8a04658b2
PRNG changed from 'xoroshiro128+' to 'xoshiro256**' + "I' renamed 'Rand64'
...
+ implementation can use integer types larger than 64 (or 32) bits
2018-04-06 12:41:29 -03:00
Roberto Ierusalimschy
b44787652b
using 'xoroshiro128+' for PRNG
...
(plus a rotate at the final result to have better lower bits)
2018-04-04 13:12:53 -03:00
Roberto Ierusalimschy
03c6a05ec8
no more nil-in-table
2018-04-04 11:23:41 -03:00
Roberto Ierusalimschy
3d0b5edfe4
using unsigned comparison in 'l_intfitsf' (avoids one comparison)
2018-04-02 14:52:07 -03:00
Roberto Ierusalimschy
8d50a998e3
definition for LUA_UNSIGNEDBITS (number of bits in a LUA_UNSIGNED)
2018-04-02 10:58:33 -03:00
Roberto Ierusalimschy
bdd10a08b1
in 'random', uses high-order bits instead of low-order
...
(better statistical properties)
2018-03-26 16:48:46 -03:00
Roberto Ierusalimschy
c5e3b2f814
in random/'project', remove the special case for "small" intervals;
...
it is slower than the general case.
2018-03-22 16:54:49 -03:00
Roberto Ierusalimschy
6486762463
missing LUAI_FUNC in prototype for 'luaK_patchgoto'
2018-03-19 17:03:44 -03:00
Roberto Ierusalimschy
4907444db9
'fTransfer' -> 'ftransfer' / 'nTransfer' -> 'ntransfer'
...
(keep the standard of names in lower case)
2018-03-16 12:33:34 -03:00
Roberto Ierusalimschy
c3cb31fa9a
some extra goodies for 'readline'
...
('rl_readline_name' and 'rl_inhibit_completion')
2018-03-16 11:23:08 -03:00
Roberto Ierusalimschy
0c7738240e
FALLTHROUGH comment must be last "statement"
...
(so it does not work when inside a block)
2018-03-16 11:22:09 -03:00
Roberto Ierusalimschy
7b0b6b3b39
cannot use 'defined' inside a macro +
...
call to 'luaT_keydef' must be protected
2018-03-16 11:21:20 -03:00
Roberto Ierusalimschy
89da4168df
avoid functions named 'pack'
...
(name too common, may collide when doing 'onelua.c')
2018-03-16 11:18:18 -03:00
Roberto Ierusalimschy
6b01b6cf6a
'lu_int32' may not be 'int'
2018-03-12 09:39:03 -03:00
Roberto Ierusalimschy
e3388ebfad
more explicit casts when converting an integer to a random float
...
(to ensure computations are done with all bits)
2018-03-11 11:48:09 -03:00
Roberto Ierusalimschy
9e3db70482
details (casts between 'lua_Number' and 'double')
2018-03-09 16:24:45 -03:00
Roberto Ierusalimschy
dbec41f34c
random floats of different sizes get exactly needed number of random bits
...
(up to 64)
2018-03-09 16:23:39 -03:00
Roberto Ierusalimschy
0b3db69e41
slight simplification in 'xorshift128plus'
2018-03-09 12:05:13 -03:00
Roberto Ierusalimschy
80ae1c1c16
fairer projection of random integers into an integer interval
2018-03-09 11:56:25 -03:00
Roberto Ierusalimschy
40683b4934
added definition for LUA_MAXUNSIGNED
2018-03-09 11:56:02 -03:00
Roberto Ierusalimschy
6480e73599
details (avoid using non-C89 '//' comment)
2018-03-07 13:26:01 -03:00
Roberto Ierusalimschy
4a1612ff9b
new experimental syntax using reserved word 'undef'
2018-03-07 12:55:38 -03:00
Roberto Ierusalimschy
464658b16a
better modularization of the code for the REPL
2018-03-06 17:30:17 -03:00
Roberto Ierusalimschy
bdcde45d05
updated to use jump tables
2018-03-05 11:26:18 -03:00
Roberto Ierusalimschy
8b0434e5e6
both 'fTransfer' and 'nTransfer' may not fit in a 'char'
2018-03-05 11:15:32 -03:00
Roberto Ierusalimschy
8b0b675149
added casts (warnings in VS)
2018-03-05 11:15:04 -03:00
Roberto Ierusalimschy
8c429311a3
typo in comment
2018-03-05 11:13:55 -03:00
Roberto Ierusalimschy
66b7b075a6
'math.random' using the xorshift128+ algorithm
2018-03-05 11:07:48 -03:00
Roberto Ierusalimschy
62a392ff46
using jump tables when available
2018-03-02 15:59:19 -03:00
Roberto Ierusalimschy
893f382e94
Jump Table for the interpreter
2018-03-02 15:56:14 -03:00
Roberto Ierusalimschy
0eb10c6303
'LUA_USE_READLINE' moved to the make file
2018-03-02 15:31:51 -03:00
Roberto Ierusalimschy
00008b8ed0
back to one format per argument
2018-03-02 15:25:00 -03:00
Roberto Ierusalimschy
df49384516
year in copyright changed to 2018
2018-03-02 13:30:47 -03:00
Roberto Ierusalimschy
fbea553ca2
'lua_setiuservalue' removes value from the stack even in case of error
2018-02-27 17:01:55 -03:00
Roberto Ierusalimschy
34b00c16e2
removed compatibility code with older versions
2018-02-27 15:47:32 -03:00
Roberto Ierusalimschy
12110dec0e
module has been deprecated.
2018-02-27 15:46:26 -03:00
Roberto Ierusalimschy
4105cafb84
no more 'bitlib'
2018-02-27 15:27:30 -03:00
Roberto Ierusalimschy
76ff55750e
no optimizations in test mode + no more compat with 5.2 + a few more
...
options in comments
2018-02-27 15:24:23 -03:00
Roberto Ierusalimschy
b7edf5d2d8
metamethods for 'removekey'/'keyin'
2018-02-27 14:48:28 -03:00
Roberto Ierusalimschy
ef8263f81f
better names for macros for tags and types.
...
rttype -> rawtt; ttyperaw -> withvariant; ttype -> ttypetag;
tnov -> ttype
2018-02-26 11:16:05 -03:00
Roberto Ierusalimschy
2952bc5fc9
special compact representation for userdata with no user values
...
(a common case)
2018-02-26 10:35:03 -03:00
Roberto Ierusalimschy
38d3bc8909
using 'offsetof' to compute the size of parts of a structure
2018-02-25 10:40:00 -03:00
Roberto Ierusalimschy
75efc6722b
avoid variant tags with the same value of the original type
...
(to expose bugs more easily)
2018-02-25 09:52:32 -03:00
Roberto Ierusalimschy
d766e2ae17
first (parcial) implementation of 'keyin'/'removekey'
...
(still no metamethods, no raw verssions)
2018-02-25 09:48:16 -03:00
Roberto Ierusalimschy
f055a9dffd
added check in 'obj2gco' to prevent its use in non Lua-object pointers
...
(otherwise its cast is blind, casting any value given to it)
2018-02-25 09:43:52 -03:00